Slashdot Mirror


Ask Slashdot: How Do You Make Novice Programmers More Professional?

Slashdot reader peetm describes himself as a software engineer, programmer, lecturer, and old man. But how can he teach the next generation how to code more professionally? I have to put together a three-hour (maximum) workshop for novice programmers -- people with mostly no formal training and who are probably flying by the seat of their pants (and quite possibly dangerous in doing so). I want to encourage them to think more as a professional developer would. Ideally, I want to give them some sort of practicals to do to articulate and demonstrate this, rather than just "present" stuff on best practices... If you were putting this together, what would you say and include?
This raises the question of not only what you'd teach -- whether it's variable naming, modular programming, test-driven development, or the importance of commenting -- but also how you'd teach it. So leave your best answers in the comments. How do you make novice programmers more professional?

2 of 347 comments (clear)

  1. Let them see lots of good code by phantomfive · · Score: 4, Informative

    If they are new programmers, probably they need more than just programming skill, they need skill acting like a professional. The Clean Coder does a really good job with that.
    For programming skill, I'm going to suggest Zero Bugs and Program Faster. That book tries to change the way people think about code.

    On the practical side, there's no substitute for looking at good code. Assuming you're a good programmer, this would mean code review is one method. Have him review your code and find mistakes. He'll think he's trying to catch you, but he'll learn a lot doing it. Then you can review his code, too.

    Another good mentoring technique is unit tests. They show you the kinds of things the programmer is thinking about when they test. So you can look over the tests in code review and say, "hey, you forgot to test this aspect." Ideally you'll want him/her to be thinking of every possible test case, even if he/she doesn't actually write out the test.

    Another thing is to treat the younger person with respect. Sometimes if you say, "Oh you did that wrong" they will automatically assume, "he hates me" and put themselves in an adversarial stance, which is not helpful for anyone. Look for things that they do that you really respect, and point them out.

    --
    "First they came for the slanderers and i said nothing."
  2. Re:Focus on a few key things by ShanghaiBill · · Score: 5, Informative

    Could we get a full list of those books?

    This is the list I currently use. I welcome additional recommendations. What CS books have you read recently that you really wished you had read 10 years ago?

    Programming:
    Clean Code
    Code Complete
    Programming Pearls
    The Pragmatic Programmer
    Regular Expressions
    Algorithms by Robert Sedgewick
    Introduction to Algorithms by Tom Cormen
    Hacker's Delight by Henry Warren

    Interface design:
    Don't Make Me Think
    The Design of Everyday Things
    Microinteractions

    Software Engineering:
    The Mythical Man-Month
    Joel on Software
    Test Driven Development

    Theory:
    The Turing Omnibus
    Deep Learning, by Goodfellow, Bengio, Courville
    Concrete Mathematics by Donald Knuth
    Physics for Game Developers
    Computability, Complexity, and Languages