Some Things I Wish University Had Taught Me – From a Computer Science Student(medium.com)
medium.com
Some Things I Wish University Had Taught Me – From a Computer Science Student
https://medium.com/@elliot_f/some-things-i-wish-university-had-taught-me-e435307c792d#.7ejt3ghqv
3 comments
Projects were typically like a month long for us as well, with some spanning 2 or maybe 3 months.
I don't know I believe that something like TDD should be something that's taught to us from the beginning. In my mind it should essentially be a foundation skill that becomes a platform from which you can grow from. If you are teaching a sorting algorithm then just hedge it into the class that they should split it into x methods and each method should pass test y.
I do agree with your comment on how University should be concentrating on the why but showing good practices along-side the why can't hurt, even if it was just, say bonus marks for using a testing framework or following a style guide etc.
I don't know I believe that something like TDD should be something that's taught to us from the beginning. In my mind it should essentially be a foundation skill that becomes a platform from which you can grow from. If you are teaching a sorting algorithm then just hedge it into the class that they should split it into x methods and each method should pass test y.
I do agree with your comment on how University should be concentrating on the why but showing good practices along-side the why can't hurt, even if it was just, say bonus marks for using a testing framework or following a style guide etc.
> I believe that something like TDD should be something that's taught to us from the beginning. In my mind it should essentially be a foundation skill that becomes a platform from which you can grow from.
You see, it's a common misconception. You believe tests are one of the most important things, while they are mostly for ensuring regressions don't occur (or for basic checking if a very complicated component has some chance to work). What is really important is to have good architecture so the components are composable, and operations of different abstraction levels not mixed up. Tests are far, far after those.
This is why TDD should not be taught as a universal basic block: TDD induces only bunch of supplementary code (called tests), which is not even a remote proxy for good software, while good architecture is one of the few properties that are exactly what makes good software.
You see, it's a common misconception. You believe tests are one of the most important things, while they are mostly for ensuring regressions don't occur (or for basic checking if a very complicated component has some chance to work). What is really important is to have good architecture so the components are composable, and operations of different abstraction levels not mixed up. Tests are far, far after those.
This is why TDD should not be taught as a universal basic block: TDD induces only bunch of supplementary code (called tests), which is not even a remote proxy for good software, while good architecture is one of the few properties that are exactly what makes good software.
When most people are just trying to learn the basics/how to work as a team, TDD adds too much complication. This might be good in a senior level development course.
some of those things are important, like security. But many shouldn't be taught in a University.
It's like saying, I wish they taught automotive engineers in University how to change the oil in a car.
University should be concentrating on the why (theory, algorithms, database design, etc) and now the how (linux, windows, git, etc).
The how comes naturally and can be learned outside of University.