It happens at every party. I'm chatting with someone I just met, and he asks me what I do for a living. (It's always a he, women don't talk to me at parties.) I tell him I'm a computer programmer, and his eyes glaze over. For however long I decide to talk about my profession, he'll nod at the right times, and make the occasional "mmm" of interest, but he's checked out, judging at what point it would no longer be rude to talk to someone else.
This doesn't bother me, because if you're not part of the club, software development is a boring jumble of jargon and acronyms. Also, as essential as computers are, no one wants to know how they work. They're like cars: as long as they get us where we're going, we don't give a shit about what's under the hood.
But I've decided to explain the life of a code monkey, and you might just find it interesting if you come along for the ride. This will be no party patter full of vague pleasantries, this will be the straight dope. So just step right this way.
The most important thing I have to say about the software industry is that I love the former and hate the latter. Software can be exhilarating. It can even be artful, if you're not afraid to look under the hood. But just like any art form, it must be translated into a monetary value if you plan to eat. That means art becomes a business, and business is the domain of businessmen. For businessmen, there is no art, just products and profits. Welcome to the industry.
But for a moment, let's hold the beasts at bay and live in a code monkey utopia. For someone who really cares about software, how you build something is just as important and what you build. For the end user, it can be very hard to tell how well a piece of software is constructed. Certainly, if a program doesn't work properly and is filled with bugs, it's easy to measure its quality. But two developers could produce two programs that, in the user's eye, are identical. Yet one of them may be a masterwork crafted by a talented artisan, while the other is held together by duct tape and is just sufficient enough to earn a paycheck.
In a short period, this difference may not matter to the user, but if he has to live with an evolving piece of software over time, the difference will become apparent. Every change that is made will lead to many problems in poor software. In good software, the changes have much less effect and are much quicker to implement. When another code monkey comes along to maintain a product, he will curse the paycheck collector and praise the artisan. (Briefly, before complaining how much better it could have been done. More on that in a second.)
So for a software artisan, there is a passion to deliver what a user needs, and lay the groundwork for what will be one day needed. This will be done in as simple a manner as possible, but no simpler. It will be fairly easy to understand (compared to other code, at least) and it will be elegant. It will feature the latest ideas and patterns from the thriving community of other passionate programmers. For the layman, it will just be a piece of software that will be cursed when it doesn't do things as well as expected, and taken for granted otherwise. For a code monkey, it will be art.
Chasing this grail of great code is an intoxicating process. When I'm in the zone with no distractions, time disappears. The world fades away, and there's only the code emerging before me and the endless battle of making the computer concede to my whims. Suddenly I'll realize that the day is almost done and I haven't even had lunch yet. Anyone who has thrown himself into art of any sort will know this experience.
I wanted us to stay in my little code monkey utopia for a while. I was hoping the visit would last until the inevitable arrival of the suits. I could keep talking about the joy of making great software, the rush of struggling with a problem for hours to finally solve it, or the glorious feeling when a fellow code monkey looks at your work with awe. But the clouds have come, and the rain is starting to fall.
The price of chasing the software grail is the never-ending need for scholarship. The fundamentals of development evolve constantly, and how to apply them changes even more rapidly. Best practices and patterns have to be followed on an almost daily basis to stay current. Imagine being a writer and having to buy a new dictionary every few years because the current one just doesn't apply anymore. Imagine awaking from a ten-year coma to find you can't even read your favorite author's latest work. Such is the life of a code monkey.
Another problem is that even before we have to submit our creations to the product machine, we code monkeys have to co-exist. To keep the contrast going with writing, imagine writing a novel with ten other people. How far would you get before things would end so very badly. Even if you agreed to an over-arching plot and who would write which chapters, the fact is that disparate parts have to make sense as a whole. That means a lot of communication and compromise. And code monkeys, like any artists, have plenty of pride and ego.
Throw in a few writers who are just there for the sweet writer paycheck (okay, the analogy breaks down here, but let's move on), and suddenly you may feel like Cormac McCarthy writing the conclusion of a story that Dan Brown began and features a middle section contributed by Stephanie Meyer. (And if you're a fan of either writer, I'm very sorry, on many levels.) Even worse, imagine you have to add content between those writers. On a good day, you'll think you put Cormac's prose to shame, and on a bad one, you'll feels as if you abuse the English language even worse than Dan and Stephanie combined.
Despite these challenges, software can still come together in greatness, and despite all the brotherly fights amongst code monkeys, there's still mutual respect. If the only challenge was to deliver great software, developers could work together well enough to achieve that goal.
But software has to be sold. Which means it has to be done before someone else does the same thing. And even if you finish first, if someone else makes it cheaper or better later, you have to react or be put out of business.
There's the b word. Let's begin our descent into darkness.
I mentioned that, on a superficial level, code of vastly different quality can look the same. Better quality takes time, and time is money. That means that the quicker software is built, the happier the businessmen are. While poor code will be more expensive in the long run, and will potentially alienate users (now called "clients" in business parlance), to many profit-driven minds, the equation is simply that money now is better than money later.
Before I paint too bleak a picture, I can't say that every sales-oriented person in the software industry is short-sighted and greedy. There are many people who "get it" and understand the big picture. Some even respect the art of software.
But software has to be sold for software to be made. Someone has to sell it. That means the good guys have to compete with the slimiest, most dishonest jerk at the sleaziest company that ever managed to stay in business long enough to shit out some software (or at least promise to one day shit out software.)
Thus, the life of a code monkey is building something in the time frame that was promised in order to make a sale. To go back to the writing analogy one more time, imagine getting a call from your agent that you have to write a 500 page teenage vampire novel in four weeks. (Insert your own Stephanie Meyer joke here.)
So in that situation, what does a code monkey do? That's the hard reality of being a software developer. We care. We want to make art, but we also have to make a product. So we do our jobs the best we can, balancing what was sold with what we yearn to make. We deliver a book that's half the expected length in twice the promised time. We stick to the theme, but do our best to make it a meaningful, worthwhile creation. The client grumbles about the disparity between promise and product, but is satisfied in the end.
The result may be flawed, but damn it, it is art.
Showing posts with label software development. Show all posts
Showing posts with label software development. Show all posts
Wednesday, January 27, 2010
Friday, June 26, 2009
It Sucks To Be Sick
There is a very fine suite of medication I employ to feel healthy when illness hits me (more on this later), but sometimes, the offending malady is too strong and downright evil to be stopped by any amount of drugs. In this case it's a nasty head cold.
I thought I was going to escape major damage this time around. The drugs were keeping the worst of the symptoms in check. But then, last night hanging out with Cathy celebrating her charity 5k fun run with her co-workers, the shit hit the fan. I felt like total crap.
This sucked on many levels. For one, I was suddenly doing my best zombie impersonation. Secondly, what was a celebration time for Cathy now had one less than festive participant. Lastly, Cathy works with a really good group of people that I rarely see, so not being all there for the get-together was a bummer. Sorry guys.
Fast forward to last night as I was trying to sleep and coughing incessantly. I kept waiting for the pillow to cover my head so Cathy could put me out of my misery and get some sleep. At one point she asked in a groggy half-awake state, "Why are you so mad at me!" as if my coughing was an act of antagonism. When I did get to sleep, I started to dream about being sick. Also, probably because of how deeply I've been thinking through a coding project at work, I will admit with embarrassment that I dreamed that there was a bug in my breathing code, and until I fixed it I would continue to cough. I guess androids do dream of electric sheep.
Fast forward further to this morning and one of my least favorite things: waking up after a long night of cold mucous plugging up my head and lungs. The ritual is then a fresh does of drugs and the waiting game. Am I feeling well enough to go to work?
A few words about sick days. I never took a sick day until my mid-twenties. This had a lot to do with my mother, who is tough as nails and has the New England work ethic. She never took a sick day (as opposed to my dad, who didn't mind taking the odd year off of work). Part of the reason for this is simple: when you're making hourly wages (minimum wage, I might add), you don't get paid if you don't show up. There's no allotment of sick days like us salary boys get. Beyond that though, my mom just didn't need sick days. This is, after all, the woman who has been known to pull her own teeth to save dentist fees.
Because of this, I feel like a big wimp when I take a sick day. But what I've learned over the years is that I can't code when I'm sick. There's just too much mental processing, too many balls in the air at once, and all it takes is one cough or sneeze and you've lost it. Then you're spending several minutes picking them up and getting going again.
Also, when you cough all day, your co-workers want to lynch you. And if they get sick from you, they really want lynch you.
So when I decide to pull the plug on going to work and admit defeat to my head cold, I'm left with deciding how to best get through the day. Sleep would be good, but I just can stand the feeling of filling up with mucous. I also can't really focus long enough to do anything fun like read a book or watch a movie.
So I'm writing a blog entry. I think this must say a lot about how I write. That it's really mostly a stream of consciousness that requires very little active thinking. (This is kind of true, I just sit down and write in order, then read back once for typos.) And that I can lose focus repeatedly (like the 2 minutes I just spent feeling sorry for myself for being sick) and just jump back in where I left off . That's the beauty of writing: your words don't have to compile.
So I'm either going to resign myself to trying to sleep and all the grossness that will entail, or I may just wing out a couple more of these babies.
As promised, a word on drugs. When I have a cold, I use two things: an antihistamine called loratadine (aka Claritin) and the world's greatest decongestant, pseudoephedrine (the main ingredient in some, and formerly all, versions of Sudafed). For brevity's sake, I'll refer to pseudoephedrine as PE going forward. (As pointed out by my blogger buddy MommyDoc, Sudafed now has a non PE version that they've dubbed Sudafed PE, so just be aware that my use of the term PE is different than that of Sudafed's.)
PE is amazing, but it's now hard to get and many drug companies have stopped using it in their medication, replacing it with another drug that doesn't work as well (for me at least) and makes me drowsy (PE is actually an upper). The reason for this? PE is now strongly controlled because it is one of the ingredients needed to make meth. This means you can only buy one box at a time, and only at a prescription counter where you have to show id. My hunch is this will lead to the end of PE being used by drug companies eventually.
Now, I'm all for not allowing people to buy a dozen boxes of the stuff, but can't I at least buy one or two without going through a long process? If some drug dealer wants to run in and out of CVS stores buying two boxes at a time, I just don't care. I'm for educating people on the dangers of drugs, but you can't legislate common sense (or morality). And nothing is as sweet as forbidden fruit.
Oh God, that must be the cold medicine talking, since I hate political rants. Oh well, now you know how I feel about the "war on drugs." And that I hate being made to feel like a criminal because I want to buy medication that improves my quality of life and that I have no intention of abusing. And that I'm pissed that the difficulty of acquiring PE will most likely mean that it will eventually not even be available as a cold medicine.
Blame the pseudoephedrine. Perhaps we need to ban this dangerous drug all together. (Please don't, I'm only kidding. I need my PE!)
I thought I was going to escape major damage this time around. The drugs were keeping the worst of the symptoms in check. But then, last night hanging out with Cathy celebrating her charity 5k fun run with her co-workers, the shit hit the fan. I felt like total crap.
This sucked on many levels. For one, I was suddenly doing my best zombie impersonation. Secondly, what was a celebration time for Cathy now had one less than festive participant. Lastly, Cathy works with a really good group of people that I rarely see, so not being all there for the get-together was a bummer. Sorry guys.
Fast forward to last night as I was trying to sleep and coughing incessantly. I kept waiting for the pillow to cover my head so Cathy could put me out of my misery and get some sleep. At one point she asked in a groggy half-awake state, "Why are you so mad at me!" as if my coughing was an act of antagonism. When I did get to sleep, I started to dream about being sick. Also, probably because of how deeply I've been thinking through a coding project at work, I will admit with embarrassment that I dreamed that there was a bug in my breathing code, and until I fixed it I would continue to cough. I guess androids do dream of electric sheep.
Fast forward further to this morning and one of my least favorite things: waking up after a long night of cold mucous plugging up my head and lungs. The ritual is then a fresh does of drugs and the waiting game. Am I feeling well enough to go to work?
A few words about sick days. I never took a sick day until my mid-twenties. This had a lot to do with my mother, who is tough as nails and has the New England work ethic. She never took a sick day (as opposed to my dad, who didn't mind taking the odd year off of work). Part of the reason for this is simple: when you're making hourly wages (minimum wage, I might add), you don't get paid if you don't show up. There's no allotment of sick days like us salary boys get. Beyond that though, my mom just didn't need sick days. This is, after all, the woman who has been known to pull her own teeth to save dentist fees.
Because of this, I feel like a big wimp when I take a sick day. But what I've learned over the years is that I can't code when I'm sick. There's just too much mental processing, too many balls in the air at once, and all it takes is one cough or sneeze and you've lost it. Then you're spending several minutes picking them up and getting going again.
Also, when you cough all day, your co-workers want to lynch you. And if they get sick from you, they really want lynch you.
So when I decide to pull the plug on going to work and admit defeat to my head cold, I'm left with deciding how to best get through the day. Sleep would be good, but I just can stand the feeling of filling up with mucous. I also can't really focus long enough to do anything fun like read a book or watch a movie.
So I'm writing a blog entry. I think this must say a lot about how I write. That it's really mostly a stream of consciousness that requires very little active thinking. (This is kind of true, I just sit down and write in order, then read back once for typos.) And that I can lose focus repeatedly (like the 2 minutes I just spent feeling sorry for myself for being sick) and just jump back in where I left off . That's the beauty of writing: your words don't have to compile.
So I'm either going to resign myself to trying to sleep and all the grossness that will entail, or I may just wing out a couple more of these babies.
As promised, a word on drugs. When I have a cold, I use two things: an antihistamine called loratadine (aka Claritin) and the world's greatest decongestant, pseudoephedrine (the main ingredient in some, and formerly all, versions of Sudafed). For brevity's sake, I'll refer to pseudoephedrine as PE going forward. (As pointed out by my blogger buddy MommyDoc, Sudafed now has a non PE version that they've dubbed Sudafed PE, so just be aware that my use of the term PE is different than that of Sudafed's.)
PE is amazing, but it's now hard to get and many drug companies have stopped using it in their medication, replacing it with another drug that doesn't work as well (for me at least) and makes me drowsy (PE is actually an upper). The reason for this? PE is now strongly controlled because it is one of the ingredients needed to make meth. This means you can only buy one box at a time, and only at a prescription counter where you have to show id. My hunch is this will lead to the end of PE being used by drug companies eventually.
Now, I'm all for not allowing people to buy a dozen boxes of the stuff, but can't I at least buy one or two without going through a long process? If some drug dealer wants to run in and out of CVS stores buying two boxes at a time, I just don't care. I'm for educating people on the dangers of drugs, but you can't legislate common sense (or morality). And nothing is as sweet as forbidden fruit.
Oh God, that must be the cold medicine talking, since I hate political rants. Oh well, now you know how I feel about the "war on drugs." And that I hate being made to feel like a criminal because I want to buy medication that improves my quality of life and that I have no intention of abusing. And that I'm pissed that the difficulty of acquiring PE will most likely mean that it will eventually not even be available as a cold medicine.
Blame the pseudoephedrine. Perhaps we need to ban this dangerous drug all together. (Please don't, I'm only kidding. I need my PE!)
Labels:
commentary,
humor,
life,
politics,
software development
Friday, June 12, 2009
Here I Go Again
This is my second attempt at blogging. I created a rudimentary blog on my website and did some periodic posting, but my minimal effort in coding ensured the functionality was pretty lame. So I'm throwing in the towel and using a real blog site.
Before I get into the types of things I'll be talking about going forward, the first thing to state is why I'm bothering to do this at all. I claim no wisdom that the world needs to hear. I think I'm reasonably amusing, but I make no pretense that I will be the funniest, wittiest blogger you will stumble upon. My reason for wanting to blog is simple: I have always felt compelled to write, but have found the process so miserable that I rarely do. Instead of focusing on why I feel compelled to do something that makes me feel so miserable (that has to be some sort of mental illness, right?), I instead want to find a misery-free way to write. The hope is that when I get my mojo going with some not-so-serious blogging, all those short stories and *gasp* novels clogging up my head will have a chance to erupt forth. And if not, I'll have a nice forum to bemoan my clogged misery.
So, the stuff I want to write about: writing, of course; music, both things I love to listen to and thing I create as a hobbyist musician; life in general, and how bewildering it can be (hence the title); and, on occasion, thoughts on my day job, software development. Don't worry though, there won't be snippets of code and treatises on best practices. There are many resources that have far more knowledge in those areas than me. If anything, the area of software development I'd most like to discuss is the human side that is so often ignored. Software, after all, is made by people, thus communication and actually being able to stand each other is key. And well worth talking about, since both areas often don't go too smoothly.
Once caveat going forward: I may love to write, but that doesn't mean I'm great at spelling and grammar. I'm also a master at typos. Accept it people. That's why [sic] was invented, for people like me!
So, I hope at least a couple people follow along and have a little fun along the way. And if not, that's okay too; it reinforces the miserable writer thing.
Before I get into the types of things I'll be talking about going forward, the first thing to state is why I'm bothering to do this at all. I claim no wisdom that the world needs to hear. I think I'm reasonably amusing, but I make no pretense that I will be the funniest, wittiest blogger you will stumble upon. My reason for wanting to blog is simple: I have always felt compelled to write, but have found the process so miserable that I rarely do. Instead of focusing on why I feel compelled to do something that makes me feel so miserable (that has to be some sort of mental illness, right?), I instead want to find a misery-free way to write. The hope is that when I get my mojo going with some not-so-serious blogging, all those short stories and *gasp* novels clogging up my head will have a chance to erupt forth. And if not, I'll have a nice forum to bemoan my clogged misery.
So, the stuff I want to write about: writing, of course; music, both things I love to listen to and thing I create as a hobbyist musician; life in general, and how bewildering it can be (hence the title); and, on occasion, thoughts on my day job, software development. Don't worry though, there won't be snippets of code and treatises on best practices. There are many resources that have far more knowledge in those areas than me. If anything, the area of software development I'd most like to discuss is the human side that is so often ignored. Software, after all, is made by people, thus communication and actually being able to stand each other is key. And well worth talking about, since both areas often don't go too smoothly.
Once caveat going forward: I may love to write, but that doesn't mean I'm great at spelling and grammar. I'm also a master at typos. Accept it people. That's why [sic] was invented, for people like me!
So, I hope at least a couple people follow along and have a little fun along the way. And if not, that's okay too; it reinforces the miserable writer thing.
Labels:
life,
music,
software development,
writing