The question keeps arising: how can one person be both a good at software development and consulting? While there may have been a broader difference in the past, that isn’t the case anymore. In a world where clients want it all and software development can take on many forms, it benefits us to understand what role each plays in the process and learn how to do them both.
In previous blog posts, we’ve discussed the proper software development techniques. This blog post discusses consulting and what every software developer should know.
A good consultant recognizes the problem that their client is trying to solve. They ask many questions, listen carefully to get a full scope of customer issues, get to know their business and make sure they are creating the right solution.
Development vs. Consulting
A developer holds a tactical position, whereas a consultant holds a strategic one. A developer’s job is to take requirements and implement them in the most technically sound way possible. They may have some input on the needs, but it is generally from a programmatic mindset.
Consultants, on the other hand, understand the operational requirements of the problem the client is attempting to solve. A consultant helps the client frame the solution to the process, define the requirements, then implement the solution.
Good developers excel at solving problems that are defined by constraints. Good consultants aid their clients in redefining those constraints, which solves more significant problems and avoids wasted effort.
Having the skills of a developer, as well as those of a consultant, is an incredibly powerful (and valuable) combination. The combination allows you, as well as clients, to get maximum leverage out of your significant brain power.
What traits make a good consultant?
Team communication is vital to the success of any project. The difference between a good programmer and a good software consultant isn’t just the amount of code written in a day.
Your ability to work alongside others to develop the team and the project make you a more valuable asset.
Additionally, open and honest communication with your client, presenting risks or doubts, as well as the progress. When you are dealing with a team member or client that is not technical, avoid using jargon, and instead express technological issues in layman’s terms.
Always be upfront with the client when you run into unexpected issues. The earlier you alert the client, the earlier everyone can find a resolution.
When you present bad news to a customer, have a few different solutions prepared. Provide them with the solution options and have the pros and cons of each choice ready. Be prepared to talk with the client about the implications of your solutions. Have an opinion; let your customer know which solution you think is best and why.
Find Ways to Add Value
Always consider the value you are bringing the client when implementing a solution. Make sure the project makes sense for the customer and set yourself and your customer up for success to achieve maximum return on their project.
Getting to know your client and their business, outside of just your project, is a great place to look for other opportunities to add value. Everyday interaction builds strong relationships and instills trust. The long-term value of each client is much higher if the client believes the people they are working with.
Develop A Good Working Relationship (aka Repeat Business)
As a consultant, you can only continue to thrive if clients continue to come back time and time again. The easiest sale to make is someone who has already purchased from you. Always look for ways to expand your footprint with a client.
Every developer is indirectly involved in the sales process, regardless of if they’re consulting or not. You may not work directly with negotiating contracts, but a job well-done in combinations with genuine “word of mouth” feedback is invaluable.
This working relationship is also valuable to clients. The less training, both technical and business related, means more work can get done for less money. They’ll also be at ease to know they’re receiving the right amount of quality work, not more or less than they need. This level of trust is useful for both sides to get good value for their time and money.
Always Look Ahead
Think multiple phases ahead of where you are in a project. Rework is expensive for the client, not fun for the programmers, and leaves a bad taste in everyone’s mouths. A good consultant understands the long-term effects while keeping an eye on the current project roadmap. Avoid rework and adding guaranteed tech-debt when you can. Make sure your project is on firm footing for future enhancements and improvements.
At certain times, technical debt is unavoidable. In this case, have a conversation with your client about why going down a particular path could mean more work later. If everyone agrees, continue down that path. Often clients are glad to know what situations could add more time and money later in the project and welcome being in the technical decision-making process.
You need to let the client know you are on their team. A good consultant won’t dictate anything to the client. Instead, work together to find the right solution for their problem.
The question “Why?” can be powerful, but can easily come across wrong. Getting to the heart of the problem is crucial. Instead of a blanket “Why?”, use “Tell me more about that.” or “Let’s explore that.” In addition to being less harsh, these phrases often uncover more information.
- Developers implement the solutions that consultants work with clients to produce.
- Communication is the key to any consulting or software development project.
- Be honest and up front with the client.
- Always find ways to add value.
- You are a salesperson. Repeat business is key to success.
- Always look forward to future opportunities and next steps.
- Don’t be condescending and have productive conversations.
Consultants offer advice to their customers rather than making decisions for them. As developers, we must do what the client asks of us; however, establishing open communication and trust with clients ensures the process runs smoothly and secures repeat business.