views:

879

answers:

10

I wish to know what a programmer is, or what skills are necessary for someone to call himself a programmer.

I have talked with my colleague; he told me someone who writes javascript or html isn't a programmer.

I wonder why I would need to use specific programming languages, frameworks, vendor to consider myself a programmer. So often, I hear:

"Real programmers write c++"
"VB is just a toy, not useful for real-world apps"

I used to use VB6 and VB.NET. It can build enterprise applications, yet someone told me, "if you use tool that can click and drag you are not a programmer".

Why am I not considered a programmer?

+1  A: 

When can an engineer call himself an engineer?

When can a doctor call himself a doctor?

These are very well defined by academic acceptance into self regulated bodies.

I think that we need to be able to easily spot the hobby coders from the professional coders.

Although I like to think of myself as a software engineer.

Geoff
+1  A: 

@Geoff They become those things when they get engineering/medical degrees, and are accepted by professional bodies. Likewise, I believe you can't really be a software engineer with a degree in CS, but rather, a software engineering degree, and being accepted by a professional body.

In any case, I think when you write imperitive/functional code, then you're a programmer.

Just not JavaScript/VB. (Kidding ;))

TraumaPony
+2  A: 

If you can develop a program that solves a given problem, then you are a programmer. It doesn't matter what language or tools you use, as long as it gets the job done. I'm not sure HTML qualifies, but Javascript and VB certainly do.

Dragging and dropping tools to create an interface isn't necessarily programming, but if you combine that with code that performs logic based upon the interaction with the interface, then that is.

Gerald
+13  A: 

I'm reminded of when Larry Wall was discussing scripting versus programming and said, "Perl scripting is the same thing as Perl programming, but the ones who call it programming do it better."

To me being a programmer is really a mindset. Do you try to learn how your tool works? Are you aware of where the hidden costs are in developing software? (Hint: They mostly show up in maintenance.) Do you consciously try to reduce those costs? Have you developed skills that could help you learn another programming language? Do you try to improve the quality of your code over time?

If you can honestly answer "yes" to all of these things, then you're a programmer. If you answer yes to most but not all then you're likely a programmer, but probably not a very good one.

+7  A: 

The answer is quite simple. First look up the definition of programming:

Computer programming (often shortened to programming or coding) is the process of writing, testing, debugging/troubleshooting, and maintaining the source code of computer programs.

or

Said another way, programming is the craft of transforming requirements into something that a computer can execute.

Therefore, if you write, test, debug/troubleshoot and/or maintain source code of computer programs, you are a programmer, regardless of the language or tools you use.

Charles Roper
+3  A: 

If you write a script or compile some code you are 'programming' regardless of whether Tom, Dick or Harry likes the tools you use. We have too much snobbery and bias without encouraging this further.

As to whether you are a 'programmer', it remains to be seen.

A few months ago, and editorial in PC Pro (UK Mag) complained that too many programmers were now pretentiously labelling themselves as 'Developers'. I responded [Letter of the Month - free wireless router - thank you very much! lol] with the opinion that in the past a programmer would take instruction, from a Systems Analyst or similar, and would produce an item of code and test it.

Whereas more commonly, a modern developer is involved in much more of the development cycle, from requirements gathering & analysis, through development of the code, testing & QA, through to implementation, training & support.

So (IMHO) if you write any code of worth, you are a programmer; if you do more than that, you may well be considered a developer.

Whether you are any good, is an entirely different matter!

CJM
At least it's not as bad as some 'web developer' claiming to be a software engineer.
TraumaPony
I'm a web developer and a Chartered Engineer...where does that put me?
CJM
+1  A: 

I have always classified it this way. If you just write code to a specification, you are a programmer. If you consider the business case and do business analysis you are a developer. The world needs both.

Programmers are best at creating tight code and prefer an environment that supports good coding practices. (C#, JAVA, fortran) Usually found in large installed applications such as word processors, spreadsheets, web servers and operating systems. Usually have a Computer Science degree. Programmers can be instrumental in keeping developers to adhere to good practices.

Developers are often looking for the quickest way to complete the job and will prefer a language that supports quick development. (VB, HTML, Javascript, scripting) Usually found in business applications such as Web hosted store fronts, departmental applications, data collection and presentation. Usually have a MIS, IT or liberal arts degree. While developers appreciate a programmers attention to detail, they also know that business requirements may require an alternative or pre-packaged approach.

There are also many others, such as Graphic Designers and Business Analysts that do a fair share of coding. Many of these coders are quite good.

Also remember that these classifications are not absolute. There is an entire continuum between programmer and developer and most people fall in between. Many developers use C# and JAVA and good programmers use VB and HTML.

I would suggest that you do not dwell on labels, but use an appropriate one. If you just want to code, you can call yourself a programmer. If you like to be involved with the user, you can call yourself a developer. If you specialize in intuitive and eye pleasing user interfaces, you can call yourself a Graphic designer.

doug
+2  A: 

A "programmer" is someone who turns coffee into software.

Sherm Pendley
+3  A: 

You might consider http://c2.com/cgi/wiki?JustaProgrammer, and all the related content.

I see developer and programmer used interchangably. I see software engineer used to mean a very disciplined programmer/developer (one that "engineers"). I, and many others, consider software development to be somewhat science, somewhat engineering (especially if done "well"), but mostly art.

SO...

Perhaps we should look at what it takes to be an "artist". For the most part, if you create "art", and others call it "art", then they will call you an "artist". If you call yourself an "artist", but everyone calls your creations "garbage", then maybe you are fooling yourself. I think it is similar with programming, since it is essentially a form of art, but with some challenging twists such as the typical need to be practical and cost-effective.

Rob Williams
+1  A: 

This is a very difficult distinction to draw.

I would paraphrase the conventional wisdom as a programmer is someone who programs in a Turing complete programming language. JavaScript is a special case, because I can see it going either way. Many people use nothing more than onWhatever event handlers that do nothing more than call a built procedure. The subset of JavaScript that they know is not Turing complete, so they are probably not generally considered programmers. However, many people do full fledged programming in JavaScript, creating their own procedures and using rich data structures and algorithms and Object Oriented programming. These people are clearly programmers.

When people say that writing Visual Basic is not programming, they are really trying to say something like "Visual Basic stinks and while it is technically Turing complete, doing anything worthwhile in it will be excruciatingly difficult." At least that's my best guess. Determining whether this assessment is correct or not is left as an exercise for the interested reader.

I made an attempt at delving deeper into the question of what distinguishes "users" from "programmers" in Reflections on the boundary between users and programmers.

Glomek