Python Training by Dan Bader

How to become a better software developer

A while ago I gave a presentation at Mobify’s monthly Engineering Meeting where I spoke about various tactics that can help you become the best software developer you can be. I figured this may be useful to other folks as well and decided to share it in a blog post.

So here we go – 12 ideas you can use to become a better developer:

#1 – Read books

Smart people wrote many great books about every aspect of software development. Reading books is one of the best ways to learn new tricks. Books can give an encompassing view, which makes them a great way to learn if you want to go deep on a subject. They’re not great if you need to figure out what to learn at first. But once you know the direction go ahead and find books on the subject. These are some of my favourites:

Here’s a longer list with my favourite programming books.

#2 – Watch recorded conference talks

There’s an abundance of recorded conference talks on the internet. That means you can listen to what some of the smartest people in the field have to say about programming. For free. I suggest that you focus on the quality stuff first. For example pyvideo.org has good videos. If you’re into Objective-C then Apple’s WWDC sessions are a great resource as well.

#3 – Get your code reviewed

Code reviews are a great way to learn and improve your skills. Ask whoever reviews your code to be thorough and detailed, even if it’s painful for you at first. Ask more than one person to review your code and be thankful for the feedback you receive.

If you don’t work with people that practice code reviews then contribute to open-source projects and get your code reviewed there. Review feedback often points out skills and techniques that you should learn. I find that it’s then most effective to read books on these subjects.

#4 – Keep a journal

It’s valuable to record the challenges you face and to write down the things you’ve learned when you overcame them. Therefore I keep two journals during my day to day work:

The first journal is a daily work log is a work log where I record what I’m working on during each hour of the day. I also use it to jot down the occasional observation or idea. I take these notes to compare what I wanted to do each day and what I actually worked on.

In the second journal I keep track of things that I learned about software development in the past. I update it every time I realize something that I want to remind myself about.

If you want to know more then check out this post I wrote about journalling: Keep journals to become a better developer.

#5 – Read the source code of ‘gold standard’ projects

Pick an open-source project in an area that you like and read away. There are many fascinating projects out there and often reading their source code is as easy as browsing GitHub or Bitbucket.

I spent a lot of time reading the Quake source code back in the day and it has taught me much about architecture and pragmatism. Reading high-quality source code often inspires experiments or refactorings in your own code.

Some examples of interesting real-world projects with good code quality:

#6 – Listen to podcasts

It surprised me to find that there are so many quality podcasts on software development. This is a great and cheap way to learn new things and stay informed – even while you’re commuting or preparing dinner.

Two programming-related podcasts that I like are Debug and Software Engineering Radio.

#7 – Work on side projects

Side projects are fantastic to hone your skills and to explore problems that you don’t encounter at work. These projects don’t have to be large or complicated. Even a small side project can be fun.

Open-sourcing your side projects is optional, but it can be a great way to expand your portfolio. For example, I recently released a little photo sorting tool that I worked on for a few hours.

#8 – Immerse yourself

Choose some of the things listed here and do them together for a while to immerse yourself in a particular subject. For example, listen to a podcast on the way to work, ask your colleagues for advice and read a chapter of a book before you go to sleep.

For the sake of your friends and family – be careful and don’t overdo this. I usually get into an OCD mode like this when there’s a specific problem that I want to solve.

#9 – Read postmortems

There’s a large body of software project war stories on the internet and in books. Many of these stories are quite enlightening and they can teach you a lot about how to improve your own craftsmanship. Not to forget that they’re also entertaining reads.

One book I particularly recommend is Coders at Work by Peter Seibel. FoxTales by Kerry Nietz and Showstopper by G. Pascal Zachary are also good.

#10 – Learn a new language

It sounds cliché but learning a new programming language is a great way to become a better programmer. Learn a language that follows a different paradigm than the ones you’re using most of the time already.

For example, if you’re programming in JavaScript or Python then learn Clojure or Haskell instead of Ruby. One-day conference workshops are great to get you started. Doing Koans is good for getting a quick feel for a new language too.

#11 – Start a ‘software craftsmanship guild’ at work

I like Spotify’s idea of having guilds in their development teams. A guild is a crossteam ‘community of interest’ that meets regularly for presentations and discussions.

For example, start a software craftsmanship guild at your company where engineers meet once a month to talk about cool new stuff and problems they encountered.

#12 – Find a (virtual) mentor

Learning from someone who is a more experienced programmer than you is great. You’ll pick up many things by osmosis from working together with smart people. Yet, it’s sometimes nice to have someone specific that you can ask for advice.

You don’t have to make the ‘mentoring relationship’ explicit, although most people will feel flattered if you ask them. A mentor can also be virtual. For example, they could be an author like Robert C. Martin that you like and read often; or a successful developer like Peter Norvig who’s career inspires you.

<strong><em>Improve Your Python</em></strong> with a fresh 🐍 <strong>Python Trick</strong> 💌 every couple of days

Improve Your Python with a fresh 🐍 Python Trick 💌 every couple of days

🔒 No spam ever. Unsubscribe any time.

This article was filed under: career, craftsmanship, and programming.

Related Articles:
  • Software engineer reading list: My favourite books about programming – Reading books is one of the best ways to improve your craftsmanship and to become a better software developer. This is a continuously updated list with my favourite programming books, sorted by topic. I link to the ebook version where possible but most books should be available made from dead trees as well.
  • Keep journals to become a better developer – I keep two kinds of journals during my day to day work that I’d like to tell you about. They help me stay organized and motivate me to improve my skills as a developer.
  • How to write a great README for your GitHub project – A great README file helps your project to stand out from the sea of open-source software on GitHub. In this article I go over the key elements every README for an open-source project should contain. It also includes a README.md template for use in your own projects.
  • 7 ways to avoid aggravation in code reviews – Thankfully many software companies have adopted code reviews as a best practice these days. An overlooked aspect of how code reviews are conducted is how they can also affect the relationship between engineers negatively.
  • What books should I read to move past the beginner stage in Python? – Recommendations for intermediate-level Python books that help you get past the basics so you can start working on small projects.
Latest Articles:
← Browse All Articles