Software Engineering
Computer Scientists are not the ones that are employable, it is the Software Engineers that are.
It has always been this way, and always will be. Software Engineering is connected to the real-world. It is concerned with practical problems:
- architecture and design
- implementation
- testing
- security
Computer Scientists live in a more logical and pure bubble; they prefer specificity to scaffolding. But this bit me in the ass during a Graduate Consultant interview.
Engineers are those that make the world spin. Computer Scientists are just those that understand why it can spin.
notes
unit vs. functional
unit tests are more modular and work within specific packages. they assume everything else is working and only test a small functionality. they are a programmer's friend.
functional tests treat the entire system as a black-box; i.e. if the program manipulates data, the functional tests go check to see if the data has been manipulated correctly.
functional tests are more involved, and trickier to design. you may need to use profiling tools to find them, and the skill of creating them is often best left to a separate team that enjoys finding bugs.