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

9 of 240 comments (clear)

  1. It's not the eyes, but the brain by Pig+Hogger · · Score: 5, Informative
    Reading books is one way, yes, but like muscles, the brain must be exercised.

    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.

  2. Expand by illuminatedwax · · Score: 5, Informative
    Several suggestions:

    • Learn different programming languages. Perl, C++, Python, Ruby, and make sure to include functional ones like Lisp, Haskell, and ML. Build something useful or interesting in each of them.
    • Study algorithms. Get an algorithms textbook and learn about trees, linked lists, hashes, etc.
    • Study complexity theory. Learn how to find the big-O running time of an algorithm. Learn how to reduce an NP-complete problem so you can tell if the problem you are working on is intractible.
    • Study math. Learn cryptography, etc.
    • Read Knuth's Art of Computer Programming.
    • Complete all the tasks you can from the 2006 ICFP Contest.
    --
    Did you ever notice that *nix doesn't even cover Linux?
    1. Re:Expand by AKAImBatman · · Score: 5, Informative
      Learn different programming languages. Study algorithms. Study complexity theory. Study math. Learn cryptography, etc. Read Knuth's Art of Computer Programming.

      Funny. That sounds an awful lot like a CompSci degree.

      .

      .

      .

      .

      Just saying.
    2. Re:Expand by CortoMaltese · · Score: 2, Informative
      Read Knuth's Art of Computer Programming.
      The benefits of reading this is twofold: 1) you can say that you've actually read it, and 2) you can refer to it in any programming related argument: "Look it up in Knuth!"

      Seriously speaking, the books I've found useful (more so than Knuth, anyway) in improving my programming or software engineering skills (in no special order):

      You'll notice that programming is not just about programming. Seeing beyond one programmer, one team, one language, one operating system, one tool, one method, one project, etc. gets you to another level.

  3. Programming self-improvement by Animats · · Score: 4, Informative

    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.

  4. Answering the original question, sort of... by hackwrench · · Score: 4, Informative

    I don't know about books per se, but these links help:
    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%20 Patterns/

    The next three I keep the bookmarks to in a folder called "Practicing programming:
    http://www.devblog3000.com/archives/2-Practicing-P rogramming.html
    http://butunclebob.com/
    http://www.objectmentor.com/resources/publishedArt icles.html

  5. Re:Solve problems, but don't worry about full prog by Silver+Sloth · · Score: 5, Informative
    I once read in Accidental Empires? that there are three types of coders - and the terms are not mine
    1. Code bashers - these are people who bash out endless lines of cobol (probaly VB nowadays) with no real feel for the craft
    2. 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
    3. 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.
  6. Re:Find a new job. by Anonymous Coward · · Score: 1, Informative

    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.

  7. What I did to exercise my programming by Tronster · · Score: 2, Informative

    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 ;)