Once upon a time there lived a brown-eyed man. He was a creative soul who toiled in virtual obscurity, doing what he loved. But after many grueling years of being overworked and underpaid, the frustrated man sought out a new path in life. He shouted into the digital ether, hoping that some sentient being out there in the vast cosmos of 0's and 1's would hear his plea for guidance. He sat back, drank a raspberry margarita on Cinco De Mayo and waited.
The call came from the mystical chocolatier, Mr. Goodbar, who lived high upon a hill in his shining factory. The brown-eyed man sat down for a pow-wow with the chocolatier and they chatted about manufacturing candy bars, building software, and appeasing the Oracle. It was a good meeting.
Days passed. The brown-man spent the time watching the Steel Magnolias grow, and engaging his friends in mythical warfare with scores of tiny tin troops who battled across a killing field made of fake grass. He celebrated his wedding anniversary, taking the girl he loved to a land where tasty Italian dishes were served in countless numbers to patrons of all shapes and sizes.
He met with the chocolatier again. They seemed to hit it off. The brown-eyed man was intrigued. Perhaps his future was in the candy making business? Time would tell.
The brown-eyed man traveled to the far reaches of Virginia to contemplate his future. He walked the fields of Fredericksburg, consulting with the ghosts of long-dead Civil War soldiers. He chatted with Martha Washington at Mount Vernon, who told him there was no dishonor in working for a chocolatier. Even the men at the Game Parlor in the duchy of Woodbridge agreed, but then they would probably say anything nice just to ensure that the brown-eyed man paid for his $100+ boxes of board games and tin soldiers and went out the door wide-eyed and happy, not knowing what damage he just did to his now appreciably lighter wallet.
Upon his return, the brown-eyed man got a phone call. It was from a representative of the chocolatier. The candy-maker wanted him to come work for his company. Heath Bars, Peppermint Patties, and Reeses Peanut Butter Cups were calling. A few were even eaten in celebration, and there was much rejoicing.
And then it was JUNE...
Yes, it was a crazy month for me (the brown eyed man), one filled with lots of excitement and anticipation. I landed a new consulting job as an Application Design Analyst working at Hershey (the candy folks). I'm optimistic that it will work out well. But it's scary. After running my own small company for 14+ years, the thought of working for someone else is a very strange feeling to be sure. I hope I like it, and I hope they like me. Wish me luck!
Showing posts with label software development. Show all posts
Showing posts with label software development. Show all posts
Tuesday, June 9, 2009
Tuesday, April 15, 2008
Good Customers vs. Bad Customers
I've run my own tiny software business since 1995. Before that I worked in a corporate IT department for 8 years. Over the 21+ years that I've been in the business of creating, selling, and supporting computer software, I have run into all kinds of customers. I'm sure that anyone who has been in the software industry for a long time has their fair share of heartwarming stories as well as utter horror stories to tell.
Over the years, I've encountered customers who are highly intelligent, creative, tech savvy, friendly, polite, and downright funny. It's always a joy to meet these nice people, even if it's only in the context of a business relationship.
What might be surprising to learn is that many of my best customers have turned out to be people who needed a little help when they first started using the software. These folks were not afraid to ask for assistance during the inevitable "learning phase" that occurs when you start to use virtually every software program of at least moderate complexity. Nor were they "too proud" to ask for help. They simply asked, got help, and went on to become longtime happy customers who purchase new products every year. I treat these core customers as I would treat my friends; going the extra mile to keep them happy in return for their years of continued support. The kind comments that I've received from these "good customers" has been the fuel that's kept me going for many years.
But as they say, every rose has it's thorn. While MBA's and politically correct blowhards claim that "the customer is always right" and "there are no bad customers", the simple reality is that in any business, 5% to 10% of your customers will be jerks and idiots. If you don't agree with that, then start your own business and get back to me in 10 years. And believe me, there's nothing quite like technology (i.e. computers) that brings out the absolute worst in people.
There are several common types of bad customers that I've come across. Here are a few of the classics:
Mr. Last Minute
This is the guy who buys his fantasy baseball draft prep & tracking software at 10 PM on Friday evening, even though his draft is being held at Noontime on Saturday. Five minutes after he orders, he sends an email to the customer service staff demanding his software unlock code. After 10 minutes pass and he doesn't get a response, he fires off another email saying "where's my code" and complains of shoddy customer service. Although the company website clearly states that all emails are answered within 48 hours and that the company offices are closed on the weekends (it's a regular Mon-Fri business), he calls the company hotline and leaves an urgent and somewhat snide message. He needs his code NOW. After all, he only has a few hours to use this software until his draft tomorrow!
When I logon to check my business email on Saturday morning, I see Mr. Last Minute's messages and hear his urgent phone plea. Although I'm not woking today, I'll still make it a point to send the man his unlock code. Inevitably, I will get a followup from Mr. Last Minute on Sunday telling me that he never got his unlock code or it was too late (he had already left for his draft). And surprise surprise, he wasn't able to learn the software in 2 or 3 hours and setup everything for his draft. Oh, and he wants a refund.
Not only is Mr. Last Minute the worst kind of procrastinator and unreasonable in his demands, by ordering software 14 hours before his baseball draft he's also just plain stupid. What he really needed was a $7 magazine, not a sophisticated software program.
Mr. Know It All
You will run across Mr. Know It All in all walks of life. He is particularly frustrating to deal with in the software world.
Mr. Know It All has setup his software and database, but something isn't working quite right. So he emails you saying that "I setup everything exactly as I was supposed to, but the software just doesn't work." He doesn't give you any details about his problem to speak of, so you politely respond to his email with a request for additional details about what his problem is. He gets back to you with some very flimsy information, but since you developed the software and have many years of experience helping people, you have enough of an inkling to guess what he did wrong. You respond with a solution. He replies saying that you're wrong, don't know what you're talking about, and basically tells you why your software is utterly broken. He did everything 100% right. There's absolutely NO WAY that he could have made a mistake.
Sometimes, this guy will threaten you and demand a refund if you can't help him. So you resort to having this schmuck send you his database. You hook it up in the lab and discover what he did wrong to screw up his data. You send the database back to him with a detailed explanation of where he messed up. He will never say thanks for helping. That would be admitting that he actually doesn't know everything. But at least you have finally shut him up, at least until the next problem comes along that in NO WAY POSSIBLE could be his fault.
Mr. Half Wit
I'm not trying to be mean, but there are some people who should simply not be allowed to touch a computer. When people say that education is declining in America, they're right. I have seen it first-hand. The number of people who write wholly unintelligible emails is astounding. I read messages with absolutely no punctuation, with incoherent run-on sentences, and with spelling errors that would make a 5th grade English teacher cry. Not to mention that I actually receive tech support emails along the lines of "my Rhino don't work, can you help?". Ummm... that really narrows down the problem for me Tex.
Mr. Half Wit doesn't know all that much about computers. He's not quite sure how to download a file, and he doesn't know how to look at the folders on his hard drive. Nevertheless, he just plunked down a pile of Hamiltons to use an advanced piece of software to run his fantasy baseball league. He doesn't read the Help files because "I don't learn too good by readin', I'd rather you walk me through it over the phone". Mr. Half Wit is in WAY over his head. Couldn't the league members have found somebody a wee bit more competent to be the league commissioner?
I understand that not everyone is a smart cookie, and I try to be very very patient with everyone. I will help Mr. Half Wit as much as humanly possible, but it's a major waste of my time and a huge money loser for my company. He'll eventually move on to something else next year, drop into oblivion, and cease to be your problem. But the time you wasted on helping him for free costs you lots of money, and it would have been far better had he never ordered from you to begin with.
Mr. Impatient
Mr. Bullshitter
At last we come to Mr. Bullshitter. You've been using the software religiously for years, and you KNOW that it works great. Countless customers have sent you kind notes telling you how much they like your product. You get lots of repeat sales.
But along comes Mr. BS to ruin your day. He buys your product, installs it, and then sends you an angry email telling you that he gets continual errors when he uses the software. Not only doesn't X function work, but Y and Z are broken as well. The darn thing just crashes all the time. It's junk and you're a shyster.
You offer to help Mr. Bullshitter and ask him to explain exactly what's troubling him. He never sends you any details, any screen shots or files, and he'll never let you see his database. He just rants and raves and insults you. In essence, he never gives you the chance to PROVE to him that the software does indeed work as advertised.
Basically, this guy is just a Class A jerk. There's nothing you can do about him since he resists your efforts to help him. He'll either just fade way, or if your company offers refunds you can give him his money back and say good riddance.
IN CONCLUSION
Fortunately, I would say that 90% of my customers are pleasant to deal with. They're certainly not jerks, egomaniacs, or morons. And I respect them because they treat me and my company with respect. If they need help, they go about things the right way to get it. They are polite and say thank you when it's warranted. They're reasonable. In short, they're GOOD customers.
If there was some way to screen the small percentage of BAD customers before they bought products from us, I would jump on that in a heartbeat. They waste your time and make you lose money. They put you in a foul mood. They make otherwise sane computer software developers question why they ever got into this field to begin with. But that's life folks. You can NEVER please everyone. Some people will love your product, and some will hate it. There's absolutely nothing you can do about it... except to maybe vent about it on your blog!
Over the years, I've encountered customers who are highly intelligent, creative, tech savvy, friendly, polite, and downright funny. It's always a joy to meet these nice people, even if it's only in the context of a business relationship.
What might be surprising to learn is that many of my best customers have turned out to be people who needed a little help when they first started using the software. These folks were not afraid to ask for assistance during the inevitable "learning phase" that occurs when you start to use virtually every software program of at least moderate complexity. Nor were they "too proud" to ask for help. They simply asked, got help, and went on to become longtime happy customers who purchase new products every year. I treat these core customers as I would treat my friends; going the extra mile to keep them happy in return for their years of continued support. The kind comments that I've received from these "good customers" has been the fuel that's kept me going for many years.
But as they say, every rose has it's thorn. While MBA's and politically correct blowhards claim that "the customer is always right" and "there are no bad customers", the simple reality is that in any business, 5% to 10% of your customers will be jerks and idiots. If you don't agree with that, then start your own business and get back to me in 10 years. And believe me, there's nothing quite like technology (i.e. computers) that brings out the absolute worst in people.
There are several common types of bad customers that I've come across. Here are a few of the classics:
Mr. Last Minute
This is the guy who buys his fantasy baseball draft prep & tracking software at 10 PM on Friday evening, even though his draft is being held at Noontime on Saturday. Five minutes after he orders, he sends an email to the customer service staff demanding his software unlock code. After 10 minutes pass and he doesn't get a response, he fires off another email saying "where's my code" and complains of shoddy customer service. Although the company website clearly states that all emails are answered within 48 hours and that the company offices are closed on the weekends (it's a regular Mon-Fri business), he calls the company hotline and leaves an urgent and somewhat snide message. He needs his code NOW. After all, he only has a few hours to use this software until his draft tomorrow!
When I logon to check my business email on Saturday morning, I see Mr. Last Minute's messages and hear his urgent phone plea. Although I'm not woking today, I'll still make it a point to send the man his unlock code. Inevitably, I will get a followup from Mr. Last Minute on Sunday telling me that he never got his unlock code or it was too late (he had already left for his draft). And surprise surprise, he wasn't able to learn the software in 2 or 3 hours and setup everything for his draft. Oh, and he wants a refund.
Not only is Mr. Last Minute the worst kind of procrastinator and unreasonable in his demands, by ordering software 14 hours before his baseball draft he's also just plain stupid. What he really needed was a $7 magazine, not a sophisticated software program.
Mr. Know It All
You will run across Mr. Know It All in all walks of life. He is particularly frustrating to deal with in the software world.
Mr. Know It All has setup his software and database, but something isn't working quite right. So he emails you saying that "I setup everything exactly as I was supposed to, but the software just doesn't work." He doesn't give you any details about his problem to speak of, so you politely respond to his email with a request for additional details about what his problem is. He gets back to you with some very flimsy information, but since you developed the software and have many years of experience helping people, you have enough of an inkling to guess what he did wrong. You respond with a solution. He replies saying that you're wrong, don't know what you're talking about, and basically tells you why your software is utterly broken. He did everything 100% right. There's absolutely NO WAY that he could have made a mistake.
Sometimes, this guy will threaten you and demand a refund if you can't help him. So you resort to having this schmuck send you his database. You hook it up in the lab and discover what he did wrong to screw up his data. You send the database back to him with a detailed explanation of where he messed up. He will never say thanks for helping. That would be admitting that he actually doesn't know everything. But at least you have finally shut him up, at least until the next problem comes along that in NO WAY POSSIBLE could be his fault.
Mr. Half Wit
I'm not trying to be mean, but there are some people who should simply not be allowed to touch a computer. When people say that education is declining in America, they're right. I have seen it first-hand. The number of people who write wholly unintelligible emails is astounding. I read messages with absolutely no punctuation, with incoherent run-on sentences, and with spelling errors that would make a 5th grade English teacher cry. Not to mention that I actually receive tech support emails along the lines of "my Rhino don't work, can you help?". Ummm... that really narrows down the problem for me Tex.
Mr. Half Wit doesn't know all that much about computers. He's not quite sure how to download a file, and he doesn't know how to look at the folders on his hard drive. Nevertheless, he just plunked down a pile of Hamiltons to use an advanced piece of software to run his fantasy baseball league. He doesn't read the Help files because "I don't learn too good by readin', I'd rather you walk me through it over the phone". Mr. Half Wit is in WAY over his head. Couldn't the league members have found somebody a wee bit more competent to be the league commissioner?
I understand that not everyone is a smart cookie, and I try to be very very patient with everyone. I will help Mr. Half Wit as much as humanly possible, but it's a major waste of my time and a huge money loser for my company. He'll eventually move on to something else next year, drop into oblivion, and cease to be your problem. But the time you wasted on helping him for free costs you lots of money, and it would have been far better had he never ordered from you to begin with.
Mr. Impatient
This guy is sort of a mixture between Mr. Last Minute and Mr. Know It All. He buys your software, uses it for 2 days, and then abruptly demands a refund because it's "too complicated", "takes too long to setup", or is "not intuitive enough".
Counting high school, college, and professional work, I've been involved in the computer software field for close to 30 years. Without any shame whatsoever, I will say that there's simply no way that I can learn to use a new software program in 2 days (unless the program is quite trivial). But hey, Mr. Impatient is utterly outraged when he cannot learn your program in a day or two; a program that took you 2.5 years to develop (just for version 1.0).
Mr. Impatient is not only terribly unrealistic in his expectations, he has an enormously over-inflated ego. He believes that he's so smart that he can learn in 2 days what it takes everyone else 2 weeks to learn.
There are two types of responses that you'll get from Mr. Impatient. The first goes something like this: "I use computers a lot and am not a newbie, but your software is just too hard to use even for someone like me. How can you even sell this program?" Obviously, Mr. Impatient thinks he's such a computer wiz that if he can't figure things out in 2 days, well then your software must be complete crap. What a load of hooey. I guess all those happy users we have amassed over the years don't matter, huh? Anyone who thinks you can stay in business for 13+ years by selling crap software must be smoking crack.
The second type of response you get from Mr. Impatient falls along these lines: "setup takes too long. If you skip over some of the setup steps, the software won't produce the results I want." Well duh! For a supposedly smart person, Mr. Impatient gets an "F" in logical thinking. He wants the software to spit out customized results tailored to his particular settings, yet he doesn't want to waste the time entering any of those settings. He must be hoping to get results through pure magic. You load the software, it reads your mind, you click a button and poof, instant results!
Of course, Mr. Impatient will never ask for help when you offer it. Actually working through a problem would fix his issue, but he doesn't have the time for that. He has no time for help manuals or tech support emails. If he can't figure it out right away, you're history.
Dealing with Mr. Impatient is a very good reason why your software company should, if at all possible, offer free trial software. It allows people to download and install the program, take a quick look around, and decide if they want to actually buy a full copy. Hopefully, this will weed out the Mr. Impatients in your life. You pray that these guys realize what you already know, that unless you're really willing to put in the time to learn a new program, don't even bother buying it.
Mr. Bullshitter
At last we come to Mr. Bullshitter. You've been using the software religiously for years, and you KNOW that it works great. Countless customers have sent you kind notes telling you how much they like your product. You get lots of repeat sales.
But along comes Mr. BS to ruin your day. He buys your product, installs it, and then sends you an angry email telling you that he gets continual errors when he uses the software. Not only doesn't X function work, but Y and Z are broken as well. The darn thing just crashes all the time. It's junk and you're a shyster.
You offer to help Mr. Bullshitter and ask him to explain exactly what's troubling him. He never sends you any details, any screen shots or files, and he'll never let you see his database. He just rants and raves and insults you. In essence, he never gives you the chance to PROVE to him that the software does indeed work as advertised.
Basically, this guy is just a Class A jerk. There's nothing you can do about him since he resists your efforts to help him. He'll either just fade way, or if your company offers refunds you can give him his money back and say good riddance.
IN CONCLUSION
Fortunately, I would say that 90% of my customers are pleasant to deal with. They're certainly not jerks, egomaniacs, or morons. And I respect them because they treat me and my company with respect. If they need help, they go about things the right way to get it. They are polite and say thank you when it's warranted. They're reasonable. In short, they're GOOD customers.
If there was some way to screen the small percentage of BAD customers before they bought products from us, I would jump on that in a heartbeat. They waste your time and make you lose money. They put you in a foul mood. They make otherwise sane computer software developers question why they ever got into this field to begin with. But that's life folks. You can NEVER please everyone. Some people will love your product, and some will hate it. There's absolutely nothing you can do about it... except to maybe vent about it on your blog!
Wednesday, December 26, 2007
Corporate IT vs. micro ISV
More often than not, I use this blog to share my ideas about games, especially board games, miniatures games, and wargames. But one of the sides of the Six Sided Rhinoceros involves software, and in particular, software development.
Having been a software developer (and having studied it) more than half of my life, I feel very qualified to discuss the topic from a real world, acutely human point of view. There are many so-called software experts whose heads are stuck high in the clouds of academia and arcane philosophical approaches to software design. Sometimes, their esoteric discussions of software development are interesting and inspiring. More often than not, however, they are complete heaps of self-absorbed and obfuscated rubbish.
I don't want to read rubbish. I want down-to-earth practical advice that's right to the point. I don't have the time to read your 800-page treatise on optimizing my project management process or user-acceptance testing process. I need to get things done... NOW. Too much of what's written about software development on the web is 95% horse-crap and 5% useful.
Perhaps nowhere in the world of software development are there more heaping piles of BS than in Corporate IT departments. I had the good fortune of working for a local Fortune 500 company named AMP Incorporated (now Tyco Electronics) as my first job out of college. I learned a hell of a lot about the manufacturing process, about working on large software development projects with lots of other people, about the major phases of large-scale project development, and I met many great people there, several of whom have become lifelong friends.
But I never felt that AMP (or Corporate America in general) was the place where you really learned how to become a great software developer -- or software architect as I prefer to call it. Oh sure, you'll pickup some new languages and technical knowledge along the way. But writing Cobol code or IMS database calls, copying reusable chunks of CICS code, or fiddling with JCL is NOT software development. If you think it is, you are NOT a software developer. Programming is only one component of being a true software developer/architect. There is so much more involved in the big picture.
I didn't become a TRUE software architect until I started my micro ISV (defined as a one-person independent software vendor). Only when you've experienced what it's actually like to:
For starters, in the Corporate IT world, most employees have very specific jobs. They are programmers or systems analysts or DBA's or project managers or IT executives. Of those 7 things that I mentioned above, these folks have their fingers in 2 or 3 pies at most. The IT execs think up the idea. The systems analysts, with the help of "user experts", create functional specs for the idea. The DBA's create and maintain the database that everything ties into. The specs are handed off to the programmers who code it all and do some initial testing. The project managers keep the work moving along and ensure that everyone is working together. When the time comes for serious testing, the analysts, managers, and users get together and beat the hell out the system to a reasonable degree, and then the whole shebang goes live. And then, because 80-100 people or more were involved in creating this complex beast, the inevitable period of "bug fixing and enhancement requests" comes to the fore. Everyone points their finger at somebody else because they only were involved in one small part of the overall project, and there are so many easy targets to shift the blame to. This period can literally last for years.
As a micro ISV, you are responsible for everything. You don't have the luxury of having a narrowly specific job. You need to brainstorm ideas and come up with something brilliant. You do the necessary market research to see if it's viable. You create the functional blueprint. You chose the technical tools to use, create and manage the database, do the programming, test everything out, fix the bugs, and create the installation routines. You come up with a product price. You maintain an e-commerce site so people can buy your software, and perhaps find other distributors who will carry your product. You spend your own money to market and promote the software, and answer queries from potential customers on why they should buy from you. You fulfill the orders and deal with any problems that might arise. You do your best to provide great tech support and build a happy user community. You receive and act on user feedback. You fix bugs if necessary, and are always adding little enhancements along the way to keep people happy. You deal with the occasional idiot customer who is so irrational or mean-spirited that you wonder why you ever got into the field of software development in the first place. And the support and upgrade process never ends, until you decide to stop selling your software product. Oh and once you decide to make a 2nd product, the entire process repeats itself all over again and co-mingles with the existence of product #1.
Meanwhile, back in Corporate America...
Not only do Corporate IT workers have very specific roles, but they often have a captive user audience. This was especially true at AMP, where we developed in-house software to serve our internal manufacturing processes. There was no worry or wonder about whether or not a market actually existed for the software we were creating. We built it, and those users were damn well going to use it whether they liked it or not. There was absolutely no need for "marketing" in its truest sense. This was simply, we make it, you take it.
In the outside world of independent software development, as is the case for most commercial products, you make it and pray to God that they like it enough to take it. Not only did you make several assumptions and gut decisions during your development process, and take a financial risk to get the product to market, but there are zillions of things outside of your control that determine whether your software will become a real success or not. Simply having a good product doesn't guarantee diddly squat. You've not only got to work really hard, you've got to be extremely lucky as well. Figuring out what goes over well with the fickle public is anything but an exact science. Few of my peers in Corporate IT will ever deal with any of those concerns, and most could care less about it. They simply do their particular jobs in a vacuum, realizing that they'll still get paid even if the end-users wind up hating the software or ditch it for something cheaper, newer, or glitzier.
Another fact of Corporate IT development in many cases is that there's a very narrow user base that the software is designed for. You are building a product for users who all have some degree of computer literacy (because they'll be using the software as part of their day-to-day job after all). Oftentimes, these users are also functional experts in the field that your software applies to.
While creating in-house software for AMP, it was quite evident that most of the users of our software knew a helluva lot more about the process of electronics manufacturing than the people who designed the system. That doesn't necessarily make them great software designers, but it does mean that their opinions on what major functions the software should perform should far outweigh those of the IT execs.
My most rewarding years as a systems analyst at AMP were those where my boss allowed me to work closely with the user community to create new functions that solved problems that those users felt were most important. In a sense, I was a "free agent". I worked with the users to build cool new stuff and enhanced functions that helped them tremendously. I got to use my creativity to a much greater extent than ever before. I was not just another analyst who stuck to a regimented routine and solely did tech support or addressed the backlog of system fixes. I loved that role and received many compliments from the users during those years. They found an analyst who was interested in working with them to think outside the box and solve nagging problems that "the suits" didn't seemingly care enough about.
Unfortunately, the Corporate IT mindset is not one where a "free agent" mentality is accepted in the long term. Despite my boss's pleas on my behalf, the higher-ups eventually decided that I should be reigned in and controlled a bit more. They didn't want me becoming an exception to what everyone else was doing.
Yes, I was creative and doing an excellent job. My job reviews and the user community all said so. But their thinking was that I needed to do a little less "design and development" and focus more on boring crap like divisional re-orgs and little technical details like honing my Easytrieve and JCL skills. In short, "hey Steve, you're having too much fun & success actually doing something useful, here's some horse shit project to work on so you're just like everyone else." What a bunch of idiots! Eventually, my boss left the company and I had a new boss who was determined to have me "assimilated". That was the beginning of the end for me at AMP. I gazed into the crystal ball and saw the long-term outlook there and it was just not for me. AMP had become a JOB. It was not the place for creative souls who needed to run free with their great ideas. I look back now and realize that I made a smart decision. I'd probably still be doing the same stuff if I was there today and would have missed out on an exciting chapter in my professional life as a software developer.
Being a micro ISV is all about creativity, passion, variety, and independence. You'll wear more hats than you'll ever imagine. And it's a far, far tougher job than working in Corporate America.
I used to get extremely pissed off when some of my old work-mates would kid me about being self-employed. They envisioned that I got to slack off, play games all day, and generally play hooky from the "real work" that they were doing. "What a bunch of jackasses!", I thought to myself. If they only knew that you work 10 times harder when you're on your own. Nobody is there to motivate you; it comes entirely from within. You do so many more things than you ever did in the tightly focused, insulated world of Corporate IT. Nobody is around to assign you work or keep you on schedule. You think it up, you decide what's critical, and you do it or else you go out of business real fast. You work lots of nights and weekends. And you do all that without any steady checks coming in. Great fun right?
After many years I've finally grown thick enough skin and gained the wisdom to realize that whoever thinks I'm goofing off and really not working is just a sad, sad, mentally deficient person. People often make fun of things that they know nothing about. They throw stones and make jokes, never once actually trying to do the thing that they're making fun of. I've learned to slough off the barbs of the dimwitted. I don't give dolts the time of day anymore.
If you've read down this far, you may be wondering why I bothered to write this post. I did it for two reasons. First, I wanted to shed a little light on the differences between the worlds of Corporate IT and micro ISV's. They are vastly different. I respect both camps, having worked in both of them. Generally speaking, the money is much better in Corporate IT, but the level of self-satisfaction and accomplishment you can achieve is much greater in the micro ISV world. It's the old money-vs-happiness trade-off. I'm hoping to find the happy medium someday.
Secondly, I wanted to write this post for all the entrepreneurs out there who are struggling to make their personal software businesses work. I wanted them to know that the grass is NOT any greener on the corporate side of the fence. Your pocketbook will fatten, but in all likelihood, your happiness will suffer -- especially if you are a highly creative soul. The road of a micro ISV is a hard one, and unless you're very lucky, your business will fail within 5 years. But even though the odds are stacked against you, it is people like you who make the biggest difference in the world. Without people who are willing to put their heart & soul and passion out there for everyone else to share in, there would be no great advancement in society. I admire you. The world needs more of you. Keep on truckin' and I wish you much prosperity and self-fulfillment in 2008.
To all my friends in Corporate IT, I miss you and best of luck in the New Year. Even though I am no longer one of you, I still think of you on a regular basis. Don't let "the suits" get you down. They aren't any better than you, they just wield more power. And if you ever get tired of that power struggle, don't forget that there's a whole wide world out here for you. Carpe diem!
Having been a software developer (and having studied it) more than half of my life, I feel very qualified to discuss the topic from a real world, acutely human point of view. There are many so-called software experts whose heads are stuck high in the clouds of academia and arcane philosophical approaches to software design. Sometimes, their esoteric discussions of software development are interesting and inspiring. More often than not, however, they are complete heaps of self-absorbed and obfuscated rubbish.
I don't want to read rubbish. I want down-to-earth practical advice that's right to the point. I don't have the time to read your 800-page treatise on optimizing my project management process or user-acceptance testing process. I need to get things done... NOW. Too much of what's written about software development on the web is 95% horse-crap and 5% useful.
Perhaps nowhere in the world of software development are there more heaping piles of BS than in Corporate IT departments. I had the good fortune of working for a local Fortune 500 company named AMP Incorporated (now Tyco Electronics) as my first job out of college. I learned a hell of a lot about the manufacturing process, about working on large software development projects with lots of other people, about the major phases of large-scale project development, and I met many great people there, several of whom have become lifelong friends.
But I never felt that AMP (or Corporate America in general) was the place where you really learned how to become a great software developer -- or software architect as I prefer to call it. Oh sure, you'll pickup some new languages and technical knowledge along the way. But writing Cobol code or IMS database calls, copying reusable chunks of CICS code, or fiddling with JCL is NOT software development. If you think it is, you are NOT a software developer. Programming is only one component of being a true software developer/architect. There is so much more involved in the big picture.
I didn't become a TRUE software architect until I started my micro ISV (defined as a one-person independent software vendor). Only when you've experienced what it's actually like to:
- Think up a product idea from scratch
- Formulate that idea into a viable functional blueprint for software
- Spend months or even years to program it
- Test out your creation and fine-tune it
- Market it to the general public
- Let total strangers use it and provide you with unsolicited feedback
- Support it and upgrade it for as long as it exists
Then and only then will you understand what the term "software architect" really means.
Love them as I may, most of my friends in the Corporate IT world have absolutely no clue what it's like to be involved in the world of independent software development. Even though they're in the business of software, their world is totally foreign to what I do for a living.For starters, in the Corporate IT world, most employees have very specific jobs. They are programmers or systems analysts or DBA's or project managers or IT executives. Of those 7 things that I mentioned above, these folks have their fingers in 2 or 3 pies at most. The IT execs think up the idea. The systems analysts, with the help of "user experts", create functional specs for the idea. The DBA's create and maintain the database that everything ties into. The specs are handed off to the programmers who code it all and do some initial testing. The project managers keep the work moving along and ensure that everyone is working together. When the time comes for serious testing, the analysts, managers, and users get together and beat the hell out the system to a reasonable degree, and then the whole shebang goes live. And then, because 80-100 people or more were involved in creating this complex beast, the inevitable period of "bug fixing and enhancement requests" comes to the fore. Everyone points their finger at somebody else because they only were involved in one small part of the overall project, and there are so many easy targets to shift the blame to. This period can literally last for years.
As a micro ISV, you are responsible for everything. You don't have the luxury of having a narrowly specific job. You need to brainstorm ideas and come up with something brilliant. You do the necessary market research to see if it's viable. You create the functional blueprint. You chose the technical tools to use, create and manage the database, do the programming, test everything out, fix the bugs, and create the installation routines. You come up with a product price. You maintain an e-commerce site so people can buy your software, and perhaps find other distributors who will carry your product. You spend your own money to market and promote the software, and answer queries from potential customers on why they should buy from you. You fulfill the orders and deal with any problems that might arise. You do your best to provide great tech support and build a happy user community. You receive and act on user feedback. You fix bugs if necessary, and are always adding little enhancements along the way to keep people happy. You deal with the occasional idiot customer who is so irrational or mean-spirited that you wonder why you ever got into the field of software development in the first place. And the support and upgrade process never ends, until you decide to stop selling your software product. Oh and once you decide to make a 2nd product, the entire process repeats itself all over again and co-mingles with the existence of product #1.
Meanwhile, back in Corporate America...
Not only do Corporate IT workers have very specific roles, but they often have a captive user audience. This was especially true at AMP, where we developed in-house software to serve our internal manufacturing processes. There was no worry or wonder about whether or not a market actually existed for the software we were creating. We built it, and those users were damn well going to use it whether they liked it or not. There was absolutely no need for "marketing" in its truest sense. This was simply, we make it, you take it.
In the outside world of independent software development, as is the case for most commercial products, you make it and pray to God that they like it enough to take it. Not only did you make several assumptions and gut decisions during your development process, and take a financial risk to get the product to market, but there are zillions of things outside of your control that determine whether your software will become a real success or not. Simply having a good product doesn't guarantee diddly squat. You've not only got to work really hard, you've got to be extremely lucky as well. Figuring out what goes over well with the fickle public is anything but an exact science. Few of my peers in Corporate IT will ever deal with any of those concerns, and most could care less about it. They simply do their particular jobs in a vacuum, realizing that they'll still get paid even if the end-users wind up hating the software or ditch it for something cheaper, newer, or glitzier.
Another fact of Corporate IT development in many cases is that there's a very narrow user base that the software is designed for. You are building a product for users who all have some degree of computer literacy (because they'll be using the software as part of their day-to-day job after all). Oftentimes, these users are also functional experts in the field that your software applies to.
While creating in-house software for AMP, it was quite evident that most of the users of our software knew a helluva lot more about the process of electronics manufacturing than the people who designed the system. That doesn't necessarily make them great software designers, but it does mean that their opinions on what major functions the software should perform should far outweigh those of the IT execs.
My most rewarding years as a systems analyst at AMP were those where my boss allowed me to work closely with the user community to create new functions that solved problems that those users felt were most important. In a sense, I was a "free agent". I worked with the users to build cool new stuff and enhanced functions that helped them tremendously. I got to use my creativity to a much greater extent than ever before. I was not just another analyst who stuck to a regimented routine and solely did tech support or addressed the backlog of system fixes. I loved that role and received many compliments from the users during those years. They found an analyst who was interested in working with them to think outside the box and solve nagging problems that "the suits" didn't seemingly care enough about.
Unfortunately, the Corporate IT mindset is not one where a "free agent" mentality is accepted in the long term. Despite my boss's pleas on my behalf, the higher-ups eventually decided that I should be reigned in and controlled a bit more. They didn't want me becoming an exception to what everyone else was doing.
Yes, I was creative and doing an excellent job. My job reviews and the user community all said so. But their thinking was that I needed to do a little less "design and development" and focus more on boring crap like divisional re-orgs and little technical details like honing my Easytrieve and JCL skills. In short, "hey Steve, you're having too much fun & success actually doing something useful, here's some horse shit project to work on so you're just like everyone else." What a bunch of idiots! Eventually, my boss left the company and I had a new boss who was determined to have me "assimilated". That was the beginning of the end for me at AMP. I gazed into the crystal ball and saw the long-term outlook there and it was just not for me. AMP had become a JOB. It was not the place for creative souls who needed to run free with their great ideas. I look back now and realize that I made a smart decision. I'd probably still be doing the same stuff if I was there today and would have missed out on an exciting chapter in my professional life as a software developer.
Being a micro ISV is all about creativity, passion, variety, and independence. You'll wear more hats than you'll ever imagine. And it's a far, far tougher job than working in Corporate America.
I used to get extremely pissed off when some of my old work-mates would kid me about being self-employed. They envisioned that I got to slack off, play games all day, and generally play hooky from the "real work" that they were doing. "What a bunch of jackasses!", I thought to myself. If they only knew that you work 10 times harder when you're on your own. Nobody is there to motivate you; it comes entirely from within. You do so many more things than you ever did in the tightly focused, insulated world of Corporate IT. Nobody is around to assign you work or keep you on schedule. You think it up, you decide what's critical, and you do it or else you go out of business real fast. You work lots of nights and weekends. And you do all that without any steady checks coming in. Great fun right?
After many years I've finally grown thick enough skin and gained the wisdom to realize that whoever thinks I'm goofing off and really not working is just a sad, sad, mentally deficient person. People often make fun of things that they know nothing about. They throw stones and make jokes, never once actually trying to do the thing that they're making fun of. I've learned to slough off the barbs of the dimwitted. I don't give dolts the time of day anymore.
If you've read down this far, you may be wondering why I bothered to write this post. I did it for two reasons. First, I wanted to shed a little light on the differences between the worlds of Corporate IT and micro ISV's. They are vastly different. I respect both camps, having worked in both of them. Generally speaking, the money is much better in Corporate IT, but the level of self-satisfaction and accomplishment you can achieve is much greater in the micro ISV world. It's the old money-vs-happiness trade-off. I'm hoping to find the happy medium someday.
Secondly, I wanted to write this post for all the entrepreneurs out there who are struggling to make their personal software businesses work. I wanted them to know that the grass is NOT any greener on the corporate side of the fence. Your pocketbook will fatten, but in all likelihood, your happiness will suffer -- especially if you are a highly creative soul. The road of a micro ISV is a hard one, and unless you're very lucky, your business will fail within 5 years. But even though the odds are stacked against you, it is people like you who make the biggest difference in the world. Without people who are willing to put their heart & soul and passion out there for everyone else to share in, there would be no great advancement in society. I admire you. The world needs more of you. Keep on truckin' and I wish you much prosperity and self-fulfillment in 2008.
To all my friends in Corporate IT, I miss you and best of luck in the New Year. Even though I am no longer one of you, I still think of you on a regular basis. Don't let "the suits" get you down. They aren't any better than you, they just wield more power. And if you ever get tired of that power struggle, don't forget that there's a whole wide world out here for you. Carpe diem!
Wednesday, September 12, 2007
Overwhelmed and Underpaid
So you want to become a micro ISV (independent software vendor)? I've got a really good suggestion for you: don't do it. It's a real struggle. Herding cats is much easier. You can thank me later for the 10 years that I've added onto your life expectancy.
Hmmm... You're still not convinced eh? You're one of those people who love the uber-difficult challenges in life. Well, that's a start at least. Because in the wide world of independent software development where so many smart, creative, and well-educated people end up becoming overwhelmed and underpaid, you've got to possess the will to soldier on at a bare minimum.
I came across an old blog-post that I wrote in 2005 for my now defunct Mad Rhinoceros blog. I wanted to re-post it here for two reasons. First, it does a nice job of capturing the essence of the "overwhelmed" feeling that we software entrepreneurs often experience on a regular basis. And secondly, it clearly shows that sometimes the best laid plans fail to work out. In this particular case, the failure was simply due to lack-of-time, the arch nemesis of all micro businesses.
Read on...
[From the Mad Rhinoceros, Sep 1, 2005]
The life of a small, independent software developer is one where you wear many hats. So many hats in fact, that I ought to open my own damn hat store. By the way, if anyone knows where you can buy one of those cool hats the Pope wears, let me know.
The most enjoyable part of my job is brainstorming ideas for cool software products, creating the functional specs for them, and then actually creating the database and programming & testing the software. For those of you who don't know, creating quality software is a long and arduous process. Even with rapid application development tools, there are scads of steps in the process and zillions of places to screw up. But there's nothing quite like the feeling of spending your time doing mental gymnastics and communing with the spirit of Einstein, and to then see your creation come to life. It's a Frankenstein moment of utter excitement.
Unfortunately, just like Dr. Frankenstein, there's a monster to deal with. And that monster rears its ugly head in the shape of all the things you DON'T really prefer spending your time on. There's business planning and marketing. There's web site maintenance to tend to. There's pre-sales inquiries to address, and after-sale customer service and technical support to provide. And there are business dealings to consider and consultants to manage. All of these things are vital to running a successful company and can't be ignored. But let's face it, most software entrepreneurs would rather be creating their next digital golem and nurturing it to life.
So what's the point of all this? The point is that there are just too many things vying for your attention. The trick of not going completely insane is to periodically figure out how you can eliminate the loser tasks and how to streamline your operation. It occurred to me shortly after starting this blog that it could help me streamline Rhino Software's web site.
For a long time I've wanted to find a reasonable way to stay in touch with faithful customers and site surfers that didn't require too much of hit on my time (which there is never enough of). I've thought about writing a periodic newsletter to share tips about Rhino Baseball, Rhino Hockey, and other software applications. I wanted to share comments & insights on fantasy sports, games, and the software business for small/micro companies. Basically, I just wanted to do a better job of reaching out to people and providing a deeper sense of community between us all.
So far, that reaching out has been mostly limited to helping folks with their customer support issues. And while customers always praise me for the excellent help that I provide them, I only really get to talk to a small percentage of you guys. So I thought, why not incorporate news, tips, commentary, and surveys into various pages of the RhinoSoftware.com site? Wouldn't that be cool?
Well... Okay maybe it didn't turn out to be so cool after all. Despite my best intentions, I haven't made the time to write software tips articles for the Ask Reggie Rhino page, provide ongoing commentary on the Sports Buzz page, or squeeze in ideas about software development on the Tech Talk page. About the only thing I do stay current with is the What's New stuff on the front page. So here's what I've decided. All of those things (except for the news on the front page) are going away. They will be put out to pasture to frolic in the Land of What Might Have Been. This blog is going to take their place. I am going to divide & conquer. Reggie Rhino will bring his bat, stick, and technical sports brain right here. Everything that needs or wants to be talked about, will be talked about in the blog and combined into one place. Isn't streamlining wonderful?
The real beauty of a blog is that by its very nature, it's great for posting snippets and short commentary on a regular basis. I can write down what's on my mind without worrying that I need to compile a volume of writing that rivals War & Peace in sheer size. So I'm optimistic that this will work out in the long run. BLOGGER comes to the rescue again!
[END POST]
That post was written 2 years ago. Obviously, I had good intentions and had the foresight to realize that blogging was a good way to reach the audience that I wanted to communicate with.
But too many other work-tasks got in the way.
Between the continued development of Rhino Baseball, running 2 stats services, and jumping into the development of a new wargame project with both feet and trying to muster assistance & input from a part-time group of consultants who needed lots of prodding, my plate was full. Not to mention that I had to make a painful decision to suspend work on a product (Rhino Hockey) that was very nearly complete after several years of work, but which wasn't generating enough pre-release buzz.
As you can see, it's easy for a micro ISV to become overwhelmed since every little thing falls on your shoulders. "Lifers" who have spent their entire careers in Corporate America have absolutely no concept of what this is like. They're insulated in their own little worlds, with very specific tasks to work on, and a steady paycheck that mitigates the frustration an independent developer feels of working his/her ass off only to see a small amount of revenue dribbling in.
The desire to blow everything up, quit, and move on to another job (perhaps getting out of the software development field altogether) is a personal demon that I wrestle with quite frequently. It's counter-balanced by my love of the "software creation process" which feeds my innermost desire to be challenged and express my personal creativity. Plus, once you've put 10+ years of your blood, sweat, and tears into something, it's extremely difficult to just walk away from it. It becomes part of you. Some people might say it's like being married. You put up with lots of crap only because the things you love about it are so special.
Anyway... At least I've committed myself to blogging on a regular basis now. I suppose that once this becomes a habit, I won't have to think twice about firing up Blogger or my email program and jotting down passing thoughts, observations, or sharing interesting information with everyone. In some perverse sort of way, it's good to get things off your chest and write about them. It really is cathartic, and helps with the sense of being overwhelmed. Now if I can just find a good way to solve the underpaid problem!
Hmmm... You're still not convinced eh? You're one of those people who love the uber-difficult challenges in life. Well, that's a start at least. Because in the wide world of independent software development where so many smart, creative, and well-educated people end up becoming overwhelmed and underpaid, you've got to possess the will to soldier on at a bare minimum.
I came across an old blog-post that I wrote in 2005 for my now defunct Mad Rhinoceros blog. I wanted to re-post it here for two reasons. First, it does a nice job of capturing the essence of the "overwhelmed" feeling that we software entrepreneurs often experience on a regular basis. And secondly, it clearly shows that sometimes the best laid plans fail to work out. In this particular case, the failure was simply due to lack-of-time, the arch nemesis of all micro businesses.
Read on...
[From the Mad Rhinoceros, Sep 1, 2005]
The life of a small, independent software developer is one where you wear many hats. So many hats in fact, that I ought to open my own damn hat store. By the way, if anyone knows where you can buy one of those cool hats the Pope wears, let me know.
The most enjoyable part of my job is brainstorming ideas for cool software products, creating the functional specs for them, and then actually creating the database and programming & testing the software. For those of you who don't know, creating quality software is a long and arduous process. Even with rapid application development tools, there are scads of steps in the process and zillions of places to screw up. But there's nothing quite like the feeling of spending your time doing mental gymnastics and communing with the spirit of Einstein, and to then see your creation come to life. It's a Frankenstein moment of utter excitement.
Unfortunately, just like Dr. Frankenstein, there's a monster to deal with. And that monster rears its ugly head in the shape of all the things you DON'T really prefer spending your time on. There's business planning and marketing. There's web site maintenance to tend to. There's pre-sales inquiries to address, and after-sale customer service and technical support to provide. And there are business dealings to consider and consultants to manage. All of these things are vital to running a successful company and can't be ignored. But let's face it, most software entrepreneurs would rather be creating their next digital golem and nurturing it to life.
So what's the point of all this? The point is that there are just too many things vying for your attention. The trick of not going completely insane is to periodically figure out how you can eliminate the loser tasks and how to streamline your operation. It occurred to me shortly after starting this blog that it could help me streamline Rhino Software's web site.
For a long time I've wanted to find a reasonable way to stay in touch with faithful customers and site surfers that didn't require too much of hit on my time (which there is never enough of). I've thought about writing a periodic newsletter to share tips about Rhino Baseball, Rhino Hockey, and other software applications. I wanted to share comments & insights on fantasy sports, games, and the software business for small/micro companies. Basically, I just wanted to do a better job of reaching out to people and providing a deeper sense of community between us all.
So far, that reaching out has been mostly limited to helping folks with their customer support issues. And while customers always praise me for the excellent help that I provide them, I only really get to talk to a small percentage of you guys. So I thought, why not incorporate news, tips, commentary, and surveys into various pages of the RhinoSoftware.com site? Wouldn't that be cool?
Well... Okay maybe it didn't turn out to be so cool after all. Despite my best intentions, I haven't made the time to write software tips articles for the Ask Reggie Rhino page, provide ongoing commentary on the Sports Buzz page, or squeeze in ideas about software development on the Tech Talk page. About the only thing I do stay current with is the What's New stuff on the front page. So here's what I've decided. All of those things (except for the news on the front page) are going away. They will be put out to pasture to frolic in the Land of What Might Have Been. This blog is going to take their place. I am going to divide & conquer. Reggie Rhino will bring his bat, stick, and technical sports brain right here. Everything that needs or wants to be talked about, will be talked about in the blog and combined into one place. Isn't streamlining wonderful?
The real beauty of a blog is that by its very nature, it's great for posting snippets and short commentary on a regular basis. I can write down what's on my mind without worrying that I need to compile a volume of writing that rivals War & Peace in sheer size. So I'm optimistic that this will work out in the long run. BLOGGER comes to the rescue again!
[END POST]
That post was written 2 years ago. Obviously, I had good intentions and had the foresight to realize that blogging was a good way to reach the audience that I wanted to communicate with.
But too many other work-tasks got in the way.
Between the continued development of Rhino Baseball, running 2 stats services, and jumping into the development of a new wargame project with both feet and trying to muster assistance & input from a part-time group of consultants who needed lots of prodding, my plate was full. Not to mention that I had to make a painful decision to suspend work on a product (Rhino Hockey) that was very nearly complete after several years of work, but which wasn't generating enough pre-release buzz.
As you can see, it's easy for a micro ISV to become overwhelmed since every little thing falls on your shoulders. "Lifers" who have spent their entire careers in Corporate America have absolutely no concept of what this is like. They're insulated in their own little worlds, with very specific tasks to work on, and a steady paycheck that mitigates the frustration an independent developer feels of working his/her ass off only to see a small amount of revenue dribbling in.
The desire to blow everything up, quit, and move on to another job (perhaps getting out of the software development field altogether) is a personal demon that I wrestle with quite frequently. It's counter-balanced by my love of the "software creation process" which feeds my innermost desire to be challenged and express my personal creativity. Plus, once you've put 10+ years of your blood, sweat, and tears into something, it's extremely difficult to just walk away from it. It becomes part of you. Some people might say it's like being married. You put up with lots of crap only because the things you love about it are so special.
Anyway... At least I've committed myself to blogging on a regular basis now. I suppose that once this becomes a habit, I won't have to think twice about firing up Blogger or my email program and jotting down passing thoughts, observations, or sharing interesting information with everyone. In some perverse sort of way, it's good to get things off your chest and write about them. It really is cathartic, and helps with the sense of being overwhelmed. Now if I can just find a good way to solve the underpaid problem!
Subscribe to:
Posts (Atom)