How to succeed in software consulting
To succeed in software consulting, writing excellent code is not enough. Having a heavy toolbox of both soft and hard skills is required. For example, consultants are expected to adapt to changing situations and to take over new things fast as projects, technologies and teams change often. Teamwork and communication with multiple managers, stakeholders and team members are a centric part of consulting, so having great interpersonal skills is a must. Then there are the expected hard skills that vary by the project. Consultants need to know their stuff, because they are expected to add expertise to the team from the get go and deliver top quality effectively. It might sound overwhelming but that’s not all. Here’s Mavericks’ senior software consultants’ two cents on what kind of skills make a great consultant.
Expectation management is about helping the customer to understand the real objectives and how to achieve them in an effective and reasonable way. A great consultant does not blindly do what the client asks, but asks a lot of questions to get a deeper understanding of why something needs to be done. The consultant then finds the best solution to get it done.
To succeed in expectation management, the consultant must first understand the big picture of what the client wants to achieve. In order to understand the big picture, the consultant must recognize the key people in the customer organization and get an understanding of each person’s perspective. Once an understanding of the success factors and who wants to achieve what is gained, the consultant can form a deeper view on why the client needs some specific job to be done and find an optimal solution for it.
Consulting (and software project) experience is something you learn by doing. Every project and software struggles somehow, and you learn from each struggle. Sometimes there are successes as well. The more you’ve done things, the more you can relate to previous experience. That’s really helpful in avoiding potential pitfalls and also in how you set your own (and others’, too, hopefully) expectations and how you manage them.
Talking about problems and solutions, not tech
The more experience the consultant has, the less it is about tech when talking with people. A great consultant talks about problems and solutions and understands that technology is just a tool. See, a junior might talk about how this and that can be done with React, but a senior talks about the problems, what kind of challenges there are and how those can be solved, as well as the goals. React can be a tool to solve the problem, but it’s not in the focus of the conversation. The perspective is different and can only be achieved by experience. “What we are trying to achieve here” is a great question to ask.
Knowing your stuff
Whether you’re a freelancer or work in a software consultancy, it’s vital for you to really know your area of expertise. Why? Firstly, because when clients buy consulting, they expect you to add expertise to the team from the get-go and to deliver top quality effectively. That’s why they hire you. Secondly, you are easier to sell.
It’s also important to stay up to date on trends and learn new technologies that could come handy in your own work. By having an understanding of the trends and utilizing all the knowhow and lessons you’ve learned from other projects, you can bring new ideas to the table and help the customer to avoid pitfalls. Also, the more projects from different domains you’ve under your belt, the more versatile knowledge and more project options you have, as the clients usually wish the consultant to have specific domain knowledge.
Being the change agent
Because consultants view the organization or a project from the outside, it’s easier for them to spot areas of improvement. That’s why consultants are typically the ones who suggest bringing in a new technology, skill or way of working to the client organization. Of course taking over “a new thing” can be what the whole consulting project is about, but that’s not always the case.
When suggesting potential changes for the client, it’s good to remember that if they react positively and say yes, you are not the one to carry out the change. The role of the consultant is to be the initiator, supporter, analyzer, as well as the one who brings the alternatives to the table. Kind of the change manager who helps the client to successfully carry out the change and to adapt to it.
In our industry where we deal with complex problems, it is very important to be able to communicate properly and in a way your audience understands. Good communication includes:
- The ability to communicate details of a problem and/or solution to both technical and non-technical audiences.
- There are two parts of verbal communication – listening and speaking. The ability to actively listen to others is a big part of being able to formulate the proper solution to a problem. You won’t be able to do that if you don’t fully understand what the client’s problem, needs and goals are.
- The ability to sense other people’s moods and personalities, and to adapt to those. Some people need a little softening up before they open up. Building trust is also a key element here.
- The ability to understand and relay complex ideas.
- The ability to inspire and influence, e.g. Senior Dev. to Junior.
- Both verbal and nonverbal communication skills matter. Strong written communication skills are equally important. Entries in ticketing systems, emails, and documentation are all part of the everyday life of an IT professional. Being able to accurately convey thoughts and ideas in writing will make life easier for everyone involved.
There are too many teams that waste time or fail because of a failure to communicate. Either the project requirements weren’t properly explained to the team and the goal was missed, or individual tasks weren’t properly communicated so work was duplicated or completely missed. Or those with good ideas are ignored because they don’t communicate well or others won’t listen. The list could go on and on. Either way, a team or a person that doesn’t communicate is not working as well as they could.
Sometimes empathy is considered as a weakness or a thing that does not belong in business. As if kindness would get in the way of making tough decisions, or that bruised egos and hurt feelings would be a necessary cost to changing the world. There is even this thing called the “Steve Jobs Syndrome.” Jobs has been associated with a belief that his undoubted genius excused any kind of behavior, even to the point where many believe a founder actually has to be a jerk to be a genius.
Empathy is definitely not a weakness. It’s the opposite. As building technology is about solving problems. To solve a problem, you have to understand it, and this is where empathy comes in, putting yourself into your user’s situation.
Empathy is also an important part of any communication. Empathy helps us to communicate our ideas in a way that makes sense to others, and it helps us understand others when they communicate with us. It is one of the foundational building blocks of great social interaction and, quite obviously, powerful stuff.
A successful software project is a team effort. Historically coding has been weighed as the most important skill. Nowadays leaders recognize that software development projects are best completed when there is a team involved. Usually there are multiple stakeholders, managers and teams to coordinate with, so teamwork is a must-have skill for software consultants.
Working collaboratively often means taking a step back and doing things at the direction of another member of the team, or stepping up and taking the lead yourself. Knowing when and how to step up or step back can be the difference between a smooth workflow and a missed deadline, so a person’s ability to work with others is an essential soft skill in any IT team.
In tech, you are going to be wrong – a lot. How will you handle this? Will you say, “Oh, I’m wrong.” And move on? Or will you try to hide it, explain it away, defend yourself? The latter option is poison. Not being able to handle being wrong will inhibit one’s ability to solve problems. Also, teams that lack accountability often do not collaborate well together or with other teams.
Humility is a great quality in both individual contributors and leaders in IT teams. By taking ownership of your work, and your mistakes, you are showing that you are willing to learn and grow.
Mavericks is the go-to software consultancy for the top of their field software professionals who want to get the best of two worlds: The salary level and freedom of a freelancer and the safety net and sales machinery of a consultancy. We are constantly looking for new team members – are you the next Maverick?