The whole process of developing software of any significant size is, to be honest, a nightmare. I'm of the thought that for a long time now the vast majority of people are still solving the problems thrown up by development processes based on the limitations of computing hardware of the late '80s. People still think this way in many areas of computing and I think this is why today we still have applications forcing you to save your work rather than doing it for you (hard disks and networks were slow back then).
Sure people have tried dragging graphics around to craft programs, but they're slow compared to typing, and today's graphical IDEs are not much more than graphical user interfaces wrapped round a character text area. Others are out there creating new programming languages to address perceived problems, but are these bright people actually solving the right problems? Are they addressing the symptoms or the causes?
In here, I examine what developing and implementing programs is actually about (for me anyway), the issues different development ideas are really trying to address (TDD, FDD, BDD, MDA, etc.), and try to find a better way to achieve these laudable goals in the context of today's code (both legacy and current), the economic needs of companies doing software development, and the types of people who actually write the stuff.