I get this question a lot from people just starting out in this industry, more so now with the rise of coding bootcamps and the glorification of being a developer, our infatuation with startups and entrepreneurism, and the rise of nerd culture. It seems there are more aspiring developers than ever before, which is good because there’s a global shortage in software engineers that seems to be growing. Unfortunately, companies are still having trouble filling their software engineering roles because everybody wants to hire the best software engineers, but the best software engineers only want to work for the best companies. This could be the topic of a future post, but you see the dilemma.
Here’s an anonymized question I just received in my LinkedIn inbox:
My name is Percy and I was hoping to get some advice on the first steps in this industry. I am a full stack developer but I am having a heck of a time landing a job because I have not accumulated enough experience. What steps could I take to overcome this hurdle?
Before I dole out my advice, I think it might be helpful to hear my story so you know where I’m coming from.
After having been in this business (software) since 2004, I’m now considered a veteran. I’m a senior software engineer and I’ve been managing teams of engineers since 2011. I literally have multiple recruiters reach out to me every day trying to sell me on some new job opportunity.
But it wasn’t always like this; it took a lot of work.
I graduated from UCSB in 2003 with a computer science degree, but I never did any internships over the Summer like the smart kids. I worked at the beach, as an ocean lifeguard, and went surfing every day. I didn’t build anything cool in my spare time like I should have. I just worked out and partied … or wait, maybe that was worth it. I did have a lot of fun …
Anyway, my point is that (besides earning a CS degree) I was woefully unprepared for the job market. The unfortunate reality is that a CS degree just doesn’t prepare for the real world of professional software development. I went on dozens of interviews for software engineering positions and got rejected again and again. Interestingly, the place I usually failed was in the interview. Nobody ever coached me on how to pass a software engineering interview. For those of you haven’t experienced it; it’s brutal. You have to get up in front of your interviewers and solve puzzles or write code on a whiteboard. You basically have to prove you’re smart enough to work at X company. This process has evolved slightly in the past 10 years, but it is still a stressful endeavor and I still get nervous at interviews. Heck, I even get a little nervous interviewing people.
Through all those failures, however, I never gave up. Instead I tried to learn something from every failed interview, and I started building websites … first for myself, and then for friends, and then I decided I’d start a web dev shop, and I built a website for that, and then took on more clients. They never paid very much, and some I did for free … but I was building shit, and I was learning.
Eventually, I landed my first job in tech, working for Electronic Arts as a Language Integration Technician. My job was to take assets in foreign languages, put them into video games at various stages, play through them, and make sure everything looked and felt okay. It was basically a glorified QA job.
Here’s my (abridged) answer to Percy and future devs who are struggling in this market:
“Hey Percy, it’s always tough to break into the industry, especially if you didn’t do internships during school. I made the same mistake, but don’t lose hope. You’re doing all the right things, working on side projects and keeping your education up.
Are you getting interviews? or not at all? If you’re getting interviews, you probably just need to focus on your interview prep and get better at that. If you’re not, I recommend reaching out to recruiters and utilizing them to help you. Your interests are aligned; you want a job and recruiters get paid if you get a job.
Also, don’t be too proud to apply for QA jobs. It’s a way to get your foot in the door and I guarantee as long as you kick ass and show initiative, you will get promoted into that development job that you want. That’s what I did.
Also, if you haven’t already, don’t hesitate to apply for just front-end or just backend roles. I personally feel the full-stack developer is a bit of a myth, at least a good one anyway. If you really want to do full stack, your only options are probably small startups. Any mature software engineering organization knows they need their engineers to specialize in one area to get the most productivity and highest quality code out of them. Best of luck!”
I’ve started diving deeper into mentorship, both within Coffee Meets Bagel, and in the engineering community . At Coffee Meets Bagel, this is natural, as I have a team of around 20 engineers reporting up to me. All the engineers who report directly to me are leads or managers, so most of my mentorship within Coffee Meets Bagel is about how to effectively lead engineering teams, manage chaos, form relationships, provide mentorship, foster career growth, and operate efficiently.
Outside of my day job, I’ve started mentoring more high-level engineering leaders as well, and one of the common themes that has come up is, “How do I scale my engineering team effectively?” In this post, we’re going to specifically cover the topic of when to hire more resources, when to promote ICs to managers, and when to bring in a manager from outside.
It’s an important question at a startup especially because you want to move fast, but resources are limited. You should never hire more resources just because your company has plenty of resources or because your CEO wants to grow. There should always be some rationale behind it, and it should ideally always be a metric-based, analytical decision.
The most important types of questions you should be asking are:
Is the engineering team able to meet the product roadmap?
Are they able to meet the product roadmap with an acceptable level of quality?
Are they able to meet all demands of the marketing team and other key stakeholders in the business?
Clearly, if the engineering team can’t meet these demands, then there’s obviously a need to hire more resources and you should prioritize hiring where there’s the biggest bottleneck. In addition, I think you need to be constantly asking yourself:
“Are we able to meet the demands of all of our internal stakeholders while still maintaining a stable, performant system, AND not accumulating technical debt?”
In fact, I think the most important sign that an engineering team is healthy and adequately staffed is when they are making progress in paying off any technical debt that does already exist.
“How can I be analytical about this?”
If you’re not already, you should be working towards some system where you’re tracking velocity of each engineering team per sprint over time. I could write an entire post on best practices here, but the merits are undeniable, I think. By tracking velocity over time, you can get a pretty accurate view of how your engineering team is performing and it can give you early and hard evidence of warning-signs of potential under-performance. Also, by tracking velocity over time, you’ll start to get a very good idea of what your team’s capacity is per sprint. Then, based on that capacity, you should be able to give your product and marketing teams better estimates on when and if you can meet their roadmaps with your current resources. You also will have hard evidence you can take to your CEO if you have to ask for more resources.
I recommend defining some split percentage-wise between non-engineering work (like new feature development or feature updates) vs. engineering work (like re-factors, re-architectures, or just bug fixing / cleaning up tech debt). And this split should be dynamic. It should be an ongoing conversation between the engineering lead and the product lead. If engineering is in a decent state and there’s a large product backlog, we can devote more points in a given sprint to product features. On the other hand, if there are a lot of bugs or stability issues, maybe we need to devote more resources to engineering.
When do you need a manager?
Hopefully this will be obvious to you, but you can only have so many ICs reporting to you whilst be an effective manager and mentor for them AND be effective in all other facets of your job, whatever that may be. Managing people is hard. It requires frequent one on ones, ensuring there are career paths for your people, ensuring you have interesting and challenging work for your people, keeping them motivated and engaged at work, and getting buy in for your vision. For every additional person that reports to you, you’ll need to devote at least a couple of hours of your week to that person.
I think many of us are stubborn and have a false sense of hubris in believing that we’re such good managers that we can juggle the challenges of managing a dozen people AND still be able to think at a strategical level about the company’s priorities. We also find it hard to believe that somebody else could come in (or be promoted) and be more effective at managing all these people than ourselves.
You have to examine yourself closely. When you start to feel like the work of managing so many people is taking away from your ability to think big-picture, then it’s probably time to hire (or promote) a manager. Another indicator could be that if you just don’t feel like there are enough hours in the day to execute on big initiatives while paying attention to the necessary finer details, maybe it’s time to hire a manager to pay attention to some smaller details so that you don’t burn yourself out.
When to promote a manager from within
It’s a tough thing to do when deciding whether to promote one of your ICs into a managerial position or to bring in someone experienced from the outside. There are benefits and risks to both.
The benefit to promoting from within is that you are fostering career growth at your company, which is going to help your long-term retention of employees. Employees in all positions want to feel like there is some upward career-mobility for them. In addition, the person you’re promoting already knows your company’s domain and you know they fit into your company culture already. The risk of promoting from within is of course that the person may not be ready or mature enough for a leadership role and they haven’t yet developed the mastery of their domain that will be necessary to take your company to the next level.
The benefit to bringing in a manager from outside is that you can make sure you’re bringing in somebody with a track-record of success doing the thing you’re hiring them to do. If you have a good interview process, you can be reasonably sure they will come in and do a good job. The risk, of course, is that they don’t fit in well to your existing company culture.
Look for initiative, desire, mentorship, and respect
Initiative is the number one quality that I look for when making the decision on whether to promote somebody into a management position. I think it’s a huge indicator that the person will continuously improve their team’s processes and continually push the business forward, and I probably won’t have to micro-manage this person at all. I can trust they will do the right things for the success of their team and the company without me even asking. So, if you’re thinking about promoting someone from within, I’d want to see a demonstrated history of taking initiative.
Desire should go without saying. The person in question should have expressed some desire at some point to take on more leadership, to take on more ownership, and mentor their teams.
And they should be already exhibiting mentorship qualities to the other members of their teams. They should be going out of their way to aid their teammates. Their teammates should look to them as a valuable resource and subject matter expertise in their discipline.
And finally, respect. I’d never promote someone from within unless they already had the respect of all the other members on the team.
I think if you’ve got these four qualities (initiative, desire, mentorship, and respect), you’ve got a winning formula for your next successful manager or team lead.
When to bring in a manager from outside
I believe there are only a few good reasons to bring in a manager from outside:
There’s nobody good internally
If you have nobody on your team already who meets the above criteria, I wouldn’t risk it; just hire somebody from outside.
It’s an area you’re weak in
This takes an honest assessment of your skills. If you’re weak an area, and especially if either #1 or #3 applies, I’d take a good look at the benefits of bringing in a master.
The team is young and/or inexperienced
Even if you have somebody internally who demonstrates all the characteristics of someone you should promote into a leadership role, if that person and the entire team is just very inexperienced, it may be worth it to bring in someone with experience who can guide the team through the inevitable challenges.
So LinkedIn just released a mentorship feature where they pair mentors with mentees through the app. I signed up as a mentor and got flooded with requests from young software engineers and surprisingly many young data scientists. The most common thing these young engineers want advice on is which direction to take their career.
Here’s a request from one such data scientist, let’s call him Ralph: “I’ve been a data scientist for less than 2 years and would love to hear your advice on focusing as an individual contributor or growing as a leader towards the CTO path.”
I would love to help Ralph on a one-to-one basis, but unfortunately don’t have time in my life right now to meet and mentor with every young engineer and scientist that comes my way looking for mentorship, so I will point them here, and to this response: “Hi [Ralph], unfortunately I can’t make time anytime soon to meet you, but I get this question a lot so let me give my advice here.
There is a lot of leadership you can explore without explicitly going down the managerial track. You can own projects, you can be the tech lead, you can volunteer more at work, you can start projects on the side, and you can mentor people. All of these things will help you figure out if you actually like dealing with people as part of your job, because the fact of the matter is that the higher up in the managerial chain you go, the more it is about managing people.
The other thing that I’d like to point out is there are a lot of great end games out there besides just IC or CTO. A lot of companies, including Coffee Meets Bagel, have an architect track for people who know they’re not interested in managing people and just want to immerse themselves deeper in code and architecture. End game for this track would be Chief Architect.
We also have our data science organization as a completely separate, high-level, organization from engineering which reports directly to the CEO. So, at some point, we will have a Chief Data Officer or a Chief Algorithm Officer. Now, those positions would still be very heavy on people management, but probably a little more specialized and more hands on than a CTO role.
I hope that helps. Happy to answer any other questions or dive deeper!”
And I hope some other young engineers stumble across this as well and get some value out of it!
Trying to get my blog up and running again, and came across this peculiarity with a useful Android library called CirclePageIndicator. Basically, if you want to set the non-selected fill of one of the circles to transparent, you must do it in java rather than xml.
I just discovered an awesome plug-in for Android Studio today — the Genymotion Plugin. It places a Genymotion icon in your Android Studio toolbar and enables one-click access to your Genymotion emulators.
To those of you who aren’t using Genymotion as part of your regular Android development workflow, you should be. Genymotion’s speed will cut tons of time from your development cycles.
Okay, here’s how to install:
In Android Studio, go to File > Settings.
Select Plugins and click Browse Repositories.
Right-click on Genymotion and click Download and install.
To see Genymotion plugin icon, display the toolbar by clicking View > Toolbar.
And here are the 12 Tips in text: 1. Ideas are Just a Multiplier of Execution
Okay, so here are my tips, starting with my opinion that ideas are truly worthless. It’s all about execution and timing.
I’m sure you’ve heard this all before, but I still run into people who refuse to share their ideas for fear of it being stolen. If you told somebody your own idea, and they were so passionate about it that they went out and executed on it better than YOU, then they deserved it anyway. You need to get as much feedback on your idea as humanly possible before you go start and build something.
This guy Derek Sivers actually created this scientific chart which proves it and it was actually published on the internet, so you know it’s true. Basically, to find out how valuable your company is, or could be, you just multiply the idea-greatness coefficient over here on the left by the execution greatness coefficient over here on the right and you have the value of your company.
Obviously, if you have an awful idea, it’s never going to be worth anything, but even if you have a brilliant idea, with no execution it’s only worth 20 x 1 = $20. Now, I’m not gonna pay you 20 bucks for your idea, but somebody might. And of course it’s only if you have a brilliant idea coupled with brilliant execution do you get those multi-hundred million dollar or billion dollar companies.
#2 is Make Your Idea Matter
Your idea, your company, should matter to you, and you should be very excited about it. You should be so passionate about your idea that your passion infects others, because it will have to if you want to be successful. If you choose to go down this path of building your own mobile app company, you will be working so much that you don’t want it to feel like work, and it shouldn’t feel like work, or else you’re not going to be happy.
#3 is Finish Your Business Plan or Actually Write One
I feel like business plans have gotten a bad rap lately and I think that’s a for a few reasons:
1. It’s easier than ever before to start a business, especially a tech business, so there’s a lot of non-traditional business people trying their hand at entrepreneurship.
2. The market changes really fast so some argue that by the time you finish a biz plan, it will already be obsolete. I agree with this to a certain extent, but the process of writing the business plan will make you that much more prepared for the changes that come.
3. And I think people are just lazier than they used to be. No offense to millennials. I think technically I’m considered a millennial, although a very early millennial. I don’t know, I was born in 1981, does anyone know the official millennial cutoff?
Anyway, I personally would not join a company that didn’t have a business plan of some sort and a solid path to profitability. Even Tinder. When I joined Tinder, they were already getting 10k downloads a day, but even with Tinder, I made sure the company had a plan for getting to profitability. Now Tinder gets over 100k downloads every day and is about to start making some money.
#4. Don’t Outsource Your Core Competency
If at all possible, you want the people writing your app to be stakeholders in the company.
You are NOT a mobile software company if you don’t write your own mobile software. [repeat] I understand it’s tough if you’re not a technical person, and if you’re not, then you should partner with someone technical, or start learning yourself. If you’re desperate, sure go ahead and hire some outsourced devs, but pick devs carefully and try to pick devs that you would want to work with on an ongoing basis. B/c software is never just one and done. It’s never done, ever. We keep iterating on software for as long as we have users and developers. If you must outsource, have a plan for bringing that work in-house as soon as possible.
#5: Make the Team Matter
The first part of this rule is don’t do it alone. Bring in people to help you. When I built up i-booze.com, I did everything myself, and ultimately that was my downfall because I couldn’t keep tabs on everything that was going on with the business. I’ll tell ya exactly what happened there a little later.
But remember, bringing on additional people is probably THE most important part of building your business. If you bring on the wrong people, it could be devastating for your business. I recommend you hire first for people with passion. You want to find people who are passionate about your product, passionate about your industry, and hopefully passionate about their job as well. Passion always trumps credentials in my book.
However, passion is only part of the puzzle. At SocialTagg, I was able to find plenty of people who bought in to my vision. At our peak we had 10 employees and 4 interns. Our mission was to make networking so easy that you didn’t even have to think about it. I hired people who I genuinely thought were passionate about our mission at SocialTagg. The mistake that I made, however, was I didn’t necessarily hire doers. We had a hard time executing on our product roadmap b/c we had a lot of thinkers, and a lot of passion, but not enough doers.
This is from 9gag.com. I think this meme is supposed to be applied to group projects at school, but nothing changes when you get into the real world.
There’s always one or two who do most of the work. There’s always at least one who never really gets it (hint: you should probably fire these idiots.) You always have people who say they’re going to help, but they never do. And, if you do happen to be successful, you’ll always have that lame-o who shows up at the end and demands his piece of the pie that he didn’t help to bake.
As you can guess, I might be a little bit cynical about team members. My point is, be very careful who you enter into business with, because it ends up being a marriage of sorts. You could be with them for a very long time, and in the end they might try take everything from you.
#6: Make the Design Matter
Moving on to a lighter topic … Design.
This of course is the Prince of modern software design, Jony Ive, the head of design at Apple. And he says, “Design is the most immediate, the most explicit way of defining what products become in people’s minds.”
Think about this for a second. Which products or services have given you that warm fuzzy feeling of true awesomeness lately??? You used it, and you were like wow, this product is awesome, I love this product? … For me, it was Expedia’s Android app. The thing is just beautiful, big images everywhere, nice transitions between screens, just a gorgeous app.
Think about this … 90% of information sent to our brains is visual.
And if Jony Ive is the Prince, then Steve Jobs was of course the King. He said, “Design is not just what it looks like. Design is how it works.”
When I got hired at Tinder, my boss was the original iOS dev at Tinder and the inventor of swiping, Jonathan Badeen. Jonathan is fanatical about design. Before he was a software developer, he was a designer, so it’s no surprise that he was fanatical about design. He idolized Steve Jobs. In fact, he even had a mouse pad with Steve Jobs face on it.
As fanatical as I thought he was about design, he taught me a lot, and he’s a big part of why Tinder is so successful. A company like Tinder places the highest importance on design, sometimes iterating over a design dozens of times or more before finalizing it and sending it to developers. And even then the design wasn’t finalized. The design would often times change while we were building it. I’m not saying that’s the right thing to do, but nowadays if you want to be successful, not only do you have to have a brilliant idea, and brilliant execution, but you absolutely have to build a beautiful app.
Now you may be saying, Karim, I’d like to hire a designer and make my app look good, but it’s just too expensive. Well, if you think good design is expensive, you’re probably right, but you should look at the cost of bad design. It can cost you everything. If you can’t afford a designer, I recommend you partner with someone who knows design.
#7 Go All-In
On to another famous entrepreneur … Walt Disney said that when you believe in a thing, believe in it all the way – implicitly and unquestionable. That’s really powerful and that’s what you gotta do to be successful in this business, to rise above the crowd, to be the cream of the crop. I think you really have to go all-in.
Now, I’m not saying you should quit your cushy day job, but if you really want to be successful in your endeavor, in your passion, you need to be able to devote yourself fully to it, at some point, so you should have a definitive plan for devoting your life to your passion.
At SocialTagg we built up a team of 10 people who had some form of equity in the company. I had a group of ten people who were either working full-time, going to school, OR working for another startup, AND working part-time for SocialTagg. Nobody was all in, including myself. I was working for either Fandango or Beachbody or Tinder or Coffee Meets Bagel, and getting paid well, but also trying to build a profitable business on the side with a bunch of other people were also only working nights and weekends. There’s no way you can win if you can only work on your product nights and weekends. [repeat] Your competition will just out maneuver you and out innovate you.
So make a plan for going all in.
#8 Figure Out Virality
Alright virality, if you want to successful in the consumer space, you need to figure out how to make your product viral. There’s only so many downloads you can buy.
This comic is called Going Viral and it’s written by Sean Nicholson. The point of the comic is that going viral is very hard to do, it’s not like there’s a switch you can turn on that’s going to make you viral. If there was, we’d all hit that switch, right? You can’t just assume that since you built something, and you think it’s cool, and your mom thinks it’s cool, and all your friends think it’s cool, and all the startup junkies at Mobile Camp ALSO think it’s cool, that it’s just gonna spread like wildfire.
No, you need targeted, specific, repeatable experiments to figure out what your viral hook is.
If you didn’t know …
The viral hook is defined as something compelling that the user wants to share. At Tinder, e.g., one of the best viral hooks is to prompt the user to share as soon as they get their first match. They are proud, and want to announce to their social spheres! They have a potential mate; they are not a loser of our species. They are winners, and this is exciting news for their social blogosphere.
You need to experiment in your own business and industry and figure out what are the best viral hooks that you can build into your product.
I just recently heard about these guys, jet.com. They’re basically building a subscription shopping service, think Costco meets Amazon. You pay a monthly fee to get access to cheap shopping. Jet will only make money on the subscription revenue; they don’t take a margin on each product.
I think they have a good idea, but their execution so far is brilliant.
On the front page of their website, they say, “Refer friends to boost your Insider rank. Unlock perks. Earn Jet stock.” So they’re actually giving away prizes and stock in their company to the people who refer the most friends.
This is brilliant virality!
Okay, on to the juicy stuff … #9 is Obey the Law
When you’re pressing the boundaries on innovation and technology, often times you run right up against the law, and it can stop you dead in your tracks. Think about Uber’s struggles, for example. Uber is a brilliant idea with brilliant execution (obviously, it’s worth billions of dollars), but in how many places have they been shut down or been threatened to be shut down? A lot … Little Rock, Richmond, Cambridge, Vegas, Portland, NY, India, Paris, Spain, Thailand, Netherlands, Belgium, Berlin …
This is what happened to i-booze.com, which as I mentioned was primarily an instant alcohol delivery service I started in Seattle. I built the business up in my garage, like so many other entrepreneurs, to a point where I had two employees and we were doing a few thousand in revenue every month, but then it got too big to run out of my garage, so I rented a 1500 sf warehouse in downtown Seattle with plans to grow the business.
Well, it turned out that the city of Seattle didn’t like my business model and they decided not to renew our liquor license and so we were forced to shut down. It turns out that it’s illegal to sell alcohol to people in WA state if they’re already intoxicated and by allowing people to buy alcohol on-line we were unable to check if they were already intoxicated before selling them alcohol.
Back then, in 2009, there weren’t any good solutions for processing credit cards at someone’s house. If I were to run this business again, I would make sure to obey the law and use Square or something like that to take credit cards at the customer’s door. But this is another reason to have a partner or two. Had I had a cofounder with i-booze, that person could have helped me on the legal front and maybe we could have avoided the shut down.
Ok #10, Roll-out slowly.
I think it’s very tempting when you’ve just finished building your MVP to wanna put it out to everybody in the world, b/c you’re so proud of it, and you want your baby out there. But the prudent and wise app developer pushes his app out slowly. This gives him the time to see if everything’s going alright as his app is gaining adoption. He can make sure that any crashes or critical issues only affect a limited number of users, instead of everybody. You can roll out by geographic region, or you can also roll-out by language or by market percentage.
Exceptions to this rule of course are:
* If you have to make an emergency point release to fix some critical issues or crashes or
* You have some release that coincides with a marketing push so you need to make sure that the release goes out to as many people as possible at one time. A perfect example of this is at Coffee Meets Bagel, we usually roll out builds out very slowly by market percentage, however a few weeks ago we were on Shark Tank, and so we had to make sure the newest version of our app was available to the entire market the day that Shark Tank aired, and so in that case we pushed it out to the entire market all at once.
OK .. #11: Customer service still matters.
Bill Gates said that “Your most unhappy customers are your greatest source of learning.”
If you have any sort of success (or even if you don’t) you will need a customer service department, or at least one person who is dedicated to handling user issues.
At Tinder, about a year ago, we were getting over 10k customer service touches every week. We hired an entire team of people in the Philippines just to answer customer complaints and issues. And that’s for a free service! (although now Tinder has plans to start making some money). At Coffee Meets Bagel, we have an in-house customer service team because we’ve always had in-app purchases and as soon as you start taking people’s money, customer service gets real … if you know what I mean.
You can learn a ton about your service just by reading the reviews that people leave in the App Store and Google Play. And believe me people are harsh and brutally honest. At both Tinder and CMB, we get a ton of 1 star reviews for really stupid reasons like they aren’t getting any matches or their matches aren’t responding to them or even b/c FB is our only authentication mechanism.
In Google Play, you can respond to user reviews right there in the store. This is an invaluable opportunity to interface directly with your users.
Alright, #12. Measure Everything I’m talking about Customer Surveys
At what point should you use customer surveys? At every point.
Before you build anything, you should survey everyone you know to see if anyone would even be interested in a product like you’re thinking about building. If they are interested, would they pay? how much would they pay? If they are interested, would they tell their friends? This kind of information will help you find your product-market fit. This was something we didn’t do well enough at SocialTagg and we paid the price. We started building SocialTagg at a hackathon, and we thought it was pretty cool, and our moms thought it was pretty cool, and our friends thought it was pretty cool, and all the startup junkies at the hackathon thought it was pretty cool. But instead of really taking the time and validating what we thought was cool with actual users, we just kept building. Eventually we had some pretty cool technology that nobody really wanted.
Landing page — At what point to you put up landing page?
Again, before you start building! Put up a landing page with a fake screen shot of your application and short description and see how many people you can get to sign up for your app. Who cares if you don’t have anything to offer them? You just need to find out if people will actually want to use this thing that you’re about to spend days, weeks, and months building.
And you A/B test that landing page!
You should experiment with different versions of that landing page. Each different version of the landing page should highlight different product benefits and features so that you can really get an idea of which features are most important and desired by the end user.
And of course there’s more traditional A/B testing that you should do when you’ve already built out your core product and you’re experimenting with different versions of features. For example, at Coffee Meets Bagel, we sell a virtual currency called ‘beans’ and we experiment a lot with how much people want to pay for beans and how many beans various features should cost. There are getting to be some great tools out there for A/B testing, like Optimizely for one.
And finally, analytics.
You should integrate analytics into your app from the very beginning. Before you release your app to the market, you should know what are those things that you want to measure. You should know what your key metric is. There should be one key metric by which you can measure the success of your business, and you should be measuring that right from the very beginning. I’ve personally integrated probably every analytics platform out there, including, building custom ones from scratch, but some of my favorites are Flurry and Google Analytics.
And lastly, just a point, maybe obvious, maybe not. It’s not enough to just measure it, you have to put the work in to analyze the results, and study them, to glean useful insights.
Yay! We’re done!
The road to a billion dollar startup is long and fraught with many perils so don’t forget to celebrate all the little victories along the way!
So, I’m trying to get back into blogging as it’s been over a year and half since my last post. I got caught up in running my failed startup, SocialTagg, and caught up blowing Tinder up. I’m now working at Coffee Meets Bagel. I had a few moments to spare while I waited for our 1-man QA department to get back to me about an issue I had a question on and I noticed that there was a green-light on at the top of my Macbook.
I guess I should have noticed this before, but I didn’t and never had a chance to investigate before. It turns out this light turns on when your camera is activated (on). I immediately freaked out and thought oh no, somebody must be spying on me. It turns out, however, that earlier in the day I had a Google Hangout with some teammates and left the window open, thus leaving the camera on.
So before you freak out about the NSA spying on you, try closing all our apps first. 🙂
I like to think of an entrepreneur as someone who creates opportunity for themselves. They are adept at creating something out of nothing and aren’t afraid of taking risks. I feel that the founder of a lifestyle business should be considered an entrepreneur just as well as the owner of multiple franchises and just as well as the founder of an innovative tech startup. They are all entrepreneurs because they are creating value for themselves.
Sometimes in mobile development you want to create a layout programmatically with an unknown number of elements. You may want to add elements to it dynamically and have the layout height grow as elements are added. Unfortunately, in Android, there is no native FlowLayout. Here is a method that gets us this functionality. I worked on this with Sherif elKhatib on StackOverlow. Actually, he wrote the original version and I’ve optimized it account for a layout which doesn’t fill the entire width of the screen. The code below turns a native LinearLayout into a FlowLayout. Just pass in the LinearLayout, the set of Views you want to add to the LinearLayout, the Context, and any extra view that may be on the left or right of the LinearLayout.
(Note: Make sure your LinearLayout has orientation vertical.)
* Copyright 2011 Sherif
* Updated by Karim Varela to handle LinearLayouts with other views on either side.
* @param linearLayout
* @param views : The views to wrap within LinearLayout
* @param context
* @param extraView : An extra view that may be to the right or left of your LinearLayout.
* @author Karim Varela
private void populateViews(LinearLayout linearLayout, View views, Context context, View extraView)
// kv : May need to replace 'getSherlockActivity()' with 'this' or 'getActivity()'
Display display = getSherlockActivity().getWindowManager().getDefaultDisplay();
int maxWidth = display.getWidth() - extraView.getMeasuredWidth() - 20;
LinearLayout newLL = new LinearLayout(context);
newLL.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
int widthSoFar = 0;
for (int i = 0; i < views.length; i++)
LinearLayout LL = new LinearLayout(context);
LL.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
LL.setLayoutParams(new ListView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
params = new LinearLayout.LayoutParams(views[i].getMeasuredWidth(), LayoutParams.WRAP_CONTENT);
params.setMargins(5, 0, 5, 0);
widthSoFar += views[i].getMeasuredWidth();
if (widthSoFar >= maxWidth)
newLL = new LinearLayout(context);
newLL.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
params = new LinearLayout.LayoutParams(LL.getMeasuredWidth(), LL.getMeasuredHeight());
widthSoFar = LL.getMeasuredWidth();