paint-brush
Consulting for Software Developers #2: Giving adviceby@krzysztof.czernek
208 reads

Consulting for Software Developers #2: Giving advice

by Krzysztof CzernekAugust 26th, 2018
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

<span>W</span>hen you tell people you are a software engineer, most people inevitably assume your job is to sit in front of the computer, punching the keyboard. But you, the engineer, know that being great at your job requires much more than writing code.

Company Mentioned

Mention Thumbnail
featured image - Consulting for Software Developers #2: Giving advice
Krzysztof Czernek HackerNoon profile picture

When you tell people you are a software engineer, most people inevitably assume your job is to sit in front of the computer, punching the keyboard. But you, the engineer, know that being great at your job requires much more than writing code.

Often, you need to be able to sit down with a client or a stakeholder and knowledgeably discuss business aspects of their products. Other times, you have to use your technical and problem-solving skills to figure out a better/easier way of doing things.

In general, you can help your client best by focusing on high-leverage activities moving their business in the right direction. Writing code can be high-leverage, but another great use of your time is helping make better decisions.

One way you can do it is by playing a role of a technical consultant — coming up with solutions to problems, but also giving your clients technical advice.

Prerequisites to giving advice

There are two prerequisites to being a technical consultant and giving your clients technical advice: expertise, and trust.

Becoming an expert in your field is, obviously, outside the scope of this article. When it comes to trust, last time we discussed some of the little things you can do to build trust with your clients, and the reasons why you’d want to be a consultant in the first place.

For now, we’re going to assume you’ve got both trust and expertise covered, and focus on what is required to actually give clients good advice, and help them succeed.

In a typical scenario, a client will want you (or your team) to solve a business problem using technology — implement a feature, come up with an architecture of the system, etc. It’s your job to assess the situation and come up with a solution. Often times, you also need (or want) to share your ideas or discuss different approaches with the client, your team, or other stakeholders.

This is what I refer to as giving advice, and it consists of:

  • Understanding the problem well
  • Coming up with a solution
  • Sharing your thoughts and ideas

So how do we go about getting better at these?

Ask questions and listen

If you want to give a good advice, you first need to understand the problem thoroughly. When talking to a client you want to listen deeply to them describing the issue, and ask good questions to get the most information out of the conversation.

I can’t stress this enough. Asking the right questions and listening patiently is a much better use of your time than trying to come up with a gazillion clever solutions right ahead.

“Asking the right questions takes as much skill as giving the right answers.”

— Robert Half

Here are some of the aspects you might want to zero in on, together with some useful questions to ask:

Business context

  • “Why are we interested in solving this problem, right now?”
  • “What’s the business use case behind this?”
  • “Is there anyone else on your side involved in this?”
  • “Can you tell me a little bit more about the people you envision using this solution?”

Previous experiences

  • “What has this process looked like in the past?”
  • “Are there any options/approaches you have already tried? Why didn’t they work?”

Expectations

  • “What would the process look like if we built the perfect version?”
  • “What is the best/worst thing that can happen?”

There’s a lot of excellent resources on listening and asking questions, including the following books:

  • “Deep Listening: Impact Beyond Words” by Oscar Trimboli
  • “A More Beautiful Question: The Power of Inquiry to Spark Breakthrough Ideas” by Warren Berger
  • “Reframe: Shift the Way You Work, Innovate, and Think” by Mona Patel

Don’t jump to conclusions

So the client tells you about a problem they face, and it rings a bell. The problem is somewhat similar to the one you’ve recently faced and solved. It’s really tempting to go ahead and shout out your idea for a solution.

Most of the time, however, it’s much better to keep it to yourself — for a little while. Instead, you might want to keep collecting more information and make sure you really understand the problem (and the context) well. It doesn’t hurt to wait until after the meeting is over and think about it deeply for some time. This way, your opinion will be much better informed.

This becomes really important if you are working in a team, and crucial if the team is not there in the meeting with you. They might have a totally different point of view and may suggest something you haven’t thought of.

Of course, it all depends on the team dynamics. The ideal world would be one where everyone is invited (and happy!) to share and discuss their spontaneous ideas instantly — but you don’t need to decide on anything right there and then, in the meeting.

Think deeply about the problem

If you think you got all the information required to start thinking about the problem, there are a couple of tips that will help you come up with a better solution.

Play a Devil’s advocate

As soon as you come up with a solution, try to consider it from a different point of view and refute it. I know it’s hard to try to disprove the ingenious idea your brain has just conjured. If you want to be professional, though, you need to ask yourself the questions that you feel your client/teammates would ask anyway:

  • “Why is this so complicated? Isn’t there a simpler way to achieve the same thing?”
  • “Have you considered all edge cases?”
  • “We have done it differently in the past. Why change?”
  • “This looks like a common problem — someone must have solved it already, right?”
  • “Is there an off-the-shelf solution we could use?”

Asking yourself these kinds of questions will do one of the following things: make you abandon a bad idea, make the idea bullet-proof against your colleagues’ questions, or help you come up with a better version of the idea. All of which are great outcomes.

Try to be objective, avoid thought mistakes

You need to acknowledge that your judgment is not always perfect. There are some reasoning traps that are really common and easy to fall into — fallacies, and cognitive biases. Some of the examples include:

I really recommend reading about these and other reasoning problems — it will make your critical thinking skills much sharper.

Another great resource on the subject is the psychological tome by Daniel Kahneman — “Thinking, Fast and Slow”.

Keep the pragmatism-idealism balance

Most of the time, a problem can be solved in a number of different ways. Some are quick-and-dirty, others are more robust but also time-consuming. You need to make the best choice given the problem, context, time-constraints, and expectations.

You will be tempted to do it one way (“It’s easy, let’s fix it real quick and get it over with!”) or another (“If we don’t do it properly now, it will hurt us in the future!”). What you need to keep in mind, though, is that you can’t reliably gauge if your own balance is right. Having a team composed of people with different perspectives is really advantageous in situations like this.

Give the advice

Once you’ve come up with a solution to the client’s problem, you might need to discuss it with a client. You want to give them advice, and you want them to seriously consider, and execute it — or give you the green light to execute. Of course, they might have ideas on how to improve your approach even further!

If we’re trying to give advice, two things are crucial: you need to be empathetic, and you need to support your advice.

Be empathetic

When it comes to empathy — you want your client to feel you really care about their business (because you should, and you do). According to research by Tiffany Barnett White of University of Illinois,

“Consumers who faced emotionally difficult decisions were willing to trade off expertise for benevolence”

— Tiffany Barnett White, “Consumer Trust and Advice Acceptance: The Moderating Roles of Benevolence, Expertise, and Negative Emotions”

Support your advice

When trying to support your advice, you might want to mention the following aspects:

  • Which aspects of the background/context have you considered important? You can say things like “I know we’re really concerned about data privacy here, so…”
  • What other approaches have you considered?
  • Mention previous, related experience.

If you are a software developer, like me, you might think that our job is to write code for clients. This is a dangerous oversimplification. Ultimately, our job is to help our clients succeed.

To do that, we have to be able to collect the information we need, come up with a good solution, and discuss it with a client.

Keeping the tips I mentioned in mind will help you become better at advice giving, and reveal the blind spots you might have missed.