How to Start Your Career in System Programming

By Raghu Bharadwaj

If you are a fresher and are really looking for a personally and professionally satisfying career in embedded systems or system level programming then these are the exact skills that you need to get hold of

Skill guide for System/Embedded/Real Time Programmers

•Effectively programming using Data Structures

•Application of C for System programming purposes

•Complete understanding of any Operating System (Linux, most widely used here)

•OS customization skills, Device Drivers, Embedded Drivers

•OS building for target hardware

•Network programming

•C++ for Embedded and Real Time programming

•Understanding finer aspects of Real Time OS designs

•Programming for Multicore architectures

•Above all true passion for hard core programming

The above guide is purely indicative and is based on the current and expected future skill requirements. However these are the skills which are going to stay for a very long time. I call them “skills forever”. Most of these skills are age old and are proven effective time and again with minor modifications to meet moving requirements.

How to master these skills

Here I recommend three proven ways to master these skills

1. Self Learning

Go out and do it on your own, this is the mantra of self-learning, definitely, the most satisfying path of all the. With so much open information available self-learning is definitely recommended. A decade back may be it would have been ill advised, due to lack of information available through Internet, books and so on, but the current situation only augments the use of it.

Pros & Cons

This is indeed the most satisfying of all paths. Information is readily available and it is only left to you to explore and deduce the right information. Now students willing to walk this path should be very selective in choosing information as there are every possibility that he/she may end up with heavy unwanted or even misleading information and most importantly taking much of his time. To sum it up I would say that in this path the learning curve i.e. the time taken to learn is more compared to all other kinds of learning.

Sources for this style of learning are: internet, books, practical experimentation, technical forums, seminars and so on.

2. Mentoring/Professional Training Course

To put it in a single sentence, “Look for a mentor/trainer who can extend his expertise and help you build your skills in the smartest and shortest way”. Definitely the most widely preferred channel of learning and also the most confusing, thanks to the ever growing number of training organizations offering a wide variety of courses. I certainly am not against this trend but I would only like to caution students on being very selective while choosing these organizations for building their skills.

Let us look at some of the common training programs available for Embedded/System software development

There are a growing number of institutions offering specialized training courses on this domain. Most of these institutions offer a similar line of course contents with minor deviations. However most of them do talk about:

•Programming with C and Data Structures

•Programming with C++

•Linux/Unix Essentials

•Some part of Linux Drivers

•Micro-controllers and Programming them

•Embedded Systems Concepts


Now if you compare this with the above mentioned Skill guide, surely most of the training organizations need to drastically improve their contents to cater the exact skill requirements of the students and mind you most of these institutions are delivering these courses just at the knowledge gaining level. So be extremely selective in choosing your training courses. This is a highly recommended source of learning as there are plenty of options to choose from, obviously with a bit of scrutiny.

3. On Job Training

Definitely the most preferred method of learning. This gives the student a great opportunity to be in the company of experts and also in the most conducive learning environment. The student who enters this course would develop his/her skills in a way which is most desired by his/her employer. This could help in building both generic as well as specific skills. However there is a good chance of being very specific in the skills gained and this may hamper his overall generic outlook.

Now it’s your turn to choose

So the choices are open, rate your skills and choose any path or even try to come up with something of your own. Just remember that, our expertise can always be availed and we will be more than happy to help you.

Raghu Bharadwaj is a lead trainer in the area of Linux System Programming, including Linux Device Drivers, Kernel Programming, Embedded Linux, RTOS and Network Programming etc. To know more about his online and campus based training programs visit