Open Source

November 30, 2013

Open-source projects have always fascinated me. I personally find it tough to work effectively in small teams, working with a large community in a public, collaborative manner will makes things unimaginably tougher. However, with good management techniques, effective communication and efficient workflows, the open-source community have succeeded and produced excellent technologies such as Ubuntu, Android, Rails, Django, Bootstrap, AngularJS, just to name a few. These projects have had great impact on technology and are widely used by developers in the course of their work. Android, with Google's backing, has become the world most popular smartphone OS. I personally use many open-source JavaScript projects such as AngularJS and Node.js for my own development.

I have been developing web applications for over a year now, and my portfolio of web projects can be found here. Having completed the two most rigorous software development courses in NUS, CS3216 and CS3217 and surviving them well, I have picked up good software engineering skills and improved my development competency.

However, almost all my software engineering projects were constrained within a school setting. I was only required to work in small teams and to meet predefined assignment milestones for the grades. These school projects were often discontinued after the course ended and gone to waste and it's quite a pity. School projects are rarely reflective of real-world software development, where there are many moving parts, a much larger code base, huge development teams, and release cycles.

I hope to be part of the Open Academy Program because of the various unique opportunities it has to offer that I am unable to experience in school: working with talented people in remote teams, picking up industry-standard project management skills, getting exposed to new software development workflows. It seems like an entirely different experience filled with plenty of learning opportunities. I haven't had the chance to work with a large community spanning across nations but am eager to try it. Foreseeable problems include differences in time zones, language barriers, and also, every open-source developer has their own day job to handle. However, given that many companies nowadays have remote offices and development teams scattered across geographical boundaries, knowing how to work in remote teams is becoming an increasingly important skill to hone.

I like to learn and I believe I am a fast learner. 2 years ago, the only language I knew was C++ and all I could do was to compile simple programs with g++. Almost 2 years later, I have developed and launched a few mobile and web applications, and gained a strong competency in front end web development. My ability and desire to learn and improve is my strength and I hope I can put them to good use in the Open Academy Program.

Without CS3216, CS3217 nor CS1010S in the coming semester, there won't be any module to inflict memorable pain in my life; I believe the Facebook Open Academy Program can be a decent source of challenge.

For a change, I hope to leave an impact by diving into the world of open source development and contributing code that will be used by developer communities around the world.