Slashdot Log In
Where Are Tomorrow's Embedded Developers?
Posted by
kdawson
on Tue Feb 12, 2008 04:31 PM
from the not-like-embedded-reporters dept.
from the not-like-embedded-reporters dept.
An anonymous reader writes "In a similar vein to the previous discussion about the New York professors taking Java to task for damaging Computer Science education, Mike Anderson of the PTR group wonders why it's so hard to find good embedded developers these days. 'As for today's CS programs, it seems that long gone are the computer architecture classes, writing code in assembly language (or even C at this point) and engineering software economics. In fact, a large number of CS majors apparently believe that everything can be implemented in a virtual machine and that both memory and [CPU] cycles are infinite.'"
Related Stories
[+]
Professors Slam Java As "Damaging" To Students 1267 comments
jfmiller call to our attention two professors emeritus of computer science at New York University who have penned an article titled Computer Science Education: Where Are the Software Engineers of Tomorrow? in which they berate their university, and others, for not teaching solid languages like C, C++, Lisp, and ADA. The submitter wonders whether any CS students or professors would care to respond. Quoting the article: "The resulting set of skills [from today's educational practices] is insufficient for today's software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals... Java programming courses did not prepare our students for the first course in systems, much less for more advanced ones. Students found it hard to write programs that did not have a graphic interface, had no feeling for the relationship between the source program and what the hardware would actually do, and (most damaging) did not understand the semantics of pointers at all, which made the use of C in systems programming very challenging."
Submission: Where Are Tomorrow's Embedded Developers? by Anonymous Coward
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
College Classes (Score:4, Insightful)
Re: (Score:2, Insightful)
here in Sweden it does not seem as there should be any bigger shortage of embedded developers than other types.
Still embedded development are a lot more fun than doing some ordinary desktop app, or even worse webapps
Re: (Score:3, Insightful)
And
Re: (Score:3, Insightful)
A starting language shall not be too unforgiving, and there is a small advantage with Java, and it is that it's very C-like. At least as long as you don't use a lot of built-in classes. If a student is limited to the "java.lang" package and isn't allowed to use anything else from the Java library it can actually provide a good learning base. But I assume that many teachers aren't into this... The really great disadvantage wit
Re:College Classes (Score:5, Insightful)
A number of my friends took the hardware capstone where you did even more of this type of work. It still goes on, perhaps you just aren't looking in the right place? It seems the CE and EE folks take more embedded classes than CS students, so that is where you should look. CS is a huge field, and not everyone is going to follow the story's author's preference of study.
Parent
Re:College Classes (Score:5, Insightful)
I haven't seen a speck of java (or even c++) in my ECE (Electrical & computer engineering) courses, but that's all I've used in my CS courses. Furthermore, I have a lot of friends in CS that know very little about what the actual computers are doing on a bitwise level. (I had to help one of them work on bit masking last weekend.)
If you're looking for embedded people don't look at CS, look at CE.
Parent
Re:College Classes (Score:5, Insightful)
Of course!
"a large number of CS majors apparently believe that [...] both memory and [CPU] cycles are infinite.'"
That's the difference between a computer ENGINEER and a computer SCIENTIST. After all, complete turing machines *do* have infinite memory and cpu cycles.
Parent
Re:College Classes (Score:5, Interesting)
Anderson's question might have been equivalent to "where are all the graphics programmers?" or "where are all the operating systems programmers?" but for one thing: this article presupposes a shortage to convince readers they need embedded skills, because PTR offers training in Linux embedded system programming [theptrgroup.com]. Frankly, the more important skill in embedded systems isn't pipeline stalls, but the Chinese language; most of the work has gone to where the embedded hardware is made: East Asia. Case in point: the only work this guy appears to get is defense contracting, where clients can't outsource / offshore the work.
Parent
Re: (Score:3, Interesting)
In addition, while I'd love to continue advancing my CS skills it has become obvious to me that the only way to make real money in our society is to get a degree of a fake science like economics/business in the form of an MBA. That way you can bullshit like a pro, cheat shareholders out of millions of dollars (maybe even billions!) and provide absolutely no value to anybody but yourself.
Well done America. We
Re: (Score:3, Insightful)
I've yet to meet a CS grad who properly understands the difference between TCP, UDP and IP. I haven't met one wh
Re:College Classes (Score:5, Insightful)
Parent
Re: (Score:3, Interesting)
I hear you, man. I am a recent graduate myself (UIUC), so I see this from the other side. Our program is pretty good compared to most things that I've heard on the net (and various people I've met from CMU/MIT/Standford/...), but a couple of t
Re:College Classes (Score:4, Interesting)
Parent
Used to, still could, but probably won't (Score:5, Insightful)
I think there are probably more than a few people out there that have the skills, but have been moved into other paths by market forces. They will come back if you pay them enough, but that is unlikely to happen, so they will probably stay where they are.
Re: (Score:2, Interesting)
Re: (Score:2, Insightful)
when comparing x86,PIC or (shudder) 8051 ASM to some more modern Python programming, I dont really want to go back anymore. Even though I maintain Python code with a curses GUI Yuck!
Last thing I worked on was a GPRS/GPS combo on an ARM device, which was quite fun.
Why such a long prelude? Well, I just cant find serious employment on the field of embedded devices in Eastern Europe. Most guys who need a developer are of the type with "A good Idea" and hiring a dumbass to do the work; you just cant feed a
There are not many Klingon programmers graduating (Score:5, Interesting)
The new graduates are uncomfortable with: "Klingon multitasking systems do not support "time-sharing". When a Klingon program wants to run, it challenges the scheduler in hand-to-hand combat and owns the machine." They have to use java, schedulers, vm protection, etc.
On a more serious note, to do real embedded programming you need to know data representation in and out because you tend to manipulate your data directly, no band-aids allowed. Until the embedded systems will support band-aids as used in todays college it will be a profession for the myopic geeks with grey pony-tails or the ones who are way on their way to well developed pattern boldness.
Wouldnt'cha know.. (Score:2)
My dad is an EE, and does embedded work for vehicle systems.
My granddad was an EE, and did the early work on embedded missile guidance systems. He was a ham operator also.
I'm also a ham operator, program in C fluently, and have a knack for getting electronics to do what it wasn't intended for.
I'm going for my EE at IUPUI. I'm also learning Japanese, and also working on my commercial FCC license.
My plan: there's a large amount of Japanese factories located here (Columbus, IN
Re: (Score:3, Insightful)
As it is, I'm looking at doing an English-teaching-in-Japan stint. I wholeheartedly agree with your sentiment.
Re:Wouldnt'cha know.. (Score:4, Insightful)
This is a hard lesson to learn in technical/engineering jobs: be extremely careful what job you first take, because it will go a long way in determining what you do for the rest of your career. Employers always pigeon-hole people based on their previous experience. So if your last job was a
Parent
I've Heard of That Machine! (Score:5, Funny)
Good for them; Alan Turing believed it too.
Re:I've Heard of That Machine! (Score:5, Funny)
Parent
Eh. (Score:5, Insightful)
There's not really time in a 4 year degree (well, along with all the other crap that goes into it) to teach someone the kinds of things you need to know to be a good business application developer and to teach someone the kinds of things you need to know to be a good embedded applications developer.
A good embedded developer needs experience with languages that run "close to the metal" of the machine, needs to know how to manage memory, needs to know how the machine architecture works, needs to know how to perform optimizations within that world, etc.
A good business applications developer needs experience with languages that abstract or hide a lot of the above details in order to let them focus on business logic, needs to know a decent amount about databases, needs to know about software architecture and design patterns, needs to know about networking, generally needs to know something about UI design, etc.
Yes, there's some overlap.
Speaking as someone with a college education emphasizing the former and a career emphasizing the latter, I'm not convinced this is a terrible thing. There are a lot more business style applications that need writing in the world than embedded applications. That specialization and the need for it I don't see going away any time soon, but it's the exception rather than the rule, and I'm not convinced there's something holier about understanding the guts of the machine than in understanding how to design a complex system for extensibility, maintainability, high availability, or whatever best suits the project.
The problem isn't virtual machines (Score:5, Insightful)
Re: (Score:2)
You build C programs to handle real data crunching, and bash scripts for data-passing. One has all of this running in console, and have a console hooked to a X program which simply passes GUI data. One can change the GUI without touching the engine, and likewise.
Unlike Windows, where one doesn't know exactly what the system is doing, hence we require trials and testing. In Linux, we know what does what,
Re: (Score:2)
Qt4 is nice but seems overkill for a lot of embedded systems. I'd pick Turbo Vision [sf.net] instead. Runs on Linux console, X11, ncurses, Windows, and DOS.
how many embedded developers are needed? (Score:4, Insightful)
The relevant question is, how many embedded-system hackers are needed? If only .1% of job opportunities are for embedded-system hackers, then there really isn't much incentive for people to learn to hack embedded systems. If embedded hacking is a lucrative field with attractive opportunities, then hackers will follow. We saw it happen with other forms of hacking, we even saw it happen with web-page hacking. If there is a need for embedded hackers, it will be filled (guided by Adam Smith's Invisible Hand).
Re: (Score:3, Insightful)
*Raises hand* (Score:2, Informative)
Even though the majority of the CS classes at my university are Java-based, there're still required architecture classes that use assembly and C, along with several EE courses. Just because many colleges ar
From EE, not CS? (Score:2, Insightful)
Re: (Score:3, Informative)
All together, that's what an EE is. If it's not on fire, we can program it
I've had enough of java (Score:2)
I'd love to get my teeth into something embedded. But what? Can anyone recommend a fun device to play with?
Re: (Score:2)
Where? (Score:2)
Its not gone "enough" (Score:2)
And IMO, they still teach these TOO MUCH. From my personal survey (probably meaningless, but I need a point of reference), they still teach that quite a heck of a lot in schools. The demand for people in these fields is significant, but still quite low. It is a LOT easier to find someone who knows how to c
Programming today's desktops? (Score:3, Insightful)
Perhaps tomorrow's embedded developers are programming today's desktops.
The desktop machine I learned to program on was an Acorn RiscPC. Later in life, I helped write the embedded firmware in the Rio Karma portable MP3 player. Rio Karma had two 90MHz ARM CPUs, 16Mbytes of RAM, and 20Gbytes of disk. That would have been one kick-ass RiscPC. If anything, programming and optimisation techniques learned on late-80s and early-90s desktops are too "embedded" for a lot of today's embedded programming.
And to those advocating hiring EE graduates for embedded programming: unless your device isn't far north of a toaster on the embeddedness scale, please also hire people with broader or higher-level software expertise for system design and architecture. It's not the same skill as squeezing one more instruction out of a loop, you find people with one skill and not the other, and any medium- or large-scale software project needs both skills (whether in the same person, or through good collaboration).
People go on about the spectrum of computing, software/assembler/logic/gates/transistors; what some don't realise is that there's a spectrum even within software. Some really good, tight, expert coders just can't see the bigger picture. I've seen medium-scale software architected by the toaster contingent: it wasn't pretty.
Peter
Re: (Score:3, Insightful)
Amen!
I more or less drifted into embedded systems work from a desktop/server background. I frequently point out to people that there's a lot of confusion about what an "embedded" system is. Some people use the term to refer to 8-bit mircocontrollers that have a whopping 4K of memory and no persistent storage. Others use the term to refer to 32-bit devices with 2-4 MB of memory and 256 MB of flash for storage. There's yet another
Where - The interweb (Score:2)
Entry Level Positions? (Score:2)
The problem was that any job pretty much wanted several years of experience, and greatly preferred a EE or Comp E degree. I had a CS degree and no formal experience in embedded. Any experience I had was through my classes, as my personal projects tended to focus in other areas.
Not
Where are the jobs? (Score:5, Informative)
I hunted around looking for any assembly/vhdl/c job I could find and only found one which didn't require 2 years expearence, they didn't get any message back to me until 2 months after I'd applied. I applied to roughly 35 "entry level" jobs dealing with embedded devices. None were interested because I lacked two years expearence. In the time it took the only one to get back to me I'd been contacted by a C++/Java company had a phone interview went up and been personnally interviewed and been offered the job.
The real kicker is the embedded jobs paid less, didn't mention any benifits and wanted more work out of me. I think the real issue is most companies aren't willing to invest in graduates unless its for business positions. It is difficult to get 2 years expearence when everyone demands 2 years for their entry level jobs. Which leads to a shortage since no one gets offered a embedded job so Universitys don't bother going into too much detail since 99% of their students will never use it.
The industry killed the golden goose. (Score:5, Insightful)
So if it doesn't have any now, then it really can't look elsewhere to blame anyone.
I started out as a R&D engineer working with video game technology, but essentially, it was all embedded work... I lived and breathed machine code and logic - to me software and hardware were one in the same, a symphony of technology with blurred distinction between the two. I remember sitting down with six spare GAL16v8s and a couple of low-power walkie talkies and a spare afternoon and built myself a radio modem for fun. That was the sort of work I used to do.
But there weren't many people like me - Assembly programmers were hard to find, even back in the 80s and most engineers fresh out of university just didn't know how to write real-time code in assembly language properly - didn't know how to write fault-tolerant code or build a spinlock as the starting point for your application. Didn't understand the necessity of understanding how many cycles an instruction took or how to watch for errors by measuring the duty cycle of the interrupt pin with a logic probe.
So the people who employed hardware designers (back then, if you knew machine code, you usually had a hand in the design of the system as well) found that it was difficult to get replacement engineers. As a result, they couldn't employ similar salary replacements and as old engineers got tired of being mistreated and poorly paid, they simply left and went off to do something different.
Industry responded to the lack of engineering by eliminating the need for the machine code engineers - they moved away from the embedded design with assembly to embedded design with C or even to outsourcing the product they needed, and the hardware got designed by dedicated hardware engineers.
Once again, any real skill in the area was lost as employers wouldn't pay for experience and the best engineers realised they would never be paid what they were worth, so left to do something else.
Then the industry got around this constraint by using really powerful embedded devices - basically a complete PC ready to run whatever PC programmers could write for it.
That's where we're at now. The skills left the industry because the industry wouldn't pay what they were worth... If you can make more money at another job (in my case at the time, selling PCs and Journalism) then why would you keep on developing hardware for a company that doesn't want to pay what you're worth?
I'm seeing the same thing now in Network Analysis... The world is full of network technicians (and I include many people who consider themselves engineers in that description, but don't really know how to actually measure things or understand the technology they work on) but has very few network engineers.
The solution for me? I got smart and moved to management.
I'm a lousy manager ( really, I suck at it ) but I try hard and for once, my contribution is recognised by the company I work for financially... And I have a family to look after.
Would I even go back to engineering or even embedded engineering?
I would love to go back, I really would. I can sit in front of circuits all day and build something and I enjoy every second of it, but I can't afford to do company critical work that won't feed my family or pay my bills.
So unless the industry is prepared to pay for skilled people, and by pay I mean pay them more than they would get being a manager or an accountant or even a journalist, then they will leave.
The other embedded engineers I know all did the same thing... One works on an offshore oilrig, another as a miner, one went to a call centre. One even opened a grocery business. These are all smart people and although they all miss working with electronics and embedded designs, they have families to feed too.
GrpA.
Looking at the wrong major... (Score:3, Interesting)
My company understood this ten years ago. I'm a EE major with a computer "concentration", which is typical of who we were hiring back then for programming work; we hired very few pure CS majors at the time.
When I started, we made home-grown OSes (or lived without them!) and had to really try for efficiency. Now, with modern processing power, we run Linux or an off-the-shelf RTOS, and program applications in much the same way as a PC programmer. Aside from interfacing with the peripheral hardware, we don't do much that's uniquely "embedded" anymore, and efficiency only really matters in a few specific areas. So now we can hire CS majors to do most kinds of work.
What truly time/space crunched design we do have mostly occurs in the specialty FPGAs, which are still largely the domain of EEs.
OMG, so true ... (Score:3, Interesting)
Not an embedded system, per se (more like a "headless system"), but I was involved in a project where certain aspects of the design (aspects that I had no input into) more or less assumed infinite memory and CPU.
The design itself on paper was beautiful: symmetric, orthogonal, intuitive, complete.
But when implemented, the design SUCKED because it ran like molasses on a cold day. Everything that could be done to increase its performance was tried, and in the end its performance still sucked. The whole thing had to be re-designed, and rebuilt from scratch. The original designers (C.S. degrees, of course) howled about "engineering hacks" the whole time.
The final design was uglier on paper, but it ran several orders of magnitude faster than the original.
Re: (Score:2)
Re: (Score:2)
Not long ago "computer science" didn't even exist: it was all taught in math departments. Once it became quite clear that most developer types can't handle vector calculus that changed.
Yet I wonder - what is computer science without the ability to actually program the computer? Discrete math, algorithms, and some theory. Interesting, but (not quite) useless.
Re: (Score:3, Funny)
Re: (Score:3, Insightful)
Re: (Score:2)
It seemed to me that a lot of the "computer engineering" degrees were mostly for IT people. Admittedly this come from back in the 90s when there were only a few departments with this name. Has this changed?
I felt like my Computer Science degree (which was the only game in town back when I was in school) gave me a pretty good background for the working world. Admittedly I also took some electives that focused on digital electronics (including building a computer from chips and then programming it) and we
Re: (Score:3, Informative)
Re: (Score:3, Interesting)
Let me give you a simple example; programming an interrupt service routine is probably one of the most difficult things to do the Right Way(TM). When things get smaller, it gets harder. That is where the experience kicks in and you "see" how