At the end of 2020, I resigned from my job as a software consultant. After several years as a full-timer on product teams, I spent about 4 years doing consulting, first at a small boutique shop and then at a larger agency. Here are some unordered thoughts about what I liked and disliked about my consulting experience. It goes without saying that these are my personal experiences and thoughts, and I have no idea how much they overlap with anybody else’s.
What I Liked About Consulting
-
Changing teams frequently: hopping from project to project every few months was really exciting. I got exposed to way more domains/tech/people/environments than is possible on a product team.
-
Awesome colleagues: I got to be colleagues with some truly world-class programmers and learn from their experiences. This isn’t unique to consulting, but it was still cool.
-
Job security independent of business success: When I was working on product teams, I had a couple of gigs at startups, where the future is never certain. When there are lots of clients out there, one of them going away doesn’t mean you have to look for a new job. You can get this same thing (maybe more of it) by working at a big, stable product company too, I would imagine.
What I Disliked About Consulting
-
No ownership: The way that I like to develop software is iteratively, and I don’t mean sprints. I do my best work when I am living with a codebase for a long time, seeing how the decisions that went into it stand up to real use patterns and adjusting things subtly over time. Jetting off to a new client every few months means that’s not possible.
-
Disconnected feedback: Closely related to the above. Of course you can get feedback from your colleagues and clients, but to me, the most valuable feedback you can get about your system design choices is the feedback generated by maintaining and enhancing a running production system over time. Is your architecture good? Somebody can say it’s good, but until it stands up or falls down under a series of changes over a couple of years, you don’t know for sure. As a consultant, it doesn’t make sense for a company to keep me around that long to find out.
-
Difficult to build deep expertise: The places I worked were polyglot shops, which in one sense is great. As I mentioned above, I loved getting exposure to a wide variety of tech. The downside of being a perpetual generalist is that I didn’t get a chance to dive really deep on one area of interest and become a true expert.
-
On the clock: I know this one is largely in my own head, but there’s a sense of comfort that comes from being salaried on a product team that I never felt as an hourly consultant. I know that not all of my hours are equally valuable in terms of output, and I could never square that with hourly billing. I never heard any complaints about this, but it was always a small background concern.
Conclusion
There’s no real conclusion here, just sharing some feelings. I’m glad that I spent a few years as a consultant. I’d consider going back to it in the future, but my next job search is definitely going to be back in product team land.