Just before 2011 hit its expiration date, Derick Winkworth published Being Good at IT Stuff where among a gazillion things I totally agree with he also wrote “Even in IT, an IT degree is useless.”
I know exactly why he wrote that; I’d attended plenty of seemingly useless lectures (although it turns out sometimes it pays to understand those topics), and some people still think teaching History of Computer Engineering or obscure programming languages makes perfect sense.
I’ve also seen way too many disasters caused by people who had no clue about the proper use of their tools (just like architectural designs with total neglect for structural analysis), with the mission-impossible kludges designed by networking vendors serving as flying buttresses.
However, instead of ranting, this time I’ll actually try to do something about it – I’ll be teaching a class on scalable web-based application design, development and deployment at the University of Ljubljana during the summer semester, and as I said in a recently-recorded podcast, “if at least one student walks out of that room and develops a good scale-out application instead of a typical enterprise craplication, I did my job.”
Here’s the description of the course:
... and here’s a short list of topics:
- Technology choices;
- Basics of TCP and HTTP (including: latency is your enemy and bandwidth fairy is just a myth);
- Web site optimization techniques (including progressive enhancement, graceful degradation and asynchronous AJAX calls);
- Caching, from browser-side caching and HTTP caching to memcached and SQL denormalization;
- Security, focusing on application-layer threats (SQL injection, XSS, CSRF, Cookie hijacking);
- The API acronym soup and mashups;
- Virtualization and cloud computing;
- Scalability and load balancing;
- Databases (from CAP theorem to non-SQL alternatives);
- Resilience and high-availability.
I was also extremely lucky to get a totally awesome teaching assistant (his bio in case you'd like to offer him a job), who grasped my ideas immediately, and vastly improved them by adding topics like version control, unit tests, and very creative team building to the hands-on part of the course. In his own words:
Students will build a simple social network platform going through all the components the big platforms have, to learn through blood and sweat how those components work and why they are needed.
I’ll publish the materials as I develop them. Unfortunately, I won’t be able to make recordings (and I’ll be talking in Slovenian anyway). However, if you think a shorter version of the course would be a perfect fit for your summer camp, get in touch; it just might work out ... and if you’re studying at University of Ljubljana, just join the course and come to the lectures (they're always public) ... but you'll have to work like everyone else.