I was asked, "Do programmers really know how to program?"
I believe this question is unproductive and vague. What does it mean by “program”?
The person who asked this question seemed to think programmers were not really programming when all they did was copy some existing program, using it whole or perhaps pasting it in as part of a shell.
To me, programming a computer means instructing it to do something you want done, and to continue doing it as desired.
If that’s what we’re asking about, then yes, of course, some of us out here know how to program. (Some do not, of course.)
It is irrelevant how we do that. Whether we use genetic algorithms, cut-and-paste, or divine inspiration? Do we use Scrum or Agile or Waterfall? How about the programming language? C++, or Java, or Lisp, or Python, or APL? Well, none of those choices matters.
Then what does matter? How about, "Can we satisfy someone’s desires?" In other words, can we provide something that someone wants enough to pay what it costs, in time or money? That’s what counts, and we certainly know how do that—sometimes.
Sure, we fail at times, and probably too often. But no profession succeeds in satisfying its customers all the time. Did your teachers always succeed in teaching you something you wanted to know? Do surgeons know how to do surgery?
So what about using existing programs? To my mind, the first and foremost job of a programmer is knowing when not to write a program at all—either because the needed program already exists or because no program was needed in the first place.
In other words, not writing a program when no program is needed is the highest form of programming, and one of the marks of a true expert.
or Kindle for the book in paper or ebook format
I think there is a big difference between knowing how to code, and knowing how to build software products.
ReplyDeleteMany people graduate knowing how to code. They know the words, for, printf, but not the melody.
The gap in skills is in how to work on a project, code, and manage the requirements to meet a business need. It is not just "code".