7 ways to become a Full Stack Embedded Software Engineer
I discovered that the minimum average annual pay of embedded software engineer is around $95k and most companies prefers hiring a full stack embedded software engineer and that’s the main reason for writing this article.
A Full Stack embedded Software Engineer (System Architect) is someone who has full knowledge of hardware, software, firmware, PCB designs etc. A good embedded software engineer can develop hardware and all the source code that runs in the system, from board support package (BSP) to the user interface. In Hardware, it means having great knowledge electronics interfaces like SPI, I2C, GPIO, UART, CAN etc. Good working knowledge of communication protocols like Bluetooth, MQTT, WIFI etc. In software, it means being able to understand and master the programming language used in communicating with the hardware, Embedded Software can be written either with low level or high level programming language used for coding microcontrollers or microprocessors are Assembly language, C, C++ and Python. Embedded Software engineer should also be able to build computer based applications that can communicate with hardware devices.
I have been in embedded systems industry for about ten years and i will be sharing things to consider in order to become a full stack embedded software engineer.
- Passion: I started electronics in 2009 and I was 18 years old, I started by learning complete hardware designs, circuit interpretation and power electronics. I built advanced power inverters using just discrete circuits and ICs. I was only learning and doing it with passion and not because I want to make money from it. I wanted to know everything from everyone. I could remember building a digital display “Happy New Year 2011” using only 1N4148 diodes, 555 timers and 4017 counter IC, It was one of the happiest moment of my life. I didn’t know what an embedded system was until late 2011 but I was fulfilled learning just electronics. Passion is the driving force for acquiring knowledge.
2. Learn Everything: In those days, there were no much sensor modules like PIR motion sensor, Ultrasonic sensor, HC05 Bluetooth module, you will have to build everything you need from scratch, You have to build your own serial converter using MAX232 circuits and DB9 connectors because there are no breakout boards like we now have cheap and plenty ones today. Arduino and Raspberry Pi wasn’t that popular, embedded engineers prefer to develop from scratch using raw microcontroller and using a professional platform for programming. Even most engineers using the Mircochip PIC MCU still prefer using CCS and MikroElektronika IDE because of the availability of their libraries but I still prefer coding using the HiTech-C compiler on MPLAB IDE because i don’t want to depend on libraries. I learnt to program microcontrollers using Assembly language though it was complex but close to machine language and the knowledge really helped me in understanding various microcontroller architecture. To become a full stack embedded engineer, don’t depend on libraries at the early stage; instead learn how to create your own libraries.
3. Competition: In 2012, I was the youngest among the guys designing embedded devices in Nigeria, yet with that age limitation I was competing secretly with guys who have been in the industry years before me, trying to know more than them,and i realized that secretly competing with someone can also be a motivation to acquire more knowledge.
4. Take Risk: I could remember during the days of old SIM300 and SIM900, the GSM manufacturers expects the engineers or users to develop their own power supply, SIM sockets and filter circuitry for the module, i accepted to do some student’s project which involve me using GSM module for the first time but I took the risk not because of the money. I spent several weeks trying to write and test my code but all to no avail, internet wasn’t as rampant like this in those days. I was helpless and full of fears, it was really a wonderful experience but I finally got it right. Risk means learning in a hard way and knowledge acquired in a hard way empowers you.
5. Remain Updated: this is a very crucial way of becoming a full stack embedded engineer because technology is changing very fast; there are new sets of Integrated Development Environments (IDEs), new processors, new sensors etc. So you must always be online and follow the trends in the embedded industry. I know a lot of hardware experts in those days that are now far below because they failed to upgrade. Remain committed to continuous learning and new technology.
6. Read Books: One of the first mistakes I made in those days was to think that all embedded experts were born with the knowledge. The truth is, no one ever know something except they learn it. So what I do most is reading, I read books, datasheets, chip reference manuals, application notes and surf the internet. According to Massimo Banzi, Co-founder of Arduino, he said in a Ted talk that “you learn by looking at other people’s code”. I read and tried hundreds of other people’s code when I started embedded systems and it really built up my coding skills. Acquiring knowledge through reading takes about 35% of my daily life. If you want to know more, you must read more.
7. Build connections: According to Isaac Newton, he said, “I see farther than others because I was sitting on the shoulders of Giants”. I surrounded myself with giants who were there before me, being around them inspires me to know more than they know. Most of the top embedded engineers in Nigeria were people i grew up with in the industry. We share ideas together and we also compete too and now most of us are founders in various tech start-ups.
Haven listed some of the few things to do to become a full stack embedded software engineer, if you have any question, you can drop your comment below.