When I was a freshman at Clarkson in 1996 there was a work-study program they called Student-Directed Computing Services. It was an effort to recruit students and get their help in wiring the campus for high speed Internet. It was thanks to that program that by the end of that year I had a real world paid experience in UNIX administration and networking.
In the summer after freshman year I took another paid opportunity at Clarkson building educational software for Windows in C++. I’ve continued working there throughout my sophomore year. By the time I got an offer to take semester off and join IBM as a co-op intern, I’ve already accumulated a year of paid experience. After my junior year I took another internship at IBM Research.
Overall, by the time I graduated and got my first job out of college I had four years of practical, paid experience in addition to my studies.
I see college graduates these days who come out of four year degree programs not understanding basic practical concepts. I contrast that with my experience and I realize just how lucky I was that opportunities to get paid work experience in my field were presented to me early on.
Software engineering is an engineering discipline that could benefit from a concept of apprenticeship. Computer science students in four year degree programs should be asked as part of their graduation requirements to seek out apprenticeship opportunities. Colleges need to actively offer these opportunities – after all IT on a university campus is no different from enterprise IT in the private sector.