Archive for November, 2019

Why I Hate NPS With a Passion

Tuesday, November 26th, 2019

Why I Hate NPS With a Passion

Blog With Images

The Tale of Two Products

After purchasing a product on an online e-commerce store, customers are asked the typical NPS survey question “On a scale of 0-10, how likely is it that you would recommend [product name] to your friends, family or business associates?” for two different products.

Product A Customer Ratings: [6,6,6,6,6,6,6,6,10,10] (Average Customer Rating 6.8)

Product B Customer Ratings: [0,0,0,0,9] (Average Customer Rating 1.8)

Their ratings are listed above. Look at the two data sets. Consider carefully. Which product do you think has a higher NPS (Net Promoter Score).

The answer is their NPS is exactly the same.

Wait that’s unbelievable… the first product has an average customer rating of 6.8/10 while the second has an average customer rating of 1.8/10. How is that possible?

Spray Cans
Pictured: Product A and Product B

What is NPS?

Welcome to the wonderful world of NPS, one of the most misguided scoring calculations ever invented.

Before we start, what is NPS (Net Promoter Score) and how is it calculated?

Net Promoter Score

Take your data set of ratings between 0-10. Divide these ratings into three groups. Anyone with a rating of 7 or 8 is a “Passive.” Throw these scores out. Anyone with a score of 9 or 10 is a “promoter” and anyone with a score of 0-6 is a “detractor.” Take your % of detractors out of the total ratings and subtract it from your % of promoters out of the total ratings. Whatever % comes out of that, negative or positive, turns into your NPS score.

That’s it, you’re done.

So, if 50% of respondents were promoters and 10% were detractors, your NPS is 40. Well sounds straightforward enough… what’s wrong with that?

NPS Example

In the above example, product A has two 10s (promoters) and eight 6s (detractors). So you subtract the % of detractors (80%) from the % of promoters (20%) to get -60% as a total which turns into an NPS of -60.

Product B has one 9 (promoter) and four 0s (detractors). So you subtract the % of detractors (80%) from the % of promoters (20%) to get -60.0% as a total which turns into an NPS of -60.

So product A has a final NPS of -60 and product B has a final NPS of -60. The products have the exact same NPS.

Girl Staring

Why NPS Sucks

Arbitrary First-In Data Grouping

When working with ratings you will almost always have to lose some accuracy to achieve an average “rating.” Often this involves rounding a final number.

Rounding is a form of data grouping. When you are saying 49.469 will be rounded to 49.47 you are grouping data based on  a set of parameters or rules. Usually this is done at the very last possible stage to avoid, as much as possible, abstracting out the detail in data too early to prevent inaccuracies.

The sooner in the process you group the data, the more divergent comparable data sets will become in the final calculation because you stack small inconsistencies into bigger and bigger ones, creating a cascading chain of building inaccuracies. That is why most scoring systems round at the last possible step before producing a score.

Additionally, the wider the range of this “grouping” the more inaccurate, and less reflective of the original data set, your final rating becomes.

NPS has one of the widest groupings imaginable. Every rating between 0-6 is considered exactly the same. That’s right, 60% of all possible ratings are grouped and considered “equivalent.” A further, less egregious, grouping happens when 7 is considered equivalent to 8 and 9 is considered equivalent to 10.

No Consideration for Predictive Accuracy or Volume of Data Set

NPS does not employ any mechanism of considering the volume or number of data points when creating a calculation. So a data set with one 0 and one 10 is considered exactly equivalent to a data set with one million 0’s and one million 10’s. This is also a weakness shared with traditional averaging. The average of the above two data sets (one with two data points and the other with two million data points) will also come out to be exactly the same.

With traditional averaging, the first product would be considered superior to the second

What is the solution to this? The solution is to produce two scores, one an average that does not take into consideration the number of data points and the other a Wilson score which does weight the number of data points.

If you want a more thorough explanation of Wilson scores here is a great blog on the topic: http://www.evanmiller.org/how-not-to-sort-by-average-rating.html but the jist of it is that a Wilson score takes into consideration the number of data points and predictive accuracy into consideration.

But if using Wilson scores is too complicated for you, the solution is to just use averages.

In Defense of NPS

big knight
An NPS defender

NPS is about net detractors and net promoters! It’s about the intangibles!

Argument: The entire point of NPS is that it is about net promoters and net detractors. Net promoters will spread the good word about your product and net detractors will spread the bad word about your product. The net neutrals will say nothing so they have no influence!

Response: This is predicated on the assumption that someone that rates your business or product a 6 will be just as much of a vocal detractor as someone that rates your business or product a 0. So instead of assuming that the amount that someone promotes or detracts your business is correlated linearly with their rating, you are putting people into an arbitrary bracket and assuming that those brackets map to peoples’ behavior non-linearly with no evidence to back that fact.

NPS is easy

Argument: Everyone uses NPS because it is easy to calculate! None of this complicated Wilson score mumbo jumbo!

Response: So is an average rating. When in doubt go with an average rating. NPS provides a poor return on complexity by both simultaneously adding complexity and butchering data sets. Calculating an average is both easier than NPS (you just add every rating together and divide by the number of ratings) and does not butcher the data set.

NPS is powerful because of the survey question. “On a scale of 0-10, how likely is it that you would recommend [product name] to your friends, family or business associates?”

Argument: the true power of NPS is that you are calculating your viral coefficient! The survey question is the critical piece!

Response: There is no reason that you can’t ask this question and calculate your scores from the results in a different way. Just because you ask this specific survey question, you do not have to use NPS to calculate the results.

Additionally, NPS survey question does not add anything that other loyalty-related questions cannot provide. According to a study by Hayes (https://businessoverbroadway.com/wp-content/uploads/2011/01/QP_June_2008_True_Test_Of_Loyalty.pdf), there is no evidence that the “likelihood to recommend” question is a better predictor of business growth than other customer-loyalty questions (e.g., overall satisfaction, likelihood to purchase again) and the “likelihood to recommend” question does not measure anything different from other conventional loyalty-related questions.

The Hero’s Journey of Coding

Friday, November 22nd, 2019

The Hero’s Journey of Coding

Blog With Images

Almost universally learning to code is hard. It is hard and it is frustrating.

 

Almost universally learning to code is hard. It is hard and it is frustrating. Resources to go from 0 to 1 as a beginner are easy to find but figuring out the path from 0 to mastery are not.

The modern coding environment only complicates this as more and more options, tools, frameworks, and potential paths are invented. These options are designed to make coding more manageable, but for a beginner can be overwhelming.

My goal here is to lay out a clear, structured path from 0 to mastery I call “The Hero’s Journey of Coding.” The Hero’s Journey is hard. The Hero’s Journey will be frustrating and will feel hopeless at times. But the Hero’s Journey works.

I heavily based the strategy on research from Cal Newport (computer science professor at Georgetown University) and Barbara Oakley (professor of engineering at Oakland University), as well as on a large body of research into learning, and more specifically, learning technical subjects.

Learning to code is a non-linear process and forcing a strictly linear structure on it will slow your learning process. It is analogous to learning a language.

Two hypothetical people start studying Mandarin at the same time with no prior knowledge of the language. One begins a course that promises mastery of the language by the end of the course. The other takes the same course… but supplements it with reading books in Mandarin, watching shows in Mandarin on Netflix, speaking to Mandarin-speaking people in his or her area every day, listening to the news in Mandarin, listening to podcasts in Mandarin, memorizing Mandarin grammar structures and vocabulary words, switching to the Chinese servers in the online games they play, asking about aspects of the language that confuse them in Mandarin language forums etc.

Because the second person is varying their types, contexts, and methods of learning, they will learn Mandarin surprisingly faster than the first person while preventing burnout by altering the kind of cognitive load they place on their brain.

Additionally, since the gains are cumulative, the second person will exponentially approach mastery faster. This approach is backed by research. If you want to look into it further, Harvard has an excellent compilation of research into the topic here: https://bsc.harvard.edu/study-tips-guides

Differing your types and content of learning also promotes neurogenesis (production of new neurons in the brain). Here is a study on the fact: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3445739/. The other thing proven to increase neurogenesis, by the way, is exercise (specifically aerobic exercise). The same study linked covers that topic as well if you are interested.

In this guide, I’ve put together the findings of this research into an actionable sequence I call “The Hero’s Journey of Coding.”

Some parts of this guide, particularly towards the end, will upset people and may be construed as overwhelming or discouraging towards beginners.

I’ve purposely constructed this guide to be the antithesis of the other guides I’ve read (and I’ve read hundreds) which have been too vague, too introductory, and too afraid to get into the nitty-gritty of how the actual process usually looks.

What I lay is not the only way to learn, but it is a research-backed, experientially backed, and effective way to learn. Here I offer the gory details of the whole process, so I hope you are ready.

The Call to Adventure: A Guided Introduction

The Call to Adventure: A Guided Introduction
Hope rests on our young hero as he begins his journey.

The first step in the hero’s journey is a guided introduction. Before a hero can pursue his core quest, he must learn the ropes. This most often comes in the form of a course, often a video course.

You are going to want to find a long-form introductory course (minimum should be 40 hours). You can start by going to Udemy and sorting by duration (https://www.udemy.com/topic/javascript/?duration=extraLong&sort=popularity). Other popular alternatives are the Odin Project (https://www.theodinproject.com/) or Code Academy (https://www.codecademy.com/).

Two instructors  I personally like are (https://www.udemy.com/user/maximilian-schwarzmuller/) and (https://www.udemy.com/user/coltsteele/). But make no mistake, this course is just going to give you the shallowest feel for what you are about to pursue.

You will begin to get the breadth of what you need to learn. You will start to know the tools, frameworks, terminologies, and places to look for knowledge.

Don’t worry too much about the language or frameworks that you start with as long as they fit your end goals and are popular. Coding languages are not like spoken languages; once you know one in-depth, you can pick up others fairly quickly. So the language you start with will not doom you down the line if it falls out of popularity. Also, as you become more knowledgeable, you can make a switch if necessary.

Don’t fall prey to language and framework “paralysis by analysis” and instead do a week’s worth of research and then dive in and commit at this stage to the course, language, and framework you have chosen. Finish the entire thing from start to finish.

Other alternatives to a video course are classes or boot camps if that is more your style. If you went to school for something like computer science or have the equivalent experience already, you can skip this step entirely.

Think of the guided introduction as defeating the low-level beasts you need to get from level 1 to level 10. Make no mistake, some of these “low-level beasts” will be formidable.

In fact, the low-level beasts are often a more significant obstacle than the higher level beasts that will come along later because your skills will scale up faster than your enemies.

You are going to need a little help. It’s time to consult the oracle.

Supernatural Aid: Consult the Oracle

Supernatural Aid: Consult the Oracle
The ancient Oracle is wise but fickle.

Who is the oracle? The oracle is known by the mystical name “Google.”  You can ask the oracle anything, but you need to ask it the right way.

As you ask the oracle more questions, you will get better and better at divining answers from her mystical responses, which may often lack context and appear unusual. Often answers will appear in coding forums like Stack Overflow (https://stackoverflow.com/).

Sometimes you will find out your question has already been asked and the answer is already available. At other times, you will find out that you must ask the question yourself.

As you go further along, you will never stop Googling but the answers to your questions will more rarely appear as they get more technically complex and more specific.

The Vision Quest: Your Core Quest

The Vision Quest: Your Core Quest​
Many heroes plunge to their death before ever completing their quest.

You cannot keep dispatching low-level beasties forever. You need to pursue your core quest. Your core quest is a project which you continually build on and improve as you learn more.

The core quest should start as soon as the guided introduction is finished. You need to learn how all the concepts tie together and work in the real world. The less like a simulation and the more like your end goal the core quest is, the better.

The core quest will start out humble but will develop into a save the world scenario. The core quest is what you never lose focus on and is the most crucial part of the journey. All the other parts of the journey are to supplement the core quest.

The core quest is from where the glory and victory in the Hero’s Journey comes from.

Descent Into the Underworld: Do Battle

Descent Into the Underworld: Do Battle​
Untold evils lurk in the putrid underworld.

As you pursue your core quest, you must do battle with great foes to improve your skills. These foes come in the form of coding challenges from sites like leetcode (https://leetcode.com/), codewars (https://www.codewars.com/), or hackerrank (https://www.hackerrank.com/).

Coding challenges are a different kind of coding than your core quest or guided introduction. You want to pursue different types of knowledge paths so you don’t burn out doing the same kind of learning. Remember, research indicates that diversifying your learning strategy exponentially improves your path to mastery.

Start with the most manageable problems and eventually try to work your way up to the hardest ones. Try to make it a goal to do every single problem in the site in your chosen language if possible.

The Master of Two Worlds: Learn from the Masters

The Master of Two Worlds: Learn from the Masters
There are many with deep, ancestral mastery to share.

As you slay great enemies, you will feel the need to go more in-depth in specific subcategories of battle. This is where you consult the masters.

The masters have created great tomes for you to pore through. Using Javascript as an example, start with the thinner tomes (https://eloquentjavascript.net/) and work your way up to the great towering tomes (https://www.amazon.com/gp/product/B07FK9VBD7/?ie=UTF8&%2AVersion%2A=1&%2Aentries%2A=0).

This does not come after your core quest or doing battle but is interspersed between. As you pursue your core quest and do great battles with enemies, you will need to take breaks to regenerate and refresh yourself. That is when you read these great tomes.

Ascension, Apotheosis, and Atonement: Arcane Knowledge

Ascension, Apotheosis, and Atonement: Arcane Knowledge​
Arcane knowledge that some may find unnatural.

The tomes will give you great knowledge but you will find yourself thirsting for the more arcane and specific knowledge. This is the last part of the coder’s journey.

The arcane knowledge is the documentation itself. This is the raw, unfiltered, incantations. You will learn sick and unnatural abilities from these arcane sources. Start out by reading the documentation as a reference point beginning with the core quest but the spells and incantations are brief and specific, and so, should eventually be memorized.

The documentation itself is usually brief enough to be fully digested overtime. I suggest turning the entire documentation for the tools, frameworks, and languages you use into online flashcards using something like quizlets (https://quizlet.com) and gradually memorizing them.

So, for example, if you are a web developer using MongoDB, Express.js, and Node.js that would include the entire mdn docs (https://developer.mozilla.org/en-US/), MongoDB docs (https://docs.mongodb.com/), Express docs (https://expressjs.com/en/api.html), and Node.js docs (https://nodejs.org/en/docs/). It would also include any tools you use like Bootstrap (https://getbootstrap.com/docs/4.3/layout/overview/) or Mongoose (https://mongoosejs.com/docs/api.html). If you use it and it has docs, include it.

This may seem overwhelming, but you would be doing this over a long, long period of time and piece by piece. Evidence that this strategy is effective: https://bsc.harvard.edu/files/smarter_studying_8-10-16.pdf

Having the documentation memorized is a sick and powerful ability. This is the most grueling, controversial, and formidable-sounding part of the hero’s journey, which is why I saved for last.

This comes after you have slain your great foes and have completed most of the journey and are searching for that last, last edge to push you over the top into glory.

Go forth, hero, and find your glory.

What to do if You Don’t Have a Technical Cofounder

Wednesday, November 13th, 2019

What to do if You Don’t Have a Technical Cofounder

One of the most common issues that entrepreneurs run into, that no one seems to like to talk about, is lack of a technical cofounder.

Blog With Images

Introduction

One of the most common issues that entrepreneurs run into, that no one seems to like to talk about, is the lack of a technical cofounder.

In the startup world, it is almost a bit of a taboo to mention that you don’t have anyone that can actually build out your idea. Telling someone this will often elicit from them an exasperated but sympathetic “oh…” accompanied by a glazing over of their eyes as they lose interest.

My goal here is to relieve the pain, confusion, and desperation that I so often see this issue causing entrepreneurs.

What do you do when you have a great idea and are ready to execute but there is no one on the team who can actually build the product?

You have four options.

Yes that is right, the decision can actually be distilled into four different options one of which, depending on your unique situation, will stand out as a much better choice than the others. The path you choose has far reaching consequences for the future of your company so don’t make this decision lightly. At various companies and times in my life I have experience with every single one of these options and have seen the resounding successes and devastating catastrophes that can result from each, many times over.

Finding a Technical CoFounder

This option is both the best option and the most unrealistic. Finding a technical cofounder is like entering into a marriage, it is an important decision and one which a lot of the time does not work out. If you rush into a cofounder relationship out of desperation there is a high likelihood that it will not end well.

On the list of why startups fail “Not the Right Team” is the number 3 reason at 23% (https://www.cbinsights.com/research/startup-failure-reasons-top/).

Top 20 Reasons Startups Fail

A potential technical cofounder has to have a combination of high commitment, sufficient technical ability, and right cultural fit with the rest of the cofounders which is very rare to find. Often chasing a technical cofounder will result in a long period of fruitless searching after which you are back to where you started, so if you pursue this option, make sure that your budding venture can support this potentiality.

Hiring a Local Developer

The second option is to pay a developer to code it. This option is split into two sub-options.

The first sub-option is to pay a local developer to join the team full time. This is a great option but requires money. A local developer (assuming you live in the states) usually commands a six-figure salary. Most startups that don’t have a product yet just cannot afford this.

Furthermore, without a product and traction, it is very difficult to impossible to raise enough money to cover a six figure salary. You are in a bit of a chicken and egg situation with this option where you need the money to build the product and you need the product to raise the money.

Hiring an Overseas Developer

The other sub-option is to hire an overseas developer (typically somewhere in Southeast Asia or Eastern Europe) to build the mvp. This option can be affordable for most startups (https://medium.com/existek/top-it-outsourcing-countries-in-2019-772df2af7705) but comes with its own host of problems.

developer salary by country

Source: Payscale.com

Typically, chief among the issues are code quality and communication barriers. Overseas developers are priced more cheaply because they tend to produce a lot buggier code and are less fluent in English than their local counterparts. These two things combined can mean you spend a chunk of money on an overseas developer and come out with something unusable that will need to be scrapped and recoded from scratch anyways.

There are some ways to mitigate these two issues. If you are fluent in the overseas developer’s native language you can mitigate the communication issues. If you rigorously filter which developers you hire and go slightly upmarket in price you can partially mitigate the code quality issues. Taken to an extreme, with these two strategies sometimes a startup can successfully have their entire dev team overseas. Usually this works best when the startup founders are from the same country as the devs, can fly overseas when necessary, and all the overseas devs work in the same office together with its own management hierarchy and are not remote (i.e. all overseas devs work together in one office in Bengaluru and are not spread out across India). This is the exception and not the most common case. More often than not, going with overseas developers wastes time and money with not much to show for it in the end.

Learning to Code

The final option is for one of the current cofounders to learn to code. Most of the time this is going to be the answer. The strategy takes advantage of what many early stage startups have (time of the cofounders) while not requiring what many early stage startups don’t have (resources). Long term, this strategy also tends to reap the most benefits. The better you understand the technology you are using the better you can manage, understand, and filter developers. Even if you are not always going to be coding the product, it is a worthwhile investment to learn how to so that you understand the technical aspects of the product better down the line.

History supports this option as generally the best route. Google, Facebook, Airbnb, and almost all of the other unicorn startups had their founders code the mvp. In fact, it is difficult to find examples of mega-successful startups that did not follow this model.

This path comes with its own gotchas however. First, it will take a matter of months to develop the mvp and a huge time commitment. The amount of time taken to code the mvp is a function of the aptitude for learning to code of the cofounder pursuing it, the time they put in per week, and the complexity of the mvp. Tinker with these factors and you can go from having a working mvp in two months (cofounder with aptitude for coding, putting in 12 hours a day, and relatively simple mvp) to never having an mvp (cofounder has a very low aptitude for coding, won’t or can’t put in the sufficient time, or complexity of the mvp compounds a combination of low aptitude/insufficient time).

The Final Decision

So final decision tree goes like this:

Can you afford a significant amount of time looking for a technical cofounder and abide by the possibility of not finding one or one not working out?

Then try to find a technical cofounder.

Otherwise, can you afford to pay out a six figure developer salary?

Then hire a local developer after a rigorous filtering process but keep in mind that most of the time you will be better served by learning to code it yourself.

Otherwise, do you have the technical knowledge/native bilingual proficiency to manage overseas developers?

Then possibly hire overseas developers but keep in mind that most of the time you will be better served by learning to code it yourself.

Finally, if you didn’t fulfill any of the conditions of the routes above, learn to code it yourself.

Conclusion

A lot of people will tell you that learning to code will take years and is a waste of time. I was told something similar by a lot of very talented technical people at well known companies. There is a lot of a gatekeeping attitude around coding unfortunately.

For someone who is intelligent and committed this is just not true. Learning to code is one of the most useful and rewarding things you can learn as a software-focused entrepreneur that will bear fruits for the rest of your career.

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}

Note: I offer this opinion free of commercially influenced bias. I am not selling nor am associated with any product that teaches people to learn to code.