Nothing has fundamentally changed in computer science in nearly 50 years. Languages have evolved (slightly), and methods of designing software have as well, but there have been no really incredible breakthroughs so to speak. There have been good achievements in hardware, but there too we have now plateaued – technology can’t get smaller from the perspective of usability or battery life, and faster? People design software using some form of agile development – a concept given fancy names – Extreme Programming, Scrum, Lean Development, blah, blah , blah. Embellished words for a pretty ordinary way of doing things – iterative development – where one revisits software development activities. It has essentially spurned a whole industry with certain facets even deriving their own titles, e.g. ScrumMaster. Good software development should be in itself a natural, organic process. You have an idea, you build an algorithm, you implement the algorithm, test it, refine it. I mean it’s not rocket science.
In some respects “agile” is somewhat “much ado about nothing”… not dissimilar to object oriented programming. It seems like a really good idea, and should have revolutionized everything… but didn’t. Does it produce better software? Maybe, in some cases. There is still a lot of crappy software being produced though. What comes after agile? Streamlined software? Hived-based development? Hard to know – something that has a fancy name which insinuates it can do something better. Humans have been doing iterative development for thousands of years, there is nothing new about it. People don’t care about a company using an agile approach, they care about a quality product. At the end of the day, building software is about a problem to solve, a programming environment, and an algorithm to solve the problem. We should spend more time nurturing creative thinkers and designing creative solutions, and less time worrying how the software will be developed in a warm and fuzzy environment.
Oh, and beware of snake oil salespeople.