Taking Your Programming Skills to the Next Level?
An anonymous reader asks: "About 6 years ago I graduated with a degree in Computer Science. Since that time I've been working on and off as a programmer, however I feel that my programming skills haven't really progressed to the next level as I had hoped. I guess part of the problem is that my work environment hasn't been especially technical or challenging, so I really need to try and improve my skills independently. What strategies did Slashdot readers use to improve their programming skills Which books are useful in this area?"
Re: Insane Programming Task
This is a good idea, believe it or not. Many years ago, I had a case of hubris where I thought I could write an OS in pure assembly. I took a week off of work to give a go at jumpstarting the process. The OS I produced: Er, none. What I learned?
Being a good programmer means challenging yourself--via coding competition (TopCoder, e.g.), weird language acquisition (Haskell seems to be a favorite nowadays), or outrageous tasks (as I did above).
Picking a favorite OSS program and putting in extra bits is a good thing, too. I did that (though wasn't able to contribute back due to bureaucratic nonsense at my company) with PXELinux and the Linux loop.c driver, for example. Bummer that I could never release the changes, but at least I refreshed my x86 assembly (PXELinux) and learned some kernel driver basics (loop.c).
Just make sure your company doesn't own your work produced on both on- and off-company time. Ugh.
"Time flies like an arrow; fruit flies like a banana." --Groucho Marx
...No seriously. If you join an IT department where you're the "big fish in a small pond" people will start to notice, they'll give you the tough jobs (note: NOT read as "fun" or "challenging") and because the rest of the IT department is crap they'll pile it on and I mean it. If you find the right place (i.e. the worst place) they'll stack it up and then slam you for not getting it all done sooner.
Instead of sinking under all that work, it will become you're motivation to raise your game and plow on through. You'll find new techniques to get work done, you'll learn to identify the patterns that get work done in the department and you'll invent new processes out of those patterns. When you start to succeed, you'll master your job and maybe a programming language or two.
Then when you're feeling confident about your skills, QUIT that job and go join a firm with a good reputation, knowing full well you're ready to play with the big boys.
But seriously, don't go searching for a book or learning material. Search for MOTIVATION. It's through motivation that we test how much weight we can pull and it's motivation that will select the subjects that we want to study the most.
Height: 38U, Weight: 0 Newtons, Eyes: #0000FF, OS: Gray Matter 1.0 (Alpha)
I think it's also quite a bit easier to 'take your skills to the next level' when you have outside pressure to do so. Doing projects in your free time is great, but there's no great push to overcome challenges like what you get while doing 'work' for a company.
I'm one of those people that program for fun in their free time. For years, I resisted becoming a professional programmer because I didn't want to taint my hobby. I finally realized that I needed to do SOMETHING for a job, and got a 2 yr degree for the paper. 4.0 GPA because I already knew it all, having learned it myself over the previous 10-15 years. (Yeah, I started programming young.) In the last year at this company, my skills have progressed more quickly than the last 10. Having your boss say 'The entire system is down. We need a fix.' has motivation like nothing else. I've learned languages and concepts both. I'm a much better programmer than I was a year ago.
So in the end, the answer is: No book will help you like a good job will. Programming projects in your spare time is better than a book, but not by much. (The 2 together can be useful, though.)
"If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM