In discussing our agile principles recently I was reminded of a realisation I had when I first started working in a place which had been practicing agile development for over a decade. I previously had studied, understood and even tried to implement all (or most) of the practices of eXtreme Programming in previous roles. The real ‘lightbulb’ moment for me was the realisation that all these practices and processes fit so well together.
For example pair programming and test driven development cause you to have cleaner code. Code quality improvements allow you to be more confident of utilising continuous delivery practices. Improved code quality also allows for more consistent development timeframes as speed doesn’t deteriorate over time. This makes the use of velocity as a planning metric more effective.
I won’t go into every process but what I am hoping to have highlighted is that these processes not only have their own benefits, but also all fit together and cause a very effective way of working.
This is also true of technologies. An example of this is found in peoples opinions of ORMs. My view a long time ago was that are not overly performant, don’t massively help the architechture and often you end up replacing aspects with JDBC calls. This was because I was using a heavy weight oracle database with hideous PLSQL creating views and tables that didn’t match our models. Once I started following the ‘single responsibility principle’ and using the ORM built into the Play framework I realised that these things fit well together and the issue’s I’d previously encountered were no longer present.
Once I had this realisation it made a lot of sense. For the technologies aspect, the people working at the cutting edge of technology, the early adopters (like we strive to be at WDS) are the ones driving the development (or developing) these tools. If ORMs are working well with their other tools and practices, they are included as options in the latest versions on the framework.
Finally I love that here we have lots of people who are keen on finding good resources for suggesting what may be good to consider adopting. This is really important as in my previous role I would have been a lot better off spending my spare time investigating XP, Git and Play instead of scrum and Subversion and Struts 2 (shudders)
One of those resources (Uncle Bob) aided my recognition of all of the above with this video
I hope this helps. Feel free to comment, share and discuss