BIG disclaimer: I have NO formal training.
1. Tools. I generally shy away from tools. I just don’t like using anything that makes me more productive when I’m programming. I prefer to type out every line of code, occasionally cutting and pasting from the same program or something similar from the past, but not very often. I want the writing of code to be painstakingly slow and deliberate. Why? Because productivity is not the objective. Becoming one with my project is. I may not start as fast as others, but that doesn’t matter. It’s not how fast you start, it’s how soon you deliver a quality product. Like memorizing a speech, cranking out the code by hand makes it firmware in my brain. It’s not unusual for me to crank out 300 lines of code and then be able to reenter them on another machine from memory. So when it comes time to debug, refactor, enhance, or rework, those cycles go very quickly; that code is already in my brain’s RAM and it got there the hard way.
2. Simple Algorithms. Yes! I love this example:
* EnterOrders 08/31/10 edw519
I now have a working program! You say you want more features? No problem. Let’s start enhancing it.
3. Debugging. I don’t. I’ve seen 25 different debuggers and I hate them all. Print() is my friend, especially beyond the right fold. Better yet, write code that doesn’t need to be debugged (See #1 & #2 above.) (Of course, this is much harder with “someone else’s” code.)
4. References. Don’t need no stinkin’ manual. I have become extremely adept at about 4% of what’s available to me, but that 4% accomplishes 98% of what I want to do. (OK, I’ll refer to a manual when I need something from the other 96%, but that doesn’t happen too often.) We could talk about all kinds of other things too, like variable naming, how to iterate and branch, and never typing the same line of code twice, but this was a nice starting subset.