how to be a better programmer

If you want to become a better programmer then stop thinking in code. Programming is ultimately about solving problems with a predetermined set of abstractions. How these abstractions are expressed syntactically is irrelevant. So you should be practicing how to glue abstractions together instead of chasing the latest idioms and design patterns and incorporating them into your latest framework. This is why lisp programmers, and functional programmers in general, are better programmers. Functional languages force you to practice thinking with abstractions instead of low-level details and so over time functional programmers become better problem solvers because every time they sit down to program they are practicing better mental habits.

productivity mumbo-jumbo

Once in a while somebody on r/programming or programmers.stackexchange will ask about productivity enhancing tips and tricks. The resulting barrage of information is always the same and completely devoid of actual productivity enhancing tricks. Almost surely somebody mentions Vim or Emacs, another mentions some functional language like Haskell, a few more might mention books like SICP. Honestly, it’s all bullshit. The number one productivity enhancing trick is learning to think slowly and clearly. That’s it. Not Vim, not Emacs, not Haskell, not Python, not C, not C#, not Java, not whatever else. Sit down, think, write a solution, implement it. The tools you use to accomplish the implementation phase don’t matter one bit. If you can’t think clearly then no tool out there will make things any better.