for the enlightened reader, Launch School (referral link) is an online coding school i attended. their "mastery based learning" approach and affordability ($200 /month) sets them apart from myriad other get-rich-quick coding bootcamps. (disclaimer: i also teach coding courses)
before enrolling i did a lot of research, and several months after enrolling i was live streaming SaaS apps from scratch. but what about that period in the middle? how quickly can one scale their coding chops from a program like Launch School?
to answer this, let's first make a few assumptions:
now let's dig in.
0-1 weeks
when you commit to learning to code, the first 10 minutes will be kind of fun. instructions will explain your "terminal" and how it is a "shell" that you can punch commands into. after trying a couple copy/paste examples, "I AM HACKER" motivation ensues.
within a couple hours, however, you'll be assigning variables and double (inner) looping through arrays, wondering what you got yourself into. you will likely have dozens of "i want to quit" moments at this stage.
1-4 weeks
settled into a study schedule, like mornings before work or 30 mins at lunch, 30 mins after dinner, you'll be more equipped to handle the daily onslaught of WTF concepts and hieroglyphics (code samples).
at this point you're beginning to think abstractly, building a "state" in your brain that sort of loads in-memory whatever your code is trying to achieve, and then executes those operations against it.
for example, suppose you're told to loop through 1-100 and log out only even numbers, multipled by 3.
(1..100).to_a.each { |n| puts n*3 if n.even? }
this is just one solution. but you need to start writing this syntax into your brain. in other words, once you understand the problem (spec, requirements), you should start visualizing what a solution could look like.
the first several 100 times you do this, it's difficult. one of the early projects at Launch School is a text-only version of Rock Paper Scissors. then Blackjack. then Tic Tac Toe. then you build a web interface with actual cards and a dealer's table. at each step, you're equipped. a moment before, you're not.
learning to code is a series of (1000s of?) building blocks and if you try to skip a step, you'll feel it later.
5-8 weeks
if you've been diligent, you now have 50-80 hours of coding practice. that's 50 hours more than 95% of humans. the skills you've picked up may still feel worthless, however, unless you start injecting your own ideas.
for example, by week ~8 i could write a Ruby version of the Luhn algorithm from scratch. Launch School actually requires you to rewrite several algorithms, equipping you with nothing but a list of test cases to ensure your code is solid. but what can you do with an algorithm, if you don't yet understand HTTP, databases, or frameworks? well, you can scrape.
i got my first freelance developer gig around 10 weeks after i began my coding journey. it was to build a scraper that converted a directory of Subways franchise owners to a CSV with names, emails, and phone numbers in separate columns. i charged the client $3k and delivered around 5,400 emails in just a few days.
to scrape any web page (logged in our out), with just 2 months' Ruby coding experience, check out my Ruby web scraping course.
9-16 weeks
by now you've graduated from pure Ruby scripting and are working with web technologies, specifically Sinatra.
Sinantra is a "lightweight Ruby on Rails" that allows you to spin up a server, database, go live on a dot-com, and more, with just a few files of code and little up front configuration. here's my first Sinatra app, still used by marketers today.
to learn the basics of relational databases, HTTP data transfer, and frontend (HTML/CSS), Launch School teaches you to build a simple todo list with light animations for checking / unchecking boxes. then you build a handful of career portfolio type pages and a web-friendly version of your previous Blackjack script.
17-34 weeks
if you have app ideas of your own, at this point you could spin up a Rails or Sinatra server and start hacking. it will probably suck, and be buggy, and you will spend hours agonizing over trivial mistakes an experienced developer would intuit in seconds.
for those who go this route (like i did), learning how to read a stack trace and search for answers to error messages is critical. somewhere in this timeframe you'll also begin having a lot of "aha" moments. many of mine came while reading Launch School's free Intro to HTTP book. another huge moment in my journey was wrapping my head around MVC (Model-View-Controller) architecture.
35-52 weeks
after learning how to write Ruby scripts, you refactor them to OOP (object oriented programming) design patterns. then you dabble in Sinatra apps and start learning JavaScript.
in my opinion, the syntax is easy to pick up and does not at all feel like learning a new language from scratch. however, most method names are different so there is memorization required, and you are also working with very different objects... namely, elements on a web page that users interact with vs imaginary values assigned to variables.
to be honest, the JavaScript section of Launch School is intimidating, and took me several months to get through most of it. i actually never finished the JS portion in its entirety, and was granted an exception waiver to skip ahead to Rails. you'll also learn how to sketch ERD (entity relationship diagrams) and a decent amount of SQL.
for what it's worth, you can learn a ton of SQL with zero coding experience, for free, at SQLbolt.com. just do lessons 1-10 and you will be better than 90% of developers i know at querying databases. that's one weekend of study.
52 weeks and beyond
at this point, if you aren't working on your own side projects you're not doing it right. what i found was the more i learned, the more my mind "unlocked" ideas. i might have had them stashed away for years, but now that i was empowered to bring them to life, my subconscious began reminding me.
the biggest mistake i see early learners make around this mark is they are always starting something, never finishing it. this happens because they hit some skill gap, but hitting and plowing through skill gaps is the essence of software development. and i think at most jobs this makes us very uncomfortable, so we have to experience a paradigm shift.
paradigm shifts
imagine that each day you come to work, you are given a problem you don't know how to solve. this is programming. and over time you'll have better "hunches" about how to "begin" solving something. but even then, often, your hunch will be very wrong. this is programming.
when i got into programming i thought i would write 1-2 lines of code, then "refresh the page" and see my work. but in full stack development you might spend hours writing only backend code, never even bothering to open a web browser. to do this requires a lot of focus and removal of distractions. you are basically "loading" the program into your brain for hours at a time, so that you can understand the context of all the imaginary values floating between files of code. it sounds abstract, because it is. but learning to code == learning to think abstractly.
at some point, let's say around 8 months, you'll shift from "converting" logic into code, to simply writing code on the fly that is logical. Launch School heavily encourages writing pseucode for each of your problems, then translating those steps into the appropriate syntax (Ruby, JavaScript, SQL, etc). after writing thousands of lines of code, your brain will begin to do this automatically. i can't claim there is a specific "moment" when it happens, but you will notice yourself writing less and less pseudocode. on my live streams i do zero preparation, zero pseudocode, and have built multiple app from zero in 7-12 hours.
summary
you never truly "know" how to code. you will ALWAYS be learning how to code. i routinely do Google searches for simple methods i learned on Week 3 of Launch School. but you will learn how to learn.
at some point on your journey, let's say around 1-1.5 years, you will remark to yourself something along the lines of "i think i can build anything." when that occurs, your brain has finally surrendered to logic and abstractions required to be an engineer. you might not actually build anything, but you will develop the conviction nonetheless. i think this is the point at which you are "Fluent" in programming.
to recap our timeline:
about a year after i began learning, my girlfriend also began teaching herself.
she hacked nights and weekends, sometimes even during lunch. and guess what? now she builds all the Fomo.com integrations. she won 2nd place at her first hackathon. she's leading development on a project at Fork Equity that analyzes retail invoices (PDFs), turning them into spreadsheets.
TLDR: if i can do it, so can you. good luck!