Some of you may have experienced the drama surrounding one of the recent stack overflow podcasts. In this podcast Joel makes this comment:
"Last week I was listening to a podcast on Hanselminutes, with Robert Martin talking about the SOLID principles. It’s object-oriented design, and they’re calling it agile design, which it really, really isn’t. It’s principles for how to design your classes, and how they should work. And, when I was listening to them, they all sounded to me like extremely bureaucratic programming that came from the mind of somebody that has not written a lot of code, frankly."
You will not be surprised to find out that many people were very upset about this. Interestingly though, it honestly didn’t get me all that fired up because I know that Joel has basically created his online persona out of taking contrarian positions. I just figured that it was probably a carefully crafted move to drum up some online controversy and that a few days or weeks later it would die down.
I thought that until today I came across this post on Coding Horror which wasn’t so bad until I started reading through the comments. Only when I started reading through the comments did I really start to feel a sense of dismay at the current state of software development. I read about 50 different version of this:
"I’m a cowboy programmer who just wants to write my software the way that I want to write it. Sure, I might listen to other people a little bit, but I think I know better how to design software. So I’ll listen to what they have to say, take the pieces I like, and go off on my merry way."
I have never been so reminded of how immature our industry is than at this point. And I’m not talking about the individual people, I’m talking about the fact that we have sitting in front of us a really good chance at introducing a little bit of rigor into the way that we think about and implement software systems, but people just blow it off. People just want the easy way out, and they don’t want to take the time to actually have to learn and apply some of this stuff.
Check out the first comment on Jeff’s post:
I’ll tell you one thing, the Gang of Four book is probably one of my most disappointing programming reads of all time. Completely useless to me. Strange that I can have a successful programming career without understanding that book…
I wanted to fall out of my chair. You are unbelievably lucky to be in a field where the people that wrote that book are still alive. As Mehran Sahami said, it is like "Geometers living in the time of Euclid". We are now in the process of guiding our industry into a realm where we need to start having a better understanding of how systems are designed and interacted with. We can’t keep going on forever acting like we can’t take anything that we have learned from system to system or that someone else’s system has nothing to teach us. Why would you ever rely on only your own experience when you have the experience of hundreds of the greatest minds in the world at your fingertips? I would encourage you to go out and pick up some books by some of the greatest minds of our field, and then go to their blogs or interact with them on Twitter.
Whether you like it or not, you are part of this industry, and that means that you hold the keys for how others see your job and the work that you produce. If you don’t take pride in your work, and you don’t treat your work as a craft, then neither will they. They will see you as a cog who hammers out code and duct tapes his way to "success". I don’t think that this is in either yours or my best interest.
Here in Richmond we have recently re-branded one of our local groups as the "Richmond Software Craftsmanship Group". Even though we aren’t all experts, we are concerned with the overall view of our profession as a craft that should be studied and perfected. With a craft comes techniques and tools that we cannot create or think up ourselves. Sure it is all about creativity, but you need to save your creativity for when you really have a problem that other minds have not put serious effort into.
So get out there, and please, please, ask for help. Don’t pick up the GoF book and put it down in desperation. If you don’t have anyone local to help you, then go get a book that takes a more intro approach like Head First Design Patterns. Get out there and find a group that is interested in Software Craftsmanship, and if you don’t find one, then start one! Get excited about software and about design and you may find yourself taking a little more pride in your work!