Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

OT: Master Programmer; was "Am I Wasting My Time"

27 views
Skip to first unread message

UAError

unread,
Apr 7, 2004, 10:39:30 AM4/7/04
to
Prompted by the earlier thread "Am I Wasting My Time" (which
promptly derailed), I thought some may be interested in this
characterization I found when I recently cracked open "The
Guru's Guide to SQL Server Architecture and Internals".

Ken Henderson's description of a "Master Programmer"
from "The Guru's Guide to SQL Server Architecture and
Internals"
ISBN 0201700476
http://www.aw-bc.com/catalog/academic/product/0,4096,0201700476,00.html
http://www.amazon.com/exec/obidos/ASIN/0201700476

Page xxxviii

" To begin with, a master programmer is someone who likely
codes for a living. You cannot develop expert-level coding
skills and keep them sharp merely studying other people's
code or reading programming books. You have to get in there
and get your hands dirty, and you have to keep doing it.
Technology changes and software engineering evolves quickly
enough that there is no substitute for coding every day.
Second a master programmer is someone who doesn't just
know how to churn out source code. A person I worked with
once suggested that the defining characteristic of an expert
coder is great typing skill! I laugh out load at the
assertion because being an expert coder has nothing to do
with typing – I know expert coders who don't type well at
all. That notion reminds me of what Truman Capote said when
asked about Jack Kerouac's work: "That isn't writing at all"
(Capote, Truman. As quoted in New Republic, Feg.9, 1959).
Just as good writing amounts to a lot more than typing, so
does expert-level coding. Cranking out reams of source code
does not a master programmer make. In fact, there's a
paucity and efficacy about the code of the programming
masters that often accomplishes an astonishing amount of
work with a surprisingly small amount of code. The idea
isn't to write lots of code; it is to write good code. It's
a question of quality versus quantity.
Third, a master programmer is well rounded. A master
programmer know a number of languages and works on multiple
operating systems and platforms. He does not use one
language at the expense of all others regardless of the
problems. He uses the right tool for the job and constantly
seeks to broaden and immerse himself in the art and science
of computer language mastery. A master programmer is not a
"jack of all trades and master of none" but maintains
expert-level skills in several areas at once.
Fourth, an expert programmer masters the operating
system environment and fundamental technologies with which
he works just as much as he masters programming languages.
He knows that simply mastering the language with which he
happens to be working on a particular project is not enough;
he must also know a good deal about the operating system and
the foundational components with which he will construct
applications. Whether this is COM, EJB, Windows or Linux,
the master programmer knows that he must have expert-level
knowledge of the environment in which his code will run, and
the components from which it will by constructed in order to
produce software that is robust, efficient, and extensible.
Fifth, a master programmer keeps up with the technology
and developments in software engineering. A master
programmer can tell you the difference between the decorator
design pattern and the facade design pattern. He can tell
you why COM is preferable to a plain DLL use and about the
advantages that the .NET Framework offers over COM. He can
tell you where Java fits in the grand scheme of things and
how it compares to other languages. You can mention the term
"refactoring" to him without getting a blank stare, and he
can describe the relationship between eXtreme Programming
and Aspect-Oriented Programming. He may not work everyday
with these concepts and technologies, by he stays current
enough with the industry in which he works to understand
them conceptually, to be able to explain the relationships
between them, and be able to discuss them articulately.
Sixth, a master programmer is well read. He knows who
Martin Fowler is. He reads Kent Beck, and he's well versed
in Erich Gamma's work. He reads both technology-specific
books as well as those related to software engineering as a
discipline. He reads Steve McConnell, and he also reads
Donald Knuth. He knows who Jon Bentley is, and he also knows
Brian Kerninghan's work. He is well versed in Grady Booch's
work and also reads Charles Petzold. In a day and age in
which technology and the engineering required to master and
put it to practical use seem to evolve at the speed of
light, one can't read too much or stay too current with the
latest developments in the industry. A master programmer
knows this and dedicates himself to a lifelong course of
continuing education."

If, as a "programmer", you aspire and progress towards
becoming a "master programmer", you’ll likely not have to
worry about your future. The dangerous territory is when you
are only capable of competing within the “mediocrity/good
enough leagues” and below. An interesting book on what a
"programmer" should be doing is:

Pragmatic Programmer, The: From Journeyman to Master
Andrew Hunt, David Thomas
ISBN: 020161622X
http://www.aw-bc.com/catalog/academic/product/0,4096,020161622X,00.html
http://www.amazon.com/exec/obidos/ASIN/020161622X
www.pragmaticprogrammer.com

Our profession is a bizarre one where we learn to write
programs, while "reading" is never on the curriculum. That
may be about to change:

Code Reading: The Open Source Perspective
Diomidis Spinellis
ISBN: 0201799405
http://www.aw-bc.com/catalog/academic/product/0,4096,0201799405,00.html
http://www.amazon.com/exec/obidos/ASIN/0201799405

And all the effort that Ken Henderson outlines isn’t enough.
Ultimately programming or IT doesn’t exist in a vacuum –
it’s an enabling technology, not an end onto itself. So you
will also have to spend some significant effort to
understand and know the business domain of your employer or
clients. Only then can the problems at hand be understood
and communicated effectively and a solution created that
makes sense in the context its operating in.

There will also be considerable pressure for you to acquire
project management skills – if you won’t estimate how long a
task will take you, somebody else will and it will usually
not be in your favor; and often the PM figures that you
shouldn’t be having all the fun and share some of the
drudgery. And many mediocre programmers (and some good one’s
too) have tried to escape the software development
technology rat race via project manager-hood.

So, if your ready to face all that, you will probably be OK.

Journeyman

unread,
Apr 7, 2004, 1:37:51 PM4/7/04
to
I'd like to buy shares in this site.

Every UAError post seems to increase the value.

;)

>with typing - I know expert coders who don't type well at

>Ultimately programming or IT doesn't exist in a vacuum -


>it's an enabling technology, not an end onto itself. So
you
>will also have to spend some significant effort to
>understand and know the business domain of your employer
or
>clients. Only then can the problems at hand be understood
>and communicated effectively and a solution created that
>makes sense in the context its operating in.
>
>There will also be considerable pressure for you to
acquire

>project management skills - if you won't estimate how

long a
>task will take you, somebody else will and it will usually
>not be in your favor; and often the PM figures that you
>shouldn't be having all the fun and share some of the
>drudgery. And many mediocre programmers (and some good
one's
>too) have tried to escape the software development
>technology rat race via project manager-hood.
>
>So, if your ready to face all that, you will probably be
OK.

>.
>
>.
>

Ken Henderson

unread,
Apr 7, 2004, 6:47:45 PM4/7/04
to
Hi there,

While I'm always flattered when people post stuff I've written to the net, I
noticed a few typos and minor omissions in the excerpt below from my last
book (I hope you didn't have to type all of that <g>). FYE, here's the
excerpt directly from the book itself (BTW, I agree with the sentiment that
you often need to know something about the business you're in as well).

Best,

-kh

---------------

To begin with, a master programmer is someone who likely codes for a

living. You cannot develop expert-level coding skills and keep them sharp by

merely studying other people's code or reading programming books. You

have to get in there and get your hands dirty, and you have to keep doing
it.

Technology changes and software engineering evolves quickly enough that

there's simply no substitute for coding every day.

Second, a master programmer is someone who doesn't just know how to

churn out source code. A person I worked with once suggested that the de-

fining characteristic of an expert coder is great typing skill! I laughed
out

loud at that assertion because being an expert coder has nothing to do with

typing-I know expert coders who don't type well at all. That notion reminds

me of what Truman Capote said when asked about Jack Kerouac's

work: "That isn't writing at all, it's typing." (Capote, Truman. As quoted
in New Republic, Feb. 9, 1959.

)

Just as good writing amounts to a lot more than typing, so does expert-level
coding. Cranking out reams of source code does not a master programmer make.
In fact, there's a paucity

and efficacy about the code of the programming masters that often
accomplishes

an astonishing amount of work with a surprisingly small amount of

code. The idea isn't to write lots of code; it is to write good code. It's a
question

of quality versus quantity.

Third, a master programmer is well rounded. A master programmer

knows a number of languages and works on multiple operating systems and

platforms. He does not use one language at the expense of all others
regardless

of the problem. He uses the right tool for the job and constantly seeks to

broaden his horizons and immerse himself in the art and science of computer

language mastery. A master programmer is not a "jack of all trades and

master of none" but maintains expert-level skills in several areas at once.

Fourth, an expert programmer masters the operating system environment

and fundamental technologies with which he works just as much as he

masters programming languages. He knows that simply mastering the language

with which he happens to be working on a particular project is not

enough; he must also know a good deal about the operating system and the

foundational components with which he will construct applications. Whether

this is COM or EJB, Windows or Linux, the master programmer knows that

he must also have expert-level knowledge of the environment in which his

code will run and the components from which it will be constructed in order

to produce software that is robust, efficient, and extensible.

Fifth, a master programmer keeps up with the technology and developments

in software engineering. A master programmer can tell you the difference

between the decorator design pattern and the façade design pattern.

He can tell you why COM is preferable to plain DLL use and about the
advantages

the .NET Framework offers over COM. He can tell you where Java

fits in the grand scheme of things and how it compares to other languages.

You can mention the term "refactoring" to him without getting a blank stare,

and he can describe the relationship between eXtreme Programming and

Aspect-Oriented Programming. He may not work every day with these concepts

and technologies, but he stays current enough with the industry in

which he works to understand them conceptually, to be able to explain the

relationships between them, and to be able to discuss them articulately.

Sixth, a master programmer is well read. He knows who Martin Fowler

is. He reads Kent Beck, and he's well versed in Erich Gamma's work. He

reads both technology-specific books as well as those related to software
engineering

as a discipline. He reads Steve McConnell, and he also reads

Donald Knuth. He knows who Jon Bentley is, and he also knows Brian Kernighan
's

work. He is well versed in Grady Booch's work and also reads

Charles Petzold. In a day and age in which technology and the engineering

required to master and put it to practical use seem to evolve at the speed
of

light, one can't read too much or stay too current with the latest
developments

in the industry. A master programmer knows this and dedicates himself

to a lifelong course of continuing education.

"Journeyman" <anon...@discussions.microsoft.com> wrote in message
news:19ce301c41cc7$0cd8a210$a101...@phx.gbl...

anon...@discussions.microsoft.com

unread,
Apr 8, 2004, 2:49:21 PM4/8/04
to
Is this really the author?

>.
>

0 new messages