Home | Blog RSS Feed | MachineCodex | QtzlCodex | CocoaLab
Dr StrangeCodex: Or How I learned to stop worrying and love criticism
It's amazing how much work goes into software development. I'm not sure that anyone who hasn't been involved in developing an app can really appreciate the sheer level of sustained intellectual and emotional effort necessary.
Mise en scéne
I began learning Cocoa about 4 years ago. At the time it seemed like it might be a nice hobby to take up. I had been inspired by Wil Shipley and the buzz created by CocoaDev, CocoaRadio and other blogs. I had gathered that Cocoa development was relatively easy; at least it was billed as a manageable learning curve, and Objective-C code did indeed seem much more palatable than that nasty C++. All this was underpinned by the siren call of the NeXT-ish dream of user-created software.
Now I had a few little ideas for apps, so I got to work learning the basics, doing the currency converter, and obsessively reading CocoaBuilder. I mastered Objective-C syntax in a matter of days. Interface Builder felt like home. I was dragging and dropping and binding like a docker. I even started a blog to document my progress.
It soon became apparent that my brilliant feature ideas and interface innovations were not going to be shipping any time this century. So I decided that what I really needed, in order to realise my humble dream of global domination via supreme software conquest, was someone who actually knew something about computer programming. Preferably someone who, like myself, suffered from obsessive compulsive disorder and delusions of grandeur.
Such enlightened personages are hard to find, as it turns out. More so if you consider asking them for the next several decades of their spare time to chase an insane dream. I had to go an entire 40 kilometres to find one.
Ancients of Mu Mu
Enter Mark Hill, stage left. Mark and I had been friends for a number of years previously, Mac buddies if you will. But all that was to end tragically when we decided to join forces in a Cocoa software venture. Now we are surgically joined via iChat. A kind of time-reversed siamese twins experiment.
Mark, it eventuates, is a programmer of rare talent and dedication. At the time I approached him, he was an ActionScript and Lingo expert, about to purchase his second PC so he could stay on the cutting edge of Shockwave development. He was considering abandoning the Mac altogether. An apostate. How could I prevent the loss of his immortal soul?
The answer was beautifully simple (and obvious). I sat him down and demonstrated Quartz Composer. Then I showed him Project Builder and Interface Builder.
The next day Mark rang me. He hadn't slept. He breathlessly revealed that he had created.... his own web browser. Thus began a pattern which endures to this day. Firstly, he doesn't sleep. Secondly, he insists on developing things which everyone else believes have already been already done to death. I wasn't in the least surprised when he announced we were developing an audio player app.
Surfing with the alien
Fast forward through 2 years of after hours days. Mark has slept perhaps 1 night in 3 for this entire time. (Strangely, he is still more lucid than me.) The number of hours he has poured into the codebase of AudioCodex is astronomical. There are scores of classes. There are tens of thousands of lines of code. Each method has been written and rewritten, like refining lead into gold.
Personally, I have designed hundreds of icons and buttons and rejected most of them. I have tested each build and made innumerable suggestions and comments, which Mark has dutifully ignored (except in the rare cases where they are actually half-decent). I have acted as a mirror for his best and worst ideas.
Slowly, so slowly, the essence of something truly great began shining through. Mark has mastered in turn Objective-C, then the Foundation, AppKit, QuickTime and CoreAudio frameworks. He has also become adept at making custom interface objects. Thus was my goal at last achieved: all I have to do now is do what I do best, design, and pop it over to Mark. In minutes I have a sparkling implementation of my eye candy in wonderful Cocoa-vision.
Someone is a critic
You become quite attached to your work after 2 years spent forging it out of the crucible of your precious leisure time. And yet, someday you must release it to the philistines and plebians who will download it, try it once and then throw it into the trash like chip wrapper. If you're lucky. If you're really lucky, they might even diss it on Versiontracker or MacUpdate, their educated opinion dripping with sarcasm, "Nice try kids". Maybe a busy TV personality will take some anonymous time out from his schedule to pour scorn on your meagre efforts.
The interesting bit of psychology here is that, after all your work, you are desperate to have some feedback - but these snide bastards are pretty much all you get. Otherwise it's a resounding silence. So you begin to feel like you deserve it. Maybe our software really does suck? You read and re-read the post, trying to glean some hidden detail. You post a reply asking, nay begging, for a dialogue, some way to make it right. To figure out what went wrong. Of course they never answer.
You spiral in on yourself, questioning everything... why are we doing this? Is it worth the effort? Why would anyone ever buy our app? Should that widget be moved to the left side of the toolbar instead? And was Nietzsche right all along?
After a period of this masochism, you realise that they might actually have had a point. Hey, that whole feature really does suck! So we change it. And guess what... the app gets better. It's weird, but negative feedback, although annoying, actually can help.
And that is my startling conclusion.
Good to hear
Building my own company up, it's great to see the realization of your ideas and vision into something tangible.
Bit of a slap getting negative comments, but that's just the natural first step to becoming something great. Ironically, negative comments are your best friends. They're the vocal few who see promise and want something better.
Great job on codexmachina. That is one fine piece of work you've got there!
- Aaron.
Post new comment