How I Went From a Warehouse Employee to a Full-Stack Developer

Full-stack developer jumping over boxes.

I started programming in C++ when I was about 11 years old. I thought nothing of it, I just thought it was “cool,” and I would eventually fall away from it. Just a phase. Especially since I lived in a tiny town, and pretty much all of my peers hardly even knew how to turn a computer on. Fortunately for me, however, I had been around them my whole life. My dad was basically the go-to repairman for the town’s computer troubles. I learned early, mostly about hardware.

After a few years, it really began to grow on me. I was programming more and more in my free time. I would go to karate class or join my team on the baseball field, but as soon as I got home, I was coding. I got into game development with OpenGL, and eventually Direct3D (DirectX 8.0). I wanted to be the next John Carmack at that time.

As I still continued coding, my interests shifted more toward solving real-world problems. Business problems, in a sense. I would write little desktop utilities for myself. I actually wrote an “address book” using C++ and Win32 API that just had a set of fields and wrote to a flat text file – no real format. I posted it on It received quite a few downloads, to my surprise. One of the comments said, “it’s simple but stores a lot of information, and it’s *much* faster than Microsoft Address Book!” LoL!

Fast forward several years – around 2011 – I was working in a warehouse as a general labor employee since 2009. The company wanted to start a new in-house process – repairing consumer printers for Lexmark and HP. Previously, they were selling them as scrap to a third party. Once the processes were identified and documented, we began working this repair process on a regular basis. The plant manager was hosting an MS Access 2007 database on a shared drive over the network – from his Windows XP desktop computer in his office. WinXP had a concurrent connection limit of 10, though we had 15-20 users who would need access to the Access database at any given time. This caused a lot of “file not accessible” errors, and it also drastically reduced production and ultimately had a negative impact on revenue.

I spent a few weeks at home, on my own time, developing a C# / WinForms / MS SQL Server 2008 solution to solve these problems. Once it was “good enough,” I talked to the IT guy at the warehouse. He confirmed we had the resources to host it (just needed a SQL Server instance). He and I walked into the plant manager’s office and told him about it. I slapped a USB flash drive on his desk and told him to check it out. He was blown away.

From that point forward, although I didn’t have an official developer title and I was paid as a warehouse employee, I designed, developed and wrote software for them as a sole developer. I had no help or support from their corporate dev teams – they didn’t even know about me. They closed for good in late 2013. Shortly after that, I landed my first professional development gig. For the past four years, I’ve been a successful and professional full-stack developer, primarily focused on .Net and C#.

Want to learn to program? Register for my free Self-Taught Coder Masterclass where I cover how I went from a novice to a software engineer at eBay in less than one year.

Join the Conversation

  1. gravatar
  2. gravatar
  3. gravatar
  4. gravatar


  1. Great story, I really enjoyed reading this. We truly do have the power to influence our outcomes if we are willing to put in the extra hours required to learn and hone our craft. I currently work developing embedded systems, but a few short years ago I was working in technical services. I began as a self-taught programmer as well. I am currently a full-time developer, a full-time student in a computer science program and I am teaching myself the fundamentals of game programming. Anything is possible!!!

  2. I love your story:)
    I am making desktop applications via python teaching myself everyday.

Leave a comment

Your email address will not be published. Required fields are marked *