embedded software boot camp

The Rise of the Full Stack Developers

Monday, May 28th, 2018 by Michael Barr

I’m a connector within our embedded systems design community and, so, my LinkedIn account has more than 15,000 connections. Which is where I recently started to spot what appears to be an emerging industry trend: so-called “full stack developers” have begun to enter the embedded software realm.

While many self-identified firmware developers and embedded programmers have come up to the field from the electronics side, often cutting their teeth in electrical engineering and digital design first, a full stack developer is a software engineer who works at all layers of a complex software system. For example, many full stack developers create websites that connect to relational databases and/or cloud-hosted APIs. In the process a single such developer might write code in languages ranging from JavaScript and Ruby to Python, C, and shell scripts to SQL and C#. All in the same month!

To accomplish this, a full stack developer need not be an expert in all of those languages nor software layers. Rather, he or she should be an adaptable sort who is able to copy and paste then tweak the necessary bits of “glue code” to connect together various commercial, open-source, and bespoke software packages running on a variety of operating systems across what is effectively a distributed computing platform. By necessity, things may not always work right the first or even second time; but the full stack developer chips away at all of those interfaces iteratively until the requirements are met–more or less.

What seems to be changing now is that embedded systems are being added to the “full stack” mix. Other software developers are no longer afraid to interface with or alter our systems and increasingly view IoT and other connected embedded systems as just another part of their project to be integrated as quickly as possible. I’m seeing evidence of this in the increase of developers with “full stack” in their job titles and expertise summaries within my network and communicating with us over at Barr Group.

Of course, when a full stack developer is not an expert in uniquely embedded systems challenges (e.g., the Top 10 Causes of Nasty Embedded Software Bugs) or does not exercise due care, this could increase the risks of failures of safety- and mission-critical systems.

What do you think? Are you a full stack developer working with embedded systems? Comment below.

Tags: , , , , , , ,

11 Responses to “The Rise of the Full Stack Developers”

  1. Matthew Eshleman says:

    Interesting trend. I recently recommended the flip side of that: embedded software engineers should not be afraid to learn more about the internet side of our business, especially if involved in the “IoT” world. At a minimum this helps the embedded engineer talk the language of the back-end team and helps facilitate better team communications.

    I would be concerned about a “full stack” developer diving into embedded software or firmware, but perhaps I’m biased. Then again, I did once need to explain the difference between a 16 bit integer and a 32 bit integer to a Java only back-end dev, very much a “yikes” moment for me. Of course, that same dev could easily run circles around me when dealing with SQL… 🙂

    Thank you for the trend info!

    Matthew Eshleman

  2. Peeyush Kumar says:

    I agree with your thought, I am firmware engineer working closely with “Full stack Developers” and “Product Manager”, and I can surely say that FSD has no idea about firmware running on the resource constraint devices and In my opinion it takes lot of time and effort in writing firmware for embedded systems.

  3. Nick says:

    I’m a full stack developer by occupation, but my schooling and interests are embedded systems. When I look around the room, I can’t argue against what you’re saying about us full-stack guys. That being said, I’ve worked in other areas dealing with embedded systems and I see the problem as being more environment related and less related to my job description. When the acceptance criteria is ‘make it work’ you’ll see this behavior in the devs no matter what you’re doing.

  4. Daniel Lundin says:

    I don’t think this is a new trend. Lots of embedded programmers either come from electronics or from hosted systems programming (“PC”). Sadly, there aren’t that many who actually started out as embedded real-time system programmers. And so we have two very different sources of beginners in embedded programming:

    First there’s the electronics engineers who have a solid grasp of how hardware peripherals work. They usually have it rather easy to learn assembler and how C code translates to machine code. You don’t need to teach them binary and hex. At the same time they tend to struggle with concepts such as re-entrancy and multiprocessing, and they are notoriously bad at program design.

    Hosted system programmers starting in embedded are the exact opposite. They have no clue about hardware, timing, memory consumption, current consumption or how C code translates to machine code. They jam in floating point arithmetic, stdio.h, heap allocation or even C++ template meta programming inside the slowest hobbyist 8-bit core they can find in a packet of corn flakes. On the other hand they are usually good at structuring and designing the program, making programs that can actually be maintained and expanded in the future.

    It has been like this forever. IoT merely means we get even more of the PC programmer variety, just as we got through the Arduino hype. One positive thing is that the PC programmers tend to have better knowledge of internet security and encryption than embedded programmers, who are mostly clueless about such things.

  5. Daniel Daly says:

    Interesting article, Mike.

    Although I have no database/SQL experience, I’ve written code at virtually every level at various points in my career. I’m not sure that means I get to call myself a “full-stack developer”, but I’ve never worked at a level at which I didn’t become fluent. At some levels, I can comfortably call myself an expert.

    That said, your definition of “full-stack developer” sounds a little like “jack of all trades”. There’s nothing inherently wrong with that, but if I had to hang out a shingle saying either Full-Stack Developer or a master of some particular thing, I’ll go for the “master” title almost any day of the week, even if the level or technique or thing I master changes over time.

  6. Gopal says:

    I am glad that this trend is coming up. Finally the generalists will have their own place it seems. I have had my education in Electronics and worked in the analog electronics in starting phase of my career, then slowly moved on to digital, micro-controllers, assembly programming and then C for 8-bit to 32-bit MCUs.

    Fast forward to today and I can develop working Web apps (both Front-end and Back-end) using Javascript and frameworks based on it, HTML, Node.js and so. I am confident enough to use Python for various small routine tasks and some machine learning stuff as well. All the while I still feel at home with a soldering gun in hand.

    I was feeling a bit isolated in the world of specialists. Thanks for writing this article and boosting my confidence.

  7. Klaus Elk says:

    I think this is a natural evolution. Many embedded systems are small PC’s running Linux. Even though there might be an ARM CPU instead of an intel one inside, programmers can switch from desktop Linux to embedded Linux in many respects.

    Kids that in the “old days” would make their own HW, now start on a Raspberry Pi and get attracted to the stuff “underneath”.
    They will run into traps & pitfalls as many of us has done. The challenge is to speed up this learning, so that we get robust systems.

  8. This is interesting, as I see lots of jobs for full stack developers that don’t get into the embedded realm. At the same time, I’m a generalist who has spent most of my career in embedded systems and has an EE degree.

    While I am versatile and pride myself on being so, I know where my strong suits are, and it isn’t with Web technologies. However, I have been increasingly spending time learning many of these (more HTML, CSS, JavaScript, Python, Ruby and others) mainly so that I have them in my “back pocket”, so to speak. I don’t think I’ll ever pursue a job doing them or have the qualifications to get hired primarily for that, but it’s nice to have them because so many things have at least a Web interface to potentially utilize in some capacity, if not more.

    To the question about the challenges with things that are unique to embedded systems, this can be a concern. The main remedy, for lack of a better phrase, would be to have someone on the team who is at least well-schooled in the fundamentals (as a flat-out expert may not be easy to find and have on the team) to call on if needed. In some ways this becomes a management question, because how you put a team together is fundamentally something a manager has to consider.

  9. Ed M says:

    I todays job market, the demand is for .NET. The demand for embedded engineers is just not there compared to .NET. I also find in interesting that a entry level embedded engineers at now commanding a lower pay rate than a entry level .NET engineers. That has been my experience (boots on the ground) in the mid west. Of course the rock stars always make most in both areas. However, the non-rock stars, well, get use to the .NET engineer being valued more.

  10. Kishore says:

    Full stack Developers fortunately is becoming more needed when more abstraction layers , stack up one by one to extract more value from Hardware systems currently being done in software .Some examples known to me are converged systems, Cloud platform (IaaS,Paas etc ) management , Software defined Anything(SDx) . In one of my recent work life, I wore this hat for some period ,where I have to develop a management controller in a machine which doesn’t support any dedicated hardware controller for remote management ( eg. ipmi/bmc controller)and I had to do this in a very short time frame in software, From a C programmer expertise , I had to switch and learn Python,Swagger based API definition ,Restful API etc in a short duration( competition). The reason for giving this an example was to simply state that
    (1) FSDs have the opportunity to learn and practice a new skill at same time as part of work,as its part of their delivery , instead of learn first practice next to get the work complete ,as I used to do earlier
    (2) Skill acquired are very specific to the work ,not necessarily deep
    (3) Beyond all that, one need to a build developer,packager and automated unit tester too, depending on the complexity of the system involved.

  11. Dave says:

    Interesting. Literally never have come across a full stack developer job description that touched upon embedded systems design, but ok….

Leave a Reply to Phil Kasiecki