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

6 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.
  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.