Slashdot Mirror


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?"

5 of 240 comments (clear)

  1. Re:Perhaps you should learn how to program? by W.+Justice+Black · · Score: 4, Interesting

    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?

    • How DLLs, particularly linking/loading at compile- and run-time, work at a low level.
    • The innards of three filesystems.
    • Solutions to various bit manipulation problems in assembly.
    • General implementation of hardware-assisted task switching (i.e. saving/restoring registers, etc.)
    • ...and dozens of other esoteric (but later quite useful) topics I can't remember off the top of my head...

    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
  2. Go work in a crummy company by rocjoe71 · · Score: 5, Interesting

    ...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)
  3. Modelling by Spiked_Three · · Score: 3, Interesting

    Even though I have 29+ years of programming, I have never worked for a company that had its stuff together as far as product development. They all were poorly conceived, constant moving targets dictated by the sale's department's conversation of the day.

    As far as learning new languages go, that's fine - if you are not already there - I was at the point quite a long time ago where 'its just another language'.

    I finally forced myself to do some small projects in text book perfect approach - requirements - use cases - UML models (and appropriate design (not refactor) patterns - Test driven development. The results were some incredible complex multi-threaded x25 to tcp bridge code that worked first time and was a pleasure to enhance. Never before had I experienced that, and never again since either.

    Anyhow, that was a personal accomplishment / satisfaction. Now if I could only find a company that builds software this way.

    --
    slashdot troll = you make a compelling argument I do not like the implications of.
  4. Re:Find a new job. by o2sd · · Score: 3, Interesting

    Agreed. My personal strategy that has worked very well for me so far is that if the programming is boring, then there is nothing at stake. The easiest way to make programming interesting AND take it to the next level is to find a job with a lot more risk involved. This usually involves either (1) Look for a company that is smaller by half (at least) than your current employer or (2) Be on the lookout for companies who are about to engage in something that would be considered too risky at your present location.

    Now I am not recommending this approach for everyone, I'm just saying it works for me. More Risk == Better Programming

    YMMV

    --
    - Nothing to see hear.
  5. Re:It's not the eyes, but the brain by Aladrin · · Score: 4, Interesting

    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