Learning to Program
Short entry - this blog post is an interesting take on what you should consider doing to become an effective programmer. I agree for the most part. I would add a couple things, though.
Historically, I've discovered that I can learn the syntax/grammar of a typical programming language by reading a book in a weekend. I did it with Java, PostScript, and C#. However, in each case, I had a previous language under my belt that was close enough that I could abstract that capabilities of one language to another.
While I was, in each case, up and writing code after the weekend with the book by my side, the code did not demonstrate fluency. That came by writing code and lots of it.
I remember a guy who had been to a comic book convention and was waiting in an autograph line to meet some prominent artist. He overheard a fanboy ask him the question, "how do you become a comic book artist." The answer was, "get a really big stack of paper and a lot of pencils and start drawing." The same is true for coding or for just about anything else you want to become proficient in.
I would add a couple things to his list of things to do to become a proficient programmer:
- Learn a non-trivial file specification. Learn it to the point where you can parse the files by looking at them. You will almost assuredly have to have that depth of knowledge of some spec at some point in your career. Being able to interpret a specification and, better yet, learning how to right one is valuable.
- Write an interpreter or a compiler for a little language, or better yet, a complete language. Having an intrinsic understanding of how a language is implemented will improve how you write code.