How GitHub Can Help You To Improve As A Web Developer
Just like everybody else at some point, I knew GitHub was a way to gain access to open source projects. It was the place which allowed me to grab the necessary files for my websites, read the documentations or raise issues. During the past 2 years I have discovered it is in fact a fantastic tool to learn and keep growing as a developer.
GitHub As A Learning Tool
It all started one day when I decided to use GitHub to open source my own small projects. I created my first jQuery plugin (fullPage.js) and almost without realising, the project started to get stars and forks. Within just a few months it reached thousands of stars, in a year a friend saw me in the list of trending developers at GitHub and in two years the project reached the top 50 most starred and forked projects on GitHub on JavaScript language.
By that time companies like Google, Sony, Facebook, EA and British Airways were using my own scripts and even printed magazines such as Web Designer (UK) had articles about them – not precisely what I had anticipated when I initially decided to upload my small project.
What have I learned through it? Here are a few things:
You don’t have to be a genius!!
Creating some impact on the internet does not require you to be a genius. Focus on making something useful for yourself and for others and people will eventually start valuing it if it’s good.
What you really need to have is an original idea, desire to make it happen and enthusiasm.
Take a look at some popular projects on Github and you’ll realise that many of them are just a good idea in a good moment.
You can actually change the world (a bit at least)
One of the first things I realised is how easy it is for us nowadays to make an impact on other people around the world. We programmers are in a very special position which allows us to easily share our own creations with others separating us from many other fields.
We lack all those real world obstacles. We do not need advertising, partners or even contacts to launch something. We can do it by ourselves from home, and if it is good, it will come to light by itself.
This is something we have to take advantage of. There are no risks involved – just consider it as an investment of time and effort.
You will learn from others
Although it is well known that open source projects don’t usually have many volunteer contributors, sometimes only a few tips are necessary to help you improve your code and learn from it.
Nobody will rewrite the whole program for you, but the few tips, suggestions and pull requests they do submit can help you to see things from another perspective, question your own code and discuss what the best solution is.
By just using the GitHub issues forum, users can often contribute by providing new ideas and enhancements, detecting bugs and even opening you to new ways of working and testing.
You will learn how to provide support
When I started my first project I had no experience whatsoever of providing support to any program in the long run.
- After a while I learned the importance of the version number and the semantic versioning specifications. Having it in your files will save you from losing time when people report solved bugs or missing functionality. I found it very useful to detect when bugs were introduced and users, on the other hand, found having a change-log quite useful to see whether or not they should update to the latest version.
- Documentation will become your friend when answering questions regarding the usage of your software. You’ll get tired of answering the same questions again and again. You’ll see the importance of having good documentation and ideally one that can easily be referenced by URL. From now on you’ll value others’ documentations more.
- It is important to isolate the problem before spending time on it. In my case, I usually ask users to reproduce the problem in jsfiddle or codepen. Sometimes the problem is not in your own application. In my case, being a JavaScript plugin, I had many users reporting problems which had nothing to do with the plugin itself but with an error somewhere else in their site or even in another component.
- Being able to reproduce your user’s setup and environment is a very important factor when it comes to testing and debugging. For browser testing I made use of Browserstack although I still had trouble providing better support for some Windows touch devices.
You will learn the basics of package managers
If you have a web oriented project you’ll probably want to add it in some package managers such as npm, bower, npmjs…
If you haven’t used them before, as it was in my case when I started my first project, this will be a great opportunity to motivate (or force) yourself to learn more about them and potentially start using them from now on!
You will learn the importance of testing
And more so if you haven’t created any tests! Then is when you’ll realise how convenient it would be to be able to release a new version being confident it will not break any of your application’s functionality.
Personally I committed this mistake and now I’ve learned the lesson!
It is not easy to test some projects, but any test we can provide will be useful in the long run.
You can get the motivation to improve
It’s not that we need to find an excuse to code properly, but we are all lazy sometimes and go for the first solution we have in mind: we forget about old browsers, avoid thinking about touch devices, do not put enough importance on performance etc.
If people get to know your project, chances are you pay a bit more attention to your own code. We don’t usually like getting bad feedback about our projects and having people complaining about performance, compatibility issues or crashes. As it happen with sports, having someone to push you can get the best out of you.
Remember we want our project to be useful, people complaining is a sign that there is room for improvement.
Conclusion: You can use it as your portfolio
They sound more like a thing for web designers, photographers or models, but portfolios are just places to show our skills in a particular topic and GitHub is just perfect for us!
Not only interviewers, potential colleagues and recruiters will be able to see the core of some of your work, but having open source side projects will reflect a passion in your field, which is something they value very much. I would even say you can potentially use it as a tool to attract more clients.