Welcome back after a long Thanksgiving break. If you were celebrating it, I hope it was a good one!
I was going through my usual feeds in Google reader and I came across a new post title "The Two Types of Programmers" by Jeff Atwood. In this post Jeff seems to be completely retracting his post that he made earlier on how books such as "Teach Yourself Asp.net in 24 Hours" cheapens our craft. Honestly I didn’t agree with Jeff’s first post, and now I also don’t agree with the conclusions that Jeff makes in this post either.
In Jeff’s first post he starts talking about Scott Mitchell’s new book "Teach Yourself Asp.net 2.0 in 24 Hours." and how titles like that cheapen our craft because it takes so much longer than that in order to really learn any technology. To quote the post:
Yes, the book title is just marketing hype to drive sales. It isn’t meant to be a rational statement of expectactions. The implication that you can learn a giant swath of technology like ASP.NET 2.0 in 24 hours, much less become competent in it, is funny to those of us who know better. That part is obvious. But on a deeper level, it’s also offensive. It implies that the field of software development is so shallow that a complete beginner can become competent in 24 hours. Yes, we know better, but not everyone does. And the type of people buying this book most certainly won’t know what they’re getting themselves into.
The last two sentences are what really sticks me. Saying "Yes, we know better" and "the type of people buying this book most certainly won’t know what they’re getting themselves into" is making a pretty broad generalization that people buying these books actually think that they can learn Asp.net in 24 hours. Somehow I doubt that the majority of the people buying these books actually believe that. While I have only bought one of these books ever (It was called Teach Yourself XML in 24 hours, and actually that almost sounds doable 🙂 ) I can imagine that some people are drawn to the fact that the books give a very brief overview of a technology while breaking it down into discrete steps that can be accomplished in small amounts of time (most of them are broken down into 24 one hour lessons).
The reason that I purchased the "Teach Yourself XML in 24 hours" book so many years ago was because I had not dealt much with XML at the time, and I needed something to give me a quick high level overview of the technology without a lot of background and fluff (or what I thought to be fluff at the time). I looked at a bunch of books and at the time I honestly didn’t care about SGML and the history of this stuff (I was a newbie back then) I just wanted someone to show me how to form proper XML documents. And for its purpose, the book served it well. But was I an 80% developer at the time? No, of course I wasn’t, I was green, but I sure wasn’t an 80% developer. I was reading and absorbing anything I could get my hands on. I was less concerned with the background because at the time I was more concerned with learning the technology than learning what was behind it.
So, how does having books like this cheapen our craft? Is an Amish furniture maker worried about the guy working in the La-z-boy factory? Of course not. They serve entirely different customers. One person is looking for a decent piece of inexpensive furniture, and one person is looking for a quality, hand-built piece of furniture. Saying that having inexpensive furniture cheapens the craft of furniture making seems backwards to me, it seems like it would give it more value. Right now I am sitting on a piece of crap couch that still cost me 1000 dollars, and if at the time I could have afforded to buy something better I certainly would have. I appreciate nice furniture more because I have seen bad furniture.
Now, if you are operating on the assumption that having books like this is going to create cheap programmers, that do cheap work, then you are probably incorrect. But there is a *huge* market for cheap work and cheap software. Ignoring the fact that this market exists will only send more and more jobs overseas. (I am *not* saying that overseas programmers are bad, just that overseas labor is less expensive. There are many many skilled developers all over the world.) Some people simply will not pay to have quality software built, and for them the price is much more important than the quality of the software. I am not saying that this is a good thing, it is just the reality of business sometimes.
Jeff is working over at Vertigo and I would assume that they work with large clients with very deep pockets, and it is sometimes easy to forget that almost one fourth of all U.S. workers are employed by businesses with 20 or less employees. I personally work at one of these companies and we deal with these companies all day long. We do consulting for a lot of them and it is hard because we try to only employ alpha developers and so therefore we have to charge high hourly rates in order to turn a profit, but this is in direct contrast to what most of our customers want. A lot of them want "good enough" software at rock bottom prices, something that they have to go elsewhere for.
My point is that we need these two levels of developers because they serve two different purposes. One is (often) a higher paid employee who is given more challenging tasks, and the other usually does jobs that are more planned out and formulaic. While almost every field is made up of a majority of these types of people, in few fields beyond programming is there so much contempt for them. The one thing that we do have to realize though is that these are different types of people and you can’t really interchange them.
Some people refer to these people as Morts or 9 to 5ers, but I find "Morts" offensive and I find no reason to call them this just because they do not share our passion. I prefer the term 9 to 5ers because it carries less of a negative connotation.
This leads me to the statement that I really didn’t agree with in Jeff’s latest post:
I often think we’re wasting our time writing blogs which are largely read by the same 20%. In my experience, there’s precious little trickle-down effect from the alpha programmers to everyone else.
This statement really doesn’t make much sense to me. Why would we be wasting our time when we are aiming our blogs at the 20% of our field that are going to actually read what we write? I think that any developer who is actively reading development books and blogs is not an 80% developer. And of course there is very little trickle down to the 80% because they don’t share our passion! They might have a passion for music, books, surfing, …whatever. They program to keep the lights on and the food in the fridge, but they don’t have a passion for software. Why would they want to spend their time learning about Linq when they can pick it up over time by looking at chunks of code that the alpha developers wrote?
So, in the end I don’t think that you can really reach the 80% developer because by definition if they starting reading and programming in their free time then they are becoming a 20% developer. This is not something that you can teach though, at their very start they have to want to learn and better themselves and they have to have the internal drive to do this. No book or blog post is going to change that, because the real different between an 80 and a 20 developer is not whether or not they can write a Lisp compiler, but whether they have the passion and determination to learn and perfect their craft. So keep on programming, reading, and learning because you don’t care as much as you do because someone talked you into it one day, you care as much as you do because you love the challenge and you can’t imagine it being any other way.
Loved the article? Hated it? Didn’t even read it?
We’d love to hear from you.
I tend to agree. Drawing us-vs-them distinctions doesn’t help anyone.
My position is as follows
:- I try to read as many blog posts/articles as I can when I have the time, but I am a permanent employee of a small company who gets contracted out to a larger firm for most of the year.
Learning becomes difficult due to being at a client and by the time you get home your too tired to browse blogs and read articles – net result is I find myself wanting to download all the new bits and pieces but not having the time.
Hopefully I’ll get some time during the holiday period to at least look at Silverlight, ajax and vs2008.
Does that make me 50/50? <g>
@Dave: Yeah, I don’t know what it about developers that makes them want to look down upon those that don’t know as much/don’t have the same passion that they do.
@Gregor: Ha, yeah, maybe you are a 50/50. 🙂 There are a lot of things that you can do in your normal work schedule though in order to learn. Granted it is harder to learn all of the new technologies if you aren’t using the new versions of the software, but not all software development is about the features of a new language. Focus on the process and learning how to write better, more reliable software. I certainly know that I need to work on that, the pressure that being in a small company can put on you to pump out a lot of code quickly is huge.
Maybe the solution could be, learn every time that you have to work… I also work in a company that have no time for nothing to code… then i convinced to the manager and project manager that every step in the development process must be a learning step… that allows to me stay in-line with the latest.
Off course we can’t abuse of that, one thing is learn, other side is gaming!… so the right choose is analyze the approach and give the real value to the project.
I think dividing programmers into two groups (80/20) is overly simplistic. Some of the people who keep up with everything and are always interested in new technology seem more interested in using this knowledge than designing things properly, resulting in overly complex software which is confusing to other developers who end up having to maintain their work. On the other hand, there are those who come up with great solutions that the others can learn from.
I’m very interested in keeping up with developments in software, read what I can, and try to apply it when appropriate, but I’m reluctant to include myself in the 20% category. I consider myself a competent craftsman, not a guru and am always amazed by how much some other people know. So keep posting for us 89%ers.
@Paul I agree that breaking things up into 80/20 is overly simplistic. I think the 80/20 metaphor is useful for describing those who attempt to learn and apply new techniques to their software development skills and those who don’t. Not all developers fit cleanly into these two parts. In my opinion the 20%ers are just like anyone else, only they want to learn and better themselves. They can be beginners or gurus and everything in between. I am by no means a guru either, I just love software development. I also want to be clear that I do not think that there is anything wrong with being an 80% developer. It is all in whatever makes you happy. For some people their passions are outside of their work, but everyone needs a passion in their lives.