a long rambling post on the latest topic

I think I want to write a book about software development, and why people find it so confusing. There's a lot of trendy methodologies and frameworks and languages and platforms out there, with their high priests and acolytes, promising that everything will be smooth as butter if you can just come over and see things their way. Well that's marketing for you I guess. But I think that most programmers don't have a good understanding of how really broad the programming landscape is.

I mean, one one side you have embedded systems, and then you have mobile devices, and then you have game consoles, and desktop, and then you have expert system, and then server, and then web... And they all have massively different constraints. That's what you don't get if you follow the software development trends. Most of the software development technologies out there were invented to solve very specific problems, but their evangelists are unwilling to admit it. So it's difficult to tell which buzzwords and trends fit your problem.

On the one hand this is all just basic design: list your requirements and your constraints at the beginning, and then pick solutions that fit. I guess what I object to, is that a lot of technology evangelists would really like you to skip the step where you pick solutions. As a marketer, if you can turn technology selection into a religious war, then you don't have to worry about your faithful jumping ship if their problem definition changes.

So, I'd love to see a map of the various axes of software development, along with which technologies, methodologies, etc., were designed for which region. And then I will print it out and roll it up and hit people over the head with it whenever they tell me that I should be using Ruby on Rails.


  1. Aptly put. I would love such a poster/map. I would never write a website in C but I would never write a graphics engine or compiler in Python.