Wow, 10 years!
It hit me recently that I've been working full time as a professional software developer for 10 years.
There have been ups and downs along the way and given more thought and feedback to the #100DaysOfCoding movement, I thought providing an overview and mini-series of what I've learned could help others just beginning their journey.
10 Years of Software Teams, Projects and Code
To understand what I've learned, you need to know where I've been.
The Early Years - Consultancy
I was working towards a BS in Computer Science focused on systems programming (mainly C and C++) when I was hired at a local consultancy to build, of all things, windows installer packages. Yes, you read that right. During the next few years, I build installers for windows, installers for Mac, learned web development in PHP, wrote Mac apps in Objective-C, and launched my first iOS app in the App Store.
Being part of a small business of roughly 20, I met with clients, learned the importance of sales and pricing projects correctly, and so much about operations.
I didn't realize it at the time, but this was an amazing way to start my career and understand so much about business as a whole.
The Middle Years - Product Teams
After pouring my heart into consultancy work for years and getting burnt out on the endless cycle of clients, I pursued product work. During this time I worked with NASCAR building internal systems to streamline and digitize processes, worked with an amazing internally distributed remote team to build complex software for clinical drug trial management, built HR software and so much more.
I learned what it meant to work remote, the importance of aligning a team around a single goal, how things could fall apart when a remote team wasn't run well, and much more.
Most importantly, I worked with incredibly talented, professional and organized management and technical people and developed an immense appreciation for more formal software development processes: automated testing, backlog grooming, discovery processes, story writing and client demos.
I enjoyed working on product teams, but did miss some of the challenge of balancing multiple projects or learning new technologies that consultancy work provided.
Recent Past - Blend the Two
The opportunity to start Lotus and work full time for myself presented itself (more on that decision later) and I left product teams behind. I was now in a position to blend the two work styles in such a way that makes me personally happy, and is actually great for business.
These days I have a great selection of long term clients where we act as the product team, managing a backlog, implementing features and providing support, year after year. On top of that, we're constantly looking for new clients to build an MVP or an entire product platform, much as you might find a consultancy do.
The key difference that our customers and I love - we don't walk away when we launch a product. In fact, we do everything we can to support and encourage growth so we can be part of that journey.
It just makes sense.
In Depth - Lessons Learned
This will kick off a series of articles and potentially an ebook detailing specific lessons learned throughout my career and things I can share to help other starting developers.
I look forward to sharing my journey with you!