Here is my latest post for Simple Programmer…
It looked something like this: Become extremely knowledgeable in a given programming language until eventually you become a senior programmer.
Once you’re a senior programmer, you ride out the rest of your career as a programmer. Or you make a leap out of the technical world and into a strategy- or management-focused role.
For many programmers, this is a hard decision. Programming is what we love and we don’t want to lose our hard-earned skills. As programmers, we’re often very aware of how quickly our skills fade when we’re not in the business of putting out code anymore.
But it doesn’t have to be this way. There is another option that allows you to straddle both areas of the so-called softer and technical side of the profession.
And that’s in the realm of professional services.
Most people haven’t heard of, or considered, professional services. I want to give you an inside look at my experience over the last couple of years working in a professional services role so that you can work out for yourself whether it’s something that you would want to do, too.
I’m not going to try and sell you on the idea; I just want to make sure you know it is an option so that you can make the decision for yourself. I don’t want you to miss out!
What Is Professional Services?
The best way to think about it is: Professional services companies sit between what is thought of as traditional consulting and individual contracting.
A traditional consultant goes into a company and the company asks them how to do their work better or faster. The company doesn’t tell the consultant what to do; the company asks the consultant for guidance. Whereas a contractor goes into a company and is told directly what to do. Usually, the company has a specific piece of work in mind for the contractor. Professional services lands in the middle of these. Professional services provides both guidance, like traditional consulting, and additional help, like contracting.
For a professional services company, you could be doing either, or both, depending on your skill set. You could go to a client and help them set up a strategy like a traditional consultant, or you could follow up on the strategy as a programmer. You’re either working alongside the client teams, forming a new team, or doing a mix of both, depending on the situation. It’s often not as clear-cut and linear as this; the consulting and hands-on work are often quite cyclical. The programming teams who help out could end up forming the strategy for new pieces of upcoming work for the client.
It’s this unique blended setup that gives programmers an opportunity to straddle different areas such as product, strategy, and road-mapping without losing programming skills.
But what does a day look like for a programmer in this type of company? Well, I can tell you what it’s like for me.
I join new companies for anywhere from three months to a year (occasionally, but rarely longer). Sometimes, these are companies that are looking to scale their business rapidly and need help setting up the infrastructure to do it. Or they are businesses that need some technical expertise and guidance to modernize their current business. For us, these are often businesses that were brick-and-mortar-only businesses, like high street retailers, building companies, airlines, etc. These businesses are now looking to seriously invest money in their online business so as not to get eaten by the competition.
I work alongside my other team members and the client to help embed a strong culture while also delivering features for the client. Most of the clients we work with are struggling to keep up with smaller, more innovative companies, usually because they’re delivering in a slow, waterfall pattern that relies heavily on multiple year-long projects. By the time these projects are delivered, they’re already out of date.
Ultimately, the end goal is to empower the client to take the work we’ve done and build on it. That means that while we’re there, we’re training, advising, and guiding in a hands-on way. That involves pair programming, running training sessions where needed, and generally making yourself as useful as possible to the client.
I hope that gives you an overview of the type of work you can do in a professional services company. But in order to help you understand more about whether it would be right for you, let me take you through seven things to consider before you join a professional services business as a programmer.
1) Variety of Work
One of the reasons I personally work in professional services is variety. I have itchy feet. When I start to feel like I understand a codebase or the business quite well, or maybe my learning has just petered out, I can get turned off and start itching for a new challenge. Professional services allows me to scratch that itch, because I work with new clients every few months—long enough to do some great work and learn the business, but not so long that things get boring or repetitive.
2) Working With Different Companies and Architectures
Working in professional services often means that you can lift the curtain on a few of the internal workings of some big and impressive brands. For me, this was a huge selling point. I wanted to see what some of the biggest companies in the world are doing.
For instance, companies in financial services or those dealing with sensitive information have very different infrastructures from other businesses. However, those outside of finance wouldn’t see how these techniques apply in different industries.
When you get insight into these different architectures and patterns, you can bring them with you to the future work you do. In a typical product job, you might see new architectural patterns up close every few years if you change jobs. As part of professional services, you might see new architectures every few months.
3) Pushing You to Learn
Each different client is likely to use different technologies, which means you have to learn fast. You might know some of the tools they are using, but there are some you won’t know. Initially, this can be daunting and somewhat stressful, but then it becomes a confidence boost to know how quickly you can learn a framework, library, or paradigm. And if you love learning, this can be a great way to do it. Often, the fastest way to learn is by throwing yourself in the deep end and immersing yourself.
4) Working on Non-Programming
Working in professional services, I’ve seen myself work less on code, as compared to working in a startup, for instance. But the time not spent on code has been spent on other areas I didn’t get exposure to before. Like working with large automated build setups and user experience teams, and learning about business and product strategy. You don’t need to give up programming completely—far from it. But now you can build other skills that most programmers don’t get much of a chance to.
5) Lack of Remote Working
Most companies are now advocates of remote working. However, if you work for professional services, this complicates matters. While working for clients and doing some remote work is possible, it’s pretty much unthinkable to do entirely remote work. Part of professional services is being there in person, delivering. At times, there might be a chance to work from home, but you’ll need to still live near enough to clients. You can’t be on a beach in Bali serving clients in New York. At least, not just yet.
6) Tech Company’s Versus Companies That Do Tech
Something that’s often overlooked when searching for a job is whether the company is a tech company, or they’re a company that does technology. Microsoft, for instance is a tech company, but Netflix is a company that does tech. The biggest difference is, if you work for a tech company, everyone you work with is a technologist of some kind. But, of course, you lose out on business knowledge. With a professional services company, you can get the best of both worlds. How? Because you’re working for a company that does tech, so you’ll benefit from all the great minds and knowledge sharing within your company. But you won’t lose out on the business insight, as you can get that from your client work.
7) Practice in Consulting
Do you have goals of becoming a freelance? Or consulting privately? Working for professional services gives you exposure to client-facing environments. Most programmers work in environments where they’re not working directly with a client. It’s a different experience and one that can be very advantageous if you see yourself working closely with clients in the future.
A Quick Word of Warning
While this is a somewhat rosy picture of professional services, there is a darker side to the industry. There are companies that send programmers into businesses as extra hands where they’re essentially doing contract work. This is a terrible deal, as the company that you’re now working for is likely taking a huge cut (up to 75 percent) of what they’re charging for your work.
You can spot these companies quite easily by looking at their investment in their employees. If they make no reference to training, working in teams, knowledge sharing, etc. on their website or during the interview, beware. Make sure to ask about their typical processes, how they engage with their clients, and how they deliver their work—the answers to these questions should be very revealing.
It’s simply unethical for the client (and for you) for a middleman to be taking a huge cut of your pay-check without providing any value. This is exploitation. So just be wary that you’re not simply getting ripped off. Know your worth.
Professional Services — Is It Right for You?
By now, you should have a good understanding of what professional services is, and why you might want to consider working for a professional services company.
Roles for programmers are varied and there are roles that suit every type of person; you just have to be on the lookout for those jobs.
If you’re thinking about it, pull the trigger. It could be the best career decision you make so far — it was for me.