PROGRAMMMING UNDER PRESSURE
Or, Kids, Don't Try This at Home!
by Tom Hudson
START Contributing Editor
Personal computer software doesn't grow on trees, nor does it spring fully formed from the forehead of Zeus. It comes from hard-working programmers such as Tom Hudson, author of DEGAS and CAD-3D. For Tom, producing hot ST software takes talent, discipline, the right programming tools--and just a pinch of "Rambo'' music. Join him as he tells you about the joys--and the hardships--of independent software development.
I remember being in eighth grade, browsing through books in the Pershing Junior High School library in Springfield, Missouri, and coming across the section of the stacks that held books on careers. Books with titles like "So You Want to be a Professional Baseball Player" and "So You Want to be a Brain Surgeon."
I never really read any of these books--I always had the idea the titles were almost sarcastic. You know, like the older sister or brother who was always ready with a nasty put-down: "So, Billy, you want to be a professional baseball player? Well, well, that's a fine career--lots of money if you make it to the major leagues, yessir! But did you know that most baseball careers last less than ten years? Or that one simple injury could end your career and you'd be lucky to end up as the bat-boy? Or that a catcher's knees can become arthritic after only five years? And don't forget that there will always be an endless supply of younger Billies to take your place if you slip a little? Gee Billy--how about being an accountant!"
Actually, these books served an important function: they pointed out the good and bad points of various occupations, letting kids know that being a professional baseball player isn't the same as getting a game together on a vacant lot with the neighborhood kids.
Funny that there weren't any books entitled "So You Want to be an Independent Software Developer." There should be--there are a lot of misconceptions floating around about the independent software developer. Many people have asked me what it's like to be a self-employed programmer and if it's really possible to succeed on your own. I think it's time to talk about it.
So You Want To Be An Independent Software Developer?
For a couple of years in the early 80's while computers were "hot" consumer items, we heard stones of kids who wrote one computer program and became millionaires. Or a guy who wrote one game, bought himself a Porsche and put himself through college with his royalties. "Gee," a lot of people thought, "the computer software industry is a big gold mine just waiting for someone to dig! I think I'll be a programmer!" You see ads with this logic on matchbook covers all the time.
However, when you heard about a person striking it rich in the computer software field, you heard about the few extremely successful (and extremely lucky) people who entered the market at the right time with the right product. But they also worked incredibly hard and had to rewrite the same program over and over for a number of computers.
The problem is that the gold mine that is the personal computer industry is pretty well "played out''right now. Sure you hit a fairly strong vein from time to time (like the Atari ST market), but sooner or later it slows down again.
When I started writing software independently, a friend of mine who is a famous programmer for a major software publisher told me that he'd be watching how I did because he wanted to know if it was still possible for a person to make a living writing personal computer software independently. He was skeptical, and it made me nervous and cautious.
The Down Side
When you have a nine-to-five job that pays you a regular paycheck every Friday, pays your health and dental insurance and gives you two weeks' paid vacation a year, it's a tough decision to leave it all for a career doing anything on your own. I don't care if it's freelance basket-weaving; you find your stomach churning more often. You get nervous a lot.
I don't want to sound like one of those books in the school library, but if you're thinking of writing software independently, be sure of a couple of things.
Do you like programming? Well, you'd better. When I wrote CAD-3D, I was putting in 18-hour days, and the remaining six hours weren't all sleep, either--I was writing code and trying to figure out bugs in my dreams. I sat in front of the computer from 8:30 a.m. until after 2 a.m. (and even until after 5 a.m. some bad nights), stopping to eat only during compiles. I'd get up at 4 a.m. to test theories about eliminating a bug. Sound like fun? Uh huh. My friends thought I was going to blow a gasket. Things aren't that bad now, because I force myself to stop working at 6 p.m., just to prevent burnout. I like programming a lot, but under the kind of pressure put on by publishers, anyone could burn out.
You may even love programming, but make no mistake--free-lance programming is a job, just like ditch-digging or driving a truck. The only difference is in the tools you use to do the job. You have to put in the effort, a minimum of eight hours a day, five days a week. Sometimes you have to put in a lot more than that. It takes discipline to keep working inside on a nice spring day when you could be out at the local pool sipping a cold one while soaking up some rays. You just can't approach professional programming on a once-in-a-while basis, like getting together a sand-lot baseball game once a week; success in professional programming requires the same dedication as major league baseball.
About The Photo
Yes, it's Tom Hudson doing what he does best--programming under pressure. The photo and swimming pool were provided by Dave Groves. And no, the ST and monitor weren't operational, and yes, if you try this with working equipment, you'll fry both your computer and yourself.
The trouble with free-lance work is that it's like a bad drug habit. As soon as you finish one project, you'd better get started on another, because programs have limited lifespans in the market place and most programmers are paid a fixed amount for each disk sold--a royalty--rather that a flat fee. If you want to write games, you're really in for some fun. Ordinarily, they have a life of just a few months before the sales slip off--in other words, one quarterly royalty period. Application programs are better, lasting over a year, or several years, if you're lucky. Their sales don't taper off as badly as games, which is one reason you don't see any ST games with my name on them.
Are you a nervous person? Do you have high blood pressure? Does your family have a history of ulcers? If you answered yes to any of these questions, think twice about independent software development. I'm not a nervous person, and I have low blood pressure. But I still get bothered every time I hear a rumor about how Atari's doing this or my software publishers are doing that. You start to get superstitious and knock on wood a lot. You buy tarot cards. You talk to yourself a lot.
You especially start talking to yourself a lot when your compiler blows up and wipes out half your hard drive. You start pulling out your hair when you find your program stops working after a compile where you changed one line of code, and after three days of mindnumbing debugging and recoding, you find that the bug is in the compiler's linker. Arrrggghhh!
The Up Side
Life as a software developer isn't all gloom and doom. In fact, it can be downright great at times--you just have to be realistic with your expectations.
The absolute best thing about independent software development is that you're your own boss. You can stay up as late as you want, watch David Letterman or whatever, sleep as late as you like and work the hours you want, as Iong as the work gets done. Most programmers I know don't get up until after 10 a.m.
Since you'll most likely be working out of your home or apartment, you can set up your office the way you want and the working conditions are up to you. Some summer afternoons, I switch on Cubs baseball games and have them on in the background. (Try that at Fruegle & Flerk Accounting )
Something else that I can enjoy while programming at home is listening to music. My personal favorites: electronic music (Tangerine Dream, Kitaro, Vangelis) for ordinary programming--it sets up a great rhythm that seems to drive me along at a steady pace and doesn't get in the way of thinking. For the code where I know exactly what I need to write, and just need to get it into the machine, there's simply no substitute for Jerry Goldsmith's "Rambo II" soundtrack. I pop it in the CD player and it's heavy-duty coding time.
If you really enjoy programming and feel the software development game is for you, here are a few tips:
First, think about your first project thoroughly, and make sure there's a market for it. Have it well underway and have a signed contract with a reputable software publisher before leaving your old job. You don't want to be out on the street begging a publisher to take your new recipe filing system for the Coleco Adam or the Mattel Aquarius (gee, anybody remember those systems?)
Speaking of contracts, find a good contract lawyer who is knowledgeable in this field and talk to an experienced software developer. They know all the ins and outs of these legal nightmares and will be able to make suggestions for changes you'll want or need.
No matter how tempting they are, be careful about accepting advances against future royalties for your work. If you take a large advance, you might not see any royalties for six months or more. Take only the advance payments you absolutely need or you may find yourself pumping gas at the Turnpike QuikPump just to get by.
As soon as you have your first project completed, get to work on the second. You'll find that the software game is a never-ending series of projects and you can't afford to slow down until you have enough products on the market to provide a steady stream of income. I didn't slow down for over two years after writing DEGAS. I was very careful in how I spent money and until a year ago I lived in a crummy apartment with a living-room ceiling that sagged like the back of a glue-factory horse. And it leaked.
This brings me to a couple of related points. First, it's a good idea to link up with a couple of different software publishers. This is a kind of safety net which will save you if one of them goes out of business. I never thought Batteries Included would buy the farm, but they did. I thanked my lucky stars I had another publisher, because even though my BI products were acquired by Electronic Arts, it was months before the sales restarted and royalties resumed. If BI had been my only publisher, I would have been flipping burgers at the local Jiffy Grease to make ends meet.
Another point here: Never give a publisher the "right of first refusal" to acquire your future products, no matter how well they treat you or how much they threaten you. Remember all those fairy tales you heard as a kid about the dummies who agree to give some gremlin their first-born child in return for a favor because it seemed like a good idea at the time? And when the kid's born the gremlin shows up and they don't want to give up the child? The same principle applies here.
Let's say you write a game for software company X, a great game marketing company, and give them the right of first refusal. In a stroke of genius, you then write the ultimate database manager. It's outside of company X's area of marketing expertise, but perfect for company Y. Unfortunately, company X has the dreaded right of first refusal and buys the program at your asking price. Sure enough, they market it miserably and you make around $20 in royalties. Get the point? If a company is reputable and does a good job marketing your work, you'll want to work with them again, even without the right of first refusal. Keep your right to work for whomever you want.
And another point: Never sign a contract for a job unless you're ready to start on it the next day. Project timetables can slip (and usually do), thanks to the horrible phenomenon known as the "creeping feature list."
It works this way. You're writing a program and several people are testing it. As they test it, they come up with ideas--lots of ideas--pages of ideas. The publisher sees some of these ideas and talks you into including them in the program, causing your schedule to slip little by little, until you're months behind. If you have another contract waiting, it has to be put off and the other publisher is upset. Take it from someone who knows--do it one contract at a time.
And for heavens sake, dont expect to go out and buy a new Porsche when you get your first royalty check. The odds are that the check won't be that big anyway, particularly if you took an advance at the start of the project. Be conservative and stick the dough in the bank. The days of Porsche-buying programmers who live in mansions are long gone, unless you're very, very lucky.
Another thing--keep it simple. If you can do the work yourself, do it. The work may be finished earlier with a partner, but partnership dilutes your royalties and complicates too many other things. And employees are verboten in my book. They really mess things up when you're trying to get started, adding worries about employment taxes, insurance and a hundred other problems. I look at it this way: If you want to be a programmer, be a programmer, not a personnel manager. Stick to what you do best.
Don't Try This At Home?
I've tried to point out the pluses and minuses of independent software development based on my three years of experience in the area. Being self-employed in the personal computer software market isn't for everyone. My final recommendation to those who are self-motivated and have confidence in their abilities is a quote from a good friend who helped me decide:
"As long as you have a college degree to fall back on to get another position, you have nothing to lose in trying to become self-employed. The worst you can do is fail."
Tom Hudson is the author of DEGAS, DEGAS Elite, CAD-3D, Cyber Control, Cyber VCR, Cyber Sculpt and The Antialiaser. He lives in a small comfortable house in Shawnee, Kansas and wants everyone to know that he is not a millionaire.