JOB REFERRALS
    ON THIS PAGE
    ARCHIVES
    CATEGORIES
    BLOGROLL
    LINKS
    SEARCH
    MY BOOKS
    DISCLAIMER
 
 Thursday, July 24, 2008
From the "You Must Be Trolling for Hits" Department...

Recently this little gem crossed my Inbox....

Professionalism = Knowledge First, Experience Last
By J----- A-----


Do you trust a doctor with diagnosing your mental problems if the doctor tells you he's got 20 years of experience? Do you still trust that doctor when he picks up his tools, and asks you to prepare for a lobotomy?

Would you still be impressed if the doctor had 20 years of experience in carrying out lobotomies?

I am always skeptic when people tell me they have X years of experience in a certain field or discipline, like "5 years of experience as a .NET developer", "8 years of experience as a project manager" or "12 years of experience as a development manager". It is as if people's professional levels need to be measured in years of practice.

This, of course, is nonsense.

Professionalism is measured by what you are going to do now...

Are you going to use some discredited technique from half a century ago?
•    Are you, as a .NET developer, going to use Response.Write, because you've got 5 years of experience doing exactly that?
•    Are you, as a project manager, going to create Gantt charts, because that's what you've been doing for 8 years?
•    Are you, as a development manager, going to micro-manage your team members, as you did in the 12 years before now?

If so, allow me to illustrate the value of your experience...

(Photo of "Zero" signs)

Here's an example of what it means to be a professional:

There's a concept called Kanban making headlines these days in some parts of the agile community. I honestly and proudly admit that I have no experience at all in applying Kanban. But that's just a minor inconvenience. Because I have attained the knowledge of what it is and what it can be good for. And now there are some planning issues in our organization for which this Kanban-stuff might be the perfect solution. I'm sure we're going to give it a shot, in a controlled setting, with time allocated for a pilot and proper evaluations afterwards. That's the way a professional tries to solve a problem.

Professionals don't match problems with their experiences. They match them with their knowledge.

Sure, experience is useful. But only when you already have the knowledge in place. Experience has no value when there's no knowledge to verify that you are applying the right experience.

Knowledge Comes First, Experience Comes Last

This is my message to anyone who wants to be a professional software developer, a professional project manager, or a professional development manager.

You must gain and apply knowledge first, and experience will help you after that. Professionals need to know about the latest developments and techniques.

They certainly don't bother measuring years of experience.

Are you still practicing lobotomies?

Um....

Wow.

Let's start with the logical fallacy in the first section. Do I trust a doctor with diagnosing my mental problems if he tells me he's got 20 years of experience? Generally, yes, unless I have reasons to doubt this. If the guy picks up a skull-drill and starts looking for a place to start boring into my skull, sure, I'll start to question his judgement.... But what does this have to do with anything? I wouldn't trust the guy if he picked up a chainsaw and started firing it up, either.

Look, I get the analogy: "Doctor has 20 years of experience using outdated skills", har har. Very funny, very memorable, and totally inappropriate metaphor for the situation. To stand here and suggest that developers who aren't using the latest-and-greatest, so-bleeding-edge-even-saying-the-name-cuts-your-skin tools or languages or technologies are somehow practicing lobotomies (which, by the way, are still a recommended practice in certain mental disorder cases, I understand) in order to solve any and all mental-health issues, is a gross mischaracterization--and the worst form of negligence--I've ever heard suggested.

And it comes as no surprise that it's coming from the CIO of a consulting company. (Note to self: here's one more company I don't want anywhere near my clients' IT infrastructure.)

Let's take this analogy to its logical next step, shall we?

COBOL is (at least) twenty years old, so therefore any use of COBOL must clearly be as idiotic as drilling holes in your skull to let the demons out. So any company currently using COBOL has no real option other than to immediately upgrade all of their currently-running COBOL infrastructure (despite the fact that it's tested, works, and cashes most of the US banking industry's checks on a daily basis) with something vastly superior and totally untested (since we don't need experience, just knowlege), like... oh, I dunno.... how about Ruby? Oh, no, wait, that's at least 10 years old. Ditto for Java. And let's not even think about C, Perl, Python....

I know; let's rewrite the entire financial industry's core backbone in Groovy, since it's only, what, 6 years old at this point? I mean, sure, we'll have to do all this over again in just four years, since that's when Groovy will turn 10 and thus obviously begin it's long slide into mediocrity, alongside the "four humors" of medicine and Aristotle's (completely inaccurate) anatomical depictions, but hey, that's progress, right? Forget experience, it has no value compared to the "knowledge" that comes from reading the documentation on a brand-new language, tool, library, or platform....

What I find most appalling is this part right here:

I honestly and proudly admit that I have no experience at all in applying Kanban. But that's just a minor inconvenience. Because I have attained the knowledge of what it is and what it can be good for.

How can a developer honestly claim to know "what it can be good for", without some kind of experience to back it? (Hell, I'll even accept that you have familiarity and experience with something vaguely relating to the thing at hand, if you've got it--after all, experience in Java makes you a pretty damn good C# developer, in my mind, and vice versa.)

And, to make things even more interesting, our intrepid troll, having established the attention-gathering headline, then proceeds to step away from the chasm, by backing away from this "knowledge-not-experience" position in the same paragraph, just one sentence later:

I'm sure we're going to give it a shot, in a controlled setting, with time allocated for a pilot and proper evaluations afterwards.

Ah... In other words, he and his company are going to experiment with this new technique, "in a controlled setting, with time allocated for a pilot and proper evaluations afterwards", in order to gain experience with the technique and see how it works and how it doesn't.

In other words....

.... experience matters.

Knowledge, apparently, isn't enough--experience still matters, and it matters a lot earlier than his "knowledge first, experience last" mantra seems to imply. Otherwise, once you "know" something, why not apply it immediately to your mission-critical core?

At the end of the day, buried under all the ludicrous hyperbole, he has a point: developers, like medical professionals, must ensure they are on top of their game and spend some time investing in themselves and their knowledge portfolio. Jay Zimmerman takes great pains to point this out at every No Fluff Just Stuff show, and he's right: those who spend the time to invest in their own knowledge portfolio, find themselves the last to be fired and the first to be hired. But this doesn't mean that everything you learn is immediately applicable, or even appropriate, to the situation at hand. Just because you learned Groovy last weekend in Austin doesn't mean you have the right--or the responsibility--to immediately start slipping Groovy in to the production servers. Groovy has its share of good things, yes, but it's got its share of negative consequences, too, and you'd better damn well know what they are before you start betting the company's future on it. (No, I will not tell you what those negative consequences are--that's your job, because what if it turns out I'm wrong, or they don't apply to your particular situation?) Every technology, language, library or tool has a positive/negative profile to it, and if you can't point out the pros as well as the cons, then you don't understand the technology and you have no business using it on anything except maybe a prototype that never leaves your local hard disk. Too many projects were built with "flavor-of-the-year" tools and technologies, and a few years later, long after the original "bleeding-edge" developer has gone on to do a new project with a new "bleeding-edge" technology, the IT guys left to admin and upkeep the project are struggling to find ways to keep this thing afloat.

If you're languishing at a company that seems to resist anything and everything new, try this exercise on: go down to the IT guys, and ask them why they resist. Ask them to show you a data flow diagram of how information feeds from one system to another (assuming they even have one). Ask them how many different operating systems they have, how many different languages were used to create the various software programs currently running, what tools they have to know when one of those programs fails, and how many different data formats are currently in use. Then go find the guys currently maintaining and updating and bug-fixing those current programs, and ask to see the code. Figure out how long it would take you to rewrite the whole thing, and keep the company in business while you're at it.

There is a reason "legacy code" exists, and while we shouldn't be afraid to replace it, we shouldn't be cavalier about tossing it out, either.

And we definitely shouldn't look at anything older than five years ago and equate it to lobotomies. COBOL had some good ideas that still echo through the industry today, and Groovy and Scala and Ruby and F# undoubtedly have some buried mines that we will, with benefit of ten years' hindsight, look back at in 2018 and say, "Wow, how dumb were we to think that this was the last language we'd ever have to use!".

That's experience talking.

And the funny thing is, it seems to have served us pretty well. When we don't listen to the guys claiming to know how to use something effectively that they've never actually used before, of course.

Caveat emptor.


Thursday, July 24, 2008 5:56:02 AM (Pacific Daylight Time, UTC-07:00)
Being an author yourself, maybe you would want to link to the original content writer rather than wholesale copy/paste. http://agilesoftwaredevelopment.com/blog/jurgenappelo/professionalism-knowledge-first

Regards!
Thursday, July 24, 2008 7:23:42 AM (Pacific Daylight Time, UTC-07:00)
It boils down to the fact that 10 years experience != 10 years experience if one of the people in question has repeated the same year of experience 10 times and the other person has explored and learned new skills in each of the 10 years.

You're primarily thinking of the second type of person, and the quote is thinking of the first type.
Greg Vaughn
Thursday, July 24, 2008 9:18:38 AM (Pacific Daylight Time, UTC-07:00)
I got a completely different message when I read the OP than you did, apparently. It looked to me as if he was combatting the all to annoying practice of IT shops to only hire based on experience and not your overall knowledge level. For instance, some companies require 7 years of .NET experience. You, in your mind, equate that to Java. Many IT shops do NOT equate that to Java. A brilliant Java programmer that could easily come in and master C# because of his knowledge doesn't get the time of day while a person who barely knows the basics of C#, but has 7 years of writing "Hello World" ends up with the job.

I could be misreading him, but I think he was fighting against inane job requirements more than old languages.
Thursday, July 24, 2008 10:25:51 AM (Pacific Daylight Time, UTC-07:00)
Hey Ted. Although your post wasn't aimed this way, I think what you say applies directly to evangelists as well. Evangelists should never be salesmen. We should able to talk about the pros and cons of any technology we evangelize, and if we can't, we have no business being evangelists.

Completely different topic than what you were discussing I know, but I was thinking about how much of what you were saying applied directly to the idea of evangelism. We, as evangelists, have a problem at times of talking about how much better and greater the "new stuff" is compared to the "old stuff". And that simply can't be the way we operate if we are to be successful. There is no silver bullet and every product has it's flaw. We need to be able to communicate those flaws just as much as the successes.

Just my $0.02
Thursday, July 24, 2008 11:45:54 AM (Pacific Daylight Time, UTC-07:00)
First of all, if you're quoting my post, blocking out my name, and attacking me behind my back by calling me "our intrepid troll", you could have shown the decency of linking back to my original post. Here it is, for those interested in the real discussion:
http://www.agilesoftwaredevelopment.com/blog/jurgenappelo/professionalism-knowledge-first

Now, let's review some of your remarks:

"COBOL is (at least) twenty years old, so therefore any use of COBOL must clearly be as idiotic."

I never talked about COBOL, or any other programming language. I was talking about old practices that are nowadays considered harmful and seriously damaging. (Like practising waterfall project management, instead of agile project management.) I don't see how programming in COBOL could seriously damage a business. Why do you compare COBOL with lobotomies? I don't understand. I couldn't care less about programming languages. I care about management practices.


"How can a developer honestly claim to know "what it can be good for", without some kind of experience to back it?"

I'm talking about gaining knowledge from the experience of others. If I hear 10 experts advising the same best practice, then I still don't have any experience in that best practice. I only have knowledge about it. That's how you can apply your knowledge without your experience.


"Knowledge, apparently, isn't enough--experience still matters"

Yes, I never said experience doesn't matter. I only said it has no value when you don't have gained the appropriate knowledge (from other sources) on when to apply it, and when not.


"buried under all the ludicrous hyperbole, he has a point"

Thanks for agreeing with me.


"developers, like medical professionals, must ensure they are on top of their game and spend some time investing in themselves and their knowledge portfolio"

Exactly.


"this doesn't mean that everything you learn is immediately applicable, or even appropriate, to the situation at hand"

I never said that. You're putting words into my mouth.
My only claim is that you need to KNOW both new and old practices and understand which ones are good and which ones can be seriously damaging. I simply don't trust people who are bragging about their experience. What if a manager tells me he's got 15 years of experience managing developers? If he's a micro-manager I still don't want him. Because micro-management is considered harmful these days. A manager should KNOW that.


"And we definitely shouldn't look at anything older than five years ago and equate it to lobotomies."

I never said that either. Why do you claim that I said this? I don't have a problem with old techniques. The daily standup meeting is a 80-year old best practice. It was already used by pilots in the second world war. How could I be against that? It's fine as it is.


It's ok you didn't like my article. Sure it's meant to be provocative, and food for thought. The article got twice as many positive votes than negative votes from DZone readers. So I guess I'm adding value. But by taking the discussion away from its original context (both physically and conceptually), and calling me names, you're not adding any value for anyone.
Thursday, July 24, 2008 2:30:19 PM (Pacific Daylight Time, UTC-07:00)
The problem with 'knowledge first' is, when you can affirm you 'know' something.

If you take a OO Programming Course in college, and the teacher presents you all GoF patterns, after that class you *know* that patterns are good, and programming without patterns is stupid.

Then, you start programming using patterns on everything, and by experience, you'll find out that they raise the complexity of your code, and must be used consciously, not as a recipe of success.

Then, you see people saying that design patterns exist just to patch deficiencies of the language. So, now you *know* that design patterns are evil.

But then, you start coding with a new language in which you don't have to use any of the GoF patterns, and you'll see that you must solve the same problems again and again, and you see a pattern for the solutions. So, now you understand that patterns aren't evil.

Knowledge is very important and necessary. And so is experience. Knowledge gives you new ways of doing things, and may help you avoiding some pitfalls. But it is the experience (YOUR experience) that will help you discern the 'good' knowledge from the 'bad' or 'dubious' knowledge. If you just blindly trust the experience of others, you're trying to avoiding taking responsibility for your decisions. You should listen to what others (more experienced) have to say, but in the end, it is your own experience that really matters.

PS.: Experience without knowledge may be as damaging as knowledge without experience (think a boss like Dilbert's, who used to be a techie in the seventies, but can't understand what the term 'abstraction' means, but tries to make technical decisions on new applications). That probably is what you (Jurgen) was trying to say.
Tetsuo
Sunday, July 27, 2008 4:46:43 PM (Pacific Daylight Time, UTC-07:00)
Who's baiting whom?

It's clear if you read the post, and have read Jurgen's blog, that he's not talking about outdated technologies. He's talking about outdated thinking. Sorry, I know its not as elegant as comparing things to old wars, but I found his post on the mark and incredibly true. Calm down. Or are you having that much trouble trying to find something to write about (that doesn't seem plausible)?
Monday, July 28, 2008 3:26:19 AM (Pacific Daylight Time, UTC-07:00)
That's funny, now people are commenting on what the author (J.A.) was trying to say and not what he actually wrote on his original post and his answers to the comments. Maybe then he should write another post apologising for not having the knowledge of expressing himself (maybe he doesn't have enough experience on how to do it), and try to explain again what he wanted to say in the first place. And not let others do it for him.
Comment
Tuesday, August 05, 2008 8:31:17 AM (Pacific Daylight Time, UTC-07:00)
Beautiful!
akoto1105
Comments are closed.