blog logo
family law

How to Learn to Code and Build an MVP

How to Learn to Code and Build an MVP
13 min read
#family law

How to Learn to Code and Build an MVP

So you've got a business idea, the next KILLER app, the next Unicorn startup? And now you want to build an Minimum Viable Product ("M.V.P.")? The first step is simple: don't. Unless you've demonstrated that there is market for your product and people willing to use and/or pay for your product, you should hold off on developing the product.

How do I know? I spent multiple years building and 'refining' the MVP for my personalized PDF newsletter startup, TurboTabs. And now I'm trying to find customers and figure out what they want. I should have done this first - and you should too! Your product should follow the business and not the other way around. As an added bonus, once you have demonstrated that there is an interest in your product, it will be much easier to recruit a team to build it for you.

But there are other reasons to build an MVP: maybe you want to learn to code, and building a project is the best way or maybe you're stubborn and convinced the 'Field of Dreams' ("if you build it, they will come!") model will work for you, or maybe you just like making things. If any of these situations describe you, this article is for you. I will explain how I went from Zero programming experience to building my own MVP.

STEP 1: Understanding the Landscape and Lingo

Before jumping into a pool, you want to know where the shallow and deep end are. The same is true with coding. There are thousands of technologies to choose from and many choices to make before starting. I will discuss those in a moment, but first let's pause for some important concepts:

  • Tech Stack - The 'tech stach' is the combination of programming languages, database solutions, and infastructure you will use to build your project.
  • Programming Language - A programming language (like natural language) is comprised of a set of rules, grammar, definitions, syntax, and built-in functionality. There are entire books written about how to classify programming languages. For me, the most important distinction is where it falls on the "machine-code-versus-human-readable" spectrum. At its core, a computer only understands Zeros and Ones, so before any Code can do any actual work on a computer, it must be 'compiled' do Zeros and Ones. As a reckless generalization, programming languages that are 'closer' to machine code usually require less compiling, and are usually marginally 'faster.' They are also generally more difficult to learn and can require many lines of code to do a very 'basic' task.
  • Database - While a programing languages 'does things,' a database saves data. Pretty much every useful application will require a database to store data. If a new user creates an account, that account must be saved somewhere for that user to be able to log in again in the future.
  • infastructure - Your computer code itself must be saved somewhere and must be able to execute if it is going to be useful. Put another way, you will need to publish or 'deploy' your code so that the public can use it. If you are deploying as a website, you will need to purchase a domain and upload your code to a server. If you are deploying as an Android or Apple application, you will need to follow those platforms procedures for packaging and releasing your application.

All of these terms are oversimplifications, but they should be sufficient to get started.

STEP 2: Getting Started With the Basics

Go 'Deep' With your First Language (Python)

Learning a new language can be very exciting. It can also be very frustrating to just get 'set up' to learn. For that reason, rather than trying to learn a 'little bit' of a few langauges, you should start with a single language and you should enroll in an online course. This Python Course on Udemy is a great place to start because it walks you through step by step how to set up your coding environment and starts with the assumption that you know nothing about programming. Python is one of the most versatile programming languages. It has a huge community and is still used everywhere. You can use it for almost everything, including mathmateical modeling, website building, application development, and databases. You can also run python directly on your computer, so setup time and bug fixing can be easier than with other languages that run in the chaotic environment - like the web browser.

Learn HTML, CSS, and JavaScript (the langauges of the internet)

While each of these is a distinct language, they are often grouped together because they all operate together in the web browser. Compared to your laptop, which can run a python script the same way every time, the internet is inherently chaotic: there are different browsers, speeds and screen sizes and a good website should work well for everyone. Because these technologies are so foundational, I also recommend taking a dedicated course or following a free in-depth explanation of the topics. In a nutshell, here's what each does:

  • HTML - Stands for "Hyper Text Markup Language" and it is less of a "full computer language" and more of a "document type." This is the standardized file type that gets interpreted ("rendered") by the browser to create the websites you see every day. This is a public file, and you can view the HTML for any website. Try this: (1) Open a Chrome browser window and go to your favorite website, (2) right click on any page and select "inspect", (3) Select the "elements viewer" (red circle in screenshot below), then click the "elements selector" (blue circle), (4) Now you can hover your mouse over any element in the web page (such as the logo, green circle) and view the HTML code that created that element (green box). You can 'Inspect' any web page in the browser to view its HTML and CSS
  • CSS - Stands for "Cascading Style Sheets" and works directly with the HTML file to style the content of the web page. If "all it does" is styling, you might think CSS is 'easy.' It is not. CSS is desceptively complex because it must be configured precisely to ensure the web page looks good on all screen sizes and that style is consistent throughout a website. HTML files include CSS directly or they can reference stand-alone CSS files.
  • JavaScript - JavaScript is a full-blown computer language that is designed to be run in a browser. HTML files can include JavaScript or a JavaScript file can be a stand-alone file. Any website that includes any sort of interaction from the user (such as a text input, clickable design elements, etc) will use JavaScript to execute the action. While JavaScript was originally a fairly simple languge used exclusively for specific functionalities in the web browser, it has evolved into a fully-functional computer language that can do pretty much anything.

Learn Git and Github

Git is a system for saving progress in a project. If you've worked with Word documents in the past, you may have done things like "Save As" and then named your file things like "Final Paper, Draft1" and then clicked "Save As" again to name updated versions "Final Paper, Draft2" and "Final Paper, Final Draft" and then "Final Paper, Final Draft (REVISED)", etc. Even a simple programming project contains dozens of files, so constantly saving every file with a new name would quickly become unworkable. Git works by creating aspecial file in the top-level folder of the project that is used to track changes to the project as a whole. The project is called a "Git Repository" or "Repo." Rather than "Saving" individual files, you "Commit" changes to the Repo. In the background, Git looks at the difference between the previous version and the new version, and saves the difference as a "New Commit." You can always go back through previous commits. Additionally, you can save new Commits do different "Branches" so that multiple people can work on a project at the same time. Any good in depth course for beginners will include a discussion and explanation of Git.

Learn to CRUD A Database

Any useful project will require data and that data must be saved in a database. Your project must be able to perform the four essential database functions:

  • Create - You must be able to Create/Add data to the database.
  • Read - You must be able to Read data from the database (and, usually, display that information to the user).
  • Update - You must be able to Update data in the database, and
  • Delete - You must be able to Delete data from the dabase.

STEP 3: Make a Plan (With Help of AI), Choose a Framework/Tech Stack and Start Building

It would be impossible to create a "How to" guide for coding in 2025 without mentioning AI. While there are a number of different ways to implement AI into your workflow, I have explicitly not mentioned it until now because I think it is essential to understand the foundational conecepts of computer programming before asking AI to do it for you. There are several different

Using AI as a Novice Programmer

I tend to use AI only when I get stuck and it usually helps me to troubleshoot quicker than I can on my own. I occassionally also use it to create images for my site. For my purposes, YOU.com provides a good blend of useful tools and lets me choose from several different modles depending on the task. Some prompts / workflows that I use or that may be useful:

  • I'm trying to create a website that does [describe your product]. Before starting, I want to evaluate the pros and cons of different tech stacks. I'm deciding between [option 1 and option 2 and option 3]. Can you please describes the pros and cons of each and make a suggestion for which I should choose?
  • I'm getting this error in my code: [copy/paste the error]. I think the source of the code may be the [file /file/name/in/your/code]. I've attached the code for that file in the attached .txt file. Can you please review the code and suggest what they problem may be and how to fix it? (attach .txt file with the code)
  • I'm having trouble getting my app to write to the database. I am using [tech a] for my app and [tech b] for the database. Can you please describe in detail each step I need to take to implement this? Please provide sample code snippets where helpful.

Choose a Framework(s) and Tech Stack

A Framework is like an 'add-on' to an existing programming languages that provides shortcuts for some of the basic and most commonly used elements so that you can build quickly and efficiently. You will need to make the following decisions regarding your tech stack and frameworks:

  • Native Application or Web App - A Native Application is one that users download from the Google Play Store or Apple Store. A Web App, by contrast, is accessible from any web browser. Depending on your use case, one may be preferable to the other. For an MVP, my recommendation is to build a Web App because there are less hoops to jump through in order for it to be available to the public.
  • Front End - The "Front End" is the part of the application that the user sees on the screen and interacts with. If you are building a Web App, React JS is the most common framework, although there may be some advantages to building your front end using Flutter because the same code base can then be re-used to create natiuve Android and Apple applications without having to re-write the whole code base.
  • Back End - The "Back End" is the 'guts' of the application. Most applications need to do something, and this is accomplished with backend code. Common choices for backend code are Javascript (using a framework such as Node JS) and Python.
  • Database - The database choice is very important to get right the first time because it can be a huge pain in the but to 'migrate' a database in the future if you change your mind. The first decision if whether to use a 'self-hosted' database (one that you control) or a 'managed' database (one that is controled by Amazon, Goole, or another vendor). For most beginners, a managed database is the right choice for an MVP. I am partial to Google's Firebase Database because I've found it is relatively simple to set up and because they provide a number of tools that make it easy to integrate different functionalities.

Start Building!

Building an application from scratch can seem daunting. You should start by breaking the problem down into smaller problems and then tackling those problems one at a time. I recommend starting most projects with a simple landing page that describes what your product does and that provides an input for users to sign up for a waiting list and/or create an account. You have to start somewhere, so just START!

STEP 4: Deploy

After building 'locally' (on your computer or laptop) you will need to 'deploy' to the public. If you are building a web app or website, you will need to follow these steps:

  1. Purchase a Domain. (this is your address on the internet: like TurboTabs.com). You can usea "Registrar" services like GoDaddy.com or NameCheap.com - these companies will register you as the global owner of the domain and provide basic setup options.
  2. Purchase Hosting Services. Just having a domain is not enough, you actually have to have code that runs when someone visits that domain. This code needs to live somewhere. The place it lives is the "host." Although GoDaddy and other registrars offer hosting, it is usually on the expensive side. I use Firebase Hosting for my web app. In simple terms, you will need to edit/update the records with your Registrar vendor (e.g. GoDaddy ) to "point to" your host and application.
  3. Deploy App to Hosting Service. Your application will need to be deployed to the host. This usually requires multiple steps such as "building" a "production version" of your application and then uploading this version to the host.

STEP 5: Test and Iterate

Now that your application is available to the public, you will need to get some family and friends to test out your service. You will quickly find that users will use the site in ways you never imagined. They will get lost and they will get confused. That's OK! The whole point of getting the product into the hands of users is to find out how to make it better. Listen to their feedback, improve your product, then try again!