ON THIS PAGE
    ARCHIVES
    CATEGORIES
    BLOGROLL
    LINKS
    SEARCH
    MY BOOKS
    DISCLAIMER
 
 Saturday, May 10, 2008
I'm Pro-Choice... Pro Programmer Choice, that is

Not too long ago, Don wrote:

The three most “personal” choices a developer makes are language, tool, and OS.

No.

That may be true for somebody who works for a large commercial or open source vendor, whose team is building something that fits into one of those three categories and wants to see that language/tool/OS succeed.

That is not where most of us live. If you do, certainly, you are welcome to your opinion, but please accept with good grace that your agenda is not the same as my own.

Most of us in the practitioner space are using languages, tools and OSes to solve customer problems, and making the decision to use a particular language, tool or OS a personal one generally gets us into trouble--how many developers do you know that identify themselves so closely with that decision that they include it in their personal metadata?

"Hi, I'm Joe, and I'm a Java programmer."

Or, "Oh, good God, you're running Windows? What are you, some kind of Micro$oft lover or something?"

Or, "Linux? You really are a geek, aren't you? Recompiled your kernel lately (snicker, snicker)?"

Sorry, but all of those make me want to hurl. Of these kinds of statements are technical zealotry and flame wars built. When programmers embed their choice so deeply into their psyche that it becomes the tagline by which they identify themselves, it becomes an "ego" thing instead of a "tool" thing.

What's more, it involves customers and people outside the field in an argument that has nothing to do with them. Think about it for a second; the last time you hired a contractor to add a deck to your house, what's your reaction when they introduce themselves as,

"Hi, I'm Kim, and I'm a Craftsman contractor."

Or, overheard at the job site, "Oh, good God, you're using a Skil? What are you, some kind of nut or something?"

Or, as you look at the tools on their belt, "Nokita? You really are a geek, aren't you? Rebuilt your tools from scratch lately (snicker, snicker)?"

Do you, the customer, really care what kind of tools they use? Or do you care more for the quality of solution they build for you?

It's hard to imagine how the discussion can even come up, it's so ludicrous.

Try this one on, instead:

"Hi, I'm Ted, and I'm a programmer."

I use a variety of languages, tools, and OSes, and my choice of which to use are all geared around a single end goal: not to promote my own social or political agenda, but to make my customer happy.

Sometimes that means using C# on Windows. Sometimes that means using Java on Linux. Sometimes that means Ruby on Mac OS X. Sometimes that means creating a DSL. Sometimes that means using EJB, or Spring, or F#, or Scala, or FXCop, or FindBugs, or log4j, or ... ad infinitum.

Don't get me wrong, I have my opinions, just as contractors (and truck drivers, it turns out) do. And, like most professionals in their field, I'm happy to share those opinions with others in my field, and also with my customers when they ask: I think C# provides a good answer in certain contexts, and that Java provides an equally good answer, but in different contexts. I will be happy to explain my recommendation on which languages, tools and OSes to use, because unlike the contractor, the languages, tools, and OSes I use will be visible to the customer when the software goes into Production, at a variety of levels, and thus, the customer should be involved in that decision. (Sometimes the situation is really one where the customer won't see it, in which case the developer can have full confidence in whatever language/tool/OS they choose... but that's far more often the exception than the rule, and will generally only be true in cases where the developer is providing a complete customer "hands-off" hosting solution.)

I choose to be pro-choice.


Saturday, May 10, 2008 10:34:44 PM (Pacific Daylight Time, UTC-07:00)
Definitely ... u said right...I kinda agree with u...
THere have been enough wars but the developers need to come out of their spiritual languages & should atleast learn about 7 to 8 good programming languages that the industry has produced..
Most of the time it is Java vs .NET but i think Python, Ruby, F#, etc. are going to have good say in future..too..
Specially the implementations of dynamic languages on CLR & JVM are opening more gates for Dynamic languages..

Most important is skills of developer & these grow more, if u pick a new language over some time & try to learn it...or A Developer must know all the paradigms - Imperative, Functional, Object Oriented...etc
Go & try F#, if some of u wanna have fun ( especially for C# guys ) bcoz u want to remain with .NET libraries..& Groovy if u are java guy..
Sunday, May 11, 2008 7:09:06 AM (Pacific Daylight Time, UTC-07:00)
It's a nice anlogy, but things like operating system and virtual machine are much closer to the materials a contractor would use then the tools a contractor would use. Like wood, steel, paint, plaster, and ceramic tile the operating system and a virtual machine are left behind at the customer site and strongly affect the experience of the work. Any good contractor has strong opinions on what materials are most suitable for the job.
Sunday, May 11, 2008 1:12:40 PM (Pacific Daylight Time, UTC-07:00)
I couldn't agree with you in some ways. Most professional developers, who I am aware, follow the rule (or law?) from Don Box. They made their choice of a language, tools and OS. And after that is done, many people stop learning new things!

But I am with you: It is important, to improve steadily your skills and learn other languages.
Monday, May 12, 2008 6:34:42 AM (Pacific Daylight Time, UTC-07:00)
Hi Ted Neward,

I like your blogs a lot, but I have to say I think you may need to re-word this one. I don't think it's wrong for a person to identify them selves as a 'Java Programmer', 'C# Programmer', or any other language.

Certainly I agree that's not appropriate for non-technical audiences. But if in fact the large majority of what I know how to do is in a particular language, then I'm simply informing others of that. And I certainly have no suggestion that my choice is 'better' then other choices. In fact I completely agree that the best tool for the job should be used. I'm just saying, 'hey this is what I can do for you proficiently, if something else will fit better I will suggest it, I just may not be the best person for the job'.

The programming language is often more like the material left when the job is done. Customers often need to know this at some point, and I would not be irritated if my hired contractor told me he's a wood-carpentry contractor.

- Andy
Andres Galeano
Monday, May 12, 2008 7:10:35 AM (Pacific Daylight Time, UTC-07:00)
I agree 100%,

There is so much zealotry in the computer world it makes me sick. I don't like listening to microsoft's corporate koolaid, but just as much, I don't like listening to some linux zealot devalue me for working at a microsoft shop.

It is possible to work in lots of different spaces and learn about lots of different platforms. To say this or that is outright bad to work with in all cases is closed-minded.
Tuesday, May 13, 2008 10:00:43 PM (Pacific Daylight Time, UTC-07:00)
My experience is that sites that are hiring determine the tools and languages and then go out looking for programmers who can use them. So, if the site uses Java, they want Java programmers. Developers who identify themselves as something else or as jacks-of-all-trades when it comes to languages, I believe, fare worse than someone who can claim, let's say, ten years of enterprise Java development. So in some sense, describing yourself as a "Java programmer" identifies the niche you fill in the terms employers are looking for.

The comparison of Craftsman/Skil is not comparable to, let's say, Eclipse/NetBeans. The contractor's tools are essentially interchangeable. An electric drill has a pretty much universal user interface. NetBeans and Eclipse, however, both have learning curves and rely on different IDE models. So, there is a cost to switching between them.

But your overarching point of not being ideological about specific technologies is right, IMO. I just disagree on the details.
Comments are closed.