I often find myself both fascinated and amazed at the things that I have been able to learn, simply by observing the natural world. I love that nature can teach me many lessons about the world that I live in, yet perhaps even more amazing is when I observe something in nature that I can relate both analogously and directly to software development. An ant colony for example can be used to provide good analogies relating to teamwork and communication, however I’m thinking about something that I observed only recently which made me realize that in terms of Agile practices and software development methodology, we software developers have really only recently learned how to approach our craft in a manner that spiders have known about for literally for millennia.
Technical debt is one of those concepts that has both gained a lot of traction over the last few years, and in some ways been misused as a concept quite heavily. It seems that nearly anything and everything that people don’t like about a code base gets lumped into a broad technical debt category, so it’s getting harder for people to define with clarity what technical debt actually is as the concept becomes more and more muddied but people’s perceptions as to what it is they are looking at when they perceive technical debt. Contributing to this lack of clarity is the need to be able to quantify this debt, and to measure it in a meaningful way. The problem is however, that technical debt isn’t like bank loan, where you accrue a fixed amount of debt and you pay it of bit by bit, and I can’t help but think that for many, the definition of the word Debt has left many feeling that it is something very specific. For others, the issue is that everything they do incurs a measure of “debt” that negatively impacts on the product, so there is a kind of underlying hysteria that leads some people to believe that they need to measure every little thing about their software development, and that somehow they can see a report that will pinpoint where the problems lie. The reality however is both much more subtle, and perhaps much simpler than many people are leading themselves to believe.
Read the rest of this entry
I came across a webcast the other day of an interview with Peter Cappelli from the University of Pennsylvania’s business school, where it was being discussed that it is employers who are to blame for the “skills shortages” that we see happening in many industries, and which in my own personal experience in particular is felt quite strongly in the IT industry.
In his interview, Peter makes some really good points about how the human resources departments in many companies have either shrunk or been made effectively obsolete, essentially removing some of the more traditional checks and balances in the recruitment process. He also mentioned how most companies put very little effort into providing skills and training any more, and how the modern screening processes where aptitude tests and applications asking lots of yes-no answers can result in finding no suitably “qualified” applicants out of a pool numbering in the thousands!! It’s these last points that I feel are the most telling, and in particular when the modern day hiring processes that most companies seem to use (referred to as the Silicon Valley model) seem to embrace a zero-training + blind-screening process (a subject I have touched on before).
Software development is an often misunderstood game. When you tell a complete non-technical stranger that you are a Software Developer, they will often respond with questions such as: “So you’re into computers?”, or “So you make games?”, or even “Can you help me with my computer problem?”. Clearly these people have no idea what software development is, and when you attempt to explain how you do what you do, they nod, and do their best to look impressed, yet you can see that they are thinking things like: “I have no idea what this guy is going on about”, or they find a quick way to change the subject. This is all to be expected and barely registers with me any more. I am however quite perplexed to have observed over the last few years just how misunderstood software development is by many of the people who are themselves software developers!
I remember being told during the early 80’s by every adult who asked me what I wanted to do as a career that I should get into computers because everybody would have one one day and would need experts to make them do stuff. Clearly those predictions came true, and it appears that I wasn’t the only kid to heed the advice of his wiser elders at the time – actually I told everyone that I wanted to do something else so that I could look rebellious when I would decide to change to do all that “geek stuff” later on! The thing is, while there are a lot of software developers out there, not all of them appear to be able to claim to be very good at what they do, even after 10’s of years of experience. Yes, that was yet another bold statement for me to make, but I have a good reason for believing this, and I might even have an explanation or two for why this is.
It’s been nearly two months since my last post and I wanted to mention this because it was completely unintentional on my part. I have in short been extremely busy and distracted over the last few months as several very interesting and exciting developments have occurred in my life and required much of my time.