There’s always a solution
As developers, team leads and managers, it is our responsibility to always provide a solution, fix or answer to any problem given to us. Ideally, we always offer multiple solutions. This gives whoever is making the ultimate decision the ability to weigh the options and give the client the best solution.
Within reason, developers should never be saying it can’t be done (obviously fixing world poverty issues with a slick little web app probably isn’t within reason). If your solution to the problem is that you need 36 months and 14 new developers on staff to complete the project – that’s a solution. Maybe not a good one, but it’s what it takes to get the job done, and it looks much better than “I don’t know” or “I can’t do it”.
Remember that solutions aren’t static. Be flexible with your solutions, use portions from multiple solutions to make another. For example, rather than taking 36 months and hiring 14 new developers, if you outsourced 60% of the application to an overseas firm, and did the rest in-house, you could reduce cost, time and extra manpower you need to hire. That is a more viable solution, but it does introduce greater risk. What if the offshore developers aren’t up to par? What if they get behind and don’t deliver their 60% of the application? The list would go on.
Limiting potential risk is what sets a good solution apart from a great solution. You want to get a solution that delivers a project on time and within budget that doesn’t require a miracle to pull off, because chances are that miracle won’t happen, and you’ll fail.
The biggest thing to keep in mind is to always keep looking for the best solution. It’s just like how an artist does many concept drawings, always refining and optimizing their design – their solution. You need to do the same with any solution you give. Reflect on it; make sure there are no ways that it can catastrophically fail. It’s a fairly simple concept that can have large ramifications, so give your solution the attention it needs.