Tuesday, August 28, 2012

Response to: No Silver Bullet, Chimera of Software Quality, and Errant Trades


Response to stuff we had to read for Software Development class.

A common problem that is emerging in software development these days seems to be one of Quality. That isn't to say that all engineers work is shoddy, but with increasingly complex systems that they have to design problems can and will arise. No Silver Bullet makes the case that software development as seen from the non-technical managers perspective is actually something akin to a werewolf, they “transform unexpectedly from the familiar into horrors”. To combat the werewolf menace some people have tried coming up with a Lean(#1) software development model, but is this absolutely necessary? Will we find “the silver bullet” by forcing our engineers into a new paradigm? I think this approach would work for other types of work (data entry, HR, management), but I don’t think that cutting corners of the development will make a better product.(#2)

On the opposite end of the spectrum we have people saying that software needs to be regulated more, and developers need to have certifications before they can start working on different systems(#3). But as Les Hatton said in The Chimera of Software Quality: “In my experience as an employer, [software engineering] doesn’t even appear to have much to do with [employees] educational background. The best programmer I ever employed started as a 16-year-old with no academic qualifications... one of my worst programmers had a PhD in mathematics”. So if the educational background doesn't seem to have an impact on who is a good developer then I can safely say that certifications would be the worst possible thing you can do for this job market. The people who can do well in an academic setting (The PhD student) will be the ones that have the certification to work, while the 16-year-old will not even be able to take the test.

So how do we actually fix the quality of the software we make if we can’t just educate the developers? I think that the best way of changing the habits of the developers (and the software companies specifically) is the same way Gamers(#4) show their wants and needs to video game companies, though buying the product. I know it seems like we are doing that already, but hear me out. If we (as a collective of people) decided to not buy shoddy software, or actively going out of our way to contact the great companies and let them know that you appreciate them making great (and well tested) software then the mentality of software development will change. Right now everyone in the development world (and video game world) thinks that “We just need to push something out there, we can fix it later”. NO, do not let them get away with that mentality. Do not buy that software package, demand a refund for it. We as consumers hold the power to change how the developers are acting.

The same thing can go for people working in-house. Force them to use Test Driven Development if they have to. Bring in people who would use the software to get their input, even giving a few of them jobs to help figure out what they would want out of it. This is where education can come in and be effective, not education for certification, but education of the programmers that are already working for you. Bring in speakers for different paradigms, talk about agile development and create a cost\benefit list to see if it would work for you. There is so much that you can do working with internal software development that it is still mind boggling how much people are still willing to let it stay bad software.

(#1): Lean: http://www.qualitydigest.com/feb02/html/lean.html
(#2): Engineering-Matters wrote about “Where Lean goes wrong” already: http://www.engineering-matters.com/2011/03/where-lean-goes-wrong/
(#3): All three papers hinted at this in one form or another.
(#4): People who play videogames as a hobby.
Links to the papers:
"No Silver Bullet"
"Chimera of Software Quality"
"Errant Trades"