Guys especially the professionals.
What characteristic of a good programmer must have ?
Is it Good in memorizing a code ?
Printable View
Guys especially the professionals.
What characteristic of a good programmer must have ?
Is it Good in memorizing a code ?
No... Memorization is probably the last skill a good programmer has.
1) Problem-Solving/Logic
2) Able to see/understand the 10,000 foot view
3) Organization
4) A strong sense of pride in their accomplishments
What do you mean by the 2 and 3 thought ?
2 means to not only understand what is needed of the code, but what is needed by the people who need the coder.
3 means you can track and document what you have coded. That you don't make the same mistakes twice and what you end up writing is a solution - not a cluster of intangible ideas that happen to work.
This belongs in the Gen Dev forum, so I will move it.
Programmers should be able to learn new skills. Fast.
Programmers should also have an eye for good design (but not when it comes to a fashion sense).
o contraire mine supérieur...Quote:
Originally Posted by mendhak
Fashion sense can be key as making a product is one thing; but selling it is another. Presentation is crucial.
That's why sales teams exist. They're the attractive ones with a good dressing sense, with good interpersonal/social skills and a disdain for lowly programmers.
Yea, and if sales makes yet another boneheaded decision that totally changes the look and function of another easy to use and perfectly functional GUI, usually because they're all Mac users and don't like how Windows does things (like close-buttons on the upper right of forms), I'm going to sick my chupacabra after them. :mad:
In general, I agree with what 7H said in his second post, except for the bit about memorization. While I think it would be utterly pointless to deliberately memorize anything about code, I would not be at all surprised to find out that virtually all of programming is actually based on memory. My reason for this is the studies of chess masters that have demonstrated that what makes them so good is almost exclusively their ability to look at the position of a chess board and match it against positions they have encountered before. Therefore, their expertise is largely memory rather than reasoning. Only bad chess players waste time analyzing a bunch of positions. The best players analyze only one or two moves, but they are the right ones.
I see lots of that on this forum, as well. People who are new to design tend to flounder around alot. It isn't that they are not creative, they simply lack the experience to guide their thinking. For those of us who have been doing this a long time, it is very easy to reach for a design construct and pattern that we have used variations of many times in the past. For this reason, design patterns became a little rage (with all the attendent how-to books) in the late 90's and later (what DO we call this decade?), but knowing a bunch of patterns theoretically, doesn't help a novice. You need the experience such that your mind is conditioned to recognize a situation and bring the right tool readily to hand, modified as needed for this specific instance. This is partially done through pattern recognition, to be sure, but it is primarily a function of memory.
Thus, memorization is VITAL, but only the memorization that comes through repeated practice. Therefore, programming is like the samurai art of the bow: You must draw the string 1000 times before you ever pick up an arrow. Similarly, in programming, you must declare an integer 1000 times before you ever set its value. Then you will be a good programmer....or criminally insane, but who can tell the difference?
That's more applied knowledge than memory.
By "Memorization," I took that as the ability to write something and memorize what was written.
shaggy - I agree with most of what you said.... except while memorization is a KEY... I'm not sure it's vital. Well, to a certain extend it is. there's a saying I came across, I don't remember who said it but "Good programmers know everything there is to know. But the greatest programmers know where to look up what they don't know." I believe that's true... especially after the parade of developers we've had through here in the last year or so.... I firmly believe it's OK to not know everything there is to possibly know.... but, using the chess analogy, as long as you can recognize "hey, this is jsut like XYZ in project ABC" ... and get what you need. OR "Hey, I remember reading about that in magazine 123 just last month...." and so on. That's where a lot of my knowledge comes from. Rather than memorizing coding techniques (unless I use them, then they usually end up becoming something I "just know") I have a tendency to catalog things I've read... or know how to find in a search. Just about the only things I actually memorize is stuff I use on a daily or near daily basis.
One of the other aspects that I "live" by (or through, depending on your take) is the "Tao of Programming" .... if you can find it (and there's plenty on the internet).... I suggest reading it. It's easy, quick, funny, but only truthfully so, and I find that when ever I apply it, things seem to work themselves out.
-tg
I realized what you meant by memorization, and agree with that. However, I suspect that memory is FAR more important to good programming that people recognize just as memory is FAR more important to good chess than people realized until the last decade. Chess was long thought to be a deeply intellectual, analysis-driven process. Now it is understood to be a form of memorized pattern recognition and retrieval trained through countless repetition.Quote:
Originally Posted by syntaxeater
Similarly, I see good programmers reach for the right tool the first time without spending any significant amount of time thiking over the choice they are making. That's memory, but not the short-term memory used in memorization.
Bah, we could psycho-analyze this all the way back to saying "it's the mind increasing CO3 levels causing SP2 to release more dopamine. The SA receptor captures this and the result is a heightened sense of awareness and a sense of clarity." And this is only after we get past semantics.
I still say knowing the right tools and patten recognition is the result of applied knowledge. And I don't think memory and memorization is the same either.
For example:
I remember a project I did last month. I remember that I used a stringbuilder instead of a string. So this month, I am using a stringbuilder for a similiar situation.
I don't remember last month's code line by line. I don't remember all the names of the variables, and I probably can't recall half of the members I exposed on it.
I think everyone agrees that memorising code is pointless, but the ability to remember techniques is vital. How you commit things to memory isn't important, as long as you can at least vaguely recall them later. I have a dreadful short-term memory, but if I spend an hour doing something and then learn that there's a way to do it within thirty seconds, I'll remember the quicker way the next time I have the same problem. That's not memorisation per se, but it does involve memory.
The key attributes of a programmer are the ability to break a problem situation down into its key issues and the ability to then solve those issues. Experienced coders will apply knowledge to most situations; inexperienced coders will have to construct solutions from scratch or research. Both abilities are required, though.
The key attribute of a good programmer, in my opinion, is the ability to construct or apply not only a working solution, but the simplest and most effective one.
The abilities to organise code effectively and see the picture as a whole is good, too, but they're qualities required more of a designer rather than just a code monkey. If you can design as well as code, that's brilliant.
Wow thanks for your replies man, and i realized now that if a programmer radically use memorization everytime he code after 50 yrs. there's no assurance that all the codes that he does is still in his memory. So for me now its better to familiar rather than to memorize a code.
If you can understand pointer logic then you truly are a programmer, thats abstract and its eh abstractyest. :)
The 5 Ps that will make you a good programmer:
1. Patience
2. Persistence
3. Practice
4. Problem Solving ability
5. Passion
You left out:Quote:
Originally Posted by 01010011
6) pCaffeine
Lol. Actually, the fifth point, Passion, eliminates the need for pCaffeine. Lol.Quote:
Originally Posted by Shaggy Hiker
For some:
7) Mountain Dew
On a more serious note:
8) Thirst to learn