Wednesday, December 08, 2010

Learning how to work with open software projects

I've seen some interview questions and job postings that mentioned that working on open software projects is a nice to have skill over the last few years. I never understood how much of an impact that working on an open software project might have on a person's ability to code until just recently.

I have been following the programming scene in sort of a cursory manner, mainly through reading at hacker news, which is a good site for programming and web development kind of information. What has been coming up repeatedly is the development of a program project hosting site called github, where the collaborative projects are hosted. The ability to code well parallels with learning to write well; in that reading good code helps one write good code.

I have cursory looked at sites like source forge in the past to download code to look at, but one of my biggest problems is trying to figure out how large projects are structured and what code is where, doing what. I used to do most of my coding through a simple text editor before because configuring and trying to figure out these modern fanged integrated development environments (IDEs) would get on my nerves when I wanted to learn and compile something simple. I've used to code through a simple text editor for the last 2.5 years until realizing that the debugging facilities and managing large chunks of code became time consuming and brutal.

I have since switched over to the freely available Eclipse IDE with an integrated debugger and the ability to read locally created libraries and allows for auto code completion. It is a godsend compared to what I was doing before. Commercial packages like Microsoft's Visual Studio probably has functionality like these built in, but learning coding and figuring out IDEs on your own at the same time is a little much. The great thing about Eclipse and some of the new open source IDEs is that they are starting to add functionality to connect and download projects from code repositories from places like github. I have just finished configuring IDE to do just that and downloaded the libraries to a data-mining spider called scrapy. There are other libraries available that does the same thing but I have the intentions of learning how the program was coded, the programming styles used and possibly using the project itself for my own data-mining projects. After looking at some of the code, I can understand how some people would look highly upon people that participate with open source projects as they are exposed to working in an environment with many people, many lines of code and looking at a lot of good and bad code. I will be spending time at looking at more programming projects to further hone my own skills. The idea that companies look at people with open software experience brings up the interesting concept of profiling people and their skills through secondary activities and traits. It's an old idea however, but it would be interesting to see the correlation of coding skills to open source project participation or say a person's affinity to knitting and a (negative correlation) to say, sky diving. Unfortunately, statistics when applied like this is like opening a can of worms.

No comments: