[PLUG] Why Everyone Should Learn to Program
Russ Johnson
russj at dimstar.net
Fri Dec 6 17:51:59 UTC 2002
Karl M. Hegbloom wrote:
>How can I design better software if the people I'm writing it for have
>no real concept of what computer programming is, or of what really goes
>on inside a computer? What I mean is, that if they have some knowledge
>of the process and of what is possible, they can provide better
>requirements process input and feedback.
>
Obviously, you've never worked for a real developer, or with
professional programmers.
Many of the programmers I've worked with have no idea how to set up
networking in any OS. Many of the programmers I've worked with know how
to write code, but couldn't install Windows by clicking "Next" all the
way through the installation. They are quite good at what they do.
However, they choose to write code, not spend time learning how the
interface to set up their system works. Why? Because that part of the OS
isn't germain to the task at hand. How to plug an IP into Windows,
Linux, Solaris, or AIX doesn't matter one bit when it comes to the
application they are programming. Knowing the TCP/IP stack and how to
access it IS needed. Knowing how to configure the TCP/IP stack is
irrelevent, as it better work BEFORE the application is installed.
I can set up a network, and install many different OSes, but I can't
write anything more than a very trivial program in C++. I'm better in
Perl, but that's because I have a need for perl in my real job.
>Everyone should learn to program, but not everyone will become a
>professional programmer. Every driver should know how a car works, but
>not very many will ever become mechanics or automobile engineers. Many
>more will learn a little about maintaining and tuning their auto than
>will become design engineers. Not every Emacs user will hack Emacs'
>out-of-the-box internals. Every Linux user should be capable of
>troubleshooting and providing useful bug reports and design feedback,
>but not all will develop the skills required to actually fix the
>software internals when they are broken.
>
We've had this discussion before, and I still disagree with you.
The user of the software doesn't need to know how the program works
internally. Users KNOW what they want, and they will ask for it. It's
the job of the programmer to turn those requests into code that performs
the requested functions.
Just as it's the job of the mechanic to fix the squeak coming from "back
there".
In a perfect world, everyone would be completely self sufficient, and we
wouldn't have to rely on our fellow human beings to get on with our
lives. It just doesn't work that way in the real world. When I was
running the auto parts store I used to help manage, one of the first
instructions I would give to new employees was, "If you haven't done it
before, ASK!." I'd rather they ask and get help (relying on me or
another, more experienced co-worker) than attempt to muddle through
until they're frustrated, and the customer is pissed off.
Russ
More information about the PLUG
mailing list