Please stop re-inventing the wheel.

Please stop re-inventing the wheel.

There are a lot of software wheels that get re-invented all the time. Re-inventing is a time consuming waste that many projects can cut. In almost all cases it’s much better to do some due diligence and use an off the shelf component where you can. Invest your time, passion and expertise in your actual product.

Save your energy for your real innovations

Engineers are smart. Sometimes we get cocky and think because we know how to build the best X on the web, we also know better about everything else too. Don’t fall into this trap. It’s very unlikely a genius web developer can really create a better database than off the shelf. There are too many good ideas begging to be programmed. Don’t waste time on something that’s outside your core innovation. The world needs customer focused applications that work well with people. Don’t waste your time creating the ten thousandth backend widget you could have gotten for free on the internet.

Existing protocols are good

Nothing makes me crazier than software that implements a broken version of a standard protocol. You can spend time designing a brand new protocol, but if you are doing something that is well known on the ‘net you should try hard to work with existing protocols. Existing protocols have some miles on them and are usually good compromises for everything they do. Designing and testing new protocols is just quicksand for most projects. If you can’t say that the new protocol is the heart of what’s cool about your product, then don’t make a new protocol.

Get your design patterns off the shelf

Most software project fall into some pretty well known patterns. Console applications, three tier web applications, client-server applications and peer to peer applications are very common patterns. If your product falls into any well known pattern, follow the best practices for your pattern. Innovate where you are really on the cutting edge and try to use cookies cutters wherever else you can.

Comments

  • Anonymous
    August 25, 2008
    Reuse is a good theory that tends to fall apart. Sure, you can try to work with the tools that you have, but somehow you always end up wanting to do something that the tool doesn't support or just isn't obvious even after hours of searching. Or you find a textbook that describes a classic algorithm.  However all the boundary cases are left out, so you have to take care of those to have software that works in the real world. How primitive you need to go sometimes seems to be dependent upon whether you just want to make a good demo or you want to make the software that you write really work.

  • Anonymous
    September 15, 2008
    The comment has been removed