TDD, Pair Programming, Mobs, Clean Coding and Code Reviews are not only buzz words. These practices should be state of the art if you are developing software. But why is it sometimes so difficult to convince management, customers or your own colleagues that working with these practices is essential for high software quality and knowledge transfer? One of the big arguments in my past projects was the budget and that it is time consuming. I guess I don’t need to tell you that this way “you are chasing your own tail”. Sooner or later you will run into problems as your code gets harder to maintain, the amount of bugs is growing and you work in silos as part of your code is only understood by the developers who created it.
In some parts it changed over the years, especially with using Continuous Integration and Continuous Delivery. If your code is live after pushing a button and the end user is able to see and use your software it would be no good idea to do that without test automation. But also in that case you need well written code and tests that weren’t just written to meet the rule set of tools like “sonarqube”.
As I also experience in projects that employees coming directly from university or “Fachhochschule” are not used to use these practices I became curious. When I studied computer sciences at “Fachhochschule Fulda” I mostly did projects. These times we were not used to the mentioned practices but I would expect that at least the concept “Fachhochschule” which should be an education in step with actual practice has this included by now.
I wouldn’t love my job as much as I do if I wouldn’t also do my own experiments. A friend told me that it is possible to do courses at “Virtuelle Hochschule Bayern” without being an enrolled student. And I found a beginner course for C++. As I always programmed in Java this was also a ++ for me as I would also learn something new 😉
I was really excited to start with the course and to find out how programming languages are taught these days.
First I want to start with the positive points. The script was understandable and had the basics all inside. There were also videos with hands-on coding and explanations, some quizzes to check your understanding and many coding examples with solutions.
Unfortunately there is a big BUT. First of all there was completely no mention of testing. As a total beginner in programming I would have finished this course and wouldn’t know that it is even possible to test my code and how it can be done and that it SHOULD be done.
We also had to write four bigger programs wich have been evaluated in the end. In the task description was written in bold letters: Document your program with comments in the source text.
Within the script was no mention of clean coding. What I get as a student here is, well, as long as my code is working and also if it is overly complicated written, I can simply document it and everybody will understand. The rating of the code got 20 % for good documentation.
I get what the idea is behind that. They want to prevent that somebody else wrote the code but couldn’t this person also write the comments?
At this point I was frustrated and wasn’t sure if I should finish it or not. But as I still had fun to program, I simply decided to use the practices of clean coding and not to write a lot of comments. Finally I became full score for all programs but it didn’t satisfy me. I have no idea if I could have done something better. And as I am a beginner in C++ I am pretty sure that there was a lot of potential to do something better than I did. Of course it is difficult with so many students to comment everything. But what could have been done at least is to let the students program it in pairs. I could have discussed different options for a solution. Or why not doing a mob for part of the code with one of the mentors? The most important thing should be that I learned something and that I learned it in the best possible way not that I wrote a piece of code only by myself.
I wrote the professor and asked him why they left for example testing or clean coding completely unmentioned. I got an answer but a really short one. There was not enough time to add this in the virtual courses but they would do one separate course in the presence lectures. I think it is at least something but in my opinion it would be a lot better to integrate these topics while learning a programming language. This way you don’t start to adapt a way which you have to throw over board later on. Many companies would profit a lot more as the students are prepared for what they have to do when starting a job. And shouldn’t the students come to the companies with new technologies, ideas and a way of working to bring some fresh wind to the companies? Aren’t the universities the places where new ideas are explored and developed?
It seems that a higher education is no guaranty for a modern and up to date education. I would be really interested in your experiences and opinion.