I got some interesting feedback from a few people on my article on teaching performance analysis in school. Those who responded agreed the topic was not well covered in the schools with which they were familiar. This got me thinking as to what besides performance analysis should be taught and why.
Today, I am sure there are many class on GPU programming, JAVA and, to a lesser degree, C. The operations side is also needed to ensure a well-rounded education. The key thing I see is problem-solving ability, and problem solving on real-world hardware and software. In the large data centers that I work with, it would be great if people coming out of school had familiarity with Infiniband, 10 Gb Ethernet, Fibre Channel, SAS and storage in general. Additionally, from what I can see, there is very little understanding of I/O from the application I/O request (C library or system call) to the disk. Add in the issues with SSD, both good and bad, and PCIe SSDs, and there is a lack of understanding in the critical areas that impact the design and performance of a system.
So who is at fault? Here in the United States, there always has to be fault. In my opinion, there must be a better partnership between the vendor community and colleges and universities. Vendors must offer their time and limited amounts of hardware to cover the critical issues that can impact the understanding of storage and I/O issues so we can graduate that better understand the problems. A small number of universities in the United States have curriculum in these areas, but broader understanding is needed.