For the last two years, I've been a software consultant. I've always been a software engineer, so software consultancy was utterly new. I didn't put a lot of thought into moving towards such a position, to be honest, but it turned out it was highly beneficial.
I'm not sure if software consultancy is the same everywhere, but I was still a software engineer, meaning I was writing code every day. Two years of consultancy experience is not enough to speak about the topic in general, but I will write my thoughts and perspective based on my personal experience.
I joined consultancy as an apprentice, where I was taught a variety of topics for three months, including both hard and soft skills. After I graduated, I joined three different clients within two years. I recently resigned from that position, and I was thinking retrospectively about how it went, so I thought writing a blog post would help me better understand.
I was lucky
I consider myself lucky to have worked with three different clients in the last two years. From what I hear, you don't have the luck to rotate clients, and typically you might get stuck for a year or two to a single client. Working with so many clients in such a timeline boots your experience so much. That's because those clients are probably in different domains, have a different stack, and have different dynamics. It almost felt like changing three different companies within such a short time. Working in different environments, I think, is one of the best ways of learning mainly because the source of knowledge is higher compared to staying in an environment for a long time.
Not for everyone
If you heard about consultancy or thought about doing it, you probably have heard that it's not for everyone. There are so many more things involved in being a software consultant than a software engineer. A considerable percentage of software engineers are introverts which means communication, negotiation, and social skills are not their greatest strengths. Although these skills are necessary for a software engineer, software consultancy is way more important because of the nature of the work. Soft skills are as critical as hard skills in software consultancy. As a consultant, you are expected to work closely with the client to understand what to build, clarify stakeholder expectations, communicate progress, and elicit feedback from a mixed audience of stakeholders. These responsibilities rely heavily on communication, emotional intelligence, empathy, proactiveness, accountability, and more. Don't get me wrong; I am not saying a software engineer doesn't need that. It's just that in software consultancy, these skills are like knowing a programming language as a software engineer; they are are the bare minimum.
Another big difference is that you are not working on a product company. This had some impact on me. Writing code for a product with a long-term vision is entirely different from being a consultant. As a consultant, you help your client build their product, but you don't stay around. For me, sometimes it felt less rewarding working as a consultant.
So my advice is that you have to consider if consultancy is what you want to do, although I would definitely advise people to try it at least once throughout their careers.
Lessons that will follow me throughout my career.
I learned so many things in the last two years, but I will focus on the important ones. This section will be the largest part, where I will list the lessons I learned being a consultant.
You've often heard that communication is a must skill in software, and I thought of not saying anything about it since it's evident and overused. Still, I couldn't not mention it because my communication skills are significantly increased over the past two years. Because you constantly collaborate with stakeholders within the client engagements, you are forced to communicate more in various ways. Communicating client expectations, presenting progress, giving feedback over technical and business decisions are day-to-day work in consultancy positions. Almost all lessons learned are related or dependent on communication skills, so this couldn't be missed from the list. I can definitely say that I am far more comfortable communicating with people over software, from low-level details to high-level decisions.
Act as a mentor
I've recently posted a blog post about mentoring where it was not related to consultancy. However, as a consultant, I found myself mentoring quite a few times. Not only inside the company but with the client as well. That's because you need to act as a role model to your client's engineers. As a consultancy firm, you provide expertise regarding software, so you need to have a mentor mindset. I've been a mentor before but kind of unofficially, so it felt more official with consultancy.
Being aware of the environment
Emotional intelligence is an integral part of communication. After working and talking to so many people, I could say that being aware and interpreting people's emotions can make a massive difference in the engagement. Trying to identify all the stakeholders and understand their true and deeper motivations hiding below the surface can be a game-changer. This will allow you to relate to and empathize with them and give you a deeper understanding of their needs. Emotional intelligence covers many fields like empathy. Empathy allows us to predict how others are likely to react to what we say, meaning that we can tailor how we speak to our audience. Consultancy taught me to be more aware of those things, and I feel more comfortable interpreting people's behavior. Now, I am not an expert nor a psychologist, and there is definitely room for growth (as every skill), but I can see myself paying more attention to the environment around me.
I always felt brave, but after consultancy, I can see that I have more courage to express my concerns and opinions. I am unsure if that came from my consultancy experience or being more mature in the software industry. Nevertheless, courage is vital if you care about your career. I think I was less brave before because I was not so good at communicating. After all, you have to do it constructively to voice your opinion. Being honest requires bravery, transparency also requires bravery, feedback is no different.
This is probably one of the biggest lessons I learned. When I was a software engineer, I was dogmatic about technologies, tools, and even designs and architecture styles. After working as a consultant, I can undoubtedly say that I am far more pragmatic in evaluating different situations. Now that I see it reflectively, it seems obvious, but for me, it wasn't. Nowadays, I will do my best to be unbiased in my decisions. This gives me far more options when making decisions that can significantly change the outcomes. So the lesson here is that don't get stuck in dogma and pick the right tool for the right job. You don't need a Ferrari when all you need is a bike.
Comfort zone is bad for you
All the above lessons mentioned were not easy to be learned. To acquire those skills, or at least be better at, requires you to be outside of the comfort zone. Typically comfort zone is bad for you in almost every field of your life, and software is no exception. Leading meetings and presenting to the client was not easy at the beginning. I mean, I've done a few public talks in my life, so I had already exposed myself to an audience, but still, with the client, it felt more official, which made me feel more nervous. One of the most important lessons I learned in my life that resinates with consultancy as well is that you should always push yourself outside of the comfort zone. You will probably decrease the unknowns in every part of the following image if you do that.
In general, it was a fantastic journey with both ups and downs. Undoubtedly the most valuable experience I've ever had. I am not sure if I would do it again, to be honest, but I plan to go back to product development for now. Maybe one day I'll come back to consultancy, who knows? Either way, the lessons I learned will be with me wherever I go.