Why you should learn to cherish the answer “it depends”
Why is everyone hating on the answer “it depends” in software development? Find out why we believe that it is exactly how you should always approach every project.
How we improved our agile development process by trial and error
Some time ago we were approached by a potential customer looking for a team to pick up his product development where another team have left it. We were given access to the codebase and backlog, so a short assessment gave us a general idea about the project. The project itself was interesting and we had experience with a similar tech stack, so all seemed well. Two weeks later, the deal was off the table mostly because of miscommunication. We failed to precisely answer the questions asked by our client. He failed to understand that there was no possibility to receive a different answer at that stage. Both parties “failed”, where the only one logical answer at this point was “it depends”.
We all love straight answers, both business and IT people. “Can it serve a million users?” “Sure it can.”; “Is it secure?” “Very much so” and so on. The expectation is always to provide a simple, binary answer and that’s exactly what you’ll get from some of the IT teams you will approach while looking for business partners.
To answer such questions honestly, a reliable and professional developer needs context. Providing an answer without that context requires making assumptions, and that’s not something that a reliable and professional developer does. “Can it serve a million people?” “Sure it can” – yeah, you can have a million registered clients, as long as they’ll use the system once a month on average and you’ll rent half of Amazon’s servers. “Is it secure?” “Very much so” – just because you use SSL, a login and password, it doesn’t mean it will suffice.
Quickly made assumptions, without knowing the context, may simply be wrong. If you’re building a social network your users will visit daily, then SSL and one-factor authentication may not be enough to comply with the regulations of the domain that the developer team has no knowledge of. How could they, since you gave them no context?
This is where we come to the point: all of these questions have only one correct way answer and it is: “it depends”. The truth is that “it depends” should always be followed by an explanation on what it depends on.
“Can it serve a million people?”
“It depends on the traffic characteristics and how often users will use the system. If the system architecture is scalable, by adding additional resources you’ll be able to withstand increased traffic, but currently we are prepared to scale it up to 5,000 requests per second. It would require additional effort to prepare it for more than that.”
This answer causes discussion, generates options, uncovers potential hidden challenges and shows the willingness of the team to provide what you need, not what you say you want.
It depends” is a good thing
You really should want to get the “it depends” answer sometimes, but on the other hand, getting it all the time means something’s off. To get the balance right consider the following tips:
- Build the team’s knowledge. Providing context leaves less space to make assumptions.
- Earn trust. Encourage honesty. Bad news is better than false news.
- Stay away from teams that will answer “yes” to all of your questions. If they are afraid to challenge their assumptions, they cannot be trusted.
- Avoid fixed price contracts, prefer time and materials. When the price is fixed, the scope is fixed, and holes in the context will be filled with assumptions that led to the cheapest solutions.
- Do scowl at every “it depends” answer as long as it is followed by some meaningful explanation on what it depends. Even if you think it’s obvious that it should be known by now.
- Find a CTO. In my experience a lot of “it depends” answers from technical teams are a result of not addressing non-functional requirements correctly (it’s often hard to do that for a non-technical, business person). It’s not a coincidence that most software startups are set up with a technically savvy co-founder, even if all the programming is outsourced.
Time to end “it depends” hate
As you should see by now, the dreaded “it depends” answer is not as bad as people usually think. It’s not a sign of lack of skills or experience, but on the contrary, it can be a sign of a professional approach to the problem and being honest with the business partner. Do not get impatient when you hear it – the best thing you can do, both rationally and economically, is to reply “Why is that and what does it depend on?”
Sensinum is a Polish software house providing top of the line software development services to companies, marketing agencies and teams. If you look for a subcontractor or a software house to cooperate on your own project, you’re in the right place. Sensinum provides you with a communicative team of highly experienced developers working regularly on advanced projects. Don’t lose your opportunity, contact us and consult your software idea for free.