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 know that it is possible to get into software development without a degree in computer science, but is it possible (or rather, common) to be able to get an embedded programming job without the computer science degree (or any engineering degree as well)?

share|improve this question

closed as off-topic by gnat, MichaelT, Jim G., GlenH7, Robert Harvey Jul 7 at 20:48

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, MichaelT, Jim G., GlenH7, Robert Harvey
If this question can be reworded to fit the rules in the help center, please edit the question.

    
How are you defining 'embedded programming'? Do you include apps for iPad and Android in your definition? –  oosterwal Jan 31 '11 at 15:00
    
@oosterwal - I wasn't including iPad/Android in my definition, although I guess that it would fit the overall definition. Although, I'm really not interested in iPad/iPhone/Android app development although I would be interested in the operating system development for those devices. –  Jetti Jan 31 '11 at 15:33
    
CMU's Software Engineering degree with focus on Embedded system could be a good fit for your requirement. It is a good program for Electrical engineers transitioning to Embedded systems. They have specific courses that help in this transfer. CMU has a good reputation in Software Engineering and can get you some good job interviews. mse.isri.cmu.edu/software-engineering/web1-Programs/MSIT-ESE –  phcd Oct 21 '11 at 16:08
    
Yes, it is possible. –  busy_wait Jul 5 at 7:23

7 Answers 7

up vote 13 down vote accepted

Dijkstra once said "computer science is no more about computers than astronomy is about telescopes." You don't need a degree to program, though it helps to know how to use the instruments necessary for programming. Assuming you can, I see no reason why you shouldn't be able to.

However you'd need to get your foot in the door, and if you can't do that with a degree, you're going to have to be able to demonstrate it instead. My advice to you is create an impressive demo of some sort.

share|improve this answer
3  
+1 for creating an impressive demo. A degree says you spent a handful of years doing projects. Good or bad you did work for a few years and got your feet wet. Without the degree on your resume you need concrete evidence you know what you are doing. –  Chris Nov 10 '10 at 15:56
2  
Also, any chump can learn php, css, javascript but it takes a certain individual to learn low level stuff which a computer science degree usually at least says you have experience with. –  Chris Nov 10 '10 at 15:57
    
@Neil - the demo is a good idea. Thanks! –  Jetti Nov 10 '10 at 16:06
2  
Astronomers require good knowledge of math for many things. Think Kepler fixing the "earth-is-center-of-universe"-bug –  user1249 Nov 10 '10 at 17:26
    
Granted, not suggesting you don't learn anything from a degree, however he wasn't asking if he was capable of programming without a degree, but rather if he could be hired without one. It's not inconceivable that a person can learn how to program without a degree, is it? :) –  Neil Nov 11 '10 at 10:29

Some background in electronics (or at least a desire to get into it) is pretty much needed to be successful in embedded programming. I've been doing this for 30+ years, and did the formal way (BSEE + MSCS), but I've run across a lot of good self-taught embedded programmers along the way. They all had one thing in common though -- somewhere in their background they had some electronics education (formal or otherwise).

You're going to be doing a lot of bit twiddling and working with lots of low-level I/O registers, with so-called datasheets that might run several hundred pages, like this one (so if that document doesn't look interesting, forget about embedded programming). You'll be using lots of serial busses like UART, SPI, I2C, and USB. Eight and 16-bit timers. Lots of interrupts.

You don't have to be able to design a circuit, but it's best if you learn to read a schematic since you will probably be probing a circuit board with an oscilloscope or logic analyzer.

Assuming you're working with medium-sized devices, that might have only 32K to 256K of program memory, and 4K-16K of RAM, you'll probably be doing most of your programming in C -- but C with proprietary extensions (different for each chip), because most of these processors are Harvard architecture and have separate address spaces for fast RAM, extended RAM, and code space and pointers can get really complicated.

(I consider small micros to be ones with just a few K of program memory and a few hundred bytes of RAM. Those are still mostly programmed in assembly. Then there are larger microprocessors that can run Linux and have MB of flash and RAM, but that's not really where main-stream embedded programming is either.)

share|improve this answer
    
Thanks, this was very helpful! –  Jetti Nov 10 '10 at 18:48
2  
I've been doing embedded design/programming for 12 years. This is pretty much exactly how I would answer the question as well. I will point out that there are embedded coders who just put out basic C or C++ code for the job, and then there are designers who work on the algorithms, architecture of the software, and interface/setup more complex hardware. Those areas may require a lot more work and study for someone new to some of the concepts. All that said, I've met great and terrible embedded programmers, some with a formal education, and some not. –  MattG Oct 21 '11 at 16:50
    
It requires a vocational mindset, a willingness to dig into the details, whether it happens in a vocational school or in an accredited university. –  rwong Jul 5 at 15:09

As noted by Neil, in a lot of cases, a Bachelors degree in computer science is going to be more about getting your foot in the door with an entry level job than anything else. Likewise, it is also one of the check boxes that HR departments are going to be looking at when they are filtering applications and at some companies, the degree is mandatory for the given job, but they usually aren't software companies.

In terms of getting your foot in the door without a degree, some sort of proof that you know what you are doing is going to be needed so it might be a good idea to look around to see if there is some sort of class that you can take on the subject. This would give you some formal training that you can list on your resume and would also give you a chance to interact with people that know the subject so they can point out some things that might take you longer to come across on your own. Also, you might want to look into user groups that are in your area and start attending meetings so. The networking opportunities that such meeting get your name out there if you get a chance to do a demo at one of the meetings.

share|improve this answer
    
+1 for the networking. –  Neil Nov 10 '10 at 15:55

A degree isn't needed for any programming job but it certainly helps get you through the door.

I'm guessing that there may be ways to work your way up within a company or ways to get a role based on stuff you've done in your spare time but I'd imagine that 95% of people in IT in all areas have degrees. Maybe not Comp Sci degrees (I don't - mine is electronic engineering and I've worked with historians who were good coders), but degrees in something.

But if for one reason or another you don't want to or can't go to university there will be alternatives, you just need to work out what they are.

share|improve this answer
    
Thank Jon! I do have a degree, however it is in Economics. In my area there aren't many part-time/evening Universities that offer Computer Science (that are reputable) so that's why I'm wondering if I would be able to do without the degree. –  Jetti Nov 10 '10 at 16:04
    
@Jetti - I'm a development manager and I happily recruit non-CS graduates. I'd spend my evenings messing around with technology and then apply to an open minded employer who will see you for more than what you decided to study when you were 18. –  Jon Hopkins Nov 10 '10 at 16:06
    
there's no way its 95% of all IT people with degrees, you are using way too broad a brush –  programmx10 Oct 22 '11 at 5:22

For low-level programming, you need to know some electronics and circuits, and some of the math behind it. Not a ton per se, but enough.

A degree is always nice.

share|improve this answer

I started my career back in 2006 as software developer, I worked in many companies during 2006 to 2011 but believe me nobody asked me about my qualifications (degree). The interviewed just asking the field related questions nothing about degree.

share|improve this answer
    
What kinds of things were you working on? Was it low level or was it web apps? –  Jetti Jun 14 '11 at 23:16
    
front end engineer(Archetic) since last 4 years. –  pir abdul wakeel Jun 15 '11 at 4:46
    
Although i am well qualified.(Master Of computer science) but no body asked me about degree. that may not be the case in your country. –  pir abdul wakeel Jun 15 '11 at 4:47
1  
me too, actually I've never been asked about a degree in an interview (or formal schooling really), recruiters ask about it sometimes but if you can get to the interview, with real tech people, it seems they generally don't care and mainly care about what you did last –  programmx10 Oct 22 '11 at 5:23
    
@jetti congrats if you could get your job like this. in my geographical area (Europe) the recruiting process is broken big time. Companies almost invariably have installed massive, in fact the big-data kind of key-word filtering, or next have your CV tossed out by a HR person without knowledge about the field she is hiring for. Once you get to be asked field related questions you may find the job is not really what you were looking for. It's just sad. –  miraculixx Jul 5 at 8:07

As a hiring manager for various companies whose core products include embedded system, I can say that I would simply not hire anyone who did not have a degree in either CS or EE from an accredited institution. The degree shows that the person is committed to a deep understanding of their field and will not simply blunder through problems.

I have, on multiple occasions, taken over groups in which a mix of degreed and non-degreed engineers were on the team... My observation is that, by far, the non-degreed engineers were lightweights and were suitable only for certain grunt-work types of programming where they couldn't do any real damage. The architectures and real thinking had to be done by the guy with degrees.

It makes sense too, when you think about it... the original poster of this thread is essentially saying "I want bypass the learning curve and just jump to front of the line". I'm not saying it is impossible, but when you finally land that embedded job you've been seeking you might be surprised at all the things you find you don't know.

share|improve this answer
    
I would disagree about most of the things you said. In fact, I would prefer to hire based on past job performance, demonstrated ability to come up with good solutions to complex problems, and eagerness and ability to learn new things. No formal degree is going to show you that, so simply dismissing anyone without a degree is just bad practice. –  miraculixx Jul 5 at 7:58

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