Work vs School

How many times have you heard,

You never use what you learn in school in working life. School is just for the certificate” ?

I disagree, and especially during the past few weeks, I understood the importance of so many things we learnt in school. Of course most of these are realated to Software stuff, because I am working in it. But I am sure it can be used everywhere.

Data Abstraction. One of the holy grails of Object Orientation. It was such a pain when we learned it in CS1102. But, well designed interfaces and components allowed developement of a very very user-friendly GUI over my FYP by someone who did not understand even a little bit of my mapping engin. As long as you have interfaces to implement, who care whats on the other side? :p

Use Cases. I absloutely hated this. I never formally learnt Software Engineering, and never wished I did. But last week, I realised that use cases are very very useful in large projects. All the projects we ever did were really small. With use cases, large (or small or even useless) teams can work in harmony!

Debugging Techniques. Everyone hates debugging. Especially in embedded stuff, where you have no good support for debugging. The ~8hrs a day for 4days a week for ~5 that I spent debugging in the lab for E3208 taught me a lot. These concepts are simple, but you can only learn them through practice.

Documentation. Everyone hates to write documents. My FYP supervisor made it a point to make me write proper Java Docs for every Class I made. It was boring and tedious. But now, I curse for every line of comment missing in the code I am reading. Sometimes, even the most lame and redundant comments help people to understand the code.

Coding standards. The most painful.”Leave 4 spaces instead of tabs. The parenthesis should be below the if. Comments..” The worst part is that there are multiple versions. And you always tend to use the wrong one. But well written code make easy to debug and read. Its not an issue with 1000 line code, but when your code gets 10000000 lines long, with multiple files all over the place, you’ll beg for proper coding.

Version control. Never actually learned it in school. Had to use SVN for my FYP. Found it annoying. (Actually still do :p ). But with huge projects like at work, I have realised that Version control is indispensible. Althought management of such systems gets really painful. A properly setup system can be almost transparent!

I believe there is a lot to learn in school. But we don’t! Instead we waste our time chasing grades.

Learn people, learn the real stuff!