1. Computing

Programming.
Only For Professional Programmers Now?

By June 4, 2006

Follow me on:

Robert Laughlin, winner of the Nobel Prize in physics, has recently written a new book called A Different Universe. It's not a book about computers or software. But he does have a brief section about software in it where he expresses an interesting point of view. Here's what Dr. Laughlin writes about the wisdom of writing your own software today:

-------

One of the more interesting trends of the computer age is that physical science students are increasingly unwilling or unable to write computer code. I was very upset when I first observed this and took stern measures in my department to counteract it, much to the students' chagrin, for I myself am very good at coding and consider it something any self-respecting technologist should know how to do. Eventually, however, I realized that the students were right and I was wrong, and stopped the crusade. Computer programming is one of those things in life, like fixing one's own car, that is fascinating, fun, useful--and unacceptably time-consuming. The truth is that it is no longer cost-effective for most well-educated people to program their own computers, or even to learn how to do so. The wise use of a time is to spend a few bucks to buy a program that does what one wants, or in extreme cases, search the internet for free software.

-------

Spoken like a true academic. I suppose that when you achieve as much as Dr. Laughlin has, you're entitled to statements like, "I myself am very good at coding." And I also notice that he recommends that you "buy a program," not that you "employ a programmer". It sort of suggests that good software springs fully formed from the earth somewhere.

Anyway, this raises a point that has fascinated me for my entire career. Should everyone try to write code at some level? Or should non-programmers just stay out of the way and let a pro do the job?

There are some interesting parallel examples. You can be thrown in jail for practicing medicine without a license. Professionals from engineers to lawyers have to accomplish regulated goals and then have protected status after that. When I was in a corporate DP department, there were always people saying that "professional programmers" should have the same type of official recognition.

Here's my position: No. (And I think this is vastly overdone for the other professions too. But I don't want to get into that question. ... Let's stick to programming.)

I have always believed that my chosen career has been strengthened by the fact that the only "qualification" you really need for programming is the ability to write good programs. It creates sort of a "natural selection" that results in good coders staying in the business and bad coders getting out. At the same time, I've felt that everyone from file clerks to the company president benefit from programming as much as their native intelligence will allow. (High for most file clerks I've known, questionable for company presidents.) At a minimum, it gives them a better starting point if they eventually have to turn the job over to a professional programmer.

What do you think?

Comments
June 5, 2006 at 5:57 pm
(1) Walt says:

…the prof was on the right track the first time…”any self-respecting technologist should know how to do.”
There is no need for everyone to be a top-shelf coder, but at least be familiar with the process and at least learn a little ‘kiddie code.’ As a network admin, scripting is vital to my day-to-day job.

June 5, 2006 at 6:53 pm
(2) visualbasic says:

NetAdmin’s are programmers too! At least, the good ones are. And I find your attitude is pretty common among programmers. (For example, I agree with you.) We tend to think that since we understand the value of programming, everyone should.

The interesting thing about Dr. Laughlin’s point of view is that he is not a DP professional and he’s now “turned against us”. I was really hoping that some non-programmers might have a point of view that they would share.

June 6, 2006 at 2:32 pm
(3) Graham says:

Well I’m confused, where did all these professional programmers come from? Is there a Ken and Barbie type conveyor belt spitting them out? Or is it, as I suspect, that the professional programmers were the once non-programmers? who progressed to
‘kiddie code’ and then kept going. I guess that I am up to the ‘kiddie code’ stage, if I do or do not progress to the elevated status of professional who ‘for myself would be very good at coding’ then so be it, but I would hope that from my elevated position I could still retain my common sense and not have it subdued by my new professional intelligence! I would also like to remember from where I came.
It is no wonder that those trying to learn code give up after hearing such condesending comments.

June 7, 2006 at 8:54 am
(4) Dale Lehman says:

For the record, I’m a professional programmer. I’m reminded of a former colleague who used to jokingly accuse our company’s customer service staff of “programming without a license” whenever they made suggestions as to how the programmers might be able to accomplish something for them. He was, of course, only joking and everyone took it in good humor.

There is some truth to that, however. programming is, ultimately, a technical task and people who are not familiar with its nuances often either underestimate or overestimate what is involved in writing solid code. Many times I’ve astounded and pleased customers by telling them that what they were asking for was simple, and many times I’ve burst their balloons by telling them that what they were asking for was actually a lot harder than they expected.

That said, I do not believe that there are any “shoulds” here. It is all based on the situation. If someone who has an interest in and aptitude for programming wants to try to write their own programs, more power to them. Its fun and can be a very useful skill. But few beginners will be able to write even reasonably bulletproof code to accomplish complex tasks in a reasonable amount of time. That’s just a fact of life.

So if time and money and complexity are serious issues, then it’s certainly better to go to the pros or, even better, to buy something that does what you want right out of the can–assuming it exists.

June 7, 2006 at 1:11 pm
(5) visualbasic says:

Excellent comment, Dale!

(By the way … Dale is a long-time About Visual Basic participant and his point of view is always worth listening to.)

I think you and I agree on this. It seems that we’re just choosing to view different sides of the elephant here. Neither of us advocates any kind of real prohibition on anyone programming and both of us recognize that you usually get more bang for the buck – and a better, faster bang – with a professional programmer.

I’ve always had an “open arms” attitude about anyone trying their hand at it, however. Dale emphasizes that a lot of people simply don’t understand what’s involved and he has opened their eyes to the reality of it in a lot of projects. If someone had done a little programming themselves, their eyes might already be open.

Thanks for the comment, Dale!

June 8, 2006 at 7:01 am
(6) Nick says:

i think you must be born with a mind built for programming to be efficient at coding programs and understanding what is being preformed with the code. i could remember back in highschool programming classes when people were forced to take a computer class to graduate, the people that had no interest and the people that didn’t have a Programmer’s Mind were inable to code and comprehend even the simplest programs. i actaully had to code half the classes programs because they didnt’ know what they were doing.
so because of this, i say let people do what they are best at, if someone has no interest in programming you can’t expect them to ever succeed in programming their own programs to acomplish the tasks they need. It is best they buy an already made program that does what they were looking for.

June 11, 2006 at 2:37 pm
(7) Les says:

I think the prof had it right the first time. The issue isn’t should all technicaly trained people be pro programmers–the issue is they (we)_ should all be able to write programs that solve many of the day to day problems we have to deal with. Pros should write the big deal programs (word processors, big numerical models, and so on). There are lots of problems, however, for which commercial programs don’t exist. The programs to solve these problems don’t need to be elegant, efficient, or even pretty. They just need to work. We all used to be able to knock these types of programs out in Basic, TurboPascal, or Fortran. It seems that they are harder to write now because the programming languages are harder to use (or at least they appear harder to use). Engineering and scientific students should be able to program because writing a program gives more insight into a problem than running a canned program.

June 12, 2006 at 8:58 am
(8) Brian Gallagher says:

I actually agree with the Professor. Not all people can think the way you need to to write programs. Furthermore, learning to program well takes a LOT of time, and learning to program poorly takes quite a bit, too. Problem is, if someone isn’t programming correctly, their results will just be flat out wrong, perhaps in subtle ways that they don’t find until it’s too late. Better to provide these people with an infrastructure (IT and otherwise) that will provide the tools they need to do their jobs more efficiently than to make them build their own tools.

June 12, 2006 at 11:13 am
(9) visualbasic says:

I am really, really glad to see someone take this side of the discussion. Brian made some very good points and I actually agree with all of them … well … I sorta agree.

Let me explain.

My wife (Who actually reads hard science books like A Different Universe by Nobel Prize winners.) likes to point out that Brian’s reasoning is an example of “binary thinking”. It’s either “1″ or it’s “0″. There’s no “in between”. As a programmer myself, I get accused of binary thinking a lot.

Brian states that “results will just be flat out wrong.” Ummmmmm … Certainly, there will probably be many things about the program that won’t be up to standards, but “flat out wrong” is a little harsh.

First … I see a lot of work done by “professional programmers” that isn’t up to “standards” too. In fact, one of the hallmarks of programming is that there has always been a wide spectrum of opinion about what “standards” should be in programming. So “flat out wrong” would be a hard thing to define.

The real issue isn’t whether clerks can write programs that are as good as the professionals write. (I think most of us will agree that they can’t.) It’s whether there are other reasons for doing it.

Here are just a few:

1 – If they NEVER write a program that does much good, they’ll still learn a lot about programming and, hopefully, this will help them work with professionals.

2 – Who knows? They might have fun. I do.

3 – Maybe they’ll discover that programming is what they’re really destined to do and switch careers. That’s the way I got started. (In fact, I was a university student like one of those in Dr. Laughlin’s Physics department and I was required to take a programming class. I switched to Computer Science the very next semester.)

And …

4 – Wonder of wonders, miracle of miracles … Somebody MIGHT actually write a program that does some good. Not perfect, I’m sure. But good enough.

I still think that everybody ought to try their hand at programming.

June 12, 2006 at 3:04 pm
(10) Irene says:

Well, as was mentioned before, it all depends. :-)

I am a professional programmer. I like what I do, and find it easy, or relatively so.

My sister, as a chemistry student, was forced to take a Java or C++ course. It was required. The poor thing! she couldn’t understand what that was all about. I guess her mind just works differently (even though we got the same type of education). So programming is not for her or people like her.

Bottom line for me is: people should probably have some idea about how computers work and what programming is all about. Kind of like people who drive should have at least have some idea of basic car care. Or, like everybody should know what to do when you start sneezing. (NOT pop a Tylenol!)

After that it’s up to the individual. If you like it and have time – go for it! Learn a new programming language, service your car or study some pharmacology. If not – so what!

I take the car to a mechanic, and my health problems to a doctor (or, for a minor problem, a pharmacyst). Why shouldn’t my sister take her programming needs to me or another professional? Just because somebody randomly decided that programmin is what “any self-respecting technologist should know how to do”? Sorry, life is too short for this nonsense!

June 13, 2006 at 10:23 am
(11) visualbasic says:

You and Dr. Laughlin now seem to agree. Some people just don’t seem to think in a way that allows them to comprehend programming. I find that hard to believe but enough people have said that to make me conclude that it must be possible. I wonder what critical element of comprehension is missing? I wonder if anyone has done any real research to find out?

June 16, 2006 at 10:23 am
(12) Dieter Adant says:

You can’t expect everyone to know how to code a pc. Most people simply aren’t intrseted in coding. But i think a profesional pc user has to know how to code. But modern times (microsoft) made management of a network very easy. A network admin doesen’t even need to know how to write a script these day’s. Computers have become much more user friendly but aslo much more simple in use. You don’t need to be a professor or high schooled ingeneer to use a computer. Also i think visual basic is a example of user friendly computers. It’ actualy hiding users from the real thing Also once you learnd visual basic it’s stil a big step to java or c. Why not make one big step directly to java or c. I think it’s just comercial reasons computers are made for such big public from children to old people .

June 16, 2006 at 11:19 am
(13) visualbasic says:

Dieter,

Thanks for your ideas.

I think it’s interesting that you appear to believe that programming is difficult but that “management of a network” is very easy. While it’s true that a knowledge of scripting isn’t a requirement for network administration, knowledge of the network itself is still a requirement and the complexities of that job have exploded in all directions. But one of the things that we’re learning in this thread is that different people will always find different jobs “easy” or “hard”.

I can’t agree completely that Visual Basic “hides the real thing” (that is, the actual software under the graphical user interface). VB 6 used to hide the “real thing” but VB.NET doesn’t hide anything now. And VB.NET is actually more powerful than either Java or C. (VB.NET is about the same as C# since they’re both .NET languages.)

June 16, 2006 at 10:24 pm
(14) gaius lex says:

As a grad student chem who is also a dabbler in programming, I wanted to say that I agree with Dr. Laughlin that ‘real’ programming has gotten to the point that the time investment in a program for science usually isnt worth the direct reward, except in particular areas. But I do think all people involved in science/tech should have a basic idea of what programming encompasses, (just like they should also know the basics of circuits/physics) because it drives home key points about the science/tech paradigm. The most important (which I think is also what seperates science/tech types from non) is the realization that a problem can be subdivided again and again until it is solvable. If a person realizes that this applies to all problems, then they can start to become a good scientist, or a good programmer, or any other sci/mech field. Some people cant generalize and so each new problem has to be swollowed whole until they get to one they cant, and then give up.

Heh, that rambles a bit, had to try to explain the whole ‘everything can be generalized’ thing to coworkers a bit too often.

Mildly ironic that I say this when I came to this website looking for a VC++ 2005 tutorial as Ive decided to relearn C++ after not using it for a project of any size in 8 years. But I’ve been using labview…thats almost the same right?… right?

June 16, 2006 at 11:21 pm
(15) visualbasic says:

C++ ??!!

Ick! Ugh! Bleah!

(Well … What can you expect from a “non-professional” …)

(‘jes jokin’ – Even some of my friends are C++ programmers.)

(But they’re trying to quit.)

Seriously … You ought to at least give .NET some consideration. As I’ve said in many articles, all .NET languages are more or less equal. I prefer VB, of course, but that’s just a choice about what kind of syntax seems most ‘natural’ to you.

The thing that caught my eye in your message was your comments that, “a problem can be subdivided again and again until it is solvable”. This philosophy of science is usually called reductionism and Dr. Laughlin proposes a very different model based on what he calls “emergent properties”.

You should read his book. I don’t think he agrees with you.

June 19, 2006 at 1:10 am
(16) Terry S. says:

I have to agree with Dr. Laughlin on this one. If you want to know why it’s become too time-consuming and cost-ineffective for the average technical person to learn programming, all you have to do is read Dan’s last article – “Printing in Visual Basic .NET”.

I’ve been programming for a living for over 20 years. It’s not that programming languages have become too difficult for technical people to learn; it’s that the environment (meaning Windows) has become too complicated.

Back in the day, anyone could open up GWBasic and get instant gratification by sending “Hello World” to their printer. But with VB.net you need to understand the Visual Studio IDE (which is very intimidating to a first-timer), Forms, Classes, etc. You might even have to buy a third-party product to do what you want in a reasonable amount of time, so why bother if you can get a canned program that does the same?

Programming itself has not become more difficult, but the complex environment makes it unproductive for most non-programmers to learn what they need, to do what they want.

On the other hand, there’s always Unix and C :-)

June 19, 2006 at 12:37 pm
(17) visualbasic says:

Great Comment! (Actually, I like your writing style and I agree with most of what you wrote.)

There’s no question that programming has become a lot more complicated. In other articles, I have used the metaphor of working on your car. Back in the day, you could tune your own car with a screw driver. Today, there are probably several computers adjusting the carburation in real time.

Such is the world we live in.

Which brings me to the only point I disagree with. Unix and C are certainly not an alternative that will solve this problem … unless you want to go back to the way they were ten years ago. And you can do that with Visual Basic too.

June 19, 2006 at 2:36 pm
(18) Dennis W. says:

I think everyone should at least give it a try. If they have an aptitude for programming, great, if they don’t, at least they may come out of it with a better understanding of what coding is about.

If the file clerk can program and they require a specific task accomplished, then why not? Some of the best programs I’ve used were coded by the non-professionals. They knew what they wanted the program to do, and they made it do it.

As far as Dr. Laughlin’s changing view points, I think both views make good sense. Learn to do some programming just in case you need to, but if there’s already something out there that accomplishes the task at hand, then by all means, buy it.

June 19, 2006 at 8:41 pm
(19) Merv says:

I started off with VB6 and am now happily hacking away in Java (first 1.4.2, now 5.0). The funny thing is that I’m studying for a Ph.D. in psych and can legitimately go through my career without ever knowing what a memory leak is. That would have been to my detriment, though.

Especially in my field, where no one knows what’s going on even after being on the job for years, there’s this tendency to look at results without knowing what goes into them. One of my advisors described it as “some situation arises, magic happens, and there’s an outcome”. There are real limits to what science can accomplish, and the only way to get a good handle on what is and isn’t possible is to see what goes on behind the scenes. Nothing against David Blaine, but I got into a scientific field to get rid of the smoke and mirrors.

I don’t think everyone should be able to write an OS, but it’s good to have a little understanding of all of it (the same way we all have a little understanding of chemistry and physics). At the very least, it’ll teach people to ask the right questions and come to more accurate conclusions. Oh yeah: it would help if they learned a little about things like self-commenting code (have you read the titles of some of these psych papers?).

June 19, 2006 at 9:54 pm
(20) Merv says:

There’s something else that I want to comment on, namely the mentality needed for programming. Some people have a mindset that they just need to get something on the table, whereas others (myself included) would prefer to take a little extra time to make sure that the thing works properly. I think it goes along with the “magic happens” mentality. At any rate, many of us are familiar with what happens when software is written carelessly, namely malfunctioning software at critical times.

In my view, there are two things that make up the mindset for good programming. The first is the ability to see how a lot of parts (objects in this case) can work together in mathematically predictable ways. The other is the willingness to work like hell to make sure that whatever design you came up with comes out the way you envision it (i.e., no shortcuts). The first part is hard because the objects all affect each other in different ways, and the second is hard because there might be simpler (although far less efficient) ways of getting the functionality you want. I guess that brings up one more distinction: a true programmer has a certain amount of artistic pride in the product, whereas others might not care at all whether their design and/or code is just right as long as it’s not all wrong.

June 20, 2006 at 11:12 am
(21) visualbasic says:

Great comments, Merv.

I wanted to explicitly take note of one property of your messages that clearly supports what you write: they’re correct and composed.

By that, I mean that the grammar is correct. The words are spelled correctly. Capitalization is correct. And you seem to have composed them rather than just spilling words to keyboard.

There is a tendency for some coders to feel that it’s somehow “cool” to ignore grammar and composition. I think that good programmers are more likely to be careful writers as well. But then, I’ve also known a few people who disprove that rule.

Back when I was writing programs on punched cards, it was not unusual to only be able to run a test program once or twice a day. When I was an undergraduate, I only got one shot at the mainframe in a week! In that environment, you check, double check and triple check every statement in your program before submitting it. I think that some of the programming styles we see today might be a result of the fact that nobody today really has to do that anymore.

July 2, 2006 at 8:05 am
(22) Beoweolf says:

Fully formed programmerís spring from the earth? If a Science Major isn’t cut out for programming (i.e. critical, logical thinking), why should she be forced to learn, earn credit for al least minimum, demonstrated ablity?.

I’ll not carry these absurdities any further, since the ultimate conclusion is removing standards of accomplishment, mainly because they are too hard or possibly because the candidate doesn’t want to waste the time, energy.

Why then do we force athletes to maintain a particular grade average, take specific classes and course loads? When we all know they can or don’t want to learn those subjects. Their form of “intelligence” is physical, by the current definitions, there are several forms, many not recognized or acknowledged previously. Any of which can define exceptional talents.

We argue endlessly about “Dumb” jocks and why they need to carry a real course load, artificially developed, to remain eligible to participate in what they do have talent in. Why make exceptions for Science majors that don’t want to learn to program…when it traditionally has been a part of the curriculum?

Or is that sufficiently “different” to not be worth mentioning or posing as a contrast to self serving whining over the suitability of minds being trained in scientific methods, logical thinking – somehow not needing the skill to put their thoughts in order?

Programming is actually, a simple discipline, of coding a process in a logical series of repeatable steps…plus controls.

Is education so difficult that we need to keep lowering the bar to allow socitey to fill the need for degrees, in culinary science, Waste management…?

July 2, 2006 at 10:53 am
(23) visualbasic says:

Praise be unto you, famed Beowulf, for your valiant fight against the Grendel of academic elitism!

You make a good point that the exclusion of programming skills from the knowledge required of a “scientist” does tend to push programming itself into a category of “skilled trade” rather than “scientific discipline”.

But then, maybe that is as it should be. I, for one, made a deliberate choice to walk away from Physics and toward Engineering when I was in my junior year and I’ve never regretted that I missed out on being a genuine “scientist” as a result.

Leave a Comment

Line and paragraph breaks are automatic. Some HTML allowed: <a href="" title="">, <b>, <i>, <strike>
  1. About.com
  2. Computing
  3. Visual Basic

©2014 About.com. All rights reserved.