Is College necessary for embedded developers?

Wednesday, January 11th, 2012 by Robert Cravotta

A bill was recently introduced to mandate that high school students apply to college before they can receive their high school diploma. This bill reminded me that I worked with a number of people on embedded projects that did not have any college experience. It also reminded me that when I started new projects, the front end of the project usually involved a significant amount of research to understand not just what the project requirements were but also what the technology options and capabilities were.

In fact, while reminiscing, I realized that most of what I learned to do embedded development was learned on the job. The college education did provide value, but it did not provide specific knowledge related to designing embedded systems. I even learned different programming languages on the job because the ones I used in college were not used in the industry. A concept I learned in college and have found useful over the years, big O notation, has not shown itself to be a topic taught to even half of the people I worked with while building embedded systems. Truth be told, my mentors played a much larger role in my ability to tackle embedded designs than college did.

But then I wonder, was all of this on-the-job learning the result of working in the early, dirty, and wild-west world of embedded systems? Has the college curriculum since adjusted to address the needs of today’s embedded developers? Maybe they have, based on a programing class my daughter recently took in college, because the professor spent some time exposing the class to embedded concepts, but the class was not able to go deeply into any topics as it was an introduction course.

Is a college education necessary to be become an embedded developer today? If so, does the current curriculum sufficiently prepare students for embedded work or is there something that is missing from the course work? If not, what skill sets have you found to be essential for someone to start working with an embedded design team?

Tags: ,

15 Responses to “Is College necessary for embedded developers?”

  1. Jon Titus says:

    What moron introduced a bill that would mandate all high-school graduates apply for college. That’ll waste the kids’ and parents’ application fees. Maybe the students who don’t want to go to college should just pay a fine. Sounds a bit like Obamacare. Anyway, not everyone should go to college or even apply. Many bright people I know did not go to college but obtained on-the-job training. Or they went to a vo-tech schools and learned a skill or trade. Maybe some of our politicians should go BACK to college. They obviously don’t have a clue.

  2. A. @ LI says:

    College education should teach and also attest that you learned the following three things:

    (1) learn how to learn quickly advanced theory and/or skills and be able to at least reproduce when tested.

    (2) learn how to manage time and stress to meet the deadlines of projects and exams.

    (3) learn foundational information in a particular field.

    /* Illustration for (3): although Robert did not learn programming language(s) that he is using now in industry he learned very well a different language and now it is easy for him to pick other languages on the go as needed */

    So the B.S. diploma is/should be at minimum the certification that one is capable of (1) through (3) listed above.

  3. J. @ LI says:

    Three issues:
    1. Forcing kids to apply to college if they aren’t interested is silly. If they earned their high school diploma, give it to them.
    2. Can you learn embedded systems without going to college? Of course, and you learn lots of things on the job that you don’t learn in school.
    3. College is good for most people. You learn technical skills and social skills that you wouldn’t get any other way.

    Which question is most important to you?

  4. V.A. @ LI says:

    You do not need a college education to do embedded work, but it will increase your pay. I find that new college hires do not have the knowledge they need for this job BUT getting the degree shows they are willing to do the work, including classes they were not interested in, to get it. That makes it more likely they will be willing to do things on the job that do not interest them (such as documentation or maintenance). I do not agree with the bill though – the high school diploma is for high school work, not for their future plans.

  5. J. @ LI says:

    In the case of embedded development most of the things learned on the job only.Nothing related to product development is getting from college.Then also I don’t think with out the basics of electronics from college, some one can quickly learn the things and work.If its happens like that definitely they will struggle during the development since its a combination of hardware and firmware.If some problem come during the development its difficult to debug without knowing the basics.In my opinion the college syllabus need to be change according to present/future industry standards…

  6. M. @ LI says:

    Re: Has the college curriculum since adjusted to address the needs of today’s embedded developers?
    Intel launched the Intel Embedded Curriculum in January 2010 and is planning a 3rd year of support for universities. Currently there are ~ 60 Universities participating World Wide. About the the Intel® Embedded University Program (IEUP):
    •Enables technology leaders of tomorrow with an understanding of the new generation of embedded systems
    •Provides a solid academic foundation for designing and developing new and future technologies
    •Offers research, equipment, and curriculum development grants to universities around the world, and holds an annual education summit with researchers and Intel engineers.
    To learn more, visit: http://www.intel.com/p/en_US/embedded/designcenter/training/university-program

    Additionally:
    The Intel Cornell Cup USA, founded by Intel & Cornell Systems Engineering, is a college-level embedded design competition created to empower student teams to become the inventors of the newest innovative applications of embedded technology. Students will also be given the opportunity to enhance their resumes and demonstrate their professional design skills, highly sought by today’s companies, as they transform their ideas into a well-planned, robust reality. To learn more:
    http://www.systemseng.cornell.edu/intel/

  7. P. @ LI says:

    Embedded engineering covers a lot of topics, but I think these cover the fundamentals that do not get taught easily outside of school:
    math (up to complex numbers), computer architecture, algorithms (this is where the big O notations comes in).

    Yes, you can ‘get by’ without knowing these concepts, but you it’ll be hard for you to do the more theoretical design work, and it’ll take you longer to realize that certain problems belongs in different categories.

    Depending on the specialization, it’d be nice to pick up topics such as signal processing(and its branch of topics such as control theory, DSP), statistics, AI, network protocol design, number theory (for encryption), computer languages, OS design, compiler design, etc. Of course, the more breadth, the better, so at least you know where to look for solutions when you hit them.

    True, not a lot of college programs target embedded systems so if one is truly interested, he/she would need to put together their own program tailored toward embedded engineering. It may not get you to a point where you can go out and design embedded systems, but it’ll provide you with the fundamentals where you can pick up the rest such as program management (project management is mostly different implementation of the theoretical statistic models) easier.

    I agree that college do not provide the graduate with the skills that they can immediately use when they get out in the job, but I don’t think that college should focus solely on those skills. Just like an Electrical engineer is not expected to be able to fix TVs when they get their degree, but they should be able to explain the major technological theories in the design of the TV.

    Teaching theories and getting the students to understand it where they can apply it is where college should put their focus on. The actual skills needed on the job should be learned on the job, and in self-learning outside of school.

  8. L. @ LI says:

    There are special people who can do the job without any college. One of the best developers who ever worked for me had a 2-year electronics degree. And one of my better bosses had a Forestry degree. But those folks are rare.
    It’s easy to say that college didn’t teach you to do your job – that’s the flip side of college kids asking “how will learning X make me a better Y?” But most people learn stuff in college, and fairly few people pick stuff up on their own.
    It’s pretty common to find people with degrees and experience who can’t do much except drive a debugger, and who don’t think they should be expected to do anything else. The real trick is to find people who are both talented and motivated. If they got there without traditional college experience, so what?

  9. D'hamer says:

    College was important for me. And as an embedded systems s/w engineer, here are the courses I found useful in the field:

    microprocessors and microcontrollers
    computer architecture
    DSP
    Networks and OSI layers
    introduction to C
    advanced C
    data structures
    OOP
    operating systems

    Students might not take these courses or these courses might not be taught as well as they should be.
    Reason for students not taking it is because some or most of them might not have a clear idea of what embedded systems really is and what kind of work goes into it.
    Analog circuit design or higher level application development students will know by their 2nd year in college.
    Not for embedded systems. Engineering schools should have more career oriented expo, I don’t mean job fairs, but rather provide 2nd year or 3rd year students with a list of job titles which can be obtained by a EE graduate, or a Comp Engineer graduate. And each title should be explained in detail with relationship to the nature of the job, skill sets required. I believe that is the best way to come close to the outside world.

  10. N. @ LI says:

    It is about the QoE ( Quality of education ) that matters, i have lot of interns who complain about the college education as they enforce them to only score and not allow them to learn ,

    I look forward to a drastic change in the curriculum and the way of teaching at colleges

  11. D. @ LI says:

    This is one of those silly troll type questions. You can argue and argue and argue and argue it until the cows come home without making any real progress.

    The real question is how does a manager realize you won’t be able to solve the problem he wants to have solved?

    Some organizations manage the associate risks by establishing “skill standards” HR can prefilter based on those “standards”. Will qualified candidates get filtered out, count on it. Will unqualified candidates passes the filter, count on it. Titles often are amongst the filtering criteria. In theory I guess this means that they have learned the “best practices”. in practice it means you know how to learn the “best practices”. Definitely no small accomplishment.

    That having been stated, the question always becomes one of potential to learn the material vs. proficiency at using the material. Which one is actually needed in the situation?

  12. J.F. @ LI says:

    I have worked with several very capable software engineers who did not go to college and do not have degrees. For me (and my degree is over 40 years old) college did not teach me what I needed to know to do my work, but it taught me how to attack the problem, how to think in a logical manner.

    What a college degree will do is open many doors that are otherwise closed.

    As for the High School diploma issue: I think everyone needs a high school education. Not everyone and not every career needs a college diploma.

  13. D.O. @ LI says:

    Not quite sure what terminology applies here, but after the usual compulsory 9 years (Sweden), I spent 3 years in upper secondary technical school, and about three semesters studying university embedded systems, electronics, control engineering etc – then dropped that for military service and started working in the industry instead. Spent a little more than 12 years working, but have now moved on to game development and various contract work.

    However, I started programming at the age of ten, and spent years coding assembly language on the Commodore Amiga (that is, mostly programming to-the-metal), including OOP, user interfaces and whatnot – so I was essentially self taught before I even touched programming within the educational system.

    I wouldn’t really recommend this route, especially not these days, as programming now usually means desktop environments with access only to very high level APIs. Even game engines (some of the most advanced programming done these days) and audio processing is rather high level stuff now. You’d have to hack Linux kernel drivers or similar to get anywhere near I/O ports, hardware interrupts, DMA etc.

    Also, “realtime” (as in, guaranteed response times) is a concept that isn’t even really applicable to normal desktop operating systems, as they generally don’t provide the OS kernel features required to properly support such applications. Professional musical applications is one field you might want to look to for hints as to “abusing” such platforms for realtime applications – but it’s still a very different environment.

    TL;DR: Basically, if you’re not already doing control engineering, DSP and similar on embedded systems and know exactly what you’re doing – get the proper education! This is not something you pick up over a few weekends after getting a new job.

    Oh, and the salary part: You’ll have to make quite an impression to have any chance of getting paid properly without formal education, I suspect. (Writing a small RTOS + demo app on location did the trick in my case.)

  14. L.M. @ LI says:

    @Rufus – I once worked for a company that test-hired undergraduates from the local U, and encouraged the good ones to drop out for “big bucks.” Once the kids did that, they were locked in to that company. I thought it was unscrupulous, they thought it was good business.
    I’m glad you got hired someplace.
    I replied above that a degree is not that important to me when I am looking at resumes. But I would never encourage a young person to enter the field with anything less than a BS, unless they had some kind of extenuating circumstance.

  15. L.S. @ TI says:

    That’s an interesting question. Many of the University Programmes that we’ve been working with are transitioning the curriculum to more “project based learning” which focuses less on theory and more on the application. It’s true that many of the best engineers often times did not have formal ECE training, but often times the most effective Engineers are those who can root the theory and apply them to experience (e.g. now that I’m trying to push the preformance on this processor I need to better understand the underlying algorithm… THANK you all those years of Calculus :-) ).

Leave a Reply to L.S. @ TI