Some thoughts:
- Write some code.
- Think.
- Write some more code.
- Read code written by other people.
- Think again.
- Read good literature. Style is important.
- Don't fret over what computer language to learn. All of them have their use. Learn a few.
- Write some programs in Assembly.
- Spend some time with LISP (or Haskell or scheme).
- OO has been oversold. Don't pay too much attention to pure OO shills. In fact stay away from anyone who offers 'the final solution' (Hint: Agile ...).
- Read the writing of other programmers/computer scientists (Brooks, Knuth, Dijkstra, Paul Graham, Joel Spolskey, Raymond ...). But don't take any of them too seriously. Develop your own thinking.
- Read some more good literature. Large scale code is like writing a large novel. It is easy to lose the plot.
- Develop good taste. Aesthetics is important.
- Naming variables/functions may become the hardest part of coding after you have done it for a decade. Namespaces give some relief, but don't really solve the problem. Good taste is the key.
- Computer program is not just an instruction to the computer. It is also a way for programmers to communicate their ideas with each other.
- User interface is important. If your program needs too much documentation, you probably did it wrong.
- Master the tools of the trade (OS, editor, code management, documentation, compilers, linkers, loader, shell script ...)
- You will not accomplish much alone. You will need other people. Become a good communicator. Programming is communicating an algorithm to the computer.[DOUBLEPOST=1460956577][/DOUBLEPOST]Two more things:
- You will spend most of your time debugging. Learn to test/debug code well (which is not the same as using a debugger. In fact, a debugger should be the last resort.).
- Never shy away from debugging other people's code.