Do you have a place where you can learn from a group of very experienced software developers? If not, why not – what’s stopping you?

Why it’s critical to be part of an open source community
So why do you even need to join an open source community project (or two, or three)? I alluded to some of the reasons earlier in this post, but there are several reasons that I’ll list out starting with the most important reason:
  • You need a fun and low-stress place to practice your software development craft outside of your day job and the pressures of schedules
  • You need a place where you can easily try new things – working with different languages, tech stacks, developer workflows, tools, project structures, etc
  • You need a community of people who can “challenge” you to be better at your craft and to learn from, but without the politics so common on workplace teams (this is not to say that open source projects & teams are free from politics, just different)
  • It sounds simple and maybe even a bit silly, but it’s an important one – you need a software project where you actually have fun working on it with other project members
Let’s look at these top reasons more closely:
You need a low-stress place to practice your software development craft outside of your day job and the pressures of schedules
If you don’t ever take the time to practice software development outside of your day job, especially outside of the constant compromises being made to deliver on a commercial software project schedule, it’s going to be challenging to become better at software development especially in the specific ways you want to grow. Why? I don’t mean to say you haven’t/can’t/won’t improve on your development skills at work, but it’s a very different growth journey than one where you’re fully in control of what you do, when you do it and at what pace.
At work you’re generally at the whim of the organization’s product roadmap or client project delivery schedule, using a specific set of languages, tech stacks, tools and processes. Working on an open source project puts you fully in control of what you work on and what skills you practice. Don’t want to work with Java using object oriented structure? No problem – join a project that uses a functional language like Elixir, Erlang, Haskell, etc. Not really passionate about creating truck shipping logistics software, or maintaining legacy software from many years ago in your day job?
Again, no problem – find a project that sounds exciting to you using a language, a tech stack or solving a problem that you find yourself pondering about without even trying (more on this in the next section).