Learning, by solving a “problem”

Learning, by solving a “problem”
Play this article

As developers, a lot of our time is spent learning, most of the time it’s smaller things like new features in a language or framework we already work with and are quite familiar, sometimes it’s even the soft, real worlds skill that we need to learn, this post is not about that though.

When it comes to learning the bigger things, like a new language or framework there are many routes that one can take, YouTube is always a good option, online courses, blogs and documentation, etc. However, one of the best ways, at least for myself and I am sure many others, is tackling a project, something with a known goal that is likely to pose challenges we may not easily be able to preempt.

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 as 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 challenge…

I suspect a lot of 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, which honestly, when you can, you’ll probably end up making loads of money if you solve it and enough people have that problem. However, that in itself poses a challenge and can seem daunting to many.

An alternative approach…

Solving a problem is great, but when it comes to learning, why does the problem need not already have a solution, the goal here is learning after all.

You’ll see often in the web related threads users display their WhatsApp or Spotify clones that they made and it was not until having to answer that persons question that I truly understood why they existed. They solved a “problem”, sure it was not a problem that on the surface needed solving, but the actual problem they solved was what they could build in order to learn something new while enjoying learning it and facing some challenges along the way.

My suggestion…

Like those others, find some that interests you, maybe something you use every day and take some time to think about how you would approach it, don’t just dive into the 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 even, use tools like Trello or Linear to set up a project board and create tasks and set deadlines, sure you may miss them but it’s about setting those goals.

Following an approach like this, at least in my experience 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 can sometimes be terrible at, like time estimation. It gives you a bit of insight into the management and planning sides of a project which may be useful skills further down the line.

This is exactly 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.

Was barely a week in and I managed to learn 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… Yippee…

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.

I hope you found this interesting, and if you have any questions, comments, or improvements, feel free to drop a comment. Enjoy your Flutter development journey :D

If you enjoyed it, a like would be awesome, and if you really liked it, a cup of coffee would be great.

Thanks for reading.