This question is more like you what if you were asked to sign for two rival organisations one pitted against the other. In a communist regime it would be akin to siding with the dictator and other with the rebellion groups at the same time. On one hand we had the agile manifesto which brought to the table best practices of XP which later took over to Scrum and now there is movement called Software Craftsmanship which is gaining momentum. It was always there but it just that it is resurfacing itself with more necessity now. Need a Surgeon who follows all the procedures correctly and also does a good job of the surgery. This is how we need to see both these movements Agile and Software Craftsmanship movement.
What is Agile manifesto ?
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Remember the initial agile thing that we got to practice was that of Extreme programming and it sounded as if we were doing something out of the way. Not certainly new things but old things in a newer faster effective way. It got people involved in the whole process and brought a lot of mileage and visibility in the organization. A little later came Scrum and other lean and mean characters followed.
While all of these got practiced by people , the craft of delivery good software got lost along and it became more of a process rich methodology with backlogs, sprint run race velocity and a lot of jargon thrown along the way. We left the main essence of all our work which is to write good software aside and got carried away by all things agile. Little realizing that if we sulk on writing good software then it will eventually slow us down no matter agile or otherwise.
Just as we have good engineers doctors who take pride in laying a state of the art bridge or performing complicated surgery , an expert software person these days is almost dealing with the same set of tools and many a times doing mission critical jobs which are at risk if we leave the craft aside and focus on delivery alone.
What is Software Craftsmanship ?
- Not only working software,but also well-crafted software
- Not only responding to change,but also steadily adding value
- Not only individuals and interactions,but also a community of professionals
- Not only customer collaboration,but also productive partnerships
Why we need Craftsmanship in good measure along with Agility ?
Technical debt increases in the project as it progress if the initial thought process to create an architecture which forms the bedrock promoting flexible changes end to end is shallow and not done correctly.
Most often we know how quickly we ended up doing a POC or the initial releases of the product. As we progressed things got slow to the point where there were instances where a customer wanted a font change or a logo change on some index.jsp but we ended up saying it is going to take some obscene amount of time citing organisational procedures, bureaucratic red tape , QA , testing of all forms , our platform certification practices etc. This is true of even the big boys when we request a small change in any software of enterprise level, all we get to hear is yes we have considered it but gives us time till next release and we will put it right back in there. All of this is familiar to most of us when things looked quick doable in a jiffy but as the product matures ,egos rise and technical and product debt increases we find ourselves like the rain starved farmer looks at the skies for divine intervention. This could have been avoid if we focused on Software Architecture best practices and craftsmanship of some form. The better the skill less is the debt . We have existence at all levels so we could have various forms of craftsman some more skilled than the others and others not even acknowledging that there needs to be one on the team. If we do not pay heed to software quality and design principles , architecture best practices , code best practices and correct things then and there we will be debt ridden and eventually end up with the debt being written off meaning scrap the product line and look at rewriting this.
There was this joke going around in one of the companies , there are 50 people working on re-factoring the product and the unofficial hear say was you need half the time and only 15 people to rewrite the product completely from scratch. Most often you cannot digest the fact that scraping something altogether is worthwhile , just as we have an old item in our house that served its purpose but now occupies space and does less. Of course while we value that it served us well and enabled us to get this far and when we want to do something different then we should be able to redraw our priorities and align our needs accordingly. Writing good software is an art with more of a process like if we get X people certified on Y technology then we can reap Z benefits over a period of time. This rarely works although most often this gets practiced everywhere. Just as of all the people who learn a language only some manage to write poetry that can move minds and souls. It may not be a good analogy as we have fewer poets than software engineers these days.In a similar fashion while we need agile practices to help us quickly add scale to our operations we also need to have the craftsmanship part of it to go hand in hand. Else we will have a process rich methodology without craftsman who can execute on the promise of the Agile story. We could look at in more detail what constitutes craftsman ship in an other thread.
So sign up for both if you want to sow the seeds as well as reap the rich harvest.