Writings

Army of One » Sun, Feb 11th 2007 3:54 pm

I’m becoming increasingly aware of a problem I have: one of futilely pursuing perfection. It affects my work, my play, and even my relaxation.

I’d say I’m mostly affected whenever trying to develop something. Everything I’ve ever attempted to create began as a vague silhouette. I’d think “I want a poll on my web site” but that’d be it. I was excited at the prospect of having a poll on my site, knowing I could build one with existing knowledge, and that it would one day be realized. For now, this was good enough.

Eventually, I’d start writing my poll script. “First, create a database table to hold the questions (id | question) and then one for options (id | question_id | option | votes); piece o’ cake. Add a little logic: Grab the question from the table, then grab the options where option.question_id = question.id. Log votes by incrementing the options.votes field.”

Those who understand the fundamentals of programming know that, already, I have the framework for a perfectly-functioning poll. Yet I was not satisfied. This poll works fine enough, but what if I want it to reuse it later on, only I don’t want just anyone to be able to vote? I want it members-only. I also want it to prevent flooding. It should also be able to appear on a page beside many other polls, all created and managed using a fantastic API.

I was about fifteen, building this for a site that received about 3 unique hits a day, 1 of which was from me. Yet creating a reusable poll script became a top priority, and turned into a three-day project. What’s worse is that, a year down the road, I was presented with another need for a poll and, snubbing “Super Poll”, I started from scratch. Last year’s code was chunky, used different variable naming conventions, and therefore wasn’t worthy enough to grace the pages of Unpopular Site 2.0.

I haven’t grown out of this behaviour. I’ve written a full-fledged content management framework twice in the past eight months, and each incarnation is only slightly more usable than the last with my attention paid mostly to superficial features and negligible performance optimizations. I’m working on version 3.

I used to see this as my own good work ethic and strong determination to be the best I can be, but am now starting to realize that it’s actually a huge character flaw and may ultimately mean that I’m not right for this field; or at least not yet. Nobody wants to hire a web designer who takes four months to deliver a blog because he had to rewrite the backend three times in the process. Sure the final product is good, but the first one was only slightly inferior and the client wouldn’t have been disappointed. My own standards are higher than those of my clients.

Furthermore, I fiercely avoid time-saving tools like JavaScript libraries and existing frameworks. For some reason, I don’t like having to rely on the works of others to complete my own, and yet I see many of my peers doing it painfully and with great success and praise. And a big part of me resents them.

Doing everything on my own is exhausting and I wouldn’t be surprised if this incessant aching in my body is stress-induced, yet getting help would be just as painful.

So, I’ve described the problem. For now, this seems good enough.

Tip Jar

  1. 1 Neil Kelty on Thu, Feb 15th 2007 6:46 pm

    I used to think this way as well - I remember talking with your over the IM about this subject as well. While I don’t particular like using libraries for the purpose of “just using them” I think of using other people code and creations in a different way.

    I could spend a month developing a fully fledged content management system with all sorts of features and whistles (no bells, of course smiling face), or I could utilize something such as WordPress and focus on developing greater features.

    I’ve recently started to use CakePHP (at the urging of a friend) and I’m loving it - the things that I will be able to do after harnessing the power of these applications will be endless.

    I used to feel the way you did, I held off on Wordpress for the longest time until I realized that maybe I should stop trying to re-write a solution and use something that would work just fine (WordPress actually turned out to be much better than what I had built.)

    However, there are times at which you just can’t use a stock product, and those are times that I can see building something from scratch. Most things don’t come right out of the box and you have to be willing to put some personality into things.

  2. 2 Florentin on Tue, Mar 20th 2007 6:09 pm

    Having higher standards than those of your clients is good. It will eventually bring you to the attention of clients who meet -your- standards.

    I often think of great projects, but often never start them, and rarely complete them all because I aim too high. The drive for perfection you describe is much better than a, “good enough,” mentality. The only downside I can see is if you don’t get a reward proportional to your effort. If the whole process is painful or tedious in some way, it’s not worth it.

    Work, and play, and in general doing things should be like an insatiable hunger. A fire that drives you not by pushing you to do things, but -pulling.- And its a weird type of fire because rather than consuming voraciously, it creates voraciously… hmm. I wonder if that makes sense, or is relevant enough to what I’m commenting on.

Feel free to leave some kind of feedback or pose a question. Most links will be parsed on their own, so you can avoid writing <a> tags. I’ve even taken measures to ensure that long links don’t fubar the page layout. Also, you can get fancy with Markdown syntax if you want.

The e-mail address is required to ID you. I’ll keep it secret. I pinky promise.

 
 

Randomly Generated Image