While there are many different ways to get better at the various types of problem-solving skills that us developers are tested on during interviews and our day-to-day work, there is only one true key — practice, practice, and practice! In this article, I’ll discuss some of the nuances of the specific flavours of problem-solving that you’ll need to hone and some resources that are particularly helpful!

Problem solving skills are quite a broad area in CS, but I’d essentially split them into two categories — (1) algorithms problems and (2) system/interface design/architecture. They help you vastly different tasks at work and they will likely the form the basis of your technical interview — alongside the typical knowledge questions, i.e., how do you X in Y language.

For practicing algorithms problems, I’d suggest one of the more focused learning sites, like EXLskills (Searching/sorting and recursion) and then there’s also Java | Exercism where you can find more advanced problems (need to download the CLI, etc.).

Where it gets more complicated is definitely practicing your system design skills… Generally speaking, I’d say that the only way to get really your feet wet here is (a) reading articles, papers, and docs and (b) working on projects on GitHub. For instance, check out some of the larger projects like Docker Swarm or Kubernetes (both very complex distributed systems) and you can find tons of info about their design decisions, operational issues, and future planned work. Once you are comfortable, you should then of course just start contributing! Since your goal is to then get a job, I can guarantee you — with a very high degree of certainty — that an open source profile is the best resume builder for a dev other than reputable work experience. It lets you show off your passion and skills to your employer in a very trustworthy fashion among a community of other really top-notch OSS devs!

Good luck to all the developers looking to become better problem solvers — you will not only gain a huge advantage in the technical interview process, but you’ll also find yourself to be much more efficient at work!