After I finished reading "The Pragmatic Programmer" I'm asking myself "Am I a Pragmatic Programmer?"
The authors Andrew Hunt and David Thomas describe a pragmatic programmer as someone with the following five properties:
- Early adopter/fast adapter. You have an
instinct for technologies and techniques, and you love trying things
out. When given something new, you can grasp it quickly and integrate
it with the rest of your knowledge. Your confidence is born of
experience.
Oh, I love trying things out. That's the reason
why I'm interested in .NET. I see a lot of people that don't trust new
or unfamiliar technologies every day. And I see a lot of people that
are convinced that certain technologies are the only way to go. I don't
belong to any of these people. My reasons for preferring one technology
over another is mainly based on experimenting. I always tend towards
the one direction that proves to be the most fun for me.
So, yes I
can grasp techniques quickly, but I will only integrate it efficiently,
when it means having fun. By the way, I don't consider myself as
someone with much experience yet. So I would be lying if I claimed that
my experience is born of experience. :)
- Inquisite. You tend to ask questions.
That's neat - how did you do that? Did you have problems with that
library? What's this BeOS I've heard about? How are symbolic links
implemented? You are a pack rat for little facts, each of which may
affect some decision years from now.
Yup, that's me. I
can't stand it knowing that there is something I missed. Tell me
something new or about something you have done lately and it may happen
that I fire questions at you. It may come across as a little bit
demanding. But I suppose that's just my nature.
- Critical thinker. You rarely take things
as given without first getting the facts. When colleagues say "because
that's the way it's done," or a vendor promises the solution to all
your problems, you smell a challenge.
I already addressed this topic in my post "To all wannabe gurus".
- Realistic. You try to understand the
underlying nature of each problem you face. This realism gives you a
good feel for how difficult things are, and how long things will take.
Understanding for yourself that a process should be difficult or will
take a while to complete gives you the stamina to keep at it.
I
think I will have to work hard to fulfill this one. I tend to tackle
many tasks without realizing the complexity some might have. I like to
experiment a lot. I hope this is the right way to gain experience.
- Jack of all trades. You try hard to be
familiar with a broad range of technologies and environments, and you
work to keep abreast of new developments. Although your current job may
require you to be a specialist, you will always be able to move on to
new areas and new challenges.
No, as I already said, I tend
to mostly deal with technologies that mean having the most fun. So
there are also certain techniques and environments that I avoid,
because I find them boring or suboptimal.
To summerize: I'm not a programmer that you could call pragmatic.
But do I really have to be one? I'm quite happy as the things are right
now. Sure, I'm driven by my feelings rather than by rationality. But I
will see how far I will get. :)