I worked as a software engineer for several years, but I have only been a full-time consultant for the last year and a half. I have a background of different experiences: working for small and big companies, working in different countries, getting a Ph.D. The things I have done have helped me immensely on this new adventure, but there are things that are specific to working as a consultant.
Also, over time people started calling me a software architect. Now, I am not strong on nomenclature and titles, but it is true that my role has changed. While code is still my main focus, I spend more time looking at the bigger picture, considering how software affects a whole organization.
Lately, I have been thinking about the specificity of being a consultant and a software architect. In this post, I try to distil what I have learned so far.
1. The Customer Makes the Difference
The customers you choose to work with have a large influence on the quality of your life. Working as an independent consultant, you acquire the possibility to choose who you want to work with (unless you are struggling). I think it is important to use that possibility and choose clients very carefully. Working with the right clients can be a joy; you can have open discussions, work together on finding solutions, and get feedback and the necessary support for the changes you are working on. When working with the right clients, you continuously see things moving forward, which helps motivate you to keep a good pace. On the contrary, less positive, less involved clients make it really hard to push to achieve the goals set for the projects. Consulting is a demanding job and all this pressure (when it is not balanced by results) and the consequential loss of enthusiasm can easily end up taking a toll on the quality of your life.
2. Relevant Projects Matter
Working on relevant projects makes a lot of difference. When you work on a project that can really make the difference for a company, the resources are found, people find the time to meet you, and decision-makers encourage the organization to support the change. It is so much easier. For this reason, I prefer to work with companies of medium size because of the possibility of having a big impact on the people working there. In large companies, you could have the same situation when working on a project which is really relevant for a specific department, maybe something that can really affect the careers of the decision makers involved. Sure, working on a relevant project also means having to endure more pressure, but most of the time, this is the positive kind of pressure, the type that motivates you to push harder.
3. You Need a Receptive Environment
I really enjoyed the times I worked with American companies because I found them more open to change. In an environment that welcomes changes, you are allowed to try things, to experiment, to drop what does not work and continuously improve the processes. I had the chance to work with very different companies, so when I can, I try to bring in new realities and things that I have seen working in other contexts. There are companies that are very receptive; maybe some solutions have to be adapted for their context, but they are willing to try. Others instead are used to a certain way of working and are reluctant to consider changes. This does not mean that results cannot be obtained, but in these cases, I feel that I can be less useful and certainly I feel these environments as more limiting. Continuous improvement is a joy, but it requires all the participants to be humble and receptive. It is very difficult to find or build such environments, but they provide such a better experience that it is worth looking hard for those.
4. Humbleness Is Important
We all have convictions, things that we believe in and that have proved valuable in some contexts. We need to be able to reevaluate them each time we are in a new context. We have to stay humble and ready to learn. Your client (the guy paying you) has much to teach you about his context. You have to learn and be ready to be proved wrong. Your job is to add what he knows and what you have learned elsewhere, combining them together to create a better situation for your client. Being too confident in being right make you blind to things you should learn. It does not let you improve, and you need to improve all the time to keep delivering value.
5. Ego Is Not Important
It is never about your ego. In some cases, you will have discussions that do not lead to the conclusions you support. In some other cases, you will find someone against you for different reasons, maybe because the changes you are proposing endanger his or her position. As a consultant, you invest a lot of energy in your projects. You believe in them. As a consequence, you can become very sensible to what you perceive as attacks on your ideas and, in some cases, to yourself. You have just to remember that these attacks are not personal. In some cases, they are motivated by someone genuinely believing his or her ideas are better for the company. You have to listen extremely carefully to those. In other cases, there could be other motivations and these attacks could be, after all, not in the best interest of the company. It is your duty to fight those while keeping the environment as nice and productive as possible. If it not possible to support a nice environment, you should consider leaving because it is not about you; it's about the best interest of the client. If there aren't the right conditions to do your work, you should leave even if this not your fault because it is not about you; it is about the outcome.
I think that in consulting, you need to refine your human interaction skills and your professionalism. Sure, you need to know your technical stuff (this is a given), but this is simply not enough. From time to time, I like to stop and think about what I should work next.
What about you? What do you think is important for a consultant?