REAL PROGRAMMER vs. AMATEUR PROGRAMMER
My adventure with programming began one year ago when I spent $1,500 to buy newest version of my favorite program - "Microsoft Visual Basic 5.0 Professional." Very quickly after that I started to participate in a "Visual Basic Discussion Group" over the Internet. When I first go there I was surprised by how many members they had. It was something about 5,000 people. I thought, "Wow, there is a lot of them, maybe I should be interested in something else." Fortunately very quickly I realized that there are programmers who really like programming and "programmers" - amateurs who like the money you can make by programming. Differences between the two group are very clearly visible.
The most important difference between amateurs and professionals is how their code looks like. The code is the thing in program that normal users never see; the thing that makes the program working. An amateur's code is one big mess. No comments, billions of "If-Then" statements. Amateurs can be called "If-Then People" because they use that statement everywhere, even in the most inappropriate places. That's why their code is long and hard to understand for a real programmer. Another amateur however understands it without any problems. I remember when someone from the discussion group sent me a program to check for an error he couldn't find. I opened it in my VB and I was shocked. I actually couldn't figure out what simplest functions are supposed to do. He didn't have any comments at all, and his code was just one huge "If-Then" block. I wasn't able to help him. Neither were five other members of vb-world.net I sent the program to. We just didn't understand it. We had to rewrite the entire thing and then finally tell the guy what he did wrong. It was quite a challenge. Another thing that bothers real programmers is that amateur's code never works properly, because amateur doesn't have time to test it before giving the program away. He is too busy doing his newest project. Amateurs love to start new projects.
A real programmer's code is very well commented, it takes usually more space than the entire code itself! Real programmer needs it, because he, unlike amateurs, does come back to his old project. Real programmer doesn't abuse "If-Then" statements. He puts them in the places where they are absolutely necessary. It usually is a lot of "If-Then" statements but comparing to amateurs it's nothing. All that makes real programmer code to be very easy to understand even for someone who doesn't know what programming is all about. The best example for that is the same program I've mentioned above. When we wrote the program all over again for that poor amateur, we used functions he probably wouldn't even dream of. We were afraid that he would not be able to read it. Fortunately for him we, as real programmers, commented our codes very clearly.
It was so clear that the poor guy was able to correct it for himself, even if he didn't know what the function was all about. He knew what to change because he had perfectly commented original code. I hope it gave him on idea on how important comments are. Another thing about professional's code is that it always work. It never fails, no matter what. Real programmer's code just has to be perfect. That's why he is going to test it under toughest conditions, day and night just to check if everything works as it is supposed to work. If something doesn't real programmer adds thousands of error handling procedures, so his program is always perfect. Real programming is about being perfect.
Another difference between real and amateur programmers is education. Amateur programmer, even if he works for big company in his middle thirties he never finishes school with computer science as a major. Amateurs usually finish a few courses at community college. Real programmer on the other hand always finish four-year college to get his Bachelor Degree and the has to get a Masters Degree. In other words Real Programmers want to be educated while Amateurs just want the job. Again the best examples of this I can find in VB Discussion Group - "vb-world.net." Once we had a discussion about what school one has to finish to become good programmer. Our opinions were evenly divided. Some were saying that two-year college is enough to get a job. Others thought differently - it has to be four-year college and then some more specific degree. Very quickly everyone could see that supporters of two-year college are amateurs, since they always have the most ridiculous problems to solve, and when they submit their codes - it is always extremely messy. One of them was the guy who sent me the program I've mentioned before.
Amateur programmers don't think about programming as something they could do their entire lives. It always is just a temporary job, which - of course - they will change as soon as possible. Unfortunately for them with that thinking they will never make as much money as they could make if the thought of programming more seriously. Real programmers start early. Their adventure begins usually at the age of 14 or 15 and it always last forever. The only thing that could make them take different job is probably death. Real programmers earn a lot more than amateurs do. The take home checks that make them look like Gods comparing to poor-small-paycheck amateurs. When I lived in Poland I've known a person who worked in programming field. He never finished school about it, but he was lucky enough to find a job. From the very first day he didn't like it. He said that programming sucks and that he will find another job soon. He started looking for a new job, and didn't even care what happens in his current one. Everyone got promoted over him. He wasn't, and he still earns the same amount of money he was earning 3 years ago! I wonder if he is still looking for a new job now? Probably he is since he is an amateur.
The next thing that is different between real and amateur programmers is type of projects they make. Amateurs always start with question "How can I make my computer to walk in my room? Any ideas would be greatly appreciated." Easy task in amateurs mind. Actually nothing is hard for them, nothing is impossible. And after two weeks with their question still unanswered (from obvious reasons) they get really mad. First they start to laugh that nobody can answer their "easy" question. Then they start to "cry" that they will lose their job if the won't finish their "important" project - which of course is not true. Third step is to yell at other people. If it still doesn't work they give up and start a new project, with a new question "I just bought a VB, and I'm totally new in programming. I'm interested in writing operating system because Linux sucks and Windows bothers me" (exact copy of a question from vb-world.net). Quite a challenge? Not for an amateur.
A real programmer never starts high. His firs program looks like this (VB example):
Private Sub Form_Load()
MsgBox "This is my first APP"
Nothing else. Just those three lines (two of them are added automatically). This program is a rule. Real programmer has to progress slowly. He has to discover all the possibilities before learning something new. If a real programmer has a problem, he reads ten books about the topic, reads entire Microsoft Developer Network's documentation (which is usually about 150 pages long for one topic). If it doesn't help a real programmer finally asks for help from another real programmer, not from amateur. His questions are very well explained, with sample codes of what he wants to do. When a real programmer realizes that his question cannot be answered he doesn't give up. He reads ten different books and MSDN's 150 pages long documentation until he finally solves his problem. For a real programmer it never takes longer than one week to find an answer for really complex question, while amateur gives up after an hour of "searching" for an answer.
Overall differences between the two groups are very clearly visible. Anyone, even without any programming knowledge can say "Wow, this guy is real programmer" or "Get lost you stinky amateur." Real programmers give programming their hearts, their lives. They case about their programs like they were their most expensive treasures. Amateurs don't care at all. So if you want to be a great professional, someone who is able to spend his entire life writing programs while earning big bucks then you are a candidate for Real Programmer. But if you want to write programs just until you find another job, if you don't want to be promoted and if you want to be treated like no one then you suck. You are just an Amateur.