Welcome to ITnaut
The Information Technology Frontier is still a lot like the wild west. I've worked in that wilderness for most of my career. Even when we thought we were abiding by rules and best practices that would lead to manageable projects, the reality that eventually became clear was rarely so civilized.
What does the wilderness look like? It's where down and dirty hacks are committed and live long enough for core processes to grow on top (entrenching them in the code base). It's the natural habitat for Ward Cunningham's cowboy coders. Cowboys work quickly – especially in a green field. They deal with their own products well enough to extend them – at least for a while. Few would want to inherit such a system. Cowboys burn out and move on.
In the wild west, clients and stakeholders fear that quality is a luxury they can't afford. Technical debt (another Ward Cunningham term) is not paid down. Messes grow. Brittle code, spaghetti and accumulation of debt lead to out of control, over budget projects. Projects become less and less likely to delight when they are delivered.
But even in the wild west there are more civilized enclaves where the rule of law and order has been established. Surely there are mature waterfall projects that run with textbook precision (there are... right?). Other bastions of law and order would be poster children of Agility and Craftsmanship - if only they were not obscured behind NDAs where progressive development companies work in virtual secrecy. At least one large company – IBM – has announced itself as an Agile shop.
Agile processes go a long way to organizing the wild west. Specifically, they limit the cowboy effect by;
- Encouraging self-organizing development teams
- Regularly meeting to inspect our process, improve and adapt
- Using continuous integration and developing a culture of not breaking the build
- Insisting that all code be written in a "test first then code" (and refactor) cadence – TDD
But while these practices are extremely helpful, there are some issues that remain. Even when we follow a rigorous process that does require all this (and more) we are still liable to find hard to maintain code. Enter what has been called the fifth Agile value - Craftsmanship.
There has been a movement building for some time that focuses on the notion of code craft. Recently, Software Craftsmanship Values have been written in a format that parallels the Agile Manifesto. Principles of Software Craftsmanship are being penned and discussed now and soon a well articulated package will exist.
As an Engineering Manager, I like that the manifesto puts a name on the broader "Craftsmanship Values" - values (and practices) that we actively encourage and foster in our company. It also serves as a way to clarify our expectations for potential apprentices or more experienced developers interested in joining the team. It helps with the mutual selection process aka hiring. The Craftsmanship Manifesto creates a dialog which we were previously struggling to have.
Together, the Agile Manifesto and the Craftsmanship Manifesto go a long way to bringing good orderly direction to the wild west of Information Technology. And this is exactly what I want to explore on this site. My intent is to share stories from my exploration of the IT frontier.
I think that all too often, individuals and companies are motivated to misrepresent and overstate their experiences with emerging tools of IT Management. I am extremely fortunate to be part of an organization that promotes this exploration. I want to do my part to share my experience as a way of both clarifying my own thoughts and giving a little bit back.