Let's make websites.
5 Reasons Not to Write Your Own Code
By Samuel Ryan     Website Building     Comments

Just like most designers would rather create their designs from scratch, many developers enjoy writing all their code from scratch. When I first began blogging, even though plenty of blog software existed, I decided that it wouldn't be that tough to write my own blog software. So I did just that, and also began creating blogs for friends using the same software. Of course, once more people began to use my software, more feature requests and other issues arose, and support became a nightmare. So although the initial project was enjoyable at times, it's also been a timesink and a bit counterproductive. The jury's still out on whether writing this blog's backend was a good idea, but during this whole process, I've come up with 5 reasons not to write your own code (and instead, use open source or purchased code).



1) Time Is Money

 It is very rare for anyone to develop a piece of software for cheaper than they can utilize an existing piece (if such exists). Before you start any large project, it's always worth spending a couple hours checking out other software, and then estimating how long it would take you to self-develop. 

2) Other People Have Written It Better

 Both commercial and open source software have the advantage of being inspected and run by many people. Especially in the case of open source software, you have some of the best programmers in the development community behind such projects. (In fact, some of the best development firms hire their programmers from the open source community.) Plus, both open-source and commercial software (that includes source code) usually have more features than you even considered before writing your own software.


3) Learn from Other Programmers

 As noted in the previous point, there are some really great programmers out there writing code. If you're used to coding things yourself or are part of a small business, you don't get exposed much to different coding styles. Some of the best education I've gained is from real-world examples by programmers with more experience than I.


4) Expand your Resource Library

 In my opnion, resourcefulness is one of the most important qualities a person can have. Especially in a smaller business, I would take an above-average developer who knew how to find anything over a better programmer who insisted on developing everything himself. The more you know about where to "find stuff," the more useful and efficient you can be.


5) Better Exit Strategies

Most people enjoy the comfort and satisfaction of working with their own code. What is often not considered is that the code they write could become forever tied to the programmer. If you use popular software for a shopping cart or a CMS, you can always find someone else to help out if you ever leave the client/business. Or if you ever need to sell a company, the transition can be much easier if you're using some frameworks or open source code that the incoming programmers are familiar with.

Community Comments
Comments are now closed.

Adam Jimenez
I agree with most of what goes down in this blog except this post.

In some ways I think you are right, I would always rather use phpBB, phpMyAdmin and some other stand out o/s projects.

When it comes to CMS and ecommerce I have to disagree. I find that some o/s projects can severely over-complicate and provide way too more features than are ever going to be used. They can also be a nightmare to truly customise. And in doing so can make the system very difficult to upgrade to a newer version.

I also find that a lot of smaller projects are coded either incosistently or very badly.

At least with everything I do, I code to the same standard and reuse a lot of components so they are very easy to maintain.

From a clients perspective they get exactly what they want from my implementation. Altho you are correct, there is a bit of lcok-in as other developers would likely want to do things their way.

@Adam - I don't disagree with you :). However, the nature of a "resons not to" list is simply to point out some arguments from one side of the equation, not to argue that you should never self-develop. Hopefully, tomorrow's article will balance the equation...

Of course, I was thinking of exceptions as I read (seems to be human nature to want to argue :-) but then I read the last two sentences of the article and figured you would address the exceptions tommorow...

Great article and I am right there with you on saving time and money.

I have found that when using other peoples code you can actually run into a lot issues you were not expecting or you can save your self a few hours if not a few days of development.

can't wait to read tomorrows article!

Cody Rioux
I tend to employ these same principles as a programmer. I do very much enjoy coding my own things, and would love to have the time to code everything I use from scratch. In fact I do so when I don't have a million things on my plate.

The issue of course being that just about nobody has enough time to do everything they want to. I free up a lot of time for other things by employing code reuse where I can.

This is a useful resource for any programmer who feels they're always waist deep in work with no time.

Sean Hodge
These are some of the reasons why I went with open source. I would not have considered writing my own though. Though trying to do so would have taught me alot I couldn't afford the time involved with tyring.

Of course using open source doesn't prevent you from writing your own modules. You can leverage other peoples work, the system in place, and customize it when you need to.

I'm not a developer, but just a web designer. I try to follow along as best as I can with developer talk though. So, take my opinion with a grain of salt. I've been using Drupal for One Year now. And using it happily for about 6 months.

I'm going to start using wordpress for my blogs just because the resale market should be easier if I ever want to sell. Drupal is less common for blogging.


Jarrod Goddard
I have to say I totally disagree as well. I've been programming web sites and software for almost 10 years now and I rarely use pre-built software. In fact, Wordpress is the only software I install or use at all for my sites or my clients.

I think in my case, it's that I never find a tool that is totally suited to my needs and then I have to do some sort of customization to the software. At that point, I find that the design pattern or way the code is structured is really different than how I would do it and I decide it would make more sense to just start from scratch with my own.

As well, the longer you've been programming, the more libraries of code you have to rely on, and if it's written properly in an object-oriented language then you can really swap it in and out of your new projects. I cringe at the way I coded things in the past, now I have a framework of my own that I use and it reduces development time substantially. In fact, once I complete a couple more projects - and get time, I'll be releasing it to the public.

@Jarrod -

I've also been writing software for a while (12 years now) and I also custom write almost all my stuff (if custom writing this blog software doesn't show my love for custom coding, I don't know what will :).

Please don't equate "5 Reasons Not to Do Something" with "Why You Should Never Do Something." It's like me saying "5 Reasons I Don't Use a Mac" and people taking it as "5 Reasons Why No One Should Use a Mac." Instead, take this post as one side of a multi-faceted issue. Having had programmers work for me in the past, I would not want one who insisted on never using commercial or open source code, nor would I want a programmer who had no programming library or chops of his own.

Considering the thrust and context of the post, I agree that all the points here should be considered before any project. I think when people disagree, it's really the title they disagree with (I suppose you could entitle the post "Things to Consider..." -- but that's so boring.)

Anyways, no respectable developer can claim that he never uses other people's software (even mySQL and phpMyAdmin are considered "other people's software"). I would say that the ratio of custom to prewritten stuff varies with programmer, but a good businessman (who often sees the big picture better than programmers) will take these 5 points into consideration (and probably the points in your next post) and go from there.

Thanks for outlining these...

Don't know how I got here but really enjoyed the article.

somewhere off digg I'm sure. ;-)

I think that you left off a really obvious reason:

"You're not a programmer."

I'm a graphic designer and got into flash awhile back (and I'm betting there's a lot of us). Although I'm pretty familiar with script that creates basic interaction, get into the "math" and I'm lost. Game geometry and physics stop me cold.

Could I learn it? Maybe.

Is it worth it? doubt it - especially if I can fill my hours with well paying creative.

I already job out my PHP and Rails.

Thanks again for an informative article and come good links.


Alex T
In keeping with the general reactions here, I'd have to say I still prefer to write my own code.

I had a spin through the latest version of Joomla and I was horrified.

I'm making an easy site development engine so I can make web sites for people quickly, efficiently and with lots of features. Modular components, URL rewriting, fully OO blah blah blah...

Just not as messy and very elegant. It helps that I write it in time I wouldn't be getting paid for anyway. But I get intensely depressed when people talk about how "it's all been done before".

Maybe it's the dreamer in me that hopes there's still a little pocket of revenue in web design waiting for me...

Take care!

Dalton Filho
I've seen people wasting their time writing their own template based writer simply because they were not aware that Velocity and FreeMarker exist. It's amazing how a good knowledge of Apache's projects (or any other brand) can improve the productivity of a programmer.

OTOH, the problem of understanding well how things work under the hood persists. Many times it involves reinventing the wheel...

Michael Terry
I love coding, but I hate reinventing the wheel. I've never understood a lot of other coders' desire to redo stuff that's been done before. Sure, I *could* do it better, but it's good enough and I can be doing something else completely new.

Having come upon this long after you posted it, I would love to read "tomorrow's" article, but I can't find the 'next post' link anywhere...

I just recently had an experience with something like this. I had been dabbling in PHP frameworks and the MVC approach, and after looking at a few of the big ones (CodeIgniter, Cake), I decided I'd make my own customized framework. There were a lot of features in it that worked well, and overall it's a very solid framework for what it does, but its library simply falls short compared to some of the larger ones like zend. Right now I'm learning Zend/CI simultaneously, as I have the zend library working within CI. Could my time developing the framework have been spent on something more productive? Maybe, but the experience gathered in _knowing_ the benefits of a solid framework and how exactly it works has been invaluable. Additionally, the time spent creating my framework is not a total loss, as I can convert at least a couple major classes over to work within CI+Zend.

If your goal is exclusively to make websites quickly and efficiently, using pre-existing tools (and even CMS) is no doubt the best way to accomplish that. If your goal is to truly understand the inner workings of the tools you use, it's never a bad idea to take a stab at it yourself. That's how you learn, and when you do end up using the big name tools, you're going to use them that much more effectively.

Plus it's just fun to prove to yourself that you can develop something that seems so complex upon first glance.

4,863 Readers
Receive Emails     Receive RSS
Sunny Days & Rain
What is all this?
My name is Samuel Ryan and I make websites. Sometimes, I write about it. I disappeared from this blog for a couple years, but I'm jumping back in now -- even began using my twitter account. If you care to know more, go here.