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.

I have graduated this year and got my first job involved with C programming, Linux administration and embedded systems development. I feel quite content with my job, but I'm afraid I won't become a successful programmer in this field. I'm a lone developer on my job now, with my teammates being hardware experts, there is no one to guide me or teach me in the ways of embedded programming, I have to study all on my own.

So here are my questions. Is it possible to become a good embedded systems developer starting from an entry level position without any supervision by senior programmers? How could I become one (perhaps with the help of forums, IRC channels, good textbooks)? How long would it take?

UPDATE: So far, I have received a handful of helpful answers, but I realized that I need some specific pointers on the subject.

So, here are my particular questions:

  1. What are some good textbooks one can use to learn embedded development?
  2. What specialized online communities can be helpful for an aspiring embedded developer (not counting general stuff like Stack Overflow, Reddit and so on)?
  3. What are the most interesting blogs dedicated to embedded development?
share|improve this question

closed as not constructive by Thomas Owens Aug 23 '12 at 19:08

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

4 Answers 4

You are right that being in your case will make things little bit harder. However there are many solutions to solve your issue.

  1. First try to participate to communities like this one, but maybe more specialized in your field. By participating, you will increase your knowledge, and more importantly, meet other people.

  2. Try to participate to code camps, or any initiative where you meet other developers like you in real. It's easier to share knowledge when you have the person in front of you.

  3. Ask your boss to book you at least 10 days of training a year. No need to explain the advantages here, if he refuses, he is stupid.

  4. Try to go to 1 to 2 conference or trade show related to your business.

  5. Try to read a technical book every two months. If you can read more, don't hesitate.

  6. Get a mentor. It's not the easiest thing to achieve of course.

  7. Reserve some time in the week to experiment and do research & development, by trying new technologies of things you read in your books, community, trade shows, trainings, etc... Taking the time to practice what you have learn is VERY important.

  8. Today you are the only developer, but thanks to your hard work, the company you are in will grow, and will probably need to hire more people of your kind.

share|improve this answer

I'm a lone developer on my job now, with my teammates being hardware experts

Don't hesitate to use them as a resource. One of the hardest things for embedded programmers who are not EE's is getting comfortable with the hardware. It is very useful to be able to read a schematic (even if you can't design one), and understand how to use an scope to look at signals coming out of the microcontroller.

share|improve this answer

It has been a while since you asked this question, so I hope you are well on your way. Here are a few additional suggestions that I hope will help.

Stack Exchange and Blogs

Amazingly enough, Stack Exchange does not have its own Q & A site for Embedded systems. One was proposed about two years ago, but it is still in the commitment phase, languishing without enough people signing up to support it. If you want to make a difference, go here:

http://area51.stackexchange.com/proposals/15961/embedded-system-design-and-development

Read the proposal and if you agree, click commit to get involved.

Linked In also has an Embedded Systems group, plus a couple closely related groups that may be of interest:

Embedded Systems

Firmware

ARM

Web Resources

EETimes has features about embedded systems.

http://www.eetimes.com/design/embedded

Dr. Dobbs is a long time friend to programmers of all types and has great stuff on embedded.

http://www.drdobbs.com/embedded-systems

The Arduino community is large, enthusiastic, and has removed many barriers to entry for embedded programming including price and prior training.

http://www.arduino.cc/

If you are a female software developer or an unenlightened male developer who things embedded systems is mainly a "Good-Old-Boys" club, check out this site. The author is an MIT graduate, had done edgy, out of the box (or sometimes in the box stuff, like her Altoids-box iPhone charger), and seems to be very prolific in her designing, writing, and video blogging.

http://www.youtube.com/watch?v=QkmtHqsYCbw&feature=player_embedded#!

http://www.adafruit.com/tutorials

Many vendors will have extensive collections of data sheets, application notes, white papers, and free or evaluation copies of development tools. Top companies in this space include ARM, Atmel, Freescale, intel, Microchip Technologies, NXP (formerly Phillips), TI, and many others.

Books

Not sure if you can find it, but I have a book I think tells a lot of the story for embedded systems in terms to tools (assemblers, linkers, loaders) and fundamental things that happen in microprocessors (interrupts, I/O, simple task managers and schedulers, simple file structures). Systems Programming for Small Computers, Daniel Marcellus.

A more modern reference is Embedded Linux Primer. Early chapters discuss the rationale behind running Linux on embedded systems and some of the mechanics involved. Chapter 3 has a nice discussion of processors + support chipsets and SOC (System On a Chip) options that can be considered for use in current designs. Actually, the target is moving, so it gives a starting point that is contemporary with the publication of the book. Chapter 3 is great, but should be supplemented with some further research on the web and in discussion with vendors. Typically, the electrical engineer and lead software engineers on the project will pick the processor, so if you are in a company and learning embedded systems, do your deep dive on the hardware they pick.

Later chapters include extensive descriptions about many practical aspects of targeting Linux to hardware, but partnership with the vendor and use of a pretty standard reference design might reduce the effort significantly.

share|improve this answer

It mostly depends on yourself. If you are willing to learn and know how gather enough information on the subject you can teach yourself anything. But not all people are equally succesfull in doing that:

I started in a similar environment, and if I see where I am now as opposed to 5 years ago (graduated as electronics engineer, practically no programming background), I find it amazing what the human brain is capable of. When I started I had never heard of design patterns, TDD, ... and had never seen the code of a real program. Now I know these things pretty well, and know how to use them. The only thing I do is searching the net, reading code from others and some books (which again, I found on the net), and most important, write tons of code, debug, learn from my mistakes. Learning from a mistake is imo a much much better way to learn something as opposed to just reading a sample and replicating behaviour. It's very strange, but I have only talked in real life to what I'd call a good programmer a couple of times.

The only other programmer here is what you'd call a senior (because he's been on the job for 15+ years). He works in a completely different way than I do. And he's still writing a crippled form of C with classes, never uses STL, has no idea what a design pattern is etc etc (I'm probably going to start a question on this matter soon, I'm having a hard time trying to get him to adopt at least some of my methods..)

share|improve this answer
    
-1 For a possibly well meaning, but clue-less "If you are intelligent enough..." opening. Please, let's never question anyone's intelligence, particularly if there is no apparent evidence. I don't think your goal was to be unfriendly, but to Olga, it might have seemed that way. She appears to have posted this one question, and then to not have done anything further on Stack Exchange. –  DeveloperDon Aug 23 '12 at 19:19
    
@DeveloperDon my goal was indeed not to be unfriendly but you are right, when I read the sentence now it sounds like I'm sitting on a tower being all superior. A shamefull thing, so I removed it. –  stijn Aug 24 '12 at 9:02

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