Join 136,786 Programmers for FREE! Get instant access to thousands of experts, tutorials, code snippets, and more! There are 2,367 people online right now. Registration is fast and FREE... Join Now!
When someone says they can program, what do they have to be able to do besides compile stuff they copy pasta'd in order to truthfully tell others they can program? As in, what do you think they need to know before being able to officially say they can program.
I think they should have a grasp of the basics and have compiled something more than hello world without a step by step guide. Knowledge of any programming language, scripting language, or web design programming language besides HTML (I know it's not a programming language but you know what I mean) is necessary.
Mmmmm, it's hard to realy define it because it would be very opinionated. But I think someone to say "I can program" would have to have a fair understanding of the purpose of there chosen language and a understanding of the code so they can program a decent program (not "Hello World" inside a window).
There are a vast array of activities that count as "programming" so it's no particularly easy to quantify. I think I could generalize it like this:
An individual should be able to sit down at their tool of choice and write a program in their language of choice without any aid from outside sources. The "program" should do something beyond the basic functionality of the tools they're using. In short, they must have created something new. That something should have an understandable use and function. They should then be able to justify their design choices and show reasonable understanding of the impact of those choices. If someone can't get that far, then they really can't program.
I tend to disagree (for probably the 1st time ever!) with baavgai. I think that someone whom understands computer logic (& methodology) is someone whom can program. They should be able to sit down in an unknown environment, with unknown tools, however with plentiful resources & information on the tools & environment & being able to create a program that accomplishes the desired task.
I agree with you no2pencil. I think being able to say "I can program" should come only after you learn at least the logical and syntax fundamentals of 3 or 4 languages. To the point where you can go and pick up a book on a new language and learn it over the weekend. And as a programmer (for me any ways), I spend a part of each day (when I'm not on DIC) either reading print or online materials to learn something new to accomplish a new task that I may have. Being a programmer is being able to learn new methods in any way possible and being able to implement those learned methods in your environment.
Hmm I both agree and disagree with no2, I think you can say "I can program!" When you know one language not multiple but as long as you know logic,patters and design of software. But just knowing the language doesn't mean that you can actually program. To actually program without help of books you need to have several years under your belt, otherwise you're just a person who knows a certain programming language.
I'd have to say that someone can consider themselves a programmer when the following details are met:
1. They have an understanding of a coding language. 2. They can use that language to produce useful programs. 3. Said language is dynamic (i wouldn't count HTML people as coders... it's too easy, you know?) 4. They have made something useful, have a complete understanding to how it works. /* 5. Has made numerous attempts, and failed at least once =P */
I tend to disagree (for probably the 1st time ever!) with baavgai.
Awww... actually, I agree with your definition as well. I'm not precluding a fundamental understanding of the basics, I can just never be sure of that someone has such understanding. Here's my reasoning.
It's is entirely possible to pass every class, pass every test, gather every certification, and still be useless in a real situation. I've long since given up putting any faith in someone's resume. I don't care if they can answer the questions adequately, only that they can apply their supposed wealth of knowledge.
The criteria I offered is based on actual performance rather than "certified" performance. Ideally, there would be some way to quantify an individual's level of knowledge and understanding. Currently, the only way I know that's reliable is actually giving someone a real world task and seeing how they fare. All the rest can be smoke.
To me, if someone can look at a simple C++ console application to do some simple thing (like take two numbers and add them togerther) and actually understand it, then he can program. I didn't say he was good, but he can program. I can play basketball. I royally suck at it, but i can play it because i know how to, it's as simple as that.
I am a little stuck up with the term "programmer". There are many coders who are not programmers.
I think a good example of what I mean is a workflow modeler or a graphic flowchart modeler. Just point and click - drag and drop the logic components. Not syntax to worry about -- can you use such a system to solve problems?
I spend a good bit of my time helping "programmers" translate logic into these graphic diagrams and I am simply AMAZED at how difficult some "programmers" find it -- but ok, maybe they don't think very "visually".
I have always liked the analogy of programming as playing with legos -- can you take a bunch of abstract pieces (statements, functions, and abstract CS structures) and build something. Not just solve a problem, but solve a problem in such a way that you can plug it in to a larger solution.
This means that you have to be able to break a large problem up into smaller problems. You have to be able to spot what sub-problems fall into class where they have similar solutions that you can abstract etc.
Programming is a spacial form of problem solving and has nothing to do with languages or coding skills. You will find process engeneers who don't know a single language who can in a weekend learn a language and program -- you can find "programmers" who can't even imagine how to model a business process.
But I do agree with Nick on some level. For all technical purposes, I was "programmer" the moment I held my uber expensive piece of paper that said I had a degree in CS with a concentration in programming. And being a cocky, fresh-out-of-college kid, I firmly believed I was.
It took quite a few years, failed dreams and dead-end jobs before I finally realized and accepted that anyone who can finish college can be a "programmer"... but it takes a special level of dedication and lack of sun exposure to be a coder.
I met many CS and IT grads but they cannot really do programming. As a result they end up to secretarial, sales executive, clerk etc. a position which is not CS related. Well, I don't know why.
For me, a person can be trully called a programmer, the moment he knows how to translate his ideas, other ideas into codes, and into executables which we call programs.The programmer is given everything what needs to be done and end point of the program, what this program look like, what this program suppose to do. Now its up to the programmer how to emplement it into codes.
If he can't, there's no way can he be called a programmer.