How Do I Know?
We are all consumers of software in our daily lives. While we may not even be aware of the software that runs in our refrigerators, there is a greater awareness of the software behind the keyboards that we use, the cel phones plastered to our ears, and the systems we use to drive our businesses. For those of us that are in the software community, the ubiquitous nature of software is apparent. For those that are strictly consumers, software can be interesting, mysterious, or downright frightening.
There are more and more people that rely on software, but are ill-equipped to make reasonable decisions about the goodness of the software. They may be consumers looking for a new accounting package, they may be running companies whose products now contain a greater component of software or firmware than ever before. For those that need to acquire software or to have software built for them, either by their own internal team or from some outside organization, how do they know that they are working with a good developer or group or organization? How can they know that the software they receive at the end of the day will do what they want it to do?
In many ways, building a relationship with a software team is similar to the relationship we build with our doctors or auto mechanics. For many of us, cars have evolved to a point where the mysteries under the hood have become as complex and foreign to us as the mysteries of the human body. When we surrender our cars or bodies for service, either preventive maintenance or more invasive intervention, we have to place our trust in the hands of the mechanic or doctor. We have expectations that they know what they are doing, that they are working in our best interests, and that we will be better off at the end of the day.
Unfortunately, this is not always the case. There will always be doctors ready to write a prescription for whatever we ask for, then shuffle us on so they can get their next patient through. There will always be auto mechanics that will tell us our engine needs to be rebuilt when all that is needed is an oil change. In a similar vein, there are software practitioners and consultants and organizations (oh my!) that are incented more by their income than the value they provide to the client. Unscrupulousness and incompetence spans industries, but we still need to select.
There are a few things to look for before we choose to engage. When discussing the challenges you would like them to help you solve, are they effectively listening to you? Are they taking the time to truly understand your situation, your needs and concerns before proposing a solution?
Are they willing to describe their approach so that you are comfortable with what you will be getting? Are there acceptable checks and balances along the way so that there is some assurance that you can reasonably track progress towards your goals? Remember, these are mechanisms that you can establish even before you discuss the detailed problem you are looking to solve.
When discussing their approach and your challenges, are they focused at the right level of abstraction? Are they concerned about value to you, or are they concerned about specific implementation details that, while they may be mechanisms that improve their productivity, are not a concern for for you?
It is critical to go beyond merely talking to the candidate before making a decision. Talk to others that have worked with them in the past, both those that have been happy with the results (that you would likely get as references), as well as those where things have not gone well (which would take a little digging). For those whose experiences have not been positive, what would they have done differently? Talk to multiple candidates, even to others where it is clear that the discussion is for information only – ask them what you should be looking for.
Work hard to find other opinions. Bringing in someone new is very risky. It is far safer to bring in support based on trusted third-party recommendations and referrals, safer yet to rely on someone that you have successfully worked with in the past.
Overall, do you feel comfortable with the prospect of working with them? Can you trust them? Do you click? If not, there are likely to be problems. If you aren’t comfortable with them, there will always be lingering doubt. If you can’t trust them to do their work, you will be an impediment to their progress. The relationship needs to work from both sides before you commit.
As you are working with them, there are other behaviors to look for. Do they continue to keep you attuned to the situation as it evolves, and ensure that you are still receiving the best value for your investment? Do they take the time to explain what is going on, or do they treat you like an idiot, with expectations that you will simply trust them? Do you have to continuously ask them what is going on?
What happens when things are not going smoothly? Are they skilled at deflecting ownership for the challenges on to others, or will they step up, take responsibility, and proactively work with you to resolve the problems as effectively as possible. Are they able to provide you with information that is useful, whether or not it is positive?
Finally, at some point you will receive the product of their efforts. Is it what you were looking for? Do things seem to be going smoothly up to the scheduled date, then all hell breaks loose? Are there a series of delays that occur, each new target missing specific information that would clarify why the delay is warranted?
You need to be comfortable with your choice, and a lot of that can be distilled to trust and ongoing open communication. It takes a lot of effort to build, and can be eroded in a second. At any point in time, something may happen that sours the whole relationship. Be prepared to disengage if this happens, and discuss this possibility in advance. Explicitly describe the sort of things that would warrant severing the ties, and be open to a set of clear responsibilities and rights from both perspectives.
Of course, all this needs to be balanced to the level of risk and exposure. Less diligence is warranted when you are simply purchasing a software package off the shelf, but far more is required when you are contracting for a custom software application or hiring into a key role in your team. For the latter, it is definitely worth the investment to ensure that you initially can communicate effectively, that you can work together with reasonable insight into progress and effective management of change, and that you can be assured you will get the product you want at the end of the day. – JB