How to learn how to program well
https://news.ycombinator.com/item?id=36704I graduated from undergrad with (essentially) a C.S. minor in 2003. Since then I've managed to pick up some practical hacking skills and projects, but I really want to take my programming to a higher level. What's the best way to do that?
FWIW, my language of choice right now is Python, which is what our startup is written in. What little I know and understand about functional programming and recursion, I enjoy, but I feel like I still don't have a very strong grasp on algorithms, performance, and what makes for truly beautiful code.
I own PG's ANSI Common Lisp and have considered studying it as part of the answer to this question.
To complicate this, a little background: I've been offered two jobs: Job A means I can code in any language I want on a really cool skunkworks project--but I would have to be entirely self-taught; Job B means I would have to code in C#.NET, but I would be surrounded by some serious nerds (OS and graphics types) that would in theory be willing to mentor me.
What would you choose, assuming compensation was the same?