Monday, December 7th, 2009

Why do it yourself? Somebody else already did it for you!

Web developers like to create their own solutions, but most of the time it’s better to get to learn a real product and start to implement it

Sometimes the possibilities you have as developer seems endless. Do you or your company need a CMS? Lock yourself up for a few weeks and you have one. In need of an online video player? Look for a tutorial online and create your own.

Creating something from scratch can be empowering. It also gives a sense of control, because you can determine what the specifications should be of a product. Better: you don’t only know the specifications by heart, you also know just what strings you need to pull in your code. Getting to know a product that you didn’t code from scratch seem hard to master. And it can even harder to know it’s limitations. That’s not a situation that you want to be in, when talking to a customer. And so it seems better to stay in control and build an application of your own for your own needs.

A CMS for everyone

And so in-house coded CMS systems pop-up everywhere. But why? Are the ideas of those companies about Content Management Systems so different compared to what is already on the market? Most likely not. In many cases the euphoria of having your own CMS will turn to into a slowly simmering frustration because the time needed for bug fixes and feature request doesn’t match at all with the time that’s available.

We all know that creating a product needs time. But what we tend to forget is that keeping a product “healthy” and up-to-date also costs a lot of time in the long run. And so we have a plethora of CMS systems with loose ends and incomplete functionalities. Most of the time with an unfinished “help”-function.

For years I was accustomed to do as much as you can yourself. But now that the internet is getting bigger and bigger, you see companies specializing. Some companies are focusing on only one or a few products like a CMS, while the creators of websites ask themselves: “Am I better in building a CMS or in creating websites?” In most cases it’s the latter. And so it’s better to find a product that helps you to do the job fast instead of slowing you down.

Example: a quick flash video player

Now you may think that a CMS is an obvious thing you shouldn’t build yourself because the codebase is so large. Well, lets take something that needs less lines of code: a simple Flash video player. Many companies have developed their own Flash video player. Because it’s just relatively easy to do. But again: why? Most of the time such a in-house coded player has minimal documentation, if at all. And if you find documentation it’s likely out of date. What really bugs me if you’re asked to just “Fetch that player from our previous project”. Like that’s an acceptable codebase.

I recently decided to go with the open source Flow player. I fell for the various options to customize the player. Soon I discovered all kinds of advantages you wouldn’t have with your own code: Forums, wizards and extensive documentation. I could send a designer a link to a wizard that enables him to skin the video player at a basic level. I also could pass the player to another team member without having to explain every step in the code. The documentation is online, help yourself. Let me continue with my work.

Another example: Javascript libraries

Libraries really can speed up your work. They do not only provide lots of canned functionality, but libraries like Prototype, Mootools and jQuery can also really speed up your own coding. jQuery really helped me to code faster, more stable and in less lines of code. It made coding in avascipt even more fun.

There are lots of resources out there. As a web developer you need not only to know your code languages, you also need to know when to use some existing code and know where to find it.

Bookmark and Share

Categories & tagging

Category: Web development in general
Tags: , ,
3 Responses
Follow responses to this entry through this RSS.
  1. Flash CMS

    Content management systems can greatly simplify work with the website and its maintenance. Using the built-in set of tools that any CMS provides, you can easily update your website.
    And I agree with the author article , that the CMS can greatly speed up the website development work.

    Thank you.

  2. Sinbad

    Here are a couple of reasons why I dropped CMS and went back to custom code:

    Performance – in most cases (Drupal, Joomla, SilverStripe, etc) cms are slow, resource hogs. Go to the Drupal forums and there are many threads on poor performance, and the answer given is nearly always get more memory, put on APC cache, etc, no one addresses why a page needs 1000+ DB queries to run or why drupal requires 10 times the memory of a custom built cms.

    Design – Most (there are notable exceptions, MOdX for instnce) cms are a nightmare for designers to design for, which increases development time.

    Poorly written modules / plugins – So great you get this pre-written functionality with modules / plugins, problem is half of them are so poorly written (in the case of open source) that they slow or unsecure, so you then have to check then for yourself.

    Difficult to customize / maintain – even the most extensible / flexible of these CMS are a nightmare if you wish to do anything too far outside of their range so you end up with a patchwork of messy code that is difficult to maintain and as for the pain of major upgrades, forget it.

  3. Wouter Bos

    Hi Sinbad. Thank you for your comment.

    Most cons in your list do not have to be that bad:

    - Performance: most cms’s are heavy because they have lots of features or are scalable. Buying extra RAM is a cheap price compared to the labor of hand-weriting your own code
    - Design: some CMS’s indeed can be very limiting. But not all are. And sometimes you just have to learn a CMS to know what’s possible.
    - Poorly written modules and plugins: You always have to watch out for something like that. It’s not always easy, but at Wordpress they seem to do just fine.
    - Scalability: I work with Sitecore, which is very scalable and flexible. But indeed, some CMS’s aren’t that scalable, so you have to build something that’s suitable for the CMS.

    I agree that external CMS’s have their limits, but I’m still convinced that hand-crafted code is expensive. Use what’s out there instead.

Leave a response