Code Simplicity

The Secret of Success: Suck Less

When I started working on Bugzilla in 2004, it was a difficult time for the whole project. There were tremendous problems with the code, we hadn’t gotten a major release out in two years, and a lot of the main developers had left to go do paid work. But eventually, thanks to a bunch of … Continue reading

57 Comments

Top 10 Reasons To Work On Open Source (In a California Accent)

So, as a little digression from our normal content, I felt like writing a list of the top 10 reasons to work on open-source software…but being a born Californian, I felt I had to pay a little respect to my roots. So here we have the top 10 reasons to work on open-source…as said by, … Continue reading

30 Comments

Success Comes From Execution, not Innovation

There’s a strange sort of social disease going around in technology circles today, and it all centers around this word “innovation.” Everybody wants to “innovate.” The news talks about “who’s being the most innovative.” Marketing for companies insists that they are “innovating.” Except actually, it’s not innovation that leads to success. It’s execution. It doesn’t … Continue reading

39 Comments

Designing for Performance, and the Future of Computing

So, you might have heard that Google released a web browser. One of the features of this web browser is its JavaScript engine, called v8, which is designed for performance. Designing for performance is something that Google does often. Now, designing for performance usually leads to complexity. So, being a major supporter of software simplicity, … Continue reading

14 Comments

Design From The Start

I don’t know if this has become clear to everybody yet, but you really need to design from the start. You need to be working on simplicity and the other Laws of Software Design from the very beginning of your project. My policy on projects that I control is that we never add a feature … Continue reading

8 Comments

Specific Solutions

So, I’m a huge Kyle XY fan, and I was entertaining myself this morning by watching the various “behind the scenes” clips that they have on the website. Of course, before each clip was an ad–the same ad every time–for The Sims. No matter how silly the ad may be, being forced to watch it … Continue reading

4 Comments

Instant Gratification = Instant Failure

The broadest problem that I see in the software industry is that companies are unwilling to engage in strategies that only show results in the long term. Or, more specifically, that organizations are unaware that there is any such thing as a long-term strategy. In the US, it’s probably a symptom of a general cultural … Continue reading

11 Comments

There Is No Science Of Software

What we think of today as being “computers” started out in the minds of mathematicians as purely abstract devices–thoughts about how to solve math problems using machines instead of the mind. These mathematicians are the people we would consider the modern founders of “computer science.” Computer Science is actually the mathematical study of information processing. … Continue reading

11 Comments

Simplicity and Strictness

As a general rule, the stricter your application is, the simpler it is to write. For example, imagine a program that accepts only the numbers 1 and 2 as input and rejects everything else. Even a tiny variation in the input, like adding a space before or after “1″ would cause the program to throw … Continue reading

13 Comments

When Is Backwards-Compatibility Not Worth It?

This title might seem a bit like a contradiction to my last post! Well, you really shouldn’t break your API, if you can help it. But sometimes, maintaining backwards compatibility for any area of your application can lead to a point of diminishing returns. This applies to everything about a program, not just its API. … Continue reading

4 Comments