Pride comes before a fall – A person who is extremely proud of his or her abilities will often suffer a setback or failure, because he or she tends to be overconfident and to make errors of judgment. Latching onto Agile as a weak guide can give people a false sense of security. There is a very fine line between healthy confidence in your abilities, and over-confidence that can lead to you missing looming disasters on the horizon. However successful you are, life has a habit of balancing things out.
I am finding it harder and harder to be inspired, maybe a result of time spent on numerous IT projects seeing exactly the same problems time and time again. Or from working in environment and technologies that hold very little interest to me. Working in a “walled garden” environment like .NET, which limped into the 21st century is also quite uninspiring. Companies that sell up to Microsoft so heavily use fear anything out of the MS umbrella, even if the product is better. If you have paid hefty licences then you will want to get the maximum out of what your have paid for. Understandably. Or don’t trap yourself to start with.
Test-driven development has always been intriguing area, and with more focussed business tools arriving on the scene, TDD has grown to incorporate domain-specific approach to programming. Requirements are no longer in weighty formatted documents, or loosely recorded on issue management systems – they drive development. Writing feature files (user Stories) is not a simple as it may first seem. The examples look all very good, but on a large application, it takes a lot of skill and maintenance. As PHP is my current highest skill in development, I chose Behat which when coupled with Mink, provide a great BDD environment. Sahi is a great cross-browser test framework that includes support for PhantomJS (headless browser).
There are good and bad in every coding discipline, and it’s churlish to look down on one language over another, especially if it is more to do with change resistance rather than objective view. That is something people quickly get lost in – their own personal favourite language, where there is never a focu in any methodology. It’s meant to be language-agnostic. You want to get from A – B and that path can be many, so it makes sense to progress in ordered fashion, to avoid going down a wrong path too long (classic step-down approach risk). In order to do that, you must have the right team in place, and the tools and processes to enable them to self-manage on daily basis. Agile marked a point in time, but somehow became an unhealthy bible, instead of a general guide.