For readers new to the field, enterprise developer is just a type of job. The easiest way to define the term is by pointing out that Blue Cross Blue Shield and Bank of America hire "enterprise developers" while Google, Microsoft, and Valve hire "software engineers". That is, enterprise developers write the software that makes the business run smoothly—process insurance claims—while developers write the software that IS the business—the new version of Windows. From an accounting point of view, enterprise developers are often a cost center for the company while developers are a profit center.
Still, the recommendations are largely applicable to all. He recommends students learn:
- Source control
- Bug tracking
- Compiler (paying attention to the error messages)
- Make and the philosophy of repeatability
- Lint / splint or similar static code analyzers
- Serious editing
- DRY: Don't Repeat Yourself
- Defensive programming
- Maintenance: working on other people's code
- Manual testing
- Automated testing
- Efficiency and why it does not matter
- Thinking about the: business, project, release, deadline (getting the bigger picture)
- Teamwork: work well with others
Some of these, however, I think must be left mostly to the student. I know that learning to use the editor is super important, but I don't think we need an actual class to teach editing! I really can't see myself standing in front of our students for a whole semester telling them "To compile your code, press F8; to indent your code press Ctrl-A then Crtl-I". They know they can just get the list of shortcuts and memorize the ones they need. Still, I do make a point in my classes to stop and explain how I got
System.out.println to appear after just typing
sysout. Similarly, learning to use a source control or bug tracking system is just not that hard (compared with, say, implementing a compiler). Overall, the students who have not learned to use their editor, or understand compiler errors, or DRY, are generally the few who really don't care about programming, and their grades show it.
Still, I agree that these are all important skills to have.
Andy also said all students should have read Code Complete, which is the required textbook for my 492 class. He also mentioned The Pragmatic Programmer which is also a personal favorite of mine and on my list of recommended books for 492. Of course, we all know they are good because stackoverflow says they are.