Keep your dotfiles bug-free with Continuous Integration

Just like many software engineers, I maintain my config files for GNU/Linux and Mac OS in a git repository. Given that, I wrote a fair bit of them in interpreted code, notably, Bash, it is a bit hard to ensure that it is bug-free. The other problem I face is that packages on homebrew, the Mac OS package manager becomes obsolete and gets deleted from time to time.

I added CI testing on Travis CI to prevent these breakages and to ensure that my dotfiles are always in good shape for installation. The great thing about Travis CI is that it is entirely free for open-source repositories even for testing on Mac OS containers.

Read More

A short guide for MBAs looking for a job in the tech world

Why Tech

In the past decade, interest among MBA grads towards tech companies has drastically gone up. If you are one of those, take a pause and ask yourself “why”. Of course, there are upsides; the tech sector is growing faster, pays well, has a much better work-life balance than finance, private equity, or consulting. But at the same time, do remember that you spend almost 50% of your waking hours at your workplace, so, you must as well enjoy it. If you enjoy flashy presentations, regular travel, or an opportunity to think about big M&A deals, then these things come much earlier in your career on the east coast than that on the west.

Why Product Manager

Product Manager is the dominant choice for an MBA grad. That does not mean this is the only possible role. Anecdotally speaking getting into a PM role at Google is harder than a Software Engineering role. And if you are an international student looking for visa sponsorships, then some tech companies are not willing to do that for the PM role. Lastly, if you are not from the Computer Science/Electrical Engineering background, it is harder to get shortlisted and clear interviews. My goal is not to discourage you from applying but make your expectations realistic.

Beyond Product Manager

Facebook, Google, Apple/Amazon, Netflix (FANG), and Microsoft are big businesses. They deal with a wide range of functions such as real estate to supply chain to short-term/long-term cash management. There are all sorts of finance-world equivalent roles beyond the PM role. I won’t be surprised if Google pays more in real-estate rents than say, WeWork. All big companies engage in regular M&A as well and have a full-time team staffed for that. Cisco, Apple, and Google, in particular, are known for M&A. Also, many companies have roles like Product Strategy and Product Marketing Manager. These roles are similar to Product Manager but attract much less attention since these titles do not look as coveted as the Product Manager. You can use these roles to get in and then can transition to a Product Manager role later.

Beyond tech companies, many venture firms, both domestic and foreign (like Rauketen and Softbank), invest in US tech startups. And for that, they hire analysts, principal, and associates. The job responsibilities range from scouting to deciding on the deals.

Does company size matter?

I like quantifying companies in three stages – stage 1 (pre-product market fit), stage 2 (post-product market fit, growth stage), and stage 3 (mature companies like FANGs). Do note that in a big company like one of the FANGs, you will find products which are in stage 1, stage 2, or stage 3.

If you need visa sponsorships and have loans to pay, then stay away from stage 1 companies. The risk-reward ratio is more skewed towards risk here. If this succeeds, even a small acquisition can net you a million-dollar or two easily.

In a stage 2 company, the likelihood of broad responsibility is higher. You could be doing inside sales one day and scouting for a new office lease the other. If you are willing to take the risk, then the long-term financial rewards are much higher here. If you need visa sponsorship, then you should join a stage 2 company with a non-US office as well. So, in case you don’t get H1-B before your OPT expires, the company can move you to one of the international offices. Confirm this after getting the offer letter and before signing it. Some companies like GitLab have a strong remote culture; this can be extra beneficial to someone concerned about the visa sponsorship issues.

In a stage 3 company, your role is going to be much more structured, narrow, and focused. The company won’t die overnight and would likely have international offices to move you to in case the visa situation does not work out. One caveat for those looking to apply for permanent residence (green card), join a company which did not do layoffs recently and is not planning to do in the next year. If a layoff happens than the permanent residence applications from that employer are usually rejected by the USCIS.

B2B, B2C, and marketplaces

B2C, Business-to-consumer startups, in their pure form, was thriving in the valley till about 2015. The users have swayed away from installing new apps, and more prominent companies have become good at making the whole startup a feature in their product. So, in 2019, software-only B2C exists, primarily, inside FANG and Snap. Two exciting classes have emerged beyond software-only B2C. One is prosumer (professional consumer) companies like recently-IPOed like Slack and startups like Savvy. The other exciting direction is the D2C, direct-to-consumer, startups like allbirds and brandless.com. D2C, in my opinion, requires a lot of operations and marketing experience. I notice more B2C startups focused on India, Latin America, and China than the USA these days.

B2B, business-to-business, are all in rage today. From Google cloud/Azure to small companies like Narmi, a lot of companies are capitalizing and building products for other businesses. While B2C is about understanding consumer psychology, B2B is about understanding the needs of another business.

Two-sided marketplaces are hard to grow. Most of them, in the US, are trying to build pieces of Craigslist, and some are doing well.

How to apply

Don’t apply directly for an off-campus opportunity. Go via a referral. The referral route ensures that you will get a response, even if it is a rejection. A lost of time direct applicants never get a response. And you don’t need to find someone you know. You need to find someone willing to spend 5 minutes submitting your resume internally. Culturally, it is not frowned upon to submit referrals for acquaintances. And if you get hired the person referring you will make referral fee which is usually a few 1000$.

Where to find stage 1 and stage 2 jobs

  1. Angel List
  2. Breakout list
  3. Y Combinator startups
  4. Hacker News’s who is hiring threads and a bit more readable version

Closeum – closed-source in disguise

Earlier, the Software world was rigidly divided between closed and open-source software. Microsoft Windows is closed-source, GNU/Linux is open-source. Microsoft Office and Lotus Notes are closed-source, LibreOffice is open-source. Turbo C++ is closed-source, and GCC is open-source.

But now, a new class of software products has emerged whose core is open-source, but still, the open-source software is of limited use. One model is to offer some critical and useful functionality in a closed-source layer via a managed service in AWS/GCP/Azure, for example, Redis is open-source, but useful modules on top of it are not. Another model is to use licensing gimmickry, for example, MongoDB is licensed under SSPL which requires that if anyone offers MongoDB as a service, then the source code of the full service must be published under this license. The third approach is to make the core software open-source but make it dependent on closed-source cloud services. For example, the node package manager (npm) is open-source, but a closed source company owns the default npm registry. Android is open-source, but most day-to-day application ranging from Google Maps to Google Music are closed-source. Now onwards, rather than calling such software open-source, we should call them closeum.

Startup founders: How not to write an email

Consider this email,

And now consider this one,

Hi Ashish,

You signed up for the Orchard beta not too long ago, and we’re excited to finally send you an invite!

(Just to jog your memory, Orchard helps you make the most of your relationships, keeping you up to date on where you’re spending your time and who you need to catch up with. It’s somewhere between a personal CRM and a todo list for your connections.) [Emphasis mine]

You should receive an invite from Apple’s Testflight service in the next few minutes. It will contain a code or link you need to install the app. You’ll also need to have the TestFlight app installed on your phone. If you need us to send the invite to a different email address, just reply to this message and let us know.

Once you’ve checked out the app, please send us your feedback — this is a beta and we need your help to improve! Be honest, frank, and opinionated: you won’t hurt our feelings. Bugs, ideas, concerns, etc all fair game. You can reply to me or send to team@orchard.ai.

Thank you!

Brian and the entire Orchard team

brian@orchard.ai

Which one do you think your early adopters have a higher likelihood of understanding and responding to?
Don’t forget while you might live and breathe your startup, your early adopters have probably signed up to try several such services, and unless you remind them what your product is about, they might as well delete the email and move on.

Server vs mobile development: Where the code runs matter

When the code runs on your servers, you have much more control over the “context” in which it runs. On the mobile devices, the device OS and the user control the context. This difference leads to some subtle implications.

One significant set of differences comes from the lack of control of the platform. For server-side code, one can choose from a wide array of languages. For the mobile code, however, the best choice would almost always be the one dictated by the platform – Java/Kotlin on Android and  Objective-C/Swift on iOS. Further, for the server-side where one can stick to a particular version of the language. In the case of mobile, the platform controls the language version. Same goes regarding the hardware choices – one can choose to use different types of server machines specialized in handling those jobs, eg. GPUs for math-intensive computes. While for the mobile-code, one had to write a good enough fallback to support a wide-enough set the devices. Similarly, the server-side has to rarely worry about the server killing a running process while it is normal for mobile OSes to kill backgrounded processes eventually.

The other set of differences comes from the temporary changes to the platform introduced by the carrier and the user. A network request running on mobile has to be robust enough to deal with intermittent broken connectivity to outright unavailability of a data connection, e.g., due to the user switching to the airplane mode. On mobile, network type matters as well. A network request on cellular would usually cost more than a network request on Wi-Fi to the user and a network request on roaming even more. On mobile, the code has to be aware of not doing unnecessary work when the user is low on battery. Server-side code is rarely subjected to such constraints.

Lastly, it is possible to parallelize and speed up the server-side code by adding more resources like RAM or better CPUs. If a certain number of servers are not enough, you can add more. There isn’t usually a way to offload compute-intensive or memory-intensive work off of the mobile devices without trading it off for network latency and sometimes, user’s privacy as well. While it might be preferable to go with a multi-processing approach in the server code to avoid concurrency issues, on the mobile, however, multi-threading being more straightforward and less resource-intensive is almost always the choice.

Apple vs Google: Naming of flagship Android vs iPhone

iPhone

  1. iPhone
  2. iPhone 3G -> iPhone 3GS
  3. iPhone 4 -> iPhone 4S
  4. iPhone 5 -> iPhone 5S
  5. iPhone 6 -> iPhone 6S (and plus sizes)
  6. iPhone 7 (and plus sizes)

Android

  1. Nexus One
  2. Nexus S
  3. Galaxy Nexus
  4. Nexus 4
  5. Nexus 5
  6. Nexus 6
  7. Nexus 5X & Nexus 6P
  8. Pixel & Pixel XL

While iPhone is recognized as a global name while erstwhile Nexus and now, Pixel has almost no branding outside of the Android fanboys.

Further on Google’s naming snafu:

  1. Nexus 7, Nexus 10, and Nexus 9 are tablets. 7 & 10 were launched with 4 and 9 was launched later.
  2. Pixel brand was originally used for Chromebook Pixel.
  3. Nexus 5X and Nexus 6P were new versions of Nexus 5 and Nexus 6, respectively. It seems like the two teams couldn’t agree on a single suffix letter.

When aggregation works and when it doesn’t

All consumer internet products are either about consumption, production or both. A blog site is primarily about consumption. A photo transforming app is primarily about production. Social networks are consumption heavy. Good Messaging apps are symmetric. And a grievance collection product like BBB is production heavy.

Building aggregation on top of similar products is a well-known strategy.  The hard realization to note is that it can succeed only in very specific scenarios. Look at all the successful aggregation products, travel booking sites, news aggregators, RSS readers, discount coupon aggregators. As opposed to that, attempts to write an email aggregator, a social media aggregator etc. have not been as successful. And that’s the underlying theme, aggregator works well for consumption only interfaces where the product is sourced from many sources (more the better) and  is standardized in the eyes of the consumer. They have limited success almost everywhere else. And this just doesn’t apply to software products. Microsoft tried and failed to have their own hardware stores since their offerings were similar and a subset of BestBuy whereas Apple succeeded in the same strategy despite the naysayers.

Book summary: The Lean Startup by Eric Ries

book_cover_the_lean_startup

The book consists of the learnings which the author had while working on his startup IMVU. The book focuses on the concept of validated learning and the build-measure-learn feedback loop. It tries to bring in a systematic approach to measuring the progress at a startup. A startup has a true north, its vision. It employs a strategy that includes a business model, a product road map, and a view of partners, competitors, and customers. The product is the result of the strategy. Products constantly change (engine tuning). Strategy changes occasionally (pivot). Vision rarely changes. In general management, failure to deliver results is caused by failure to plan or failure to execute. Both are frowned upon. But in the modern economy, both are useful tools for testing new ideas.

Vision

A startup is a human institution designed to create a new product or a service under conditions of extreme uncertainty. Success under such scenarios requires rapid experimentation.

Learning

There is a lot of learning involved in the process, and sometimes, when things go south, people resort to saying, “I learned a lot”. What’s more important is to figure out validated learning. The goal is to cut down to the absolute minimum effort required to learn what customers want and eliminate everything else. Eric Ries wrote 3-D avatars as IM add-ons for popular IMs in 2004. During the user testing phase, he realized that not only do users not understand what an add-on is, they also don’t mind installing a new IM software. A lot of heavy IM integration turned out to be a waste of effort. After this, Eric and his team launched several experiments regularly to test what works and what doesn’t.

Another counter-intuitive thing that IMVU experimented with is charging early. Many startups delay charging their customers. Not having any revenue is better than having low revenue since the former invites the imagination of overnight success once they start charging. The downside is that it can lead to the creation of a product no one is willing to pay. Conclusion: start with a low-quality prototype, charge customers from day one, and use low-volume revenue targets for accountability.

Experiment

Nick Swinmurn had a hypothesis that people will buy shoes online. Rather than purchasing inventory upfront, he took photos of shoes at local shoe stores, and if the users bought it, he would buy and ship it to them. This minimum product tested customer demand as well as many other business issues like payments, returns, and customer interaction. Amazon acquired Zappos acquired for $1.2 Billion.

  1. An experiment starts with a hypothesis. A value hypothesis tests whether the product/service will deliver the value to its users. A growth hypothesis tests whether new customers will be able to discover the service.
  2. To test the value hypothesis, find some customers to experiment. Don’t go for an average customer but find an early adopter, whose needs are most accurately served by the product.
  3. Now, build a concierge minimum viable product. Such early adopters are more forgiving of the quality of the product, and their feedback is useful to know whether the product fulfilled their needs or not. If users complain about a missing feature and they’re on the roadmap, that’s a good thing, since it implies that the team understands their customer. If there is a feature that is on the roadmap, but the user does not complain about it being missing, then that’s an indication to remove that feature.
  4. The results will guide you to validate the hypothesis.

Steer

The Build-measure-learn feedback loop is at the core of the Lean Startup model. After building the MVP, the goal is to rapidly learn and iterate upon the product based on the user’s feedback.

Leap

All startups make some assumptions (leap of faith) about their viability. In the case of iPod, there were two assumptions, users would put earphones in a public place (“analogous to Walkman”), and they would pay for the music (“antilogous to Napster”).  Only the second one was a leap of faith. Verifying these assumptions is paramount. Toyota does it via Genchi Gembutsu (“go and see for yourself”). Toyota’s minivan, Sienna’s chief engineer, drove through North America. He realized that kids are most appreciative of their environment and launched the new model with a particular focus on interior comfort for long trips. This lead to significant success for Toyota. Scott Cook, the founder of Intuit, believed that someday people would use a computer to pay bills and track expenses. He verified that the market for such a product by calling random people over the phone. One pitfall to avoid here is analysis paralysis. One can keep repeatedly talking to customers and whiteboarding over and over again. But many errors in such a strategy would go unnoticed since they depend on subtle interactions between the user and the product.

Test

Groupon started as a “collective activism platform”. That assumption failed. Andrew Mason experimented with a WordPress blog and a mailing list to sell discount coupons. They had no fancy forms on the site. The idea took off, and slowly every aspect of it was automated. It is essential to get early results with a buggy product then to perfect about based on assumptions that might not hold in the future. It is counter-intuitive for entrepreneurs who want to build a high-quality product.

Drew Houston had a hard time convincing investors about DropBox. VCs thought that the market is crowded, no one made money, and the problem was not an important one. Drew believed that all that was because all the current products were of low-quality. Rather than spending years doing thorough integrations, he made an excellent video demonstrating the seamless behavior.

Wizard of Oz is a useful testing process for such situations. Rather than building an automated system, fake it with a human. It is faster for learning what users want.

Sometimes, a user’s quality metrics are very different. Users care about how much they enjoy the product, not how much time was spent building it. IMVU had no time to build a smooth movement of avatars from one place to another. So, they decided to and were ashamed of, cheat by making avatar re-appear at the destination instantly. Users rated this teleportation among the top three most liked features. Therefore, it is of paramount importance to remove any feature, process, or effort which does not contribute to the learning you seek.

Some entrepreneurs fear the competition that MVP will bring in, usually, from large companies. Most of the time, the Product Managers at the big companies are overwhelmed by good ideas. If not, they can still copy the product at a later stage. And the fear of being out-executed remains.

Measure

After building an MVP and putting it out for the early adopters, test the riskiest assumptions first. Now define a baseline metric, a hypothesis to improve the metric, and a set of experiments targeted towards the same. Once you have the results, decide whether to pivot or persevere. One of the biggest dangers is to get stuck with vanity metrics like total registered users. They paint a rosy picture but does not tell you whether the product improvements are making it better for the user or not. AAA (actionable-accessible-auditable) metric would measure the impact of a particular feature.

Grockit followed the Kanban model, where there are four buckets – backlog -> in progress -> built -> validated. Each was containing at most three features. After validation, either they made the feature or discarded it.

Pivot or Persevere

A startup’s runway is the number of pivots it can make. Votizen started as a social network for verified voters to discuss civic actions.  That did not take off. Then it pivoted to @2gov, which allows users to recruit more verified voters for their petitions. This product has higher usage, but still, very few were willing to pay for it. They pivoted further to businesses as customers, who, despite signing the letter of intent, decide to eventually not buy the product. The final pivot was to use Google Adwords for acquiring users who want to pay to acquire more users. That worked out. Startup Visa Act was solely a result of that social lobbying.

Wealthfront pivoted from a virtual stock trading/gaming platform to an online service offering money management by professional money managers (ashishb’s note: and after the book was written, further to index-based investing).

Most entrepreneurs regret delaying the pivot. Vanity metrics, not having a clear success hypothesis, and being afraid of the failure, are the usual causes of delaying the pivot.

Types of pivots

  1. Zoom-in Pivot- A popular feature becomes the new product. Votizen moved from voter social network to a voter contact product.
  2. Zoom-out Pivot – The current product becomes a feature of the new product.
  3. Customer segment Pivot – The target customers change.
  4. Customer needs Pivot – where the customer base remains the same, but the product changes to suit them more. Potbelly Sandwich shop started as an antique store in 1977. It decided to sell sandwiches to bolster traffic. It eventually pivoted to become a sandwich shop.
  5. Platform Pivot – The product changes from a single-use product to a platform for the other products.
  6. Business Architecture Pivot – Geoffrey Moore observed that most companies follow either a high margin, low volume model; or a low margin, high volume product. Former is usually for B2B, and the latter is generally for B2C. A business architecture pivot is jumping from one to the other or vice-versa.
  7. Value Capture Pivot – where the way business makes money changes.
  8. The Growth engine Pivot – The business’ way of reaching new customers changes.
  9. Channel Pivot – The distribution channel for the product changes.
  10. Technology Pivot – The underlying technology to do task changes.

When pivoting to a strategy followed by a successful company, it is crucial to copy the essential and not just the superficial features.

Accelerate

Batch

It is counterintuitive, but smaller batches are much better for lean startups. They appear inefficient but allow faster turnaround for the product leading to a more rapid iterative cycle. It helps in earlier detection of a problem as well as quick feedback from the customers. Toyota used the small-batch approach to compete with its much more capitalized American counterparts whose batch sizes were relatively bigger.

Grow

New customers come from the actions of past customers. They inform others, end up showing the product to others, or end up purchasing the product again. Sabeer Bhatia grew Hotmail by adding a signature “Get your free e-mail at Hotmail” to every outgoing email. If you are asking whether your startup has achieved a product/market fit, then you are not there yet. When the product/market fit happens, it leaves no room for doubt.

Adapt

As a startup grows, it has to adapt to the changing customer base. Early adopters are more forgiving of the quality; later ones are not. Five whys help one to diagnose the problems and build the right set of things that should go into an employee training manual.

Innovate

Big companies can innovate, but for that to happen, they should secure resources for internal teams, provide an independent development authority, and the internal team should get a stake in the outcome. Toyota calls the manager in charge of running the development of a new vehicle, shusa (Chief Engineer). The parent organization must be protected to create this platform for experimentation. If the existing managers feel threatened, they will have an incentive to work against the new project. Also, if such a unit is kept hidden, it will attract more political battles since existing executives will be wondering what else could be hiding. Therefore, any team should complete ownership to run an experiment and see the end-to-end results. Every company has to deal with four types of works – launching a new product, scaling it for the broad adoption, combating its commoditization by incremental improvements,  and maintenance of the product in the long run as a part of the company’s product line. All the steps are essential, but the last stage of becoming the status quo is a hard one to swallow as an entrepreneur.

The Android-Chrome merger saga

Articles with the following titles would be considered a joke
 
1. “BMW is planning to merge its series i5 cars and Motorrad bikes”
2. “P&G is planning to merge tissue paper and toilet paper”
3. “Arm and Hammer is working on merging face wash, body soap, shampoo, laundry detergent, and dish cleaner”
 
Not that these combinations can’t be made or have never been made but consumers would just not buy them. They are usually inferior or more convoluted, or even worse, both.
But the Android-Chrome OS merger stories keep popping up every few months. Excluding the technical jargon, it’s as much of hogwash as the first three. In the longer run, markets specialize and not generalize.
Note: The only time when generalization appears to wins is when an entirely new market is created which renders multiple existing markets customer-less. And that too is a head fake in favor of generalization.

Startup valuations

In 2001, Amazon’s share price crashed from 100$ to 6$, they had to do a 15% layoff. But it was Jeff Bezos’s perseverance, tenacity and grit because of which Amazon survived. As several startups from the Bay area to Bangalore get a mark-down of their valuations, the question about how many will survive and eventually produce a [positive] return for their investors is being asked. Between what a startup’s real value is and how viable is its business model, the real question to ask is how committed are the founder(s) to make things works. In the longer run, only that will matter.