A legendary salute to INFS and FITTR Family for revolutionizing the fitness dimension of humankind.
I wrote that years ago after completing a nutrition certification. It was not my first self-teaching experience, but it was the one that made the pattern click. I had taught myself calisthenics over years in Navy parks. I had taught myself investing from books and spreadsheets. And with that nutrition course, there were light bulb moments and chain reactions in my brain — I realized that everything I had ever learned, I had taught myself. Not because I was gifted, but because I had no other option.
That same pattern is how I became a developer. No CS degree. No coding bootcamp. No mentor holding my hand. Just a Marine veteran who was past 30, who needed to build things, and who applied the same stubborn self-teaching method that had worked for everything else.
The Starting Point: A Spreadsheet
My first "project" was not a website or an app. It was a Google Sheets spreadsheet that tracked my workout metrics. Sets, reps, body weight, personal records — all entered manually after every training session.
After a few months, I wanted the spreadsheet to do more. Calculate weekly averages automatically. Generate charts without me manually selecting data ranges. Send me a summary every Sunday. Basic automation.
So I Googled "Google Sheets automation" and discovered Apps Script. That was my first exposure to code. JavaScript syntax in a spreadsheet context. I copied scripts from Stack Overflow, broke them, fixed them, broke them again. Each broken script taught me something. Each fix gave me a tiny piece of programming understanding.
I did not know it at the time, but that spreadsheet was my bootcamp. The curriculum was my own need. The projects were real problems I actually wanted solved. The motivation was not a certificate — it was a better training log.
The best programming curriculum is your own unsolved problems. Real needs produce real learning. Everything else is tutorial entertainment.
The Learning Path: Build, Break, Fix, Repeat
From Apps Script, I moved to HTML and CSS. I wanted to build a simple webpage to display my fitness progress publicly. The first version looked terrible. Black text on white background, no layout, no design. But it loaded in a browser and showed my data. That was enough to keep going.
Then JavaScript. Not from a course — from needing interactivity on my page. I wanted a button that filtered exercises by type. That meant learning DOM manipulation. One feature, one concept, learned because I needed it.
Then Python. Not from a tutorial series — from wanting to automate data collection from multiple sources. A script that pulled my training data from Sheets, my weight from a CSV export, and generated a combined report. One automation, one language, learned because the alternative was doing it manually forever.
Then React. Because static HTML pages could not handle the complexity of what I was building. Then Next.js. Because I needed server-side rendering and API routes. Each technology was learned not in sequence from a curriculum but in response to a specific limitation of the previous technology.
The progression: HTML/CSS, JavaScript, Python, React, Next.js. That is five technologies over several years. Not five technologies in a 12-week bootcamp. Real learning at a pace dictated by real needs.
Tutorial Hell: The Trap I Almost Did Not Escape
Somewhere between Python and React, I fell into tutorial hell. I watched over a hundred tutorials. I followed along with every "Build a To-Do App" video on YouTube. I completed three different React courses. I could recite lifecycle methods and explain the virtual DOM to anyone who asked.
I had shipped exactly zero products.
Tutorial hell is the most seductive trap in self-taught programming. It feels like learning. You are typing code. You are seeing results. Your brain gets the dopamine hit of "I built something." But you did not build something. You followed instructions to build someone else's something. The moment you close the tutorial and open a blank file, you are paralyzed.
The escape from tutorial hell is brutal and simple: close all tutorials, open a blank file, and build something you actually want to exist. You will get stuck immediately. You will Google furiously. You will write terrible code that barely works. And you will learn more in that one painful session than in twenty tutorial follow-alongs.
My escape was building a simple workout tracker web app. Not following a tutorial to build a workout tracker. Building MY workout tracker, with MY requirements, from a blank Next.js project. Every error message was a lesson. Every Stack Overflow search was targeted, not aimless. Every feature I shipped worked because I understood why it worked, not just what to type.
The Navy Advantage Nobody Talks About
People assume that a military background is irrelevant to programming. They are wrong.
The Navy taught me process discipline. In the military, you follow procedures because deviation costs lives. In programming, you follow processes — version control, testing, documentation — because deviation costs data and sanity. The instinct to be procedural, to document, to test before deploying — that came from the Navy, not from any coding course.
The Navy taught me to operate under pressure with incomplete information. In operations, you rarely have all the data you want. You make the best decision with what you have and adjust as new information arrives. Programming is identical. You rarely understand the full system when you start building. You make your best architectural guess and refactor when reality reveals what you missed.
The Navy taught me that showing up is 90% of success. Not motivation. Not inspiration. Just showing up every day and doing the work regardless of how you feel. This mentality is the single biggest advantage in self-taught programming because the dropout rate is enormous. Most people who start learning to code quit within three months. The ones who succeed are not smarter — they just kept showing up.
14 years of military service gave me a tolerance for discomfort, a respect for process, and an ability to persist through boredom that no bootcamp could teach. These are the actual prerequisites for self-taught programming. Not mathematical talent. Not a CS background. Grit.
The military did not teach me to code. It taught me to show up every day regardless of how I felt. That turned out to be the only skill that mattered.
What AI Changed About Self-Teaching
If I were starting today, the path would be dramatically faster. Not because the fundamentals are easier — they are not — but because AI has transformed debugging from hours of frustrated Googling to minutes of conversational problem-solving.
When I was learning, a cryptic error message could block me for an entire evening. I would search Stack Overflow, read five different answers that contradicted each other, try each one, break something new, and eventually solve the original problem through exhaustion-driven trial and error.
Today, I paste the error message into Claude, describe what I was trying to do, and get a targeted explanation of what went wrong and how to fix it. Not just the fix — the explanation. That is the crucial difference. AI does not just solve the problem. It teaches you why the problem occurred, which means you are less likely to repeat it.
AI also changed how I learn new concepts. Instead of watching a 40-minute video to understand one concept, I ask Claude to explain it with an example relevant to what I am building. Targeted, contextual, immediate. The learning density per minute is an order of magnitude higher.
But here is the warning: AI makes it easier to get answers without understanding them. If you copy-paste AI solutions without reading the explanation, you are doing a more sophisticated version of tutorial hell. The code works, but you do not know why. And when it breaks in a new way, you are just as stuck.
Use AI as a tutor, not as a crutch. Ask it to explain. Ask it to teach. Ask it why, not just how. The difference in long-term learning is massive.
The Credential Problem — Matters Less Every Year
For the first year of my coding journey, I was terrified that the lack of a CS degree would disqualify me from everything. Who would hire a Navy veteran with no formal training? Who would trust my code?
That fear was valid five years ago. It is increasingly irrelevant today.
The market has shifted. Companies that once required CS degrees now accept portfolios. Open source contributions matter more than transcripts. Products you have shipped matter more than certificates you have earned. The code either works or it does not. The server either stays up or it does not. Nobody asks for your degree when your product has users.
I built icanbefitter.com, Avya, and ThinkingCode without a CS degree. The platforms work. The users are real. The AI pipeline produces content that ranks on Google. No interviewer has ever looked at these products and asked where I studied computer science.
If you are over 30 and thinking about learning to code, do not let the credential anxiety stop you. Build things. Ship things. Let the portfolio speak louder than any resume.
For Everyone Starting Late
You are not too old. You are not too late. You have something that 22-year-old CS graduates do not have: years of real-world experience that gives you taste, judgment, and problems worth solving.
A young developer can build any app. An older developer who has lived — who has managed money, raised children, maintained their health, navigated a career — builds apps that solve real problems because they have lived those problems.
My fitness tracker is better than most because I have 14 years of training data and know what metrics actually matter. My investment sheet works because I have real money in real markets and understand what numbers drive real decisions. My content pipeline is effective because I have published hundreds of posts and know what resonates versus what flops.
Age is not a disadvantage in self-taught programming. It is a cheat code — if you use your lived experience as the curriculum.
Action is the mother of all solutions. Stop planning to learn. Open a blank file. Build the thing you wish existed. Break it. Fix it. Repeat.
Go Win!

