Debates over technology, technique, and process often go nowhere because the participants are arguing from different levels of aspiration.
You’re unlikely to convince someone they should switch to programming Ruby for its beauty, if they’re merely looking to make a living as a single consultant serving local businesses in Schaumburg, Illinois.
Questions such as “does this run on my existing web host?” or “will my clients want something their nephew web designer hasn’t even heard of?” matter far more. Their aspirations are local, finding something that (sorta) works, and getting paid.
It’s easy to snub your nose at that if you have grander aspirations, but there’s a lot of software to be written in this world, and we need all sizes and shapes to get it done.
The third largest landscaper in Schaumburg is probably operating from the same level of aspiration as our single consultant, so there’s a great fit.
You can think of these levels of aspiration in terms of both geographical and technical hierarchies. Here’s a take on what a hierarchy of technical aspirations could look like for programming:
You can imagine a similar hierarchy for the geographical angle with the levels being Local, City, Regional, National, Global.
The key to a fruitful debate is to first establish at what level the person you’re talking to resides, and then use arguments from the next level up. But if they’re entirely content with where they are, then it’s probably better to live and let live.
To help someone move up the hierarchies, they have to have an intrinsic desire to do so. Arguments like “but it works” or “it gets the job done” are tell-tale signs of someone happy at the lowest level of the technical hierarchy and your cue to just quietly back out of the debate.
AstonJ
on 10 Jul 12I think languages and programming practises are highly subjective – far more than people think.
What is good or beautiful to one person may not be the case for another. However, in the spirit of discussion we can at the very least listen to another person’s perspective, and reasons why they feel the way they do. And if they’re smart, and reasonable – they should extend the same courtesy to us.
Yaw
on 10 Jul 12I hope this is not aimed at Gile ;). My sentiments about making arguments are similar. If people tend to think that arguments can be made between them irrespective of their levels, flawed facts are presented and good amount of time is wasted just trying to reach the argument, “it works for me that way so ….” Really nice of you David to hit out straight at this bitch.
I’m loving it
Amy Hoy
on 10 Jul 12I think you can even take it one step further—it’s about aspiration, absolutely, but what is aspiration about? Why do people make the mistake of assuming other people’s aspirations are the same?
The core issue with these debates is that people can’t, or won’t, recognize that their “opponents” are separate people with separate feelings, desires, wishes, circumstances, background, values, information level, tolerance levels, etc. Aspiration is one part of that.
Empathy - and realizing that the other person is actually a whole separate person, not an actor in your own production of Me: The Play! - is the core thing in every human communication difficulty.
Adam Fields
on 10 Jul 12To paraphrase: “No, I won’t fix your computer.”
G.Irish
on 10 Jul 12I think this technical pyramid illustrates the concept very well, but I think another equally important facet is the financial pyramid. If you’re a Java Developer getting paid $150k to develop enterprise apps, you might have to take a pay cut (on average) to switch to being a Ruby developer.
Or maybe if you program in the Microsoft stack, you’d prefer to stay there because the barriers to entry are higher for competing programmers. You’re not gonna get a bunch of freelancers from SE Asia taking SQL Analysis Services jobs from you. I guess that falls under the geography hierarchy though.
There’s yet another angle, the type of work that tends to come with a particular language. I find that a lot of Ruby jobs tend to allow for telecommuting. Whereas you’ll find a lot less of that in the .NET development market. So maybe by switching to Ruby you’re more likely to find flexibility in work-life-balance.
Either way, one thing I HATE is when you meet another programmer, and you tell them what you do, and the next sentence is, “You should switch to ”. 9 times of 10 it is a jerk thing to say, as if the other person had never considered the merits of what they chose to do until you told them they should switch 5 seconds after meeting you.
Matt Massicotte
on 10 Jul 12Kudos to AstonK. Fantastic point.
Christian Huund
on 10 Jul 12So everyone at 37Signals aspires to become a faculty member in computer science to reach the highest echelon? I don’t think so. Just like everybody else you balance several aspirations, making a lot of money is probably one of them and your are probably not willing to let that one go to reach the next level in some other hierarchy.
Marcin
on 10 Jul 12I really like the hierarchy diagram… Great!
Kathy Sierra
on 10 Jul 12I think part of this is explained by whether they see the technology as Their Thing vs. the just a Tool (albeit a crucial one) for enabling/supporting their thing. Of course this is fluid… Many have come to development as a means to make something they needed (including a paycheck) and only later came to appreciate a deeper, richer experience with code.
Almost everybody has Their Thing for which they have high resolution appreciation. The problem is when we want and expect everyone in our domain to have the same exact Thing. Thanks for this post!
Gaurav Chande
on 10 Jul 12This reminds me of a similar diagram by you in your ‘Why Ruby?’ talk, which had inspired me to try ruby. Great read, this one. Btw, should it be ‘tell-tale’ at the end?
seba
on 10 Jul 12Another angle is age. I see it clearly that aspirations degrade sharply as time passes by, i hope this is not always the case, but in general that is what it is. You can see it yourself if you work For a big company
Anon
on 10 Jul 12@G .Irish, I hate the way programmers get pigeon holed into certain technologies by employers
DHH
on 10 Jul 12Kathy, that’s a great point. Also, this pyramid can be applied in finer resolution within your stack. For example, I’m perfectly content to be at the “Well engineered” level when it comes to my use of MySQL, but when it comes to Ruby and Rails, I want to be at “Moving industry forward”.
Erich Menge
on 10 Jul 12Thanks for the pyramid David. I feel like these days a lot of my code is well engineered, some of it is still in the “really works” level. I don’t know how much of it is beautiful, but I’m aiming for that and even “moving industry forward”.
It might be nice to print this so I’m always reminded at what my goal should be when it comes to the projects I care about.
TViking
on 10 Jul 12You forgot to add what you’ve delicately placed at the very top of the pyramid. Condescension.
Also, don’t you think that ‘Beautiful’ and ‘Sorta Works’ are extremely subjective and also largely independent of the technology being used? I usually enjoy your posts, but this was a real swing and a miss.
tj
on 10 Jul 12From what I’ve seen the lesser experienced people seem to choose look over clarity and productivity. IMO almost any language can be beautiful, choose one with less magic.
ChristianL
on 10 Jul 12Good post! I like the comparison to Maslow hierarchy. When worrying about food there are no way you will listen to worries about the environment or world peace. I do think there’s a big difference though. Anyone starting with programming needs to get the things running, they start from the bottom and the more experience they have they start contemplating about code quality, build servers, testing other languages than they have started with. In Maslow’s world you can always fall down the pyramid and worry about food and sleep again but I don’t think that goes for programmers. When you have achieved a certain level of understanding you stay there.. (I hope ;)
Bruce
on 11 Jul 12Hmm….sorta works….is that a glancing blow at Wordpress? ;) Great concept/diagram.
jj
on 11 Jul 12I’m with TViking. This was a useful diagnosis of a problem I see all the time, but to actually get to solutions, you need respect for other perspectives/imperatives, and that wasn’t on display here.
Matt
on 11 Jul 12Wordpress sorta works?! Care to elaborate on that? Wordpress is an open-source project bringing together tons of smart people who for years have built a platform that more than just sorta works! Not sure if condescending or ignorant?
radex
on 11 Jul 12Thanks David, that was inspiring! As always ;)
It’s just something so obvious and yet I’ve never fully saw it.
Jim
on 11 Jul 12Live and let live I say. The only time these sorts of metrics are useful, in my opinion, is when you are working with the other person. When that happens, you need to both be singing from the same hymn sheet. The rest of the time, creating artificial hierarchies in general just feeds people’s egos.
Ryan
on 11 Jul 12@Matt oh the irony. You are one of those guys at the bottom of the pyramid who just doesn’t get it.
Ryan
on 11 Jul 12...or just a troll who likes to play devil’s advocate (and also happens to be from Schaumburg, Illinois).
Das
on 12 Jul 12This post…basically summarizes the reason I’ve been unable to stay at any place of employment for longer than a few years. Even the best places I’ve worked at (fool.com, for example) still primarily consist of people hanging around in the lower levels of the pyramid. As a youngin’, it took me a while to realize that most of them really don’t want to move up. They’ve got their place in life – like you said, there is plenty of work that needs to be done…
If you’re really serious about working at the highest levels of aspiration, it seems like the only choice you have is to run your own show or get lucky as hell and work with some folks on the same plane of existence.
Whatever you do, you can’t let yourself be influenced by the small-minded approach taken by people you may encounter. A lot of people try to drag you down to their level.
Matt Mullenweg
on 12 Jul 12I think David’s point was that someone at the bottom of the pyramid might just know how to make a website with WordPress and lightly customize it without an understanding or passion for what’s under the hood. That’s pretty much the point of WP, to democratize publishing by making it easy for anyone to use regardless of their coding ability. We work hard so you don’t have to.
Dalton
on 12 Jul 12@Matt Mullenweg: Yes, I would say that WordPress has lowered the barriers to entry for creating on the web, and there are a lot of WordPress sites out there that only sorta work. But at the other end of the spectrum, you’ve got the people that are building the platform — I would say that’s innovation and moving the industry forward.
I thought it was a little weird to single out WordPress in the “Sorta Works” category when you’re talking about a useful tool that is used by serious web professionals every day. Beautiful code, test-driven development, and WordPress are not mutually exclusive.
DHH
on 12 Jul 12Matt, exactly. Hey, that’s how I started with a lot of programming. Mutating an existing blog engines to just get something that sorta worked together for a web site. It’s the entry point for a lot of people and it’s a great one too.
Jason Jensen
on 12 Jul 12WordPress’ core code works. I would classify WP core code as “Well Engineered”, at a minimum. And I’d like to read the counterpoint to the idea that it somehow doesn’t move the industry forward.
If someone takes the platform and runs sloppy code through it, that’s only because WP has made getting a website together so easy for non-coders. Which is democratizing both for publishing and learning code, since it allows non-programmers to work backwards and build out from what’s been built by others – a great way for designers to learn PHP, JavaScript, etc.
Matt Mullenweg – you are one of my all-time heros! And DHH, you are awesome too, obviously, but I think you missed the mark with the dis to WP. WordPress can be used by both novices and professionals with varying degrees of output. Its perceived faults are a byproduct of its many successes.
Zizzy
on 12 Jul 12Absolutely excellently put and something i dont believe has been said. thank you.
p249434876
on 13 Jul 12WordPress’ core code works. I would classify WP core code as “Well Engineered”, at a minimum. And I’d like to read the counterpoint to the idea that it somehow doesn’t move the industry forward.www.diesel-generatorset.com
This discussion is closed.