Love debating and active discussion? We sure do, so we've put up some opinion pieces for you to fire some feedback at, or start your own discussions on.Note: The use of 'fire' in the last sentence is there purely for its literary value. Feel free to replace it with friendly words. Like 'give', 'receive', or 'deliver lustfully', when appropriate.
Taming the code monkeyBy Logan Booker
Commercial programming blows. If you think that?s harsh, then you?ve probably never developed customised software. The painstaking process of finding out exactly what you need to code, then working within a tight time frame and managing ridiculously insufficient resources, can leave even the most confident programmer lying husk-like on the floor.
Cubicle Syndrome, sleep deprivation and extreme stress add to the list of concerns a commercial programmer must face. Your health will always suffer ? just a fact many learn to live with.
A lucky few might avoid CS ? you work by yourself in a hovel-like abode instead ? but few escape the lack of sleep or the stress. These don?t happen instantaneously because thankfully the transformation from humble coder to jabbering psychotic is a slow and excruciating one. And the poor hacker will always lose a piece of his semantic soul in the process. It?s easy to think such (mental or otherwise) health problems would be numero uno on your list of things to rectify ? job satisfaction and all that ? but it fades into irrelevance when you have a suit demanding an early release, or a bug fix you?re not prepared to do ? for one reason or another.
There?s a fine line between bug and feature ? and it?s up to you to grab a chunky piece of chalk and fatten that line. Anyone who crosses it should be poked in the eye with the stub.
There?s an old saying among programmers (well, among lots of trades, but hey): The client never knows what they want. On the rare occasion, this can be true. You could be stuck with a corporate goofball who hasn?t the slightest idea what COM+ is. This doesn?t make them a goofball though. It just makes them not a programmer, just like you?re not a corporate goofball. Do you know what a multi-dimensional layer means in biz speak? And no, it has nothing to do with dynamic arrays or struct tables. The client knows exactly what they want, so it?s up to the programmer, ie. you, to extract that information. The experience is usually similar to removing teeth with a rusty machete: hard, with screaming that?d put Janet Leigh to shame, but not impossible. Extracting isn?t all you have to do. Unlike a dentist (or a whacked-out homicidal freak with a dentine fetish), it is up to you to interpret, confirm and communicate back to the client their needs, and wants. This includes the ones they haven?t thought of.
The only way to gather this sort of intel is through an interview. You get the client (or clients) into a room and ask them what they want. You need to ask the right sort of questions. You also need to ask the right type.
Believe it or not, your basic survey/interview can have five types of question: open, closed, leading, compound and hypothetical. The last two tend not to be covered in IT ? we like to get straight to the point ? but they?re important none the less. You can learn all about these sorts of questions here, and I?d recommend you have at least a passing glance.
It?s reasonably clear that programming isn?t just about flogging out lines of code, or creating an app of biblical (read: hard to understand and interpretable in numerous ways) proportions. It?s all about communication ? be it with clients, users or administrators, project managers, other programmers, or your spouse, if applicable. A large percentage of IT courses revolve around this. Such courses also orbit OH&S like photons to a black hole, but safety is for tech support. There?s no tower-hauling or amateur electrician work in programming.
If you can tackle the communication part of being a programmer, life becomes much easier. Then it boils down to whether or not you?re an analytical god. Are you a good problem solver? Are you inventive, constructive and creative?. Being able to code in five languages (both computer and international) with nothing but a caffeine IV is awesome, but it? s useless if you can?t wield it effectively.
If you?re, say, a microserf, then there?s no need for worry or nervous gesticulation ? that?s what project managers are for. The walls of your cubicle and the screen in front of you are your world. It?s hard to be creative, but then, you don?t have to be.
Last year, Shtick interviewed a computer programmer who worked in a microserf-like environment. Similar to many good programmers, he got into the industry by simply ?rolling up his sleeves and getting started.? He pointed out that ?If you are sure that you want to be a programmer, then you really don't need to be in college.?
This is an sentiment that is being errily echoed today, with the recent news that applications for this year in undergraduate IT courses has dropped some 30 percent, when compared to last year. While the focus here isn't on programming, it is a good indication that interested people would prefer to get their hands dirty, rather than study for two or three years.
Programming started out as an outlet for my creativity (pratical, you see) ? be it a game or useful app. Like an artist, I'd flourish back ends with my brush and delicately craft interfaces. It?s lots of fun, honestly. I never considered making money from it.
When asked if he still found programming creative, the software engineer replied 'I used to. When you start, you begin with a blank page and you have to build something from the ground up, so that's pretty creative. There is no single ?right? way to program, so you always have options on how to structure everything.'
This is my gripe with commercial programming: it takes the fun out of coding. You stop being a separate, constructive entity, and get machined into a cog. It?s a huge sacrifice to make, and one I was simply unprepared to face.
The code monkey life was not for me.
There are other nasty characteristics you?ll pick up working for a giant software company: facelessness; red tape; and alienation. They all blow hard. So what if you have resources ? the inflexible nature of the situation will cripple your creativity like a good old neck twisting.
The upside to all of this is great pay. Programmers, good ones, get paid well. For small businesses though. . . hiring a programmer isn?t practical. But they need software just as much as the next company (no matter the size). Most have to resort to off-the-shelf stuff. For accounting software and the like, that?s great. But customised software (and databases) pulverise most app packs into iddy-biddy bits.
Small businesses compete by innovating and working efficiently. The pay will be crap, but you could potentially ride the wave of the ?next best thing?. You make the choice.
Or you could always freelance.
Freelance programming is a tricky art, because you?ll always be in a contractual agreement to fix bugs ? and not add features. Notice the difference? I personally have only freelanced a few times, writing small apps that automate tiresome tasks (the goal of most software dev projects). I?m required to fix bugs that crop up, but only on the operating system they were designed for (so I can?t be blamed for dodgy ports by other coders). Because the apps are simple in nature and design, I haven?t been required to fix that many bugs. But I?ll tell you what: Service Packs drive me nuts, and Windows XP is not Windows 2000.
Bad? Unfun? A waste of time? No ? just a very specific job for a very specific type of person. If you're not 100 percent dedicated, expect the bitter taste. Like I?ve said, if you can do well, the opportunities are vast. Don?t get stuck in a rut, don?t mix bugs with features, and avoid open questions! Get stuck into the practical side of things ? and then work on your communication skills.
In the end, it?s up to each code monkey to choose which tree he picks his bananas from. Start at the shortest one.
Studying your arse off to be a programmer? Or already earning truckloads at great personal expense? Share your war stories now and email me at lbooker@atomicmpc.com.au.
Issue: 133 | February, 2012