hello world Learn By Solving Problems at 20fifty - 20fifty

At 20fifty, as we seek to build what matters, we learn by solving problems. Sometimes, those problems are complex, and require deep unravelling, down to characters of code. Other times, those problems are uncovered higher up, in the overarching frameworks, or in the words we choose when documenting our projects.

Learn by solving problems

Our Front-End Lead at 20fifty outlines how we learn by solving problems. As developers, much of our time is spent learning. Most of the time, we’re learning seemingly small things. They may be features that form part of a language or framework we already work with. At other times, we’re learning entirely new languages and frameworks. We’re frantically watching tutorial videos, reading blog posts, and pursuing online courses. One of the best ways to learn, however, is to learn by solving problems. We find this to be the most effective way to learn and embed knowledge at 20fifty. We tackle a problem that’s part of a project that has a known goal. When we learn by solving problems, we equip ourselves towards overcoming unexpected obstacles, and becoming undeterred when we uncover some surprises.

How to find a learning project
Recently in a Reddit discussion, I was asked, “How do you find a ‘Learning Project’?” I thought the answer, at least my answer, may be useful to more developers or aspiring developers. I am sure that’s a question the more junior developers may be faced with regularly. Those “Learning Projects” are great for a portfolio and your GitHub when looking for your first or next job.

The learning project challenge
I suspect many people may have an issue with finding a project to start as they are not sure what to do or may not have found their passion just yet. There seems to be this premise of solving a problem, which at the face of it would pose a challenge for even us seasoned developers. When you think about having to solve a problem, the logical assumption is that you first need to find a problem. You don’t need to find a problem that’s already been solved, nor do you need to find a problem that has not been solved. There’s an alternative approach to discovering how to learn by solving problems.

An alternative approach to learning by solving problems
Solving a problem is great, but when it comes to learning, why does the problem not already have a solution? The goal isn’t finding the problem, or the solution. The goal is…learning.

The problem solving approach
In web-related forum threads, some users display their WhatsApp or Spotify clones that they have made. What was their intention in creating clones of two of the most popular technologies almost all of us use every day? They didn’t set out to do that. Instead, they solved a “problem” they’d discovered or found with one of the services. It was not a problem that, on the surface, needed solving, but the actual problem they solved was what they could build, to learn something new while enjoying learning it and facing some challenges along the way.

Find your interest
Like those others, find something that interests you. Perhaps it’s one of your everyday services. Maybe it’s your email client. It could be your browser. Find a tool that you rely on, and think about how you would approach developing it, fixing it, or improving on it. Don’t just dive into the source code. Treat it as a real project. Plan ahead, maybe give it a name, type up a goal statement, make your own logo on Canva, use tools like Trello or Linear to set up a project board. Create tasks and set deadlines. You might miss those deadlines, but you’ll be learning along the way.

Start learning by solving problems
Following an approach like this increases your odds of finishing it, which is important both for the learning and showing it off in your portfolio someday. It also mixes in some of those soft skills we developers are often renowned for being terrible at, like time estimation. It gives you a bit of insight into the management and planning sides of a project – these are very useful skills as you progress in your career.

The learning process
This was the approach I took for my most recent dive into learning GoLang. I spent about a week thinking about what I would do and how I would approach it. I created the logo, bought the domain, set up the tasks, built a CI pipeline and even deviated from them to deal with some technical debt. Barely a week in, and I had learnt something new that I was not expecting. Naturally when learning the language you expect to learn a lot about that, but when the app was ready enough to be deployed I got to learn something new about Docker too.

It would be fantastic if we could all solve unsolved problems in our spare time, but, until then, let’s find great ways to learn and build great stuff. If you’re keen to learn by solving problems, join us at 20fifty.