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