Seven years ago, I was working retail. Today I’m a senior software developer at a tech company. No CS degree, no bootcamp. Just a laptop, an internet connection, and a stubbornness that bordered on unhealthy.
This isn’t a humble brag. The journey was genuinely difficult, and I want to be honest about what it actually took.
Year 0-1: The Chaos Phase
I started learning Python from YouTube videos in the evenings after work. The first three months were exciting – printing things to the console felt like magic. Then I hit a wall. I could follow tutorials but couldn’t build anything on my own.
What broke me out: I built a terrible inventory management script for the store I worked at. It was ugly, it crashed constantly, but it solved a real problem. My manager started using it. That validation was addictive.
Year 1-2: The Foundation Phase
I realized I needed structure. Here’s what I focused on:
- HTML/CSS/JavaScript – because web development had the most entry-level jobs
- Git – essential and non-negotiable
- One framework well – I chose React (in hindsight, Vue might have been easier to start)
- Basic SQL – databases are everywhere
- One backend language – I stuck with Python (Flask, then Django)
I built five projects during this period. Each one was significantly better than the last. The fifth one – a budget tracking app – is what got me my first interview.
Year 2-3: The First Job
Getting hired took four months of applying. 200+ applications. Maybe 15 responses. 6 interviews. 2 offers. I took a junior role at a small startup at below-market salary because they were willing to take a chance on me.
The first six months were humbling. Production code looked nothing like tutorial code. I learned more in those six months than in the previous two years of self-study.
Year 3-5: The Growth Phase
I moved to a mid-size company as a mid-level developer. Key learnings during this period:
- Testing is not optional – I learned pytest and Jest
- Code review feedback is gold – I started requesting tough reviewers
- System design thinking – understanding how pieces fit together
- Communication skills – the ability to explain technical concepts to non-technical stakeholders set me apart
Year 5-7: The Senior Phase
The jump from mid to senior wasn’t about writing more code. It was about:
- Making architectural decisions and justifying them
- Mentoring junior developers
- Breaking down ambiguous requirements into actionable tasks
- Knowing when NOT to build something
- Understanding business context, not just technical requirements
What I’d Do Differently
- Learn data structures earlier. Not to pass interviews, but because understanding arrays, hash maps, and trees makes you think better about problem-solving
- Contribute to open source sooner. Reading other people’s code accelerates your growth massively
- Network more. Every job I got was through connections, not cold applications
- Take care of my health. I burned out twice by coding 14-hour days. Sustainable pace matters
The path is possible. It’s not fast, it’s not glamorous, and there are moments you’ll want to quit. But if a retail worker with no technical background can get here, so can you.
