Wednesday, May 14, 2008

New job: surveying the land

So the job...

I don't know if it's just my way of wasting time because I don't want to be disappointed when I get to the nub of a task but I tend to look around a lot when I undertake a new task. Maybe it comes from using Perl so long. I usually Google for relevant topics. A couple of people mentioned the Unix/GNU make utility and I wanted to look at build/release systems to see what open-source and proprietary offerings are around. Found a good review on Freshmeat which led me to ClearCase and Perforce for proprietary offerings and cons and Scons for FOSS offerings. (Yes I know they address different problem domains, this is just my meanderings around the issue. I'm also aware of Subversion, Git, SVK, CVS, RCS and SCCS. And I'm aware of Ant and Maven. All of them address various aspects of the issue. Not all are relevant any more.)

Company uses ClearCase and Perforce for version control, wants to standardise on Perforce and wants legacy code moved from CC to P4. Current in-house build system uses make and Ant depending on code base. (And use of make would have to be mainly historical. Ant seems so much better, at least in my use of it.)

cons and Scons as replacements for make deserve a closer look. cons seems to have run out of interested developers. Written in Perl, parent of Scons, languishing from lack of publicity and support on an obscure Indian manufacturer's site, occasional pleas from users asking for such-and-such feature or bugfix but no one seems willing to put up hand to help. (Is this a job for EC?)

Scons on the other hand, while based on cons, is written in Python, thus gaining some flavour-of-the-month interest but more importantly, is visible to Google (and has thus qualified for Summer of Code support). Also seems to have an active and interested community behind it. And a web page designer! (Pleasant, clean, modern home page. Makes it look alive cf cons.)

Don't ever tell anyone :-), but I don't always obey my boss when told to develop something. I listen carefully to what he/she asks for and then I attempt to do two things. One is I try to work out what they really want/need. Not just in the political sense. I've worked with sociopathic bosses who think they can control me by not telling all the details of the requirements or who's paying for the job or who gets rewarded if it succeeds. One guy told me I had six weeks to complete a task but I accidentally (really!) read an email to his boss where he mentioned the 12 weeks he had allocated to the task. Turns out he was paid a bonus for every week under 12 he could extract. Bastard.

Politics aside, sometimes they can only think in terms of existing systems so the request will be 'one of them but this bit changed'. I have to look at the wider picture. 'One of them' might be so old and poorly maintained and so slow and resource hungry that a second one might destroy the machine or require a new one (not budgetted for of course).

There's also the much harder task: how do I stay interested? I can think of better things to do than spend 8 hours a day doing boring, repetitive, code monkey stuff. I like singing. I like playing guitar. I like talking to my wife and kids. I like walking the dog. I don't like boring shitwork. I'm also aware that there are a few million University graduates scattered around various "developing nations" perfectly capable of churning out a couple hundred lines of Java crap for less than half of what I get. So my code has to be compact but maintainable, precise but not obscure, correct but not overkill. And I have to stay interested. The only way I know how to do this is to find a way to turn a boring, churn-the-handle task into something exciting.

One way to do this is to use a new technology. This is how I discovered JQuery. A webpage needed some JavaScript but my first attempt clashed with the existing JS. And of course it didn't work correctly in IE6. Googled and found JQuery. Oh frabjous day! Suddenly JavaScript became interesting. So much power in such a compact notation. Sounds like Perl! And it automatically handled the PITA differences in IE6.

No comments: