How I taught myself how to code and launched an MVP

December 2020


I had a startup idea that I wanted an MVP for. I decided to teach myself to code and build it myself. In this post I first discuss why I decided to go this route. Then I share my process for figuring out what to learn, how to learn it, and how I set myself up for success. Finally, I share all the resources I used.

You should read this post if you are considering to learn coding and are interested in my journey, especially in my decision making process. Not interested in my decision making process, but want to learn how to code? Jump straight to the associated guide: The practical guide to learn coding. Don’t believe this can be done? Check out the MVP I built: Tenxhired.

I had a startup idea

I had a startup idea. Recruiting was inefficient and extremely costly. I was going to fix that.

I had just built out a product team from scratch at a YC startup where I was the director of product. I used my personal network, outside recruiters and platforms like Hired, Angellist and LinkedIn Recruiter to do so. No matter what existing solution I tried I was left disappointed.

I had also been on the other side of the fence looking for a job. That was an extremely unpleasant experience as well.

My personal pain was real, but was this worth pursuing? The market was huge: almost everyone needs a job, and almost every company has to recruit. There were thousands of existing solutions with brand new ones popping up every day. Even with all these solutions, at least anecdotally, both sides of the market complained endlessly about the current state of things. I concluded that no one had seemed to effectively solve this problem. In the eternal words of NSYNC, when it came to solving recruiting, it was “gonna be me”.

There was one problem though. I couldn’t code...

Not being able to code meant all my options were bad

So what were my options? This wasn’t going to be my first rodeo, I had built, grown and even sold startups before as a non-technical cofounder. I knew my options and the risks associated with them.

I could recruit a technical cofounder and let them do all the coding. I could outsource development to an agency. I could outsource development to an individual developer. Or, I could finally bite the bullet, learn to code and build my MVP myself.

Option 1

Recruit technical cofounder to do all the work

Option 2

Outsource to an agency

Option 3

Outsource to a developer

Option 4

Learn to code and do it myself

There was a potential 5th option, build an MVP using a no-code platform like Bubble. While I could launch an MVP this way, I knew from previous experience that I would be painting myself into a corner and, sooner than later, would need to switch to a "yes-code" solution.

Each option I considered came with a risk of complete failure. I might not be able to recruit a qualified technical cofounder and my MVP would never materialize. The agency I outsourced could prioritize their higher paying clients, delivering a low-quality MVP and delivering it late, really late. The individual developer could deliver an MVP that regularly crashes, assuming they’d deliver one at all. What about learning to code? Maybe I would not get good enough at coding and never deliver the MVP. Or, even if I delivered it, the quality of the MVP would be so low that it would be unusable.

All of these were real risks that could derail my project completely.

Looking at the upside of each option

Before thinking about which risk I would be able to manage the best, I decided to look at what would happen if I would execute each option reasonably well. What was the reasonable upside for each option? I visualized my options and their upsides using different dimensions.

: Best option

Minimize time before MVP development can start

Recruit technical cofounder to do all the work

Outsource to an agency

Outsource to a developer

Learn to code and do it myself

Successfully find a technical cofounder at some point

Recruit technical cofounder to do all the work

Outsource to an agency

Outsource to a developer

Learn to code and do it myself

Have a good relationship with technical cofounder

Recruit technical cofounder to do all the work

Outsource to an agency

Outsource to a developer

Learn to code and do it myself

Scope out the right feature set

Recruit technical cofounder to do all the work

Outsource to an agency

Outsource to a developer

Learn to code and do it myself

Get the details right

Recruit technical cofounder to do all the work

Outsource to an agency

Outsource to a developer

Learn to code and do it myself

Get the MVP out quickly

Recruit technical cofounder to do all the work

Outsource to an agency

Outsource to a developer

Learn to code and do it myself

Have the ability to quickly iterate post launch

Recruit technical cofounder to do all the work

Outsource to an agency

Outsource to a developer

Learn to code and do it myself

Minimize out of pocket cost

Recruit technical cofounder to do all the work

Outsource to an agency

Outsource to a developer

Learn to code and do it myself

Have the ability to successfully hire and manage technical teams in the future

Recruit technical cofounder to do all the work

Outsource to an agency

Outsource to a developer

Learn to code and do it myself

With the exception of the time it would take before I would be able to start coding my MVP, learning how to code was the superior option in every dimension.

The decision then became whether I could learn to code well enough in a relatively short period of time (3-4 months)? I was confident enough to give it a try. The best case scenario was going to be that I would get good enough to put together my MVP. The worst case scenario would be that I’d learn a lot but not be good enough to put together the MVP. Even if that were to be the case, everything I learned would help me either better recruit a technical cofounder, or better hire and manage an individual developer or an agency. Even the worst case scenario was attractive, but I was dedicated to pull off best case scenario.

I was going to learn how to code... But how? Bootcamp or flying solo?

Next I needed to decide if I was going to go to a bootcamp or learn on my own. Bootcamps provided structure and assistance, doing it on my own meant more flexibility. There was also the cost and time-to-completion to consider. Bootcamps cost anywhere from a thousand dollars to twenty thousand dollars. Most would also take 5 months to a year to complete.

I wanted the structured learning bootcamps provided, but I wanted to complete everything in less than five months and I did not want to pay thousands of dollars. That was money I could invest in marketing after I built my MVP.

The solution was easy. Almost all bootcamps advertise their curriculum. I’d just follow their curriculum using online courses. I would get the structure I wanted without having to spend thousands of dollars. I would also have the opportunity to finish things faster than the advertised time. This meant I wouldn’t have dedicated time for an instructor to help me one-on-one, but as I explain below I could find another solution for that.

Setting myself up for success on my solo learning journey

I was aware this wasn’t going to be easy, so I wanted to set myself up for success before I got started. I had three prerequisites in mind.

First, I was going to need to dedicate serious uninterrupted time to learning. Being married, having a toddler at home and having a full-time job did not make this easy. Thankfully, my company had gone fully remote, which meant I didn’t have to waste time commuting. I wanted to carve up at least 30 hours a week for dedicated learning.

I decided I would wake up at 5am every morning and work from 5:15am to 8:00am (which is when my son woke up). During the day I would take care of my regular responsibilities at work and at home. Then I would work on learning again after my son went to bed at 7:45pm for another hour or so. I kept the same schedule on weekends as well, but I also added the 3 hours my son napped during the day to my learning schedule. This allowed me to carve up almost 35 hours a week.

Second, I wanted to have at least one go-to-person to help me when I got stuck, sort of like a TA. I told two friends with engineering backgrounds about my journey and asked permission to bug them once or twice a week for help. I wanted to respect their times’ and not over-use this option, but I still wanted it as an option.

And finally, I needed to have a “succeed at all costs” attitude. As Yoda put it: “Do or do not. There is no try.” I even came up with a Charlie Sheenesque mantra: “Winning is a choice.” I was going to choose to win no matter what. This mantra ended up being essential. I would repeat it to myself when I felt like sleeping in on a Sunday or when I was stuck with something and needed to power through. I felt a bit like a bro saying it, but I embraced it nonetheless (embraced it to the max, bro).

My learning roadmap

With having set myself up for success it was time for a learning roadmap. What would I need to learn and in what order? My MVP was going to be a web app, so I would optimize my learning roadmap for web development. If you are interested in mobile development check out "The practical guide to learn coding" where I discuss mobile development as well as web development.

After looking at various bootcamp syllabuses here is what I came up with:

1. Understanding HTML and CSS

Think of this as learning how to crawl before you walk. You are not going to use pure HTML and CSS to build your final product, but if you don’t understand HTML and CSS you won’t be able to understand the more advanced topics. It is, therefore, crucial to learn HTML and CSS and to learn them well.

2. Building web pages with Bootstrap

Bootstrap is a CSS framework that comes with a grid system for layouts, as well various CSS and Javascript components. I think of it like prepackaged lego pieces. With Bootstrap you don’t have to code everything from scratch. It helps you build better end-products faster.

Knowing a bit of jQuery helps with being able to learn of Bootstrap. JQuery is a super simple Javascript framework which you can pick up pretty fast even without knowing any Javascript.

3. Learn programing basics through Javascript

Unlike HTML and CSS, Javascript is a real programming language (a lightweight, interpreted programming language, if you want to get technical). While HTML and CSS can be used to display things, Javascript can do real programming things like evaluating logic. You need to be able to do “real programming things” to be able to build web or mobile applications.

4. Build web applications with React, Redux and Firebase

React, Redux and Firebase would be how I would build my MVP. Everything I would learn up to this point was so that I could learn React, Redux and Firebase.

With React and Redux you can build all sorts of client (front-end) applications. You control the user-interface, the interactions and react to the state the user is in (eg. if they are logged in do X, if not ask them to login).

Firebase is a "Back-end as a Service" tool that lets you create, store, update and retrieve the data your application runs on. Normally you would have to build a back-end: a database and a custom API you would code that would sit between your front-end and your database and manage all their interactions. Firebase takes care of all that for you. From a learning perspective this is awesome because it means you don’t have to master back-end development.

The courses I used and recommend

After a bunch of research and some trial and error, here are the courses I recommend in the order you should be taking them. Note that if you are interested in mobile development you should check out "The practical guide to learn coding" where I recommend mobile development courses as well as web development ones.


Course name


It took me


HTML, CSS, Javascript, Bootstrap

58 hrs

~6 weeks



2.5 hrs

~1.5 days


Udemy has regular discounts where you can buy almost any course for less than $20.


11.5 hrs

~1.5 weeks


Udemy has regular discounts where you can buy almost any course for less than $20.

React, Redux, Firebase

40.5 hrs

~6 weeks


Udemy has regular discounts where you can buy almost any course for less than $20.

Important Tip: Do not ever buy a Udemy course at full price. Just Google “Udemy discount code” and you’ll find discounts that will bring the price of a course below $20.

Here is how these courses map to the roadmap I discussed above.

Note on mobile development: If you are interested in mobile development check out The practical guide to learn coding where I discuss mobile development as well as web development.

And here are some other courses I tried out and do not recommend.

These courses, although well-intentioned, are too simplistic to be of any real value. I decided to include them here because they are shorter than the courses I actually recommend, are relatively well-reviewed and are popular. Like me you may be tempted to take them as substitutes to save some time. Unfortunately, like me, you will be dissappointed if you do so.

Tips for getting the most out of these courses

Your goal is to develop mastery of coding. In other words, you are trying to get an A+ not a C, or even a B, from the courses you take. You can’t build a great MVP without mastery. Don’t rush through the material, understand it well, really well.

Tip 1: Take hand-written notes

Taking notes will help you learn better than not taking notes. Taking hand-written notes will help you learn better than digital notes. Here is a short article on the benefits of handwriting. I found writing out the code with my notes to be extremely useful when it came to internalizing learnings.

Tip 2: Have a multi-screen setup

This comes in extremely handy. I had a 3 screen setup. I would play the course video on one, write code on another and display the output of my code on a third. I can’t even begin to quantify how much easier this made it to learn.

Some of my notebooks

3 screens on my small desk

Tip 3: Be ready to rewind and rewatch

Your goal is to learn the material really well. It is unrealistic to expect to get everything in real time. You will have to rewind and rewatch bits as you go along. It usually took me between 3 and 5 times the length of the video to be able to go through the video, take notes and internalize the material.

Tip 4: Embrace the overlap

You may repeat some stuff you learned in course 1 in course 2. Don’t see it as a waste of time. Instead see it as an opportunity to chisel the material in your brain. Moreover, each instructor has a slightly different way of teaching the material, so you may also catch different nuances that come in handy later.

Tip 5: Google and Stackoverflow are your eternal friends

You are going to get stuck. All developers get stuck regardless of their experience levels. The ones that get unstuck quickly are good at googling for answers. The most popular resources you’ll find on Google are Stackoverflow answers. Stackoverflow is a question and answer site for developers of all levels. It is your best friend when learning to code.

Beaing able to code is like having unlimited swings at bat

So it took me roughly 4 months to learn everything I wanted to learn. I wasted time on some unhelpful courses along the way. If you take those out I could have learned everything I needed to learn in about 3 months. Including the courses that ended up being unhelpful I spent less than $200 total. I was ready to build my MVP.

I built and launched the MVP in 2 months. It worked great, but my solution did not resonate with my target users. Sometimes you do a ton of user research but your MVP may still not connect. Nevertheless, it allowed me to meet a lot of them and better understand their pains, motivations and needs. You can have conversations with mockups and prototypes as well, which I had done, but they are no substitute for what you will learn with an MVP. With all this new information I retooled my solution completely, rebuilt and relaunched.

I am not sure if I had not learned how to code the option of retooling and relaunching would be available to me. If I had outsourced the work I may not have any budget left for a full pivot. If I had recruited a technical cofounder, I may have lost their trust. Being able to do it myself meant I could have as many tries as I wanted.

This time around I was onto something. Having a live MVP, even one that bombed, had made it a lot easier to have insightful conversations with my target users. All that insight had landed me on a product that seemed to connect with the market. I kept on having conversations with my live product. Whenever I learned something new I was able to quickly make changes to my product myself. I kept on iterating and drawing closer to product-market fit.

The end-result:

The end result of all the learning and iterating I’ve done is Tenxhired helps underrepresented candidates get employee referrals to tech companies.

7% of all applicants, but 44% of all hires come from employee referrals. Underrepresented candidates usually don’t know as many people working in tech; therefore, they are less likely to get a referral and break into tech. And your average tech employee wants a more diverse workplace, but does not know enough underrepresented people they can refer. Tenxhired bridges this gap.

First, we let anyone apply for a referral to any tech job. Second, we use A.I. and human review to filter the applicants down to those who meet rigorous quality standards. Finally, we email current employees of that company profiles of high quality candidates that they can refer using your companies’ internal referral systems.

This fast, simple, streamlined approach ensures that more underrepresented people get a fair shot at landing a job in tech.

If you are looking for a job check out tenxhired here: If you are in tech and want to help make tech more diverse sign up to receive candidates here:

Final thoughts

Learning how to code was one of the best decisions I ever made. Not only was I able to launch an MVP but I was able to retool it when it bombed and iterate it further when the retooled version showed potential. Along the way I was able to recruit an amazing technical cofounder with a data science background. In the next few months we hope to show enough traction and raise a seed round.

If you are an investor and my story and product interests you, contact me. You can DM me on twitter, or send me an email

Last but not least

Getting here required a huge time commitment. It would not have been possible without the understanding and support of my wife, my better half, Nicole. Love you, baby!!




About the author

I'm Can (pronounced John). I am an entrepreneur with 2 minor exits. I am currently working on I have strong views on how startups should be run. I put together PracticalStartupGuide to share these views.