Can anyone be a good programmer?

Started by
22 comments, last by Toji 18 years, 4 months ago
Not anyone can become a good programmer, and some 95% of the population totally lack the part of the brain that deals with pointers. Most of those folks can still learn to program they'll just have to stay away from low level languages.

Quote:Original post by jelly_donut
I don't think in terms of mathmatical equations, I'm a very abstract thinker which makes me a good artist and musician. In programming, it's very straigh forward and precise...


This is a great misconception. The ability to abstract is probably one of the most valuable skills there is, espically when working on big projects.

Saying programing is straight forward and precise, rigid one might say, is like saying music is just about chords and notes.

Bluntly put, they're both crafts that when you got the basics down your ability to see beyond the current state and imagine the system as a whole is crucial.

If you enjoy it, go for it. By asking for input you have already showd greater apptitude for it than most.
HardDrop - hard link shell extension."Tread softly because you tread on my dreams" - Yeats
Advertisement
Quote:Original post by DigitalDelusion
Not anyone can become a good programmer, and some 95% of the population totally lack the part of the brain that deals with pointers.


Saying 95% of people can't understand the use of pointers is like saying 95% of people can't understand the concept of driving directions:
If you have directions to a place you don't have the stuff at the place, but you can get to it if you use the directions correctly... (dereferencing pointer)
If you delete what's at the end of the directions you still have the directions laying about - it's just that what you expect them to point to doesn't exist anymore... like directions to the worlds fair =P (deleting a dynamic object, and then dereferencing an old pointer)
And lastly, you can change the directions, but the thing they used to direct you to still exists - you just don't know how to get to it... (re-assigning a pointer without deleting what it used to point to)

See, pointers are easy... I mean there's far fewer crazy drivers making you fearful for your life when using a pointer than when driving somewhere ;)
Evidence suggests to me:

- Most (but not all) people can become more or less competent (i.e., won't be a net drain on a multi-person project) programmers.
- A small percentage can become programmers good enough that I would actually respect them.
- Very, very few people can become truly *good* programmers.

But I'm just cynical :)

And yes, abstraction is very definitely a useful skill for programming. So are creativity, visualization and talent for design.

The difference, I think, is that artists get a mental picture of something and then sit down and describe (by illustration) what it *looks* (or sounds, etc.) like, whereas programmers get the image and describe (by precise notation) what it *is* and *does*.
Remember, you don't have to a good programmer to be a programmer. Just because some college professor wouldn't give you good marks for your code doesn't mean you can't achieve you hobby projects. A lot of what people think is good (modularity, extensibility, maintainability, eloquence, portability, optimization) may or may not be important to you, and are not strictly necissary for your project to work, or even work well.
I'm 14 years old, don't know much math, in fact im getting 72% in Math 9 but im still doing fairly well in programming... if i dont know a bit of math (say Sin for example) i lookup one of my programming friends i met here on gamedev who assist me. Or i come to this wonderful place and ask questions.
I would say, yes, most people could be good programmers. Although, whether most people would be willing to spend the time to become a good programmer is another question.

Anyway, as has been mentioned several times already, abstraction is an important part of programming (not just with OO either, but almost all (if not all) paradigms). Although, some parts of mathematics can help with abstraction, but they probably aren't the type of mathematics you're referring to (things like Lambda calculus and set theory). If you are curious what I mean by abstraction with ideas from lambda calculus, etc, you might find Haskell interesting.

The act of writing program code is identical to the process of translation. If you can write in your native language, you can learn how to program.

The act of _designing_ a program well involves the ability to analyse a problem. It's basically a puzzle-solving thing. If you enjoy the occasional crossword puzzle, game of Sudoku or similar, software design isn't going to be a big problem.

None of the above requires a mastery of maths, physics or anything else. Programming is a linguistic exercise. I have been paid in this industry variously as a graphics artist, animator, game designer, sound designer and programmer -- sometimes all at the same time. I suck at maths. I can't even remember how to do long division.

What you need is an _analytical_ mind. The ability to analyse and see how to create the whole from its many component parts is all that really matters.

The sheer complexity of modern computers can put many people off, but that's where plain old dogged, stubborn, bloody-minded persistence comes in handy.

Sean Timarco Baggaley (Est. 1971.)Warning: May contain bollocks.
Quote:
I don't think in terms of mathmatical equations, I'm a very abstract thinker which makes me a good artist and musician. In programming, it's very straigh forward and precise... I actually do enjoy programming from what I have learned, but do you think it's possible for anyone to be a good game programmer if they simply want to be and are willing to work hard enough at it?

Hmm, two points. First, I don't think abstract thinking is a disadvantage at all. On the contrary.
And second, if you enjoy programming, then you can get good at it. (And even if you can't, you'll still be doing something you ernjoy, right? [wink])
Oh, and finally, you said you haven't had any trouble so far. So what's the problem? ;)

On the other hand, you might want to avoid forking out $200 for software if you possibly can. Depending on what exactly you need, you can generally get by with free tools. (There are several free compilers that work fine. Even Microsoft is offering their for free)
Quote:In Freshman year CompSci, there are always about 200 kids at the beginning of the semester, all of whom wrote complex adventure games in BASIC for their Atari 800s when they were 4 years old. They are having a good ol'; time learning Pascal in college, until one day their professor introduces pointers, and suddenly, they don't get it. They just don't understand anything any more. 90% of the class goes off and becomes PoliSci majors, then they tell their friends that there weren't enough good looking members of the appropriate sex in their CompSci classes, that's why they switched. For some reason most people seem to be born without the part of the brain that understands pointers. This is an aptitude thing, not a skill thing – it requires a complex form of doubly-indirected thinking that some people just can't do.

~ The Guerrilla Guide to Interviewing by Joel Spolsky

Argumentum ad veracumdium and all, but :P
If you think more abstractly, and want to focus on content, the C languages might not be your best bet.

I highly suggest Python

It is the best beginners language, hands down. You don't have to worry about memory allocation, if you need an external library to do something, chances are it already exists, and you don't need to code it your self. For the most part, there is plenty of documentation to get going.

I've jumped over to python after years of coding in C/C++, it is a good language for development, and a great introudution to computer science in general.

If you like python, then give C/C++ a shot when you are ready, if you think you need them.

This topic is closed to new replies.

Advertisement