Essential skills that we didn't learn in university
It’s been about a year that I’m monkey coding in a somewhat large-scale company and getting my head around real coding. In a year that I spent in the industry, I found some of the most important tools and concepts that I use in my everyday job are the ones that I didn’t hear a word about in school. Here are the three most important God-knows-why-they-do-not-teach-us-in-university things that are at the top of my head:
First and foremost is TDD: I can’t even remember how I wrote programs without unit tests, I literally can’t. I mean, did we just open up an editor and start writing code? How did we change the code? How were we confident about it working as expected? All we learned was waterfall design and UML. Heaven forbid!
Second one is Version control: It’s no longer about code bases of two or three hundred lines of throw-away code that you would normally do for your final projects in university. We’re now talking about thousands of lines of code. Version control is the only way that you cope with the immense amount of complexity in large code bases, and it also helps me to take baby steps toward a solution.
And finally, the third one, Refactoring: In university, what matters is you can provide expected behavior before the project deadline. After that, your code is going to be worthless. No one else will read it, you’re not expected to add more features, and who gives a damn about bugs? (They just don’t have to pop up during the presentation.) For me, refactoring is synonymous with responsibility. Your code is your responsibility, and you have to take good care of it.