Fog Creek Software
Discussion Board

Tips & Advices for Becoming a great programmer

This question may sound a bit dumb or even naive
for some of you.

But I would really appreciate if someone could anwser seriously without flaming me.

I'm looking for tips & advices, recommended books to read :

Algorithms, Sofware Enginerring, UI, Softare Design, Testing

There is not a list here of recommended book to read ?

Thursday, January 29, 2004

"But I would really appreciate if someone could anwser seriously without flaming me"


Thursday, January 29, 2004

> There is not a list here of recommended book to read ?

Yes, here:

(You owe the Oracle an explanation for the space in front of your question mark. ;-)

Christopher Wells
Thursday, January 29, 2004

Great Programmers are a dime a dozen.  There can be only one best programmer though.  Poor programmers are the rarest breed. 

As one guy on this board used to say:

P.S.  You think I'm joking.  I'm not.

.:: Website ::.
Thursday, January 29, 2004

"Poor programmers are the rarest breed."

Yeah, I KNOW you're joking now. :)

Brad Wilson (
Thursday, January 29, 2004

First tip - advice is already plural.    Consider English as just another programming language -  you work a lot better if you know the syntax.

Thursday, January 29, 2004

"How to become a hacker" is pretty good advice (Hacker meaning coder, not people who break into other computers)

Matthew Lock
Thursday, January 29, 2004

That's right. Knowing grammar is a must.

Therefore, you should know that 'advice' is *not* plural (I think it is not event countable).

I agree that he should've asked for 'advice' instead of for advices.

.NET Developer
Thursday, January 29, 2004

A great programmer, in Joel's own definition, has to be able to 'get things done'.

(Ok, he/she should be smart too, but let's talk about the part you can change.)

In that sense, I would recommend looking for advice on how to be more productive.

Hacking is great, but being a hacker does not necesarily means that you will be able to solve your *customer's needs* faster and better.

I would give you some advice, but I have just remembered that I am supposed to be working right now instead of posting in this forum.

Don't do as I do.

.NET Developer
Thursday, January 29, 2004

The best advice I can give you is this. Try to figure out what type of computer programming you really want to do. The fact is if want to earn a living writing source code you are probably going to have to specialize in some manner.

How many programmers do you know who can claim they have earned a living writing computer games, commericial applications, embedded applications, as well as enterprise business applications for large corporations? My guess is your answer would be none or not very many.

Some people choose to learn the C++ programming language because they believe doing this will give them some flexibility in their careers. While C++ might not be the easiest programming language to learn it is still being used extensively in lots of different types of industries (gaming, business, commercial, scientific, etc). Perhaps some of these "I really need to learn C++" people are thinking, "If I ever get laid off from my corporate job, I can always chase after small consulting gigs writing whatever type of application that someone is willing to pay me to write, create a shareware program, begin writing PDA applications, ....."

One Programmer's Opinion
Thursday, January 29, 2004

These questions always remind me of Richie when he was playing chess in Bottom:

Richie : "I should have been a chess champion. If I'd spent my whole life learning how to play chess better than everyone else in the world I could have been the chess champion. "

Matthew Lock
Thursday, January 29, 2004

What about other areas of knowledge, education?

Is a great programmer somebody who just spits out code?

I don't think so. Usually great programmers are good at code and the tech stuff, but they also have knowledge that goes beyond the mere technical details of what they happen to be doing today.

This is not really even an attempted tip, except to say, be good at tech stuff, but try to learn about other stuff too. For example, for most projects it helps if you know lots about your users, their needs, their likes and dislikes, etc..  For business projects, it might include a general knowledge of the business in particular, or business in general.

S. Tanna
Friday, January 30, 2004

1. to be great you need to figure this stuff out yourself.

Friday, January 30, 2004

Click "Forth"

Look for the essay " Thoughtful programming" by Jeff Fox.

Note: not everyone can read that.

Friday, January 30, 2004

>>>Hacking is great, but being a hacker does not necesarily means that you will be able to solve your *customer's needs* faster and better.

Most projects are completed "successfully" by the project manager and client because there is too much at stake to admit it was a failure. Solving needs is pointless. As far as becoming a great programmer, that is done by many hours of programming.

Tom Vu
Friday, January 30, 2004

Try working as a technical support engineer for complex enterprise software product with little documentation.  Make sure your product development group is stretched thin as well so when angry customer call you don't really have many resources to turn.  You will either become a great programmer or you will go crazy trying.

Jim K
Saturday, January 31, 2004

Just some stuff collected over the years...

+ Like every other craft, it helps to know what you are doing and why you are doing it the way you choose to. Get to know your tools inside out. Leave no stone unturned.

+ A very strong desire to be the best programmer there ever was. You have to actively want to bring yourself up a notch higher each day.

+ Ask and ask and ask. Never stop asking and seeking answers to questions. Don't give up if you can't find a solution.

+ And if you don't know, ask someone else. Leave ego at the door.

+ Don't be afraid of making mistakes. Work with a newsgroup or support group. Answer as many questions as you can, even to those you don't have the answer to. If someone points out your mistake, graciously say thank you - you've learnt something new.

+ Be sociable. As iron sharpens iron so does one man sharpen another. You can do it on your own, but you can't achieve greatness without other people. Be nice. Smile and chat. Never yell or be rude :-)

+ Read, Read and Read. Get your hands on any book that helps you do your work better. This extends beyond technical books.

+ Keep your mind active. Think deep thoughts. Work it like you do your muscles at the gym. Solve puzzles. Paint a picture. Do whatever stumulates your mind.

+ Constantly review your work. Try to find ways to improve it. Re-write sections of code if necessary. If you can, get someone else to review it with you.

+ Look at other people's code. You'll always learn something new and various ways of attacking the same problems.

+ Find a group of programmers whom you consider are a notch above you and work with them. You can invite them to join your freeware project or start something else. If you are lucky, you can find job opportunities in companies that hires the best programmers (hint: look for those that pay them really well).

Thursday, February 5, 2004

*  Recent Topics

*  Fog Creek Home