From, with love.
View this email in your browser

Avoiding Rewrites

Hi everyone,

If you weren't around during the Netscape era of the Internet, then you probably don't know the whole story about how Internet Explorer became dominant. Many will point that it was anti-competitive practices, and that undoubtedly had something to do with it, but a missing part of the story is that Netscape had decided to completely rewrite their browser from scratch. That effort took far longer than anticipated and during that time Internet Explorer cemented its position in the market.

Joel Spolsky famous referred to this as the single worst mistake than any software company can make, and it's true. Rewriting from scratch cost Netscape everything, and it can do the same for you if you're not careful. Thankfully, in many places, incrementalism has gained a strong foothold and there are many well-read leaders who can quickly point out the Netscape failing as a reason not to do a big rewrite.

Unfortunately, this conversation still happens far too frequently in software, and especially in web development as the pace of technology makes people frantic. It's always tempting to think, "if I could just not deal with this legacy code, I could rewrite this in half the time!" This sentiment usually comes from the less experienced engineers who believe rewriting in the latest and greatest thing will yield significant gains over the crusty legacy code they are dealing with.

Do not fall into this trap. If the only solution to a problem is to rewrite it from scratch, you probably haven't looked close enough at the problem or the solution. Any plan that requires everything to be rewritten before it can be successful is already a failure.

I personally evaluate senior engineers on their ability to avoid rewriting things to make improvements. These are the engineers that will make the project successful. Evolution, not revolution, allows you to make progress without sacrificing what already works. Carve out a small piece, improve it, then move on to the next. Your company, your project, and your team will thank you.

Be well.

JavaScript WeeklySponsor: {Track:js}
JavaScript Error Monitoring for Modern Web Applications

Recommended Links

Source Maps are an Insufficient Debugging Format for the Web (article)
Source maps are often touted as the solution to the problem of using preprocessors for your source code. Everything from CoffeeScript to Sass outputs source maps to make your life easier. But source maps are just the beginning of being able to debug other languages. This article looks at the weak spots in source maps and talks about how they can be improved to provide the extra information we need. Nick Fitzgerald

NASA's Ten Coding Commandments (article)
Coding style guides and conventions have been a hot topic lately, and very little can go horribly wrong when they're not followed on the web. But what if your code could be the difference between life and death? That's the case of NASA software engineers, who have developed ten commandments that apply to all of the software they write regardless of language. It's interesting to read through them, as they all represent the potential for disaster. Natali Vlatko

Hackers Exploit Flash Vulnerability in Yahoo Ads (article)
The abrupt blocking of the Flash plugin was brought up about due to a security hole. In July, the Yahoo ad network was targeted by hackers looking for computers with out-of-date Flash versions. By using the ads to distribute malware, hackers were then able to take over users' computers using a Flash exploit. Dino Grandoni

Recommended Book

The Art of Readable Code takes a look at code readability in an in-depth, insightful, and entertaining way. While not specifically about web technology, it delves into the intricacies of what makes code understandable by others. The constant reminder that code needs to be understood in order to be useful is a welcome reprise from those who feel code conventions are an unnecessary hindrance to productivity. This book introduced me to the phrase "yoda condition" and is filled with interesting approaches to readability. While you may not agree with all suggestions, the amount of thought the authors put into this topic is commendable and will at least get you thinking a bit more about readability.

Recently on NCZOnline

From Wordpress to Jekyll: My new blog setup
I had been thinking about moving my blog from Wordpress to Jekyll for a while. I was hesitant because I didn't know a lot about how Jekyll worked and wasn't sure if I'd ultimately want to have my site hosted on GitHub or not. I also was concern about not having the ability to schedule...

Announcing the NCZOnline Newsletter
For a while, I’ve been toying with the idea of writing more short form content. While I love the long form of writing, it does take a lot of energy and as such I’ve been unable to do the regular amount of writing that I normally do. I thought about doing short form content on...

Why you’re afraid of public speaking
One of the most common questions I’m asked is how to get started with public speaking. My answer is always the same: just start doing it. That’s usually when the terror crosses the questioner’s face, as if they had expected me to reveal some secret ninja training that makes you a confident and capable public...


Love this newsletter? Hate it? Have suggestions for how to make it better? Just reply to this email. I will read every response.
Copyright © 2015 Nicholas C. Zakas, All rights reserved.

unsubscribe from this list    update subscription preferences