Someone straight out of college with a "real" CS degree will likely know about about algorithms, data structures, compiler theory and so on. Some of those skills are not terribly useful for many entry level programming jobs but some are critical. I'm unlikely to hire an entry-level programmer who doesn't know basic data structures, for example.
For those whose experience is "real world", they might be able to tell you a lot about unit testing or source control but stare at you blankly if you ask them about red-black trees. That might be OK depending upon what their work requires them to do.
I guess most CS/programming skills can be loosely grouped into three areas (if you're prone to categorize).
- CS knowledge (e.g., compiler theory)
- Real world knowledge (source control)
- Overlap knowledge (basic data structures)
What would you put in each group and why?
Some categories
pemungkah on 2006-01-23T20:18:19
1. CS knowledge (e.g., compiler theory)
- numerical analysis
- AI
- specialized languages
2. Real world knowledge (source control)
- basic system administration and security
- development tools (CVS/RCS/Subversion)
- build tools (make/Ant/etc.)
- develpment technique (refactoring)
- networking
- application development
- debugging
3. Overlap knowledge (basic data structures)
- pseudorandom numbers
- sorting
- data structures AND related algorithms
- recursion
- caching
- performance analysis (benchmarking, profiling)
- graphics programming
4. Psychosocial skills
- Esthetics
- Graphical design
- Usability
- Application design and cost/benefit analysis