Do this :
- Read Teach Yourself Programming in Ten Years by Peter Norvig.
- Install Linux (Fedora, Ubuntu, whatever…) and become proficient with it.
- Learn Scheme, Python and/or Ruby.
- Scratch Where It’s Itching (find a problem that is really bothering you and solve it using your newly acquired programming skills)
- Release your software as opensource.
Eddy Young says
Anyone can become a good programmer nowadays. New software development techniques have been developed and are very well documented. Back in the days when I started, I had only a DOS disk, which I formatted due to lack of documentation. I can say I learned the hard way as that was the only time I ever messed up a computer!
Why the focus on Scheme, Python and Ruby? The emphasis should instead be on development techniques. The language is only a tool. If you have the technique, you can write programs in any language.
I think you missed my point. For me, to become a great programmer, one HAS TO THINK DIFFERENTLY. Hence the references to Linux, Scheme, Python, Ruby and Opensource.
I could have used BSD, Lisp, Smalltalk, Erlang and Public Domain for that matter and my point would have been exactly the same.
By the way, what do you think of Peter Norvig’s article?
ya i think u r rite about this 1, one really needs 2 think differently n have a perception of the real world n adapt it 2 programming
but then again its also a matter of “daring to go ahead, no matter what happens”, for e.g if the pc crashes we’ve got 2 have the guts 2 try again… :-)
a great programmer needs a lot of support from family n friends 2
Eddy Young says
To be a great programmer, one does not necessarily have to think differently. One only has to know what options are available and which one solves the problem at hand most effectively.
The open-source scene is a proof of that. How many of the most successful open-source projects out there are just regurgitations of what were already available? Were these created by great programmers? Absolutely! Linux is undeniably one of the greatest achievements in computer history, but did Linus think differently? Not at all. He wanted to copy an existing operating system!
BTW, I think Peter Norvig is simply stating the obvious.
Nafii: There are differences between “innovative” and “great” programmers. I think you are mixing the two categories.
Now we have an argument :-)
You said: “To be a great programmer, one does not necessarily have to think differently.”
For me, there is only ONE way to become a great programmer : one SHOULD think differently!
Your examples are flawed. Most of the best Opensource software (including Linux) are not “just regurgitations of what were already available” or else we would have used those “already available” alternatives (as most of us don’t mind indulging into a little piracy from time to time :-)
We use OSS because the software are not necessarily better but different enough to please us as geeks.
Linux is not a copy of anything (not even Unix). Linus built Linux as a 100% compliant implementation of the Posix standard. He did not use 1 line from Minix or any other Unix available at that time. He was the first to think along this line. Remember, at that time, there was no other Posix OS. And therefore, he thought differently :-)
Peter Norvig might be stating the obvious but this is something young people need to understand : you must put a lot of energy if you want to become great in anything.
Great = innovative for me.
You are mixing issues.
Great != productive (i.e. writing lots and lots of lines of code in a very short time) or even good (i.e. being better than the average guy working in the same company). Being great is another thing altogether… And very few (dare I say none) of us will be one day be recognised as being in that mould. Unfortunately…
Except if I’m wrong :-)
Eddy Young says
I never shy away from an argument, or rather, a discussion :-)
The absence of a clear definition for “great” caused the disagreement. Now that I know you meant “innovative”, I have to agree that innovation is most likely to come from those who think differently.
For me, great programmers are people who excel in their field, and that means being the most able to apply optimal solutions (in terms of cost, time and maintainability) to programming problems.
i agree with u Sir on this 1,
one has 2 believe that the code will work n make sure its not crap n meant 2 do wat its supposed 2 do.
Programming is like playing a pc game, we want 2 reach the end of the different levels n the most interesting part is that we understand wat we r doing.
:-) No offense meant toward u Eddy
“Fame cannot be bought…”
Remember this kids (there are a lot of my MCCI and UoM students reading this blog) You will have to work a lot for people to take notice of you. And, only then, will you be happy :-)
Eddy Young says
Hey, I’m an ex MCCI :-)
Thats y am proud 2 b Mauritian, but i am sad i cudn’t talk to OUR DODO!
Just 2 bad some people just steals our wealth, but we have more than they can get
Happy Independence Day 2 u all :-)
Guess u didn’t get the meaning, i meant 2 say that we r born programmers
we just hav 2 recollect our 2 code things we have been using since childhood like video games.
Wen i was a kid i liked Tetris a lot, n in Squeak they got the idea of adding this game.
Mauritian Kids r very intelligent, u just have 2 listen 2 them n think about wat they have just said :-) but there r exceptions, not all kids r angel
Here is a rather interesting but disturbing article i came up with
should we look for someone to blame??
Why not? What do others think of the article?
how to become a good programmer?
either you are good or you are bad.
If you are googling about how to become a good programmer, i believe one would be a bad programmer :p since that would show lack of confidence :p
I don’t agree with you.
Someone who googles for “how to become a good programmer” is showing a lot of dedication and willingness to learn. And this is a good thing.
Compare to someone googling for “i need the solutions for an assignment I got and couldn’t be bothered to do.”
Neelesh Ramputh says
IMHO there are no such thing as either being a good or bad programmer. it is something acquired, learnt.
If you are someone who analyzes and who nitty gritty details matters to her is more bound to find programming more natural and expressive.
I believe searching how to become a better programmer is one step forward in the right durection. now searching for practices and patterns is altogether something else.this shows interest in doing better.
Technology does not really matters. You can always excel in whatever programming language you are comfortable with. “Coding for humans” or something along this line. (sorry i am writing this on my mobile phone. Jeff Atwood said something like this). If you are willing to go through this route you will end up being a better programmer. You will be one even if you dont do it this way. It is subjective.
Writing unit tests and havinv code reviews also help in becoming a better programmer. You end up growing and you have those “aha” moments.
I hope i did not disgress much in my comment.
Avinash Meetoo says
Thanks for your great comment :-)