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?"
Practice. Learn a new language, just for fun. To do so, program a new application to do something useless that has been nagging you for months.
Did you ever notice that *nix doesn't even cover Linux?
Six years out of school and "programming on and off" seems strange. What kind of programming do you want to do? GUI stuff? Graphics? Games? Algorithms? Databases? Real-time?
One way to get better as a programmer is to do maintenance programming on code written by someone better than you. Learning to understand someone's thinking by reading their code can be a worthwhile exercise. It's also useful to be able to write in someone else's style.
Right now, something worth getting good at is understanding how to write highly parallel programs that are reliable. Write something that has lots of intercommunicating threads and be confident the locking is correct. There aren't that many people who consistently get that right. You have a CS degree, so you have the theory for that. Put it into practice. The world is full of underutilized multiprocessors. Learning how to write safe concurrent code will definitely make you a better programmer. (It will also make you realize how bad most mainstream programming languages are for this.)
On the language front, today I'd say that you should be good at either Java or C++ (C# if you're in Microsoft land), and either Perl or Python (VB if you're in Microsoft land). One strongly typed language that goes fast, and one weakly typed interpreter. Basic familiarity with the HTML/PHP/Javascript world is useful, but don't spend all your time on the details of that - that's for low-level programmers with two years of experience. Also, learn how and when to use a relational database, at least at the MySQL call level.
I don't know about books per se, but these links help:0 Patterns/
P rogramming.html t icles.html
http://joel.reddit.com/
http://programming.reddit.com/
The design patterns book website with, as I understand it most if not all of the content for the book:
http://lci.cs.ubbcluj.ro/~raduking/Books/Design%2
The next three I keep the bookmarks to in a folder called "Practicing programming:
http://www.devblog3000.com/archives/2-Practicing-
http://butunclebob.com/
http://www.objectmentor.com/resources/publishedAr
- Code bashers - these are people who bash out endless lines of cobol (probaly VB nowadays) with no real feel for the craft
- Hippies - Hippies write good code badly. Once the problem of how to code this task is resolved they lose interest so the actual transformation of the concept to the written code is poorly executed
- Nerds - Nerds write bad code very well. Nerds become obsessed with particular techniques and will use that techniqu whether it is relevant or not. However their attention to detail means that the code is well executed
Looks like you, like me, are a hippie under these definitions.init 11 - for when you need that edge.
This is the worst advice ever. What if he can't find a job he likes in that time? What if the economy takes a shit?
And also, employers will offer you less money if they know you don't have a job. This is proven, 3 out of the last 3 companies (ranging from tiny to humongous) I worked for knocked an offer down 10-20% if they know the applicant doesn't have a job and has not had one for more than a month. Not having a job also makes you less likely to get your foot in the door. I think its kind of silly, but if you don't have a job now, hiring managers tend to look at you as used goods that there must be something wrong with.
You are essentially rolling the dice with all of these factors.
For about a year I had "The C++ Programming Language" book by Stroustrup, but only used it for reference. Then when I had some free time, I got the idea of doing the problems in the end of each chapter. Not just the easy or hard problems... all of them.
;)
What I found out was a lot of problems that I thought were trivial, weren't. It really forced me to push ahead, learn STL and the Zen of pointers. The few times I got stuck, I'd send an e-mail to a few other geeky developers (like me) on my work team the next day at lunch, and had a good time trying to solve what appeared to be a simple problem.
I found that at the end of a few weeks of going through the first few chapters, I just "knew" STL and C++ that much better.
So my recommendation:
1. Find a good book that ranked well in your area of interest
2. Be sure the book has a set of solve-your-own problems at the end of them
3. Solve them