As I was learning to code, I considered what it would be like to be a developer for a product development team or a developer consultancy. Three years later, I've done both and have put a lot of thought into which environment is right for this stage of my life.
When I spoke with dev shop customers as a Rails Support Engineer at Ninefold (RIP Ninefold), I thought their lives sounded incredibly glamorous. High hourly rates, flexible schedules and a pick of which projects to work on sounded alluring.
I've learned that when you are a consultant, it's similar to having your own freelance career. Consulting can be a hard business model to scale since you can only sell an hour of your time once. When that hour is gone, it's gone forever.
The last eight months I've spent consulting has forced me to level up my developer, product manager and client relation skills because I partnered with some of the sharpest developers I've ever met. You alone are responsible for logging enough hours to pay your bills and making sure that the time you do spend is billable and delivers real value to your client. Sprints are measured in hours and weeks, not quarters or years.
The freedom that consulting grants you is liberating. I was able to easily drive across the country by shifting my work around. I was, however, having a tough time turning my work day off and relaxing on the evenings and weekends. The client projects I managed and worked on were so interesting that I would lose hours at a time writing features.
Consulting can be difficult because you are not (really) on the client's team. If the client demands a feature that doesn't make sense to you, you could push back gently with supporting evidence. If they still insist (and are paying their bills), roll up your sleeves, suck it up and get to work.
Product development means that a developer works for one team, on a specific set of applications. As Audrey Hepburn implied with, "if I get married, I want to be very married", the developers are very invested in the product that is being built and maintained.
The satisfying part is that one hour of product development time can be sold as many times as the market can bear. It's empowering to interact with real users and to see the impact of the code you are deploying on the health of the business. As opposed to consulting, timelines are often measured in months, quarters and years, unless you work at a startup where issues like burn rates and stability come into play.
Working on a product team means a lot of face time and the office politics that often comes with it. While I enjoy both the business and technical sides of product development, product teams typically lead to more meetings and less time to code. You're expected to be a on a reliable schedule and be willing to do whatever it takes to make the company success...even if the request is outside of your job description.
I'm currently doing a mix of both: a product team by day and consulting by night. I'm at a place in my career where I want to focus on a long term product. I am lucky that I can continue to consult so that I can try out new libraries and solve interesting challenges.