During a recent meeting with engineering-school faculty and alumni, we talked about whether their college should educate generalists or specialists. One of the graduates explained how his broad education let him solve a problem with fundamental information that bridged several specialties. One of the engineers with a deep knowledge in a narrow area countered that today many companies need engineers with specialized knowledge so they can "jump into" a problem right away without a "warm-up" period. I can see both sides of the generalist vs. specialist debate.
In electrical engineering, undergraduates often specialize a bit, perhaps taking more analog than digital electronics courses. But they receive a BS degree with a good understanding of many facets of electronics. In graduate school they can continue their education in narrower fields. Undergraduate engineering programs educate people about how to approach and solve problems, and how to think critically and examine problems from several perspectives.
The general knowledge instilled during four years of college also helps graduates evaluate a field and determine whether they want to continue in it. I know science and engineering graduates who have become surgeons, physicians, teachers, entrepreneurs, patent attorneys, and so on. The generalist approach served them well. This approach also lets people who aim for more education benefit from a variety of experiences in their discipline. So I would not recommend trying to push undergrad engineering students to become specialists in four years.
On the other hand, when companies and universities advertise job openings, they usually have a long list of specialized requirements. I found this example of job requirements on the Internet:
- Minimum five years of embedded FPGA/ASIC design and/or verification experience;
- Three-plus years of experience using System Verilog;
- Solid experience verifying complex FPGA/ASIC designs;
- Strong working knowledge of OOP verification and verification environment;
- Experience with OVM/UVM verification methodology;
- Good verbal and written communication skills;
- Self-starter who can work with minimal supervision in a team environment on site;
- Experience with scripting languages (e.g. Perl, TCL).
Generalists need not apply. So here's my advice: Go ahead and specialize as you see fit either through an advanced degree or on-the-job training. But keep an eye on general knowledge in your chosen and related fields. If you want to specialize in motor control, for example, you should know how to write code in C, simulate control algorithms in MATLAB and Simulink, use LabVIEW, and so on. It also helps to know how to go to the shop and quickly machine a motor coupling you need to test a motor. You might become a specialist with a generalist's knowledge of many things, or a generalist with pockets of deep knowledge in a few areas. We have room for both types of engineers.
Readers, what do you think? Tell us in the comments section below.