Writing New Software

Mark Pilgrim writes about writing new text editors, or more importantly about garden path software.

Here’s the basic problem: you’re writing a text editor. Stop doing that. It’s 2007. Saying to yourself “I’m gonna build my own text editor” is as silly as saying “I’m gonna build my own build system” or “I’m gonna build my own amusement park.” Blackjack and hookers and all that. Writing a great text editor is insanely difficult. There is a certain class of software that sounds easy but is actually insanely difficult. I call it “garden path software.” If I ever start a software company, I’ll name it “Garden Path Software,” but until then, just stop.

I do not agree with Mark that new text editors should not be written. I agree with Mark to say that do not write new software unless you can find a new USP for it. As the number of man years of software industry increase, it will get more difficult to find need to write a new. Even if you are developing for yourself, identify the purpose behind it – new functionality, productivity, simplicity, a niche market, an existing unsatisfied user-base, hobby or whatever it is. Some digging up can also help you realize the actual effort involved, the effort to develop and then make sure to make benefit or ROI apparent. This is your preemptive answer what will justify the effort. Alternatively you can choose different options from writing from scratch to tweaking an existing piece of software.

If you still end up writing a new one without thinking about what it does, that some existing software does not, make sure you do not repeat mistakes that others have done in the past and incorporate what are considered the basic features, like undo for a text editor. You will have the least margin of tolerance compared to all your predecessors.

Discussion [Participate or Link]

  1. Ilya Grigorik said:

    You know, I’m convinced that we will never get rid of this problem. Engineers (software or any other type) consistently overestimate their capacity to get things done. I think this is largely due to arrogance. What looks like a simple problem on the surface usually amounts to the tip of the iceberg – problem is, most project leaders realize this once the initiative is already well underway.

    I’ve met half a dozen software engineers who vehemently made a case for writing their own web-servers. (I confess, I once fell into this trap also!) Some even attempted to write their own custom database engines. The irony is, those components were not even part of the ‘core’ product itself. I’ve come to believe that time and experience (plus a healthy dose of skepticism) are the only cures for this problem.

  2. Abhijit Nadgouda said:

    I agree that there is always an itch to write something from scratch with the belief that our idea is completely new, or that it is better than something. I cannot say that it is always wrong, but the I would say that, that something new or better should translate into benefit for the user.

Say your thought!

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.



Abhijit Nadgouda
iface Consulting
+91 9819820312
My bookmarks


This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.