How opensource can accelerate your “codejitsu” skills
The 21st century has brought us a staggering amount of new tools and technologies with the purpose of making our lives so much easier. Thanks to the magnificence of the internet, creative people are harnessing the power of “collective code” to create an unbelievable new world with mind blowing possibilities. Here I mention my own experience learning to code and how I harnessed the power of collective code to improve my own skills.
Let me tell you a little story of this guy I knew a few years back. I remember him saying: “I want to be a programmer, I don’t know much about it so where do I start?”. I remember saying something like: “Go on the internet, maybe you’ll find something there right?”. So that’s what the guy did, opened up a browser and surfed hundreds of web pages about how to be a programmer. That poor guy was yours truly and I remember seeing a humongous amount of web pages about how someone could be a programmer in 21 days, yes just 21 days. Common sense told me it could not be possible so I did not dare fall into that trap.
I had a strong desire to learn so I went on amazon and searched for computer science and programming books like Headfirst Java and Algorithms in Nutshell bought both of them and started my journey on learning how to code. First few days I was like “What the Flamingo is this? What the hell is a Heap? Pointer Flointer, Struct my duck! This is way too difficult”, but hell, I went on grinding through bit by bit and by the second month of learning I felt more comfortable with the syntax and terms used in the field.
The eye opening moment
Fast forward two years later and I felt much more competent, but I had questions like: “How do I build more complex software? How do I build android apps? How can I become better at problem solving? How can I become a better developer?”. Well those were only a small portion of the questions I had. I wanted to reach Jōnin level so I went on searching for those answers. Months later I stumbled upon a website that changed my life (A part of it). I don’t remember the url but I clearly remember the contents. It was about OPEN SOURCE and immediately I fell in love with the way software was built in these environments.
I realized that one of the ways I could become a better programmer was to work with the best software engineers or at least read their code, so I quickly went searching for open source projects to hack on and Mozilla seemed like a good choice for me. I remember going through all the bugs in Bugzilla looking for the easiest bug to catch and trample on. Throughout this time I started learning more about computer science especially data structures, algorithms, linear algebra and discrete maths. I then started writing my own opensource tools. One of the reasons I did this was to get feedback on my code from people who are better software engineers than me and build tools that someone could find useful.
So here are some of the reasons I think writing, contributing or reading open source code can help you become a better software engineer/programmer.
- You get to read the code of some of the best software engineers in the world and get inside their minds by studying their code.
- You learn the patterns used by software engineers to solve various problems and apply them to your own problems.
- Cloning a repository, studying it and adding functionality to it and having your pull request accepted can greatly help you when you actually start working as a software engineer in the field. Companies look for programmers who can get started contributing to large software projects as soon as possible.
- You learn how to interact with other programmers.
- Getting your pull request accepted can be a good identifier of your current skill level.
- You can tell people you wrote code for the opensource library they are using and watch their jaw drop.
- The satisfaction of seeing thousands or even millions of people using your code everyday, you probably might not get so many people using your code unless you build the next whats app or facebook.
- Your code speaks louder than words. Showing that you contributed to an opensource project (especially a successful one) can have a good impact on your resume. It shows that your passionate about it.
- Most opensource projects use a linux based os for software development and I tell you there is a difference between a programmer starting out on windows and one starting out on linux. Linux forces you to learn how the OS works and find out how things really work. The hackers OS I say.
I have benefited so much from learning from opensource projects and whenever I speak to other programmers or people starting out, I always preach about opensource and its advantageous. Collective code is really shaping our world and it will continue to do so in a much greater scale in the future. Go on challenge yourself and see how it can help you.