tags:

views:

860

answers:

6

1.software developing ability and productivity

2.ability to write and organize big project

3.debug and tuning skills

4.ability to design and implement an algorithm or data structure

5.skills to manipulate system APIs(such as Win32 API)

6.something others

And which is the most important do you think if you want to become professional programmer?

+14  A: 

The first, most important skill is the ability to understand the nature of the process that your users really need implemented. You must have the intellectual flexibility to understand a broad range of tasks, processes and even fields that you were not trained in so that you can place yourself in your user's shoes and design an overall solution that works for them. Call this intellectual empathy.

The second most important skill is the ability to quickly understand and adapt to complex programming languages and data structures so that you can translate user needs into actual, working systems. Call this raw intelligence.

The third is an appetite for learning new things. Call this intellectual appetite.

Mark Brittingham
Great response IMHO :) Which I could up vote this answer more than once.
Andy Webb
Brilliant. I appreciated this a lot.
Alberto Zaccagni
+2  A: 

The abilities you listed are important, but I think it boils down to one simple thing:

  • The ability to look at a problem and come up with the best algorithm to solve it, regardless of the language and tools you are using.

Languages and tools can be learned very quickly by someone with an excellent grasp of the fundamentals.

William Brendel
A: 

When I think of "programming ability" I think of it in the most base way possible. I think programming ability should be classified as being able to take a specific something that is requested and be able to convert that requested something into code in an efficient and logical way. The better (faster, efficient, closer to the requester's standards) your end result, the higher the "programming ability".

All of the other pieces of development I believe should be classified as their own skills and not lumped in with "programming ability". It is very often that you have people who can be a great programmer at a particular task that is given to them, but are entirely incapable of thinking about the entire product or thinking about it in more abstract terms. Also, their project management and other skills useful to a software engineer or developer may be lacking, even though their ability to churn out good code is still there.

TheTXI
A: 

What makes the best athlete? Stamina? Strength? Speed? Skill? Is the best swimmer the best pole-vaulter? Is the best archer the best sprinter? Does the best archer care if he can't run 100m in under 10 seconds? etc.

You're listing the right kind of things that make up the skill of programming, but different constituent skills are important for different things - it's not all directly comparable, IMHO, beyond the basics. I'd say that that was nothing more than a good understanding of logic, a good knowledge of a language appropriate to the task and good attention to detail.

jTresidder
+2  A: 

First and foremost, mdbritt's answer is spot-on, and I love it. But I would add one thing to it.

Programming ability requires a fundamental understanding and acceptance of the simple notion that a computer does exactly what you tell it to do, and nothing more, even if what you tell it to do is grossly incorrect. It will do so very quickly, and very efficiently because you told it to do so. Computers do not hiccup, they do not burp, they do not wig out or anything else. They do what some programmer told them to do.

So when the computer crashes, when the memory leak occurs, when the bug rears its nasty head for the twentieth or thirtieth time, it is not because there is a gremlin in the machine. It is because you, the programmer, programmed it to be so. Or, some programmer who developed the software your software is using (even if it's a device driver) did so.

Software development is science, not magic.

Mike Hofer
A: 
  1. Talent. There are a lot of coders that are in it for money, but who are not really techies by heart. There are few skills that can't be learned, but I'm yet to see a single good coder with not a logical-rational-mathematical worldview.

  2. Dedication. Keeping up with technologies takes time. Studying algorithms takes time. Honing your skills take time. Great coders never stop growing professionally the moment they leave the office.

  3. Light-heartedness. We mess up. Our colleagues mess up. Our bosses mess up. Our clients mess up. Everyone messes up, so if you cannot take it, get the hell out of the industry.

  4. Open mind. People that engage in holy wars about their beloved technology are usually the ones that are left behind in a few years. If Java vs. NET or Python vs. Ruby or Mac vs. Linux is a religious matter for you, you won't be able to gain leverage when you need to solve a problem outside of bounds of your beloved technology.

apostlion

related questions