Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

In the past I have done a lot of Java and Python coding. Mostly, I worked on web apps and some simple console or gui apps. I also have a formal education in computer science.

What route should I take to become a systems developer? I always did like C++, but never had a chance to use it for anything. Would mastering C++ be one of the steps? If so what resources can you suggest?

Also, I would like to know how much different is the work between plain old development and systems development. There seem to be a lot of overlapping between the two.


migration rejected from stackoverflow.com Apr 19 '14 at 23:05

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by gnat, Bart van Ingen Schenau, MichaelT, World Engineer Apr 19 '14 at 23:05

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, Bart van Ingen Schenau, MichaelT, World Engineer
If this question can be reworded to fit the rules in the help center, please edit the question.

3 Answers 3

When you say "systems developer", I assume you mean the guy who designs/develops/tests the whole system - which is more than just the code written for it. Generally someone who follows a process like this:


or something like it.

And I'm assuming you don't mean "system administrator" which is quite different.

I made that transition - Software Engineer to Systems Engineer - quite by accident. I was looking for a job, a systems job was available, they were willing to hire me...

But I'd say the skill set you need to show to get the job and move ahead is markedly different from software work. Namely:

  • Systems engineers have to think big. Give up on specializing on a particular language or on coding at all, start learning about how the system you are currently developing software for fits into the bigger world. How do users use it? How is it installed/updated? Where's the business headed? What hardware does it use? What are it's limitations?

  • Systems engineers have to be a jack of all trades. So learn a broad smattering of technologies in your business domain, with special focus on how pieces integrated. Also, learn how to learn quickly.

  • Improve your writing and presentation skills - systems engineers are relied upon to explain the big picture to other people, if they can't do that consistently and concisely, they can't be good their jobs. You need to master both written and verbal communication.

  • Get a grip on all parts of the process - from the moment the customer develops a desire to the point when the customer is done with the system or a part of the system and retires it.

Systems engineers are often seen as the customer's representatives for understanding the problem domain in technical ways that the customer may not be able to grasp. They should be able to help parse this stuff and render it into useful information for software engineers.

For the most part, I expect that anyone who has "systems" in their title has moved pretty far away from any coding language. They may be able to code, but they are by no means hot shots.

I think he means System programming as in Operating Systems, drivers, firmware etc. –  aml90 Apr 28 '14 at 19:42

In my experience, most of the system adminstration tasks were resolved using a scripting language, such as Perl or the bash shell. More complex or platform specifics were coded in C, C++ or Java.

You don't need to master a language in order to be a system developer. Mastery is something earned along the way.


In Systems Programming, languages like Assembly and C were very common, but now a days C++ is being used. You can also use Java ME for embedded software development. A few years ago I had studied about a program that Sun Microsystems had which was used for Satellite Systems. I think Python will also be useful to you, if you are using Linux. Many of the common tasks are being implemented in Python nowadays. So go ahead with Python, Java and C++; and learn them in depth.


Not the answer you're looking for? Browse other questions tagged or ask your own question.