Solving Hard Problems

Easy problems have known solutions. You can give an accurate estimate and quickly make the change. Even if the request is a little unclear and the work will take a week to get right, you generally know what to do and how to do it.

Hard problems have complex requirements, sensitive stakeholders, and unknown solutions. You may have to try several solutions, ask around for help, or create something from scratch. Here are some tips for approaching big problems when you're not sure where to start.

Define what you know

Outline your understanding of the problem, and the options you're considering as solutions. Share your current situation as needing to investigate options, and let people know what you think needs to be done in order to find the answer. Let them give you input, or at least provide the time you need to come back with more details.

Ask for help

Don't be afraid to say that you're not familiar with the problem space. Talking with another developer who's been there can shortcut the time to implementation drastically. By telling your team where you need help, they can look out for someone who can help.

Break it down

You can't estimate or reason about something if it's too large and complex. Break it down into the parts you need to build and discuss how they are connected. This will help you with your planning, estimation, and architecture.

Simplify the solution

Sometimes the solution clients want is not what they really need. Complex problems can get expensive to solve completely. Can you think of another solution that would be easier to build that would satisfy requirements?

Preparation

Learn everything you can about the languages and platforms you use. Read blog posts from other developers about how they use it, especially recommended tools or guides on new/advanced features. Not only will this give you great ideas for side projects, you'll have a longer list of options when you run into a hard problem.

Topics