Code Simplicity

Powered By WordPress
Theme Based On A Design By Jared Quinn.

Creating Complexity

Creating Complexity: Lock-In To Bad Technologies

Posted by Max Kanat-Alexander
On July 16th, 2008 at 11:07

Permalink | Trackback | Links In

Category: Creating Complexity

In The Never-Shipping Product, I mentioned seven ways to add complexity, and one of them was “Lock-In To Bad Technologies.” But what’s a “bad” technology? Is it all just based on opinion? Should we throw our hands up in the air and give in to the whims of our junior developer who thinks writing the application in BASIC is a great idea?

Well, okay, maybe it’s not all opinion. There must be some way to tell a good technology from a bad one (besides looking back after five years of development and saying, “Wow, we really shouldn’t have decided to base our product off of Microsoft Bob.”)

When I’m evaluating a technology for inclusion in one of my projects, I look particularly at the technology’s survival potential, interoperability, and attention to quality. (Read More…)

The Never-Shipping Product

Posted by Max Kanat-Alexander
On June 2nd, 2008 at 11:06

Permalink | Trackback | Links In

Category: Creating Complexity

When you work as a professional programmer, you almost always know somebody (or are somebody) who’s going through one of the most common development horror stories in the book:

“We started working on this project five years ago, and the technology we were using/making was modern then, but it’s obsolete now. Things keep getting more and more complex with this obsolete technology, so it keeps getting less and less likely that we’ll ever finish the project. But if we re-write, we could be here for another five years!”

Another popular one is: “We can’t develop fast enough to keep up with modern user needs.” Or, “While we were developing, Google wrote a product better than ours much faster than us.”

When I hear things like that, the first thing I ask myself is “How did that happen? Why did it take so long for them to finish their product that they ran into that problem?”

The answer lies in complexity. (Read More…)

Ways To Create Complexity: Break Your API

Posted by Max Kanat-Alexander
On February 7th, 2008 at 00:02

Permalink | Trackback | Links In

Category: Creating Complexity

An API is a sort of a promise–”You can always interact with our program this way, safely and exactly like we said.” When you release a new version of your product that doesn’t support the API from your old version, you’re breaking that promise.

Above and beyond any vague philosophical or moral considerations about this, the technical problem here is that this creates complexity. (Read More…)