Something important is almost never mentioned in all the literature about programming and software development, and as a result we sometimes misunderstand each other.
You’re a software developer. Me too. But we may not have the same goals and requirements. In fact there are several different worlds of software development, and different rules apply to different worlds.
You read a book about UML modeling, and nowhere does it say that it doesn’t make sense for programming device drivers. Or you read an article saying that “the 20MB runtime [required for .NET] is a NON issue” and it doesn’t mention the obvious: if you’re trying to write code for a 32KB ROM on a pager, it very much is an issue!
I think there are five worlds here, sometimes intersecting, often not. The five are:
- Shrinkwrap
- Internal
- Embedded
- Games
- Throwaway
When you read the latest book about Extreme Programming, or one of Steve McConnell’s excellent books, or Joel on Software, or Software Development magazine, you see a lot of claims about how to do software development, but you hardly ever see any mention of what kind of development they’re talking about, which is unfortunate, because sometimes you need to do things differently in different worlds.
Author | Joel Spolsky |
Work | Five Worlds |