SE Education: What Academia Can Do
hortly after I graduated, my first supervisor told me, " Welcome to GE, Mike. I hope you enjoyed your five years in college, because now we are going to teach you how to be an engineer. " There I was, a freshly minted electrical engineer, proud of my education, ready to solve the world's problems, and the company that just hired me implied I didn't know anything about engineering. They proceeded to tell me that they would teach me how to design real systems, not just the toy circuits I'd analyzed in school using ide-alized models. Further, they would teach me how industry managed systems development and, in particular, how GE did it in one specific application domain—radar systems. After my initial panic, I realized my education wasn't worth-less—it was my entree into the engineering field. Principled advantages. As a seasoned educator, I think it important that we determine what a principled academic education can offer a future practitioner. Adaptability. A software engineer must deal with constantly changing technology. Academia cannot predict what the next language or technique used by industry will be, but by focusing on fundamentals it can prepare students to assimilate technology quickly and efficiently. A software engineer must be exposed to both the computer science from which technologies arise and numerous examples of applying those fundamentals to real problems. Students should be able to understand what a concept is and how to apply it to real problems. To use that knowledge in different contexts, they must be exposed to more than one technology or method. Most importantly, they must be taught how to place new knowledge in context so they can tune and restructure their existing knowledge to better use the new technology. Industry expects you to adapt; a good education teaches you how. Experimentation. A major part of learning is to learn from your errors. The university is the perfect sheltered environment in which a student can experiment, make mistakes, and learn from them. A good program allows students mistakes, but also teaches the appropriate methods to fix and prevent errors. Practicing software engineers who make too many mistakes or experiment too much will justifiably find themselves with an immediate career change opportunity. Breadth. In its most extreme form, an academic education prepares a student to do nothing but acquire further education. A formal engineering education prepares a student to work in a particular technological …