I was in Manchester on June 20th for the celebration of the 60th anniversary of the world's first stored-program electronic digital computer program successfully on 21st June 1948. That program was written by Tom Kilburn who, along with the late F.C. (Freddie) Williams designed and built the machine. It was called the "Small Scale Experimental Machine", but was soon nicknamed the "Baby". It is also sometimes known as the "Mark 1 prototype".
Definitely worth mentioning is the Kilburn lecture delivered by Steve Furber, a very interesting speech titled “The Relentless March of the Microchip” in which the speaker shared his experiences and views on the progress of the micro processor industry in the last 60 years.
As part of the event, the Manchester University run an Industry Advisory Board in which a number of people from different companies got together with several university staff members to discuss the plans which the Manchester University has for the next year around undergraduate and graduate programs.
The most interesting question on the table was “Is there any topic or technology that we are not teaching and you would like to see when you hire graduates?” and the general consensus was that everybody wanted to see better “soft skills” such as communication and teamwork but also better customer/user interfacing skills.
Very often graduates fresh out of university have not been exposed to any situation that requires them to understand the requirements of someone who does not share their background, formalise these requirements, research existing solutions (going through white papers, case studies, etc), formulate potential alternative solutions (in a language that the customer/user can understand) and THEN start… coding.
From there the debate turned in whether it is the role of the university to educate their students in such skills, or whether they should focus on the technology and simply make the students “aware” of the issues and let them find the solutions by themselves.
Effectively, should universities aim to produce “ready to be productive products” or should it focus on providing solid foundation and let enterprises “finish the work”?
After many years working in and with large organisations I can say that the biggest issues I have seen graduates facing when starting their professional careers has always been facing an environment which is completely different from what they have been used to during their studies.
Working with people they don’t know (and possibly don’t like), for a manager (or often several ones) they need to learn to know and trust (and who often speak a completely different “language”, have different background and different priorities).
They often face often crazy deadlines, continuous change of requirements (and often so poorly documented ones that they end up guessing what is required from them).
I am not sure Universities (and education institutions in general for that matter) can do anything to prepare their students for the “real” world of work, other than encouraging them to take industrial placement as part of their studies.
What I think institutions could try doing though, is to expose students to a cycle of software development and make sure that they went all the way from collecting requirements to delivering a finished products. Implementing proper project management practices in the projects students are required to undertake, introducing design reviews, peer reviews, customer reviews will help the students understand that rarely they will be coding for themselves (and will learn that the a simple and easy to use user interface is more often than not a prerequisite for success).
I think this is a very interesting debate, and would be more than happy to hear any comments and ideas from whoever is interested in sharing their point of view.