From the Blogosphere
Post Agile - State of Software Development
There is a significant change in how software is developed over the last decade
Feb. 22, 2013 10:00 AM
There is a significant change in how software is developed over the last decade. Agile had been the buzzword over the last decade and probably is most significant of changes in software development to date. Now that the hype around Agile has been subsided, it is worth an effort to understand what it is like post agile. Often we see Agile with a narrow perspective, limiting it to a few programming practices and nothing more. We also fail to notice the indirect influence and the larger impact of Agile over the last decade.
State of post Agile Software Development will have to be seen in multiple dimensions in order to really understand its impact:
- Software Development & Life cycle tooling landscape has completely changed
- Software Project management methods (apart from development method) have changed
- Focus on Software craftsmanship
- Re-imagined Technology stack
TOOLING It is very interesting to see the way tooling has been changed over the decade. I must say this is the area where most innovation has happened. Almost all the aspects of software tooling has been changed; from version control systems to functional testing software. Several new categories of tools have born, which we couldn't have imagined in 90s. Monolithic IDEs and tightly integrated eco systems are replaced with more specialized tools integrated via loose interfaces. Tools like GIT (distributed version control systems), Hudson (Continuous Integration Systems) are few examples of this change.
While agile methods initially focused on changes related to software programming practices; over the time they went beyond. New ways of project management, new ways of testing have extended the focus much beyond. According to "State of Agile Development" survey in 2011 (http://www.versionone.com/state_of_agile_development_survey/11/), 80% of the organizations are using agile practices. That number sure tells a little about the adoption of agile methods and its impact.
Thinking about Software craftsmanship is not very surprising given the agile method's focus on people. In order to be successful, almost all the agile methods needs skill maturity in people, hence the stress on craftsmanship. Craftsmanship needs a learning organization & people and the focus on quality of work. Mentoring, a standardized toolbox, familiarity with tools is essential for a developer/tester to be a craftsman.
Last but not least, Technology stack also has been changing to fit the agile practices. Languages like Ruby, Groovy, frameworks like Rails and Grails and NoSQL databases have brought-in fundamental changes to reflect agile practices. Test cases integrated to the programming frameworks is not something one could have thought of a decade ago. Conventions over configuration, method missing and other such features have evolved to keep up with the expectations of agile practices.
PREPARING FOR POST AGILE
Most software development shops look at the impact of Agile in silos. For example, technology groups focus on agile tools and stack, but not methods. Process & Quality groups focus on methods but have neither have clue on tools nor the technology stacks. Craftsmanship is ignored altogether. Looking at impact together in all dimensions (across tools, stack, craftsmanship and methods) is half the work done. Aligning the team to fully benefit from the agile is the other half, which is probably the most difficult part.
Read the original blog entry...