Posted on | July 1, 2009 | 1 Comment
Kalyan’s tweet on freelancing reminded me of some recent conversations that I’ve had with several C/S students who recently completed their thesis. The conversation basically boils down to “Why should I spend time on freelance assignments when I don’t really need the money?“
I can only suggest that C/S students think of freelance assignments as part of their studies, the money is rather incidental. I am a proponet of open source software and I continue to recommend that new programmers find an interesting project to work on, however doing so does not really expose you to how nuts the rat race can be.When working on open source projects, you will eventually be exposed to abrasive personalities. However, these people are easily endured because you know that you can quit at any time or just ignore them.
When working in the real world, you will endure the same or worse, without the comfort of knowing that you can simply stop. Moreover, its very likely that at some point in your career, a very abrasive person will control when you wake up in the morning and when you get to go home.
When freelancing, you will learn to deal with a different kind of peer review. With open source, peer review generally improves the quality of your code. Now imagine having to take the same, beautiful patch and intentionally retard it because some CEO read an idiot’s guide to programming and wants to be “involved”.
When freelancing, time is definately money. Are you used to keeping track of your time per task or activity? If you freelance, you better get used to it, because you need this data in order to bill. When you go to work in the real world, some HR droid is going to ask you to do the same thing.
Does the tail shake the tiger, or does the tiger shake the tail? This is a question regarding your ego. Can you really deal with someone telling you that your code / idea sucks? Can you really deal with someone not noticing your extra effort? Can you really deal with someone else re-factoring your code (often for the worse) as you commit it? When I worked in the wireless industry, one of my favorite bosses of all time shared a few words of wisdom:
I don’t care if that man tells you to have a crew tie every antenna cable in a nice pretty bow! If he’s willing to sign off on it and take responsibility for it, you had better be damn ready to ask him how many loops each bow should have!
The same question holds true if you find yourself working in the stone age, which happens all too frequently, even today. You show up for your first day of work and discover there is no SCM in use, no tests, no nightly builds and no hope of ever passing the Joel test in the next hundred years. You are either able to fit in and forget yourself, or you aren’t.
Jobs are not so easy to come by these days, its much better if you gain some real world practice and experience while you still have a cushion under your butt. The extra cash never hurts (as long as it does not detract from your studies) and you’re getting a head start on your C.V.
I think its kind of crazy for anyone past their third year not to freelance. Who knows, you may find a company that is willing to groom you through school and take you on once you finish your studies.
Joining a company is like joining any other relationship, you don’t realize the quirks until you have made a commitment and have begun to depend on the other party. Its better to be equipped with (at least some) experience.