In this post, we shall discuss very important key points that you have to consider to become Professional level Embedded Engineer before you start to make it in your career.
Evolution is the key
In 21st century embedded systems are becoming more and more complex. To make use of embedded systems the required skillset of an embedded engineer is also getting more diverse. Embedded system is no more bounded under computer driven micro-controller programming. It is getting more about the application domain to solve challenges in certain circumstances.Today an embedded device like mobile phone can do more jobs than just calling – it can play FM radio, capture photo/video so on. The definition of embedded systems has been expanded It is perfect time to understand how the market demand and the culture are driving the skillset requirements of an embedded engineer.
The important thing to remember that whatever be the addition features, an embedded system will always be resource-constrained. The challenge will be always there to design systems with limited power, limited memory, limited input/output (I/O). Thus, embedded engineers always need to optimize what they are doing, unlike desktop engineers who can use more memory or more processing or I/O speed. If you also look around, there are many examples of pure embedded systems, and of larger systems built using multiple embedded sub-systems. In the part I of this article you came to know that what are the very basic point you need to take care about becoming embedded engineer. Lets understand more behavioral aspects of embedded engineers which are very important to become an embedded engineer in 21st century.
Practice, Practice, Practice
You don’t get to become an expert overnight. Without practice you won’t even become good unless you practice(We use practice it twice deliberately). However, you need to practice solving a multitude of domain problems.
Similarly, you cannot become a “good embedded systems engineer” without doing it. Whatever you
could learn just by reading about it, your lack of practical experience would be clear in an interview of a few minutes.I often interview people for technical jobs. When I ask candidates about specific kinds of problems and experience, the gap between those who have done what I am asking about vs. those who have merely studied it is readily apparent. Lets understand more what are the main key points you have to do get experience more as an embedded engineer.
Get a side project and get involved, gather experience
Join a local hackathon, maker space, fablab (the MIT initiative), meetup groups etc. You will have to access to knowledge, connections and people who can help you/drive your ambition. Just like Open source
projects are main source of knowledge of software engineers, in that also open source hardware-firmware drive are becoming very prominent source of inspiration for embedded engineers who are becoming. Someone said once, its better to fail with others than to fail alone; my take on this is… why not go try with others where you are more likely to succeed. To get going you need materials to start and motivations to get going.
“Modern embedded system has broadened over the networking and multimedia group extensively. So learning only basics will not be enough for you to be market fit embedded engineer.”
Buy a development board
It’s said that if a kid can take a thing apart and then put it back together such that, it still works, he will become an engineer. Embedded engineering is also like more about self learning through experimentation. To start self learning process, you need to buy a development board and play with it. Program it and get one LED to blink. Then program it to blink fast and slow.
Get a piece of display unit and interface it with this board. Try putting some smileys on it. Playing with
basic electronics will teach you lot about systems and engineering. Doing actual stuff is rally really important.
Now a days, the open source hardware concept has become very popular in the DIY community. Beagle board, Arduino and many such boards help you to create project altogether. Open source projects helps
us to see the how a small section of hardware works. It also helps to understand what happens if you change your embedded software code little bit, how does your hardware actually function or what happens if you change some hardware component in the behavior of the embedded system. Playing with this you will learn and understand the functionality of a lot of things.
Choosing the right set of projects is very important. The project you choose should be influenced by the application domain in which you want to become an expert.
Experience at least 3 generations of same product
Sounds weird!! The basic career plan of a software engineer, it is very common to see to change their jobs and companies in every two years. The main reasons are basically greener pastures on the other side. This becomes sometimes problematic to develop competency in embedded systems because it takes time of several years to develop mindset to write bullet-proof codes safety critical embedded systems.
One of my friend at Silicon Valley had once shared an interesting experience. When his company was trying to outsource some part of its development at India and some other Asian countries, they trained 4 engineers. But, they left as soon as they complete their training. So the US engineer is doing the same job as he cannot find someone here to stay in the job. It is like a mobile society. Though it may be difficult, but to really know the embedded systems, to really know safety critical systems like airplane or pacemakers, you need to be in the job for several years to gain expertise.
There is a weird belief in India and many other countries that if you don’t get promoted to manager or senior member in the organization in five years of career, you are not a good performer. But this mindset could not be correct way to gain effectiveness. Newer technologies are shortening the life cycle of embedded products to the market to stay in the competition.
The life cycle of an consumer embedded systems are got down below 2-3 years. Lets take an example that of Apple’s iPhone. You will not see anyone buying iPhone of the first generations or even second one while the fifth or sixth generations are already in the market. The designer or the embedded engineer should experience his work for at-least of three generations of the product line.
For the fields like defense , aeronautical engineering the no of years are longer because the life cycle of the products are longer than consumer electronics systems. So it is really product and consumer driven.
Be an all-rounder.
The embedded world is outside the desktop world. You cannot just press the on button and get the system ready. To get ready for an embedded systems the steps that to be followed are completely different. As an embedded engineer you need to be an all-rounder. You have to know much more than just writing the code. You have to understand the hardware, how it interacts with the environment, how to use controls, sensors and actuators, and how to integrate all together. Today’s education system will teach you either hardware in electrical engineering or software in computer science. Even the computer engineering courses do not cover embedded systems completely. You as an embedded engineer need have a broader set of educational qualification and mindset. Cross-functional curriculum for the embedded discipline tailored to embedded career will be. But most of this need to be done self driven as the current academic disciplines are not designed to do so.
Work on Multiple Projects
To become an embedded engineer the most important is hands on training. You need to take up as many projects as possible to gain expertise in your interested area. Multiple projects will give you varied experience, will help you to increase your analytical skills. However, choosing the right kind of projects are very important. The project you choose should be influenced by the application domain in which you want to become an expert.
When I analyze a resume if I see a list of projects like project in audio, project in power electronics, etc. I get an impression that the person has very little knowledge of the particular domain. It is like jack of all and master of none. The projects need to be similar nature or using similar components. If you become an expert in that, you certainly have the capability to pick up another domain effectively.
It is becoming important for the hiring managers to look into diversity as application domain is also becoming diversified. When they try to place someone in the networking job, they look for projects varied on that. Instead of hiring someone expert only in CISCO or SUN, they like to have someone who has exposure to most of the networking devices and protocols.This hiring practices are being followed in all over the industry these days for embedded systems.
Produce quality work
Embedded devices are getting deployed in more and more safety critical applications. I have a colleague who is an embedded engineer looked at the code written for an aerospace and his immediate reaction was that he would never fly in that airplane. This was because the quality of the code is very poor. Embedded systems in critical healthcare systems are also becoming very common. You can easily imagine that how disaster could happen if the software inside a pacemaker fails for a bad Null Pointer exception or Stack overflow Exception or the device took some few extra milliseconds to respond because it was busy to create a buffer. Death can happen.
So, you must understand how quality process is very very important for embedded systems development life cycle. Earlier there were few thousands lines of code and now a days it became millions lines of code. As embedded systems become more and more complex, the code sizes also increases, which is the biggest challenge in today’s embedded world. But whenever you take controlling a safety critical application, the quality of code becomes very important.
As, summing it all, Now is the greatest time to tap the opportunity for developing the skill set in embedded. You have to become all rounder considering the multi-facet structure of embedded world. But, apart from being “jack of all” you need to be “master of some(an expert in some domain)”!!!!