So starting the new jobs has given me the opportunity to take a fresh look at software and how it should be approached.
One of the questions that I have been pondering on alot is “What is code quality ?” Is it code that’s well documented ? Is it code that follows some sort of coding convention, code that is uniform throughout ? Well named variables ? Test cases ?
Obviously we all have our own perceptions, but in order to write good software I think its important to look at code from multiple perspectives, in order to do this I need your guys feedback!
Please tell me what you think makes good code ?
Manifesto for Software Craftsmanship
I think this is long in the making and something that’s sorely needed in the industry. Too many people are getting away with too much these days. People call themselves “senior developers” but don’t have a clue when it comes to writing well understood and valuable code. Too many people entering the industry are being trained by institutions whose only interest is monetary gain and couldn’t care less about creating good software craftsmen. The revolution is upon us, fight the flood of ineptness and lack of any pride that seems to have taken over our industry and sign the manifesto; then live it!
I read an interesting post on Mike Cohn’s blog entitled A Requirements Challenge regarding a meeting he had with Tom and Kai Gilb. In short, from what I can tell, it centers around the idea that, as software engineers, we hardly ever, if ever at all, build new functions, but that we inevitably end up improving the quality of an existing function.
I have to say that, after thinking about it for a while, I must agree, even though I tend to find it hard to wrap my mind around the concept. Essentially the idea is to move away from a developer centric design and focus on stakeholder satisfaction. What makes stakeholders happy is quality, not only function. More important than what a thing does is how well it does it. In other words you should adopt an attitude of creating “Quality Requirements” rather than just “Functional Requirements”. There’s a lot more to it of course, but that’s my understanding in a nutshell.
Read the blog, and especially the comments afterwards…