[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