• It depends on the exact profession but in my opinion nothing can replace a solid theoretical background. Especially with databases, because thinking in sets instead of records requires a mind shift that needs a whole new approach, and mister Edgar Codd gave us a perfect way to establish that solid background. Knowing when to use a LEFT OUTER JOIN or even a FULL OUTER JOIN instead of an INNER JOIN to get the correct results depends highly on your understanding of the model behind the data. In my years as DBA I had to correct so many subtle errors caused by lack of understanding the relational model, too often from people who learned how to spell SELECT from books that only address toy systems. If you do not learn the theory ahead of any practice, you probably never will, because you will have other priorities once you start to use it out there in the wild. Programmers have their own paradigms to deal with, like problem domains, inversion of control, unit of work and lots of patterns that you need to have in your backpack before you write the first letter of actual code.

    Apart from teaching students theory and involving them in real world projects, there should also be some room for stuff that makes IT a little bit more attractive. Start a socker match between robots build by students, for example.