Problem Solving

Problem solving is the act of defining a problem; determining the cause of the problem; identifying, prioritizing, and selecting alternatives for a solution; and implementing a solution.

  • Identify the right problem
  • Build up enough context that you can try to solve it
  • Identify the best way to solve the problem
  • Convince any relevant people that your solution is the best one
  • Build the solution [this one step is where the actual programming happens]
  • Get the solution into production
  • Learn what was wrong with your solution
  • Come up with improvements based on what you’ve learned
  • Explain the solution to other people
  • Maintain the solution over time as your needs change

All the other non-programming tasks on this list depend deeply on the way you interact with the organization around you:

  • Whether you’re in an environment that motivates and energizes you, or saps your will to live
  • Whether the problems that you care about are aligned with your team’s goals / mandate
  • Whether your high-level problem-solving approach meshes well with the needs of your team
  • Whether you’re able to build enough credibility to be trusted to solve important problems
  • Whether you’re able to successfully navigate the environment (technical and organizational) that you’re trying to build the solution within
  • Whether the people that need to use your solution to the problem are incentivized to adopt it
  • Whether you’re able to explain your solution to the people that need to use it