The Startup Crash Course Every Software Engineer Needs

When I started my career as a software engineer, I had a clear vision of what I wanted:

I dreamed of working in a cubicle for a big company, writing the most complex and well-architected code the world had ever seen.

I would decorate my cubicle with Halo memorabilia and life was going to be perfect.

Fate had other plans for me.

Instead of landing a job at a large corporation, I found myself working at a very small company.

Little did I know, this experience would shatter my preconceived notions of what it meant to be a software engineer and set me on a path I never could have imagined.

My First Job at a Startup

My first job out of college was at a tiny startup in the ticketing industry. I was working primarily on a Visual Basic 6 desktop application that helped ticket brokers track their inventory, customers, and sales. We also built their websites to take online orders. This was back in the early 2000s, in the days of Internet Explorer 6 and terrible JavaScript and CSS standards, long before the fancy frameworks developers use today.

As an early employee at such a small company, I had to wear multiple hats - writing code, doing customer support, making product decisions, and quickly pushing out updates. There were no cubicles in sight. Instead, I worked on a Sam's Club folding table shoved in what looked like a closet with 3 other developers.

Much of my time was spent on the road, installing our software for clients. I would frantically write code on planes and in the back of cars while traversing the country. Looking back, I realize I was living the quintessential startup life, but at the time I didn't even know it. It was just what needed to be done to make the product and business successful.

What I Didn't Learn

Working at a scrappy startup from the very beginning of my career, there were many aspects of software development I didn't get exposure to:

  • I never learned how to decorate a cubicle

  • I never learned formal development processes. We had a whiteboard with random notes instead of detailed requirements or long-term product planning.

  • QA teams were nonexistent. I had to thoroughly test my own code and then release it straight to customers.

  • I didn't deal with legacy or extremely complex codebases. We were building everything from scratch.

  • Bureaucracy and red tape weren't an issue at such a small, nimble company.

  • There were no formal career development programs or regimented performance reviews.

  • Stringent security or compliance requirements weren't a major focus for our little startup serving small businesses.

  • I never adapted to the slower, more regimented development cycles common at larger companies. We moved fast and broke things.

  • I missed out on navigating tricky office politics, which are inevitable at big corporations but a non-factor at a company with less than 10 people.

What I Learned Instead

While I may have missed out on some of those experiences, what I gained instead was even more valuable. I was incredibly fortunate to work for a founder named Russ Lindmark who has started many successful companies. Under his leadership, I learned the startup way of building products and companies.

We had ideas and we quickly implemented them, getting real software in front of real users as fast as humanly possible. I learned how a very small team of hungry, hard-working people can change an entire industry. Even though we were just a ragtag group of mostly fresh college grads, we were building tools that solved major pain points for our customers.

Some of the key things I learned in that first startup job:

  • I had to create high quality software because I would be the one supporting it. As the sole QA and customer support, I couldn't just toss buggy code over the wall for someone else to deal with. Did I make mistakes? Of course. But I quickly learned to be more careful and test thoroughly.

  • I learned to figure out everything on my own. If I ran into a problem, I had to solve it myself. This was before Stack Overflow existed. My only hope of finding help was searching through old Google Groups threads to see if someone else had faced the same issue. Persistence and self-sufficiency were critical.

  • I had to quickly pick up new skills like server management and database administration. The solid foundation of practical knowledge I gained, especially around SQL and data modeling, is still immensely valuable to this day.

  • I learned what it takes to architect and build a full SaaS product, end-to-end, when I was only 19 years old. I got to work on everything from the backend systems to the user-facing web app.

  • I had the opportunity to frequently interact with customers to deeply understand their problems and then translate those insights into software solutions. I learned that empathy and open communication are just as important as slinging code.

  • Most importantly, I learned how to build real products, not just write code. I gained an understanding of the full lifecycle of software development and all the non-coding skills and decisions that are necessary to go from a rough idea to a refined product in the hands of happy, paying customers.


I credit that first startup job for much of my career success. It set me on the path to becoming a well-rounded software engineer and product-oriented entrepreneur. By having to wear so many different hats and take on so much responsibility at such a young age, I gained a versatile skill set and mindset that still serve me well to this day.

Of course, I didn't fully appreciate it then, but in retrospect, I feel very fortunate to have started my career at such a small company. If you really want to become an impactful software developer, consider working at the smallest company possible when you're just starting out.

You'll get thrown in the deep end, but you'll also get to touch all aspects of the product development process and business operations.

It's the best crash course available for becoming an entrepreneurial, customer-focused engineer.

My experience at that little ticketing startup ignited my passion for using software to solve problems and seeded my desire to eventually start my own company. It made me into the person I am today. And while there were stressful moments, I have so many fond memories of that time. We were just a few friends hacking together some code and trying to make our customers' lives a little easier.

It wasn’t until years later that I realized it was a startup and how critical it was to my career development.


or to participate.