Hire developers Community Blog Find a dev job Log in
Close menu
Tech Career Insights: Learning Resources that Helped Me as a Self-Taught Developer
Less noise, more data. Get the biggest data report on software developer careers in South Africa.

Learning Resources that Helped Me as a Self-Taught Developer

02 September 2022, by Rafael da Silva Ramos

As a self-taught developer, it’s important to understand and fill knowledge gaps around software principles that Computer Science graduates have been taught at university. Here are some of the resources I’ve found most valuable.

Anthropomorphic book, mic and monitor

I’m an Android Engineer at FarFetch, but my background isn’t in Computer Science. I studied Biomedical Engineering and fell into software engineering after coding during my Master’s project.

Even though these two fields have some programming and mathematics in common, I felt I had some knowledge gaps, specifically around design patterns and software principles like SOLID or GRASP.

I used a number of resources to help me fill these knowledge gaps. Here are the ones I found most useful, and how they helped me to become a better software engineer.

Head First Design Patterns

Who it’s for: All Java engineers

What it’s about: Head First Design Patterns by Eric Freeman and Elisabeth Robson helped me get familiar with the most important design patterns, such as Singleton, Decorator and Strategy. The book, by Eric Freeman and Elisabeth Robson, is very much not a reference book. Rather, it’s a guiding book that walks you through the different types of design patterns, and where to apply them.

This book contains multiple examples and exercises for one to get familiar with the most important design patterns.

Why I found it useful: When pivoting to software development, I felt that my approach to problems was not optimal. My solutions weren’t scalable or maintainable. Eventually, a co-worker introduced me to design patterns—reusable solutions to commonly occurring problems.

It’s quite rare to have a problem that a textbook can solve, but having a solid theoretical foundation has helped me work quicker and smarter. After going through the book I noticed an improvement in how I approached solutions, they became more scalable and easily maintainable once I could see the design patterns.

Similar useful resources:

Head First Kotlin

Who it’s for: All Kotlin engineers

What it’s about: Head First Kotlin by Dawn and David Griffiths follows the same hands-on approach as the Head First Design Patterns book. It was written in a way that allows inexperienced engineers to learn Kotlin easily, and more experienced engineers to still learn more about the vast Kotlin Standard Library.

It guides the reader from language basics such as variables and functions, to more complex topics like high-order functions with interactive, fun and easy-to-grasp examples that exponentiate the learning experience.

Why I found it useful: When I first started working in the Android industry, Kotlin was already a must. At that point, I had no contact with the language. This book helped me to get to grips with the language as a Kotlin beginner and enabled me to build on that foundation and solidify my knowledge as an intermediate Android engineer.

Effective Kotlin: Best practices

Who it’s for: All Kotlin engineers

What it’s about: Effective Kotlin: Best practices by Marcin Moskala is great! It’s a great book to learn more about Kotlin’s Standard Library and about the language’s best practices.

Why I found it useful: Knowing a language’s best practices is very useful because it improves the overall quality of your work and the code base health of your projects.

It’s especially important if you want to contribute to Android Open Source projects since these projects usually require contributors to follow best practices.

Another useful Kotlin resource: While developing there are pieces of code that can be tested in isolation. We should embrace the opportunity not to have to compile the entire app every single time to test it. Online compilers such as this Kotlin compiler are very useful on these types of occasions.

Soft Skills Engineering

Who it’s for: All software engineers

What it’s about: Soft Skills Engineering (hosted by Dave Smith and Jamison Dance) is a very interesting, fun and relaxing podcast that discusses issues related to soft skills in software engineering environments. In the words of the hosts, “It takes more than great code to be a great engineer”.

You can submit your own non-technical questions, and Jamison Dance and Dave Smith will possibly answer the question on the podcast.

Why I found it useful: Knowing how to maintain healthy relationships with teammates, how to negotiate salaries, and what to look for in a company, are among a set of soft skills that positively impact the career of a software engineer.

This podcast has helped improve my relationship with teammates and improved the quality of and my attitude towards code reviews.

The Art of Code Review

Who it’s for: All software engineers

What it’s about: The Art of Code Review by Bharat Mane explains how to give positive, constructive feedback as a reviewer. I learned that it’s important to point out the good stuff and to speak as a collective rather than as an individual to show we’re all on the same team. I also learned how useful it is to refer to known principles and practices such as SOLID or DRY whenever possible to justify changes and aid learning.

The Art of Code Review also covers how to make the most out of tools such as SonarLint and SonarQube to assist with spotting bugs.

Why I found it useful: The quality assurance gate that is code review is very important product-wise, but can also be a possible friction point between team members. It is crucial to maintain healthy interactions so that all parties involved can take the most out of this process.

This was one of the articles that helped me have a positive and engaging attitude while reviewing and being reviewed.

There is no such thing as reading too much on how to interact with team members on code review!

These resources have been really useful for me as a self-taught developer to strengthen my theoretical knowledge, and I hope they help you too!


Rafael Ramos is the co-founder of Neroes and an Android Engineer currently working for one of the largest online luxury fashion retail platforms. He always works towards process optimisation to allow users to receive more with less effort.

You can check out more of his work here.

Your next developer job is waiting for you
On OfferZen, companies reach out to you with upfront role, tech stack, and salary info.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Subscribe to our blog

Don’t miss out on cool content. Every week we add new content to our blog, subscribe now.

By subscribing you consent to receive OfferZen’s newsletter and agree to our Privacy Policy and use of cookies.