Bad Ideas Beginner Programmers Must Avoid
To many people, if not most, computer programming is not at all a creative process. It is merely a means of getting a paycheck. In the short term anyone bright enough to pick up a college degree need not do much more than that to find themselves a job in the computer industry these days. But for those who want to get into programming (I mean seriously into programming), and those that feel drawn towards computer programming, I can make some recommendations about some bad ideas to avoid as you journey this intellectually gratifying path.
The way to make programs go faster is . . .
There are a bunch of ways to make your programs go faster, or seem to go faster that, as a beginner, is more likely to deceive the way you think about program performance optimization. The stuff you learn about programming optimization initially almost invariable turns out to be wrong (e.g. unmanaged programs are always faster than their managed counterparts). If when reading other people's code seems a little perplexing or over your head, you should probably take that as an indication that you have a long way to go before considering yourself an advanced programmer.
Other people are stupid; I know the real way to program
Many programmers fall into this trap. I should know because I fell into it. My first interaction with "real programmers" was enough to cure me of that. I quickly learned that others, who might not even be as smart as I am, had all these hard-won tricks and tools up their sleeve. At first, I was falling behind them, and causing all sorts of problems with my own ideas of how to program. I eventually reached a crux, and I had to make the decision to either combust under my own deceptions about how to program, or to meekly ask advice and get help from others. I eventually chose the latter, and I am now a far better programmer for it.
Assembly is obsolete; there's no reason to learn it
In my book, if you believe that, you are a beginner. You can have years, or decades of experience, but if you cannot appreciate the importance of assembly language, you will always be inexperienced. Learning assembly (and not just superficially) is beneficial, even if you don't use it on a day to day basis. It will help you even when you are writing code in other languages. Assembly language is also essential to knowing how your computer really works. It is self evident, but far too many people either miss or play down this point.
Higher education is a waste of time; hackers are self-taught
The problem is that the folks who never completed a college/university degree don't know what education they are missing, and the people who have just done everything through school, have nothing more to offer but textbook answers. You may do a lot of self-teaching, but going to university and doing all the CS courses there is something that will help keep you ahead. You will answer the academics with real world pragmatic answers, and answer hackers with cleaner, better solutions based on solid foundations.
A programmer is just someone who writes programs
Yes, that may hold true when talking to granny. But do you know who a programmer really is? Programmers are people who delve into details about things, and have aptitude for understanding these things usually with less than all the instructions. Programmers' tools are pure logic, understanding of protocols, and fair degree of proficiency with arithmetic. Good programmers are creative, and always try to come up with innovative ideas or approach to solving difficult problems.