Are you a real programmer?
Tue Dec 04 17:23:09 -0800 2007
I might be biased, I might be talking from a lack of experience, but if you are reading this and you are not involved in an open source project, then you are not a real programmer…
No, really.
Why would I say such a thing?
Simple.
Because I wasn’t (and, really, I am still trying to be).
Here is the deal. When you start programming you are working for yourself. You are making changes to your own systems, you are designing what you want to design and at the end of the day, you are producing something that really, only you have to deal with.
Documenting that method doesn’t really matter, deciding on what variables a class method will take has basically no consequences beyond a quick re-factoring.
But when you get into making an open source package (like I did with taking over TMail ), you suddenly have to code with a whole NEW viewpoint.
Like “OK, this method is named just plain wrong, I want to change it. Hmm… what would that break for someone else, would it matter, how important is it for me to modify this”.
Or “I have no #$#$%#$ idea on how to do this thing! OK… better learn it because the problem is not going away!”
The second one was exactly how I felt when I found out that there was a bug in the way TMail was parsing email addresses…. have you ever hear of YACC? Me neither, well, not really, I knew it had something to do with compilers, but TMail uses RACC for which there is basically no documentation, as a parser compiler for it’s email addresses. Very efficient, amazingly beautiful to see working, but going from zero experience to debugging it was a stretch and a half! And I can tell you I am a better programmer for it.
But what do you do? You might be sitting there reading this and thinking “OK, I have never programmed on an open source project, how do I get involved?”
Well the good news is, it is very easy.
First, go read Dr Nic’s great post about how to write a patch. This covers all the basics steps of checking out code, writing the patch and sending in the email.
Then, find a software project in Ruby forge (or any other forge) that you want to contribute to. Maybe it is a library you use a lot (that was the case with me and TMail) or maybe something just interests you.
Then go ahead, find a problem and write the patch and send it in.
Do this once or twice and then ask the guys if you can help develop or be part of the team (right now I would love someone to step forward who knows anything about encoding and decoding character sets because I need help in TMail!)
Usually, you will find on the newer projects that the admins are more than willing to get people into the fold and help out.
You will find that writing open source software stretches you in ways you never imagined. You will learn new things, find out about multiplatform issues and basically, really, it gives you another avenue to practice your skills on that might not be directly related to what you do day to day.
It is one of the most rewarding thing to see the number of downloads of the product you have helped create keep rising as more and more people find out about it and use it, many of which you will never meet or know about. But it is one of those programming warm fuzzy feelings of givings something back to this amazing open source community.
Anyway, don’t think about it, go read Dr Nic’s post and go join a project (or start one of your own!) You will not regret it.
blogLater
Mikel




Thu Jan 24 17:51:07 -0800 2008
Whilst I agree that working on an open-source project will expand your abilities as a programmer, I don’t agree that you have to work on an open-source project to become a “real programmer”.
If your projects only extend to you or you and the guy who sits in the same office or the next cubicle and you don’t have the chance to work on a team or on a project that has real users with real requirements, then open-source is a great way to go. But I’ve been in this business for over 20 years and I’ve worked on large and small teams and I’ve always had users with real requirements (some real good and some real stupid and some that change every few days) and I’ve hit extremely challenging situations that have required me to dig around, read articles, read entire books and sometimes just figure it out through trial and error – all the demanding things that can occur in an open-source project.
So if you don’t have the chance to work on a demanding project in your normal job, I’d say go join an open-source project, but there is an alternative, which is to get yourself a job at a company that does real development with real users and real challenges.
Fri Jan 25 13:49:42 -0800 2008
Grahame,
Good comments :)
I agree with you on the point that at the end of the day, being on an open source project != being a real programmer, I know a lot of awesome programmers that have never been part of an open source project.
I suppose my point is more on the front of getting up to a point where you HAVE to have peer review of some sort with your code. Open Source is great for that. Especially if you make something that is used by others.
Regards
Mikel
Thu Dec 22 17:28:57 -0800 2011
So if you don’t have the chance to work on a demanding project in your normal job, I’d say go join an open-source project, but there is an alternative, which is to get yourself a job at a company that does real development with real users and real challenges.
ljtyeqsaj sr kpcjnvaj jy nyvhqtdh fs lvdeoqbe