Slashdot Mirror


Where Are Tomorrow's Embedded Developers?

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.'"

245 comments

  1. College Classes by kmsigel · · Score: 4, Insightful

    I'm in my late 30s and have been doing embedded development since college. Back then we built finite state machines in PALs and complete embedded systems using microsequencers and UV eraseable ROMs. We both built (hand wired) and programmed the systems from scratch. Doing that gives you a very good appreciation for what's going on. That kind of stuff just isn't done much anymore in college. From what I can see, there aren't many good embedded programmers more than a few years younger than me. It looks like good embedded programmers (whatever their age) will be in demand and well paid for many years to come. :)

    1. Re:College Classes by jim.hansson · · Score: 2, Insightful

      I wonder is this a problem in USA only or is the trend spreading to other countries?
      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

      --
      preview button, my computer does't have any preview button
    2. Re:College Classes by yada21 · · Score: 1

      It looks like good embedded programmers (whatever their age) will be in demand and well paid for many years to come.
      Then good luck to them - realy I mean that. So to the question of where they'll come from, they'll come from wherever they're available at the best price. I mean, economic's 101?
      --
      I will have a sig when the market demands it.
    3. Re:College Classes by adpowers · · Score: 4, Insightful

      Really? Cause I seem to remember creating FSMs using PALs just last year in my undergraduate CS program (in a required 300 level class). We also had a class where we put together a microprocessor, put it on an FPGA, and wrote low level code to run on it.

      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.

    4. Re:College Classes by secondstory756 · · Score: 5, Insightful
      I have to agree. I'm a computer engineer at the University of Illinois. It's the computer engineers that are doing the lower level development. I've had extensive systems programming (in assembly and c) and every CE here makes both an OS and a 16-bit processor. CS students don't see that stuff unless they elect to take it.


      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.

    5. Re:College Classes by kmsigel · · Score: 1

      >Really? Cause I seem to remember creating FSMs using PALs just last
      >year in my undergraduate CS program (in a required 300 level class).
      >We also had a class where we put together a microprocessor, put it
      >on an FPGA, and wrote low level code to run on it.

      That's very good to hear.

    6. Re:College Classes by AKAImBatman · · Score: 1

      I haven't seen a speck of java (or even c++) in my ECE (Electrical & computer engineering) courses

      You mean they stopped using JHDL as a teaching tool? That's too bad.... :-P
    7. Re:College Classes by agoliveira · · Score: 1

      I'm about the same position as you are, late 30s and done about the same but I didn't do it on CE classes but in EE. At that time, at least here in Brazil, CE was very incipient most of the work was done in mainframes and the embedded software was created by electronics engineers doing microprocessor programming.
      Well, I still do embedded for a living, right now for Canonical and I have to agree that's damn hard find good embedded developpers.

      --
      Scientia est Potentia
    8. Re:College Classes by solar_blitz · · Score: 1

      Santa Clara University requires all CS majors to take the introductory course to Embedded Systems as well as the Operating Systems course offered by the Computer Engineering department (I was a CS major and graduated a couple years ago). We also had to take an introductory course into Logic Design from the Electronic Engineering department as well. The philosophy behind this, as explained by my faculty adviser was that Computer Scientists should at least have some background in lower-leveled programming. Computer Engineers, on the other hand, had to take the advanced courses in those fields as well. Most of the programming we did in either the Computer Science or Computer Engineering courses were done using Linux or Minix, too. If we worked on Windows machines we were either using a VLSI program, Dev-cpp or MATLAB. And they also have the Business software covered in the Operation & Management Information Systems degree - you learn all the business software and a little bit of programming, but everything else has to do with business, marketing and accounting. It isn't as advanced as the CS and CE departments, though - one class, for instance, focuses on data input and management in Microsoft Excel (you can imagine how CS/CE ppl react to hearing this).

      So I totally agree with you secondstory - look for Embedded programmers with Computer Engineering backgrounds. Never hire someone whose experience is with proprietary software like Visual Basic or Oracle's stuff.

    9. Re:College Classes by turbidostato · · Score: 5, Insightful

      "It's the computer engineers that are doing the lower level development."

      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. /me fastly ducks away

    10. Re:College Classes by thegrassyknowl · · Score: 2, Interesting

      CS courses are supposed to be about computer science. If I wanted to learn how to make a webpage I'd just get a good reference and hack at it (or take a summer class).

      I don't meet many CS graduates with any grasp on computer fundamentals. I was actually arguing with someone last week about why Java is the WRONG language to use for a once-off program to edit a column in a database. His response was "but Java is common and everyone knows it AND it's a database language, who knows Perl?". Shows how much he knows - a simple Perl script (or $DEITY help us a Bash script) that read, modified and updated each row according to the desired (not-quite-trivial) operation would have sufficed. The same CS graduate didn't get the concept of an inode-based file system and I thought that was fairly basic CS knowledge.

      I've had engineers come to me and develop entire programs in Java then try and download their class file to a DSP. They sit there dazed wondering why the ICD tools won't accept their class file.

      I've had other engineers develop entire swarths of MFC and DirectX code to do DSP (use GUI and Graph Editors to make program that just runs directx plugins to do "dsp" and not write a single line of C++ themselves) then wonder why they can't get the ICD to load their exe file. I even watched this one guy copy the exe to DSP memory and try and set the instruction pointer to the first word of it.

      I met one CE grad who was tasked with writing a one-off sort. She took three days, spent most of it in books and on the phone to friends trying to work it out. This was a one-off sort that would have been run overnight on a production machine; they decided to change the data ordering. The simplest bubble sort in a 10 line C file would have solved the problem and met the requirements. She tried to write the most highly optimal sort algorithm (fine, I guess) but she couldn't even make it work. In the end I hacked together about 100 lines of code to read the data on stdin, sort it and write it to stdout. Wasn't hard. Didn't use too much memory and finished in about 30 minutes (well within the overnight parameter).

      Of course, these engineers had one thing in common. Like many schools, they took their programming and algorithms classes in the CS faculty because the schools were trying to save money. The CS schools are doing their best to churn out people who know all the buzzword technologies (Java, HTML, AJAX, etc) but have little marketable skill. CS courses seem mostly a left-over from the dot bomb era.

      I've yet to meet a CS grad who properly understands the difference between TCP, UDP and IP. I haven't met one who knows anything about algorithm analysis (or big O notation; I think they were all out getting a lot of Big-O's instead of studying).

      The best computer programmers I've met are electronic engineers with specialty in microprocessor systems hardware and maths/physics people. They seem to get programming much more than the CS-types.

      --
      I drink to make other people interesting!
    11. Re:College Classes by StarvingSE · · Score: 2, Insightful

      Of course, these engineers had one thing in common. Like many schools, they took their programming and algorithms classes in the CS faculty because the schools were trying to save money. The CS schools are doing their best to churn out people who know all the buzzword technologies (Java, HTML, AJAX, etc) but have little marketable skill. CS courses seem mostly a left-over from the dot bomb era.

      I've yet to meet a CS grad who properly understands the difference between TCP, UDP and IP. I haven't met one who knows anything about algorithm analysis (or big O notation; I think they were all out getting a lot of Big-O's instead of studying).

      If you've met anyone that has a CS degree and gives you a blank stare when you mention big-O notation, then they either failed out or graduated from Rafael Alonzo's I.T.F. Technical Computer Institute.

      And, let's be realistic here. Concepts such as TCP, UDP, etc are advanced programming topics and are either taught as electives, or in post-graduate classes.

      Computer Science involves a lot of math classes, and then programming classes that implement those mathematical ideas in code. Yes, the school will offer classes like HTML and AJAX, but these are electives used to broaden a student's understanding of the buzzword technology du jour (in an effort to make those students more marketable after graduation). Your post just makes you sound ignorant about what is actually offered in a *good* CS department.

      --
      I got nothin'
    12. Re:College Classes by thegrassyknowl · · Score: 0

      Your post just makes you sound ignorant about what is actually offered in a *good* CS department.

      You obviously haven't had to deal with a lot of recent CS graduates have you? Some schools might offer good CS courses but the majority of grads I deal with know nothing more than buzzword garbage, and I am not alone in my views; I regularly hear associates complain that they can't get a CS person who knows their ass from an infinite loop.

      --
      I drink to make other people interesting!
    13. Re:College Classes by RotsiserMho · · Score: 1

      Agreed. Computer science is for COMPUTERS. To do real work (embedded work), you need a real degree, in EE. :) Seriously though, embedded developers (good ones anyway) should know the hardware inside and out. CS majors just don't get that kind of exposure to low level stuff. I'd guess that at least half of all EEs are doing some kind of embedded software. The developers haven't "gone anywhere". They're just in a more useful field.

    14. Re:College Classes by xenocide2 · · Score: 4, Interesting

      The trouble is, a great deal of CS graduates feel that Computer Science is the fastest way not to being an engineer or scientist, but to becoming a programmer. A disturbing number of my fellow students avoid classes perceived to be lots of work, which is exactly what this guy is asking for. Debugging embedded hardware is not easy or simple, and requires massive amounts of attention to detail to get anything to work at all.

      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. 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.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    15. Re:College Classes by xenocide2 · · Score: 4, Insightful

      This is what always bothers me about these "shortages" complaints: why do you feel the sample population you've encountered is a valid cross section? If you are a hiring manager, it could be that your HR dept. is failing you. Or it could be that your company's pay scales immediately dissuades talented programmers from applying. Can anyone honestly say they've accurately surveyed the graduating class of '0x?

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    16. Re:College Classes by smellotron · · Score: 3, Interesting

      Some schools might offer good CS courses but the majority of grads I deal with know nothing more than buzzword garbage, and I am not alone in my views; I regularly hear associates complain that they can't get a CS person who knows their ass from an infinite loop.

      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 things to point out:

      • There were a good deal of idiotic undergrad slackers. I wouldn't trust these people to do anything except ride the wave of someone else's success. These were the ones who didn't understand why we used OCaml for one class here, or were expected to use Java at the drop of a hat (gasp, no hand-holding?).
      • There were a few people that were adept at being thrown into a computery environment and just learning. This definitely isn't CS, but these people could set up subversion/trac/apache/whatnot on their home servers, or build a decent Makefile—in short, effective tools users.
      • There were a few people (most of which ended up in grad school) who could really nail algorithms and "true" CS topics. Even though this is the heart of the program, I've met so many people who only came out with a weak grasp of the theory.
      • There were a good amount of people who were capable of programming. Most of the good "true CS" people also fell into this category, since programming is the natural way to express an algorithm. These people showed up a lot in the higher level subject-matter courses, such as networking (yes, TCP/UDP/IP among other things), graphics (OpenGL, raytracing, general linear algebra), etc. Due to the nature of the program, there's not much opportunity for a lot of these types of classes unless you come in with a lot of AP credit or you stay an extra year. This set of people is probably the class of people that you've seen at interviews that seem like they have an OK head on their shoulder, but still don't seem to have a clue about developing software (which is OK, because it's a CS degree, not a 2-year trade school).
      • No one touched assembly outside of the required MIPS coursework. My friends in Computer Engineering did a lot of low-level programming (mostly on x86), but the CS program only covered the bare minimum to understand the physics/logic of a computer, let alone be proficient in handling it.
      • The only professor who cared about anything remotely buzzwordish was Ralph Johnson; that was essentially part of is role, since UIUC doesn't have a separate software engineering discipline. Even still, most of his focus was around architecture and decent real-world software design, rather than AJAX/Ruby/whatnot. Most of the people in his courses were the ones that had relevant software-development experience and would be excellent hires out of school... but they're still a different beast from the research-oriented curriculum that the rest of the school pushes.
    17. Re:College Classes by Nursie · · Score: 1

      UK too.

      We were the last year through in my Uni (one of the UK top 10 for CS, 10 years ago) that started by learning C. Java replaced it as the starter language.

      I think that's a bit of a mistake.

      They were already telling us then not to worry too much about memory or speed, unless you took the specialist courses in optimisation. From where I'm sitting now, as an open systems engineer working on high throughput memory-resident databases, that seems like criminal negligence. I should imagine an embedded engineer would feel similarly.

    18. Re:College Classes by Magada · · Score: 1

      Someone mod this guy up.

      --
      Something bad is coming when people are suddenly anxious to tell the truth.
    19. Re:College Classes by DaveV1.0 · · Score: 3, Interesting

      They will come from people who bother to learn assembly and C and experiment on their own and can show their worth.

      --
      There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
    20. Re:College Classes by IndustrialComplex · · Score: 1

      For good or ill, I hadn't heard of JHDL until you just mentioned it. VHDL was what we used when I did my undergrad.

      --
      Out of modpoints but really liked a post? 1BDkF6TtmmeZ3yqXbz9yhdYVqRYnwFoXDj
    21. Re:College Classes by NekoXP · · Score: 1

      It's definitely spreading. The market for embedded developers in the UK is totally empty - the vast majority of people coming out of college and university learn Java, or god forbid something even more useless like C# which depends on Windows. If you're not looking for someone to develop a Windows app, if you're someone who's experienced VxWorks or QNX or Integrity, or even that has poked around in Linux, you have a really hard time of it..

    22. Re:College Classes by Shinobi · · Score: 2, Insightful

      It is a problem here in Sweden too. Many of the colleges and uni's spend too much time teaching high-level stuff, and just a bare minimum on low-level. So what we get out here is people who need a ton of libraries to get anything done, who believe that Getting It Right The First Time is a waste, it's better to patch early and patch often(Rather anathema to embedded work, don't you think?) and who believe that if something doesn't quite work with the hardware available, you can just get MORE hardware....

      And these guys were from KTH :/

      Had to spend several hours teaching them about the realities of quite a few embedded projects. Such as the fact that the hardware we were targeting had a limitation of 256kB of RAM, of which 192kB needed to be available for data+processing, so no, you couldn't squeeze SSH+auto-patcher and some other stuff in there. Also, these were supposed to stand outside, in severe temperatures, so there were limits on the hardware itself. And, they were to be placed all over the country, to collect and pre-process weather and climate data. So yeah, we HAD to get it done right the first time... unless they wanted to travel around and handle reflashing manually?

    23. Re:College Classes by Anonymous+Brave+Guy · · Score: 1

      You obviously haven't had to deal with a lot of recent CS graduates have you? Some schools might offer good CS courses but the majority of grads I deal with know nothing more than buzzword garbage, and I am not alone in my views; I regularly hear associates complain that they can't get a CS person who knows their ass from an infinite loop.

      Hmm... Claims of shortage of skilled labour... Can't find any CS grads who know their a**e from their elbow...

      You don't by any chance work for a stingy company that doesn't want to pay the going rate for the skills it wants, do you?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    24. Re:College Classes by bcharr2 · · Score: 1

      You sound like a doctor complaining that today's medical schools aren't graduating any decent brain surgeons. The truth is that medicine, like CS, is a very broad field of study. Your primary schooling is not intended to teach you a specialty, but to teach you the basic skills needed in a cross section of specialties so that if needed you can later be trained (probably OTJ) as a specialist.

      The only difference between the medical and CS industries is that the medical field recognizes the education for what it is and has instituted very carefully crafted programs to mentor and train young, incoming doctors and help them identify a specialty that fits them and then build their skills in that specialty.

      In CS it sounds like the senior personnel prefer laughing and pointing fingers to actually mentoring and training their personnel. That HAS to cut into the productivity seen from many of the younger workers.

    25. Re:College Classes by 0100010001010011 · · Score: 1

      I'm a Mechanical engineer and I've had more embedded work than most CS people that I know.

      Granted I'm a Mechatronics concentration and my senior year I had enough credits done to be allowed to take graduate level classes. I learned assembly, embeded C, VHDL, circuit design (sort of a major thing for an ME), some high level state space programming and making them all work together. The courses exist, it's do the students want to take them?

      I voluntarily took a C/C++ CS 200 level course one year because I was interested in programming. (95% of MEs get nothing beyond very basic Matlab programming and the thought of doing anything any thing 'extra' is insane.) Sadly I did better than 99% of the class of actual CS majors. Kids who 'liked computers' and wanted a major with computers.
      -
      Some projects from the course I took. Looks like the website hasn't been updated in years: http://meweb.ecn.purdue.edu/~me588/Previous_Projects/previous.html

    26. Re:College Classes by pdbaby · · Score: 1

      I've yet to meet a CS grad who properly understands the difference between TCP, UDP and IP. I haven't met one who knows anything about algorithm analysis (or big O notation; I think they were all out getting a lot of Big-O's instead of studying).


      Hello, pleased to meet you :-)

      --
      Global symbol "$deity" requires explicit package name at line 2. - If only $scripture started "use strict;"
    27. Re:College Classes by gogodidi · · Score: 1

      I am on an embedded degree at university in the UK. It isn't likely that we will be wiring together systems, but I'm certain we will plug together something simple to work on. I started out with PHP, and then quickly moved to C, and in addition then also learned C++ (wow, that was a shock! :p) and Java. I'm a little annoyed that they teach everyone with Java, and even simplify it so much that people were never told that Java is an interpreted language! Then again, I can't really expect much from a degree that doesnt have any maths in it! (I actually had to transfer to a different degree so that I could pick every module I wanted to do) I am taking a maths module this semester, I am the only one in the school of computing year 1 that is doing a maths module. All the others I know of picked a class which literally wastes their time - "hill walking" (no actual walking) or "Introduction to the internet". I have had very little exposure to Assembly, but it is one of the things I am really looking forward to in my course.

      --
      ugh...
    28. Re:College Classes by Z00L00K · · Score: 2, Insightful
      Not too bad to start with Java, but it's not really close to the hardware at all.

      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 with Java is that the programmer relies completely on the garbage collector.

      The "not to worry too much about memory or speed" is a REALLY stupid opinion. Hardware is good today in the upper-end systems, but even if the speed is doubled every 18 months or so the optimization of a program can improve speed a lot more. It's more a question of several magnitudes than percent if you find the right spot to optimize.

      Learning C is really a good thing - it's small, efficient and fast. Of course - you can do stupid things in C too, but it will bite back pretty fast!

      A really good course would be if students were to build their own computers and program them. Not too hard considering the components available today compared to the components available in the 80's when I built my first computer from a Z80, 2716, 6116 and a lot of TTL chips and a few other chips. I still have it, but I'm not sure if I can make it work anymore. Programmed completely in assembly.

      Today it would have been either some kind of 8051 (like the nRF24E1) or an ARM. Neither are too bad, and the poison of choice depends more on power consumption versus performance. The only disadvantage with modern processors are that they aren't usually DIL packaged, which means that they are a lot trickier to use when throwing together something just for learning.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    29. Re:College Classes by RoverDaddy · · Score: 1

      It looks like good embedded programmers (whatever their age) will be in demand and well paid for many years to come. :)
      Exactly. Tomorrow's embedded developers are right here. I'm not dead yet, and I still know how to do that kind of work. If you pay me enough I might consider moving back to embedded-land from GUI-world. Believe me I won't be cheap. Now get off my damn lawn.
      --
      RETURN without GOSUB in line 1050
    30. Re:College Classes by TheGeneration · · Score: 2, Interesting

      I'm not willing to create things that have the sole purpose of killing other human beings. Sorry.

      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've come so far. The people that can actually DO stuff are second rate to the people who are just professional figureheads.

      --


      The Generation
      I'd say something witty here, but I'm not that bright.
    31. Re:College Classes by Anonymous Coward · · Score: 0

      In CS it sounds like the senior personnel prefer laughing and pointing fingers to actually mentoring and training their personnel. That's because the US and much of "Western" society is competitive (to a fault) rather than cooperative. Bullies rule.
       
       

      That HAS to cut into the productivity seen from many of the younger workers. It surely cuts into most people's productivity. The extremely competitive (bullies) do better in heavy competition, but the more intelligent & creative types tend to hide in our foxholes until the shells stop flying, which is generally never, so it always looks like we don't get much done. I used to try to stand up to the bullies, and have a few times, but it's very draining. Now I don't care anymore- it's just not worth the fight. Bullies naturally tend to become bosses, so the competitive bully system self-perpetuates. Oh, to work for Google...
    32. Re:College Classes by w3woody · · Score: 1

      I have to concur.

      Hell, I'd love to go back to doing embedded software development--but as far as I can see, in my area if there are any jobs doing embedded, I haven't heard of them.

    33. Re:College Classes by Anonymous Coward · · Score: 0

      You need an old guy like me who writes code in BYTES, not K or M bytes!

    34. Re:College Classes by Anonymous Coward · · Score: 1, Insightful

      Or they'll come from smart folks who get hired and trained in assembly, C, and hardware. If employers really need people to do these things then they can quite easily train them to do it.

    35. Re:College Classes by Estanislao+Mart�nez · · Score: 1

      I was actually arguing with someone last week about why Java is the WRONG language to use for a once-off program to edit a column in a database. His response was "but Java is common and everyone knows it AND it's a database language, who knows Perl?". Shows how much he knows - a simple Perl script (or $DEITY help us a Bash script) that read, modified and updated each row according to the desired (not-quite-trivial) operation would have sufficed.

      Perl? Um, have you ever heard of SQL?

    36. Re:College Classes by try_anything · · Score: 1
      As a math major who never took any CS classes as an undergrad and then took CS classes at very, very, very lowbrow places (including a local community college) to "round out my education" while I was unemployed, let me tell you that it isn't the teachers' or fault or the fault of the curricula. Teachers can drill finite automata, deadlock analysis, and regular languages all semester, but many students will just never get it. Marketing, on the other hand, is designed to be accessible to everybody. Stop blaming the teachers and programs; start blaming the students for being so stupid, lazy, and gullible that they can sit through years of theory without learning anything of value but can regurgitate shallow marketing slogans after the most fleeting exposure.

      The problem is compounded by CS students who have no interest whatsoever in programming or computer systems. When someone struggles and fights their way through a law or medical program, I admire their ambition and discipline. When someone fights and blunders and barely survives a program in social work, I admire their idealism. When a person with no talent or interest in computers insists on slogging their way through a CS program, I think, "WHAT ARE YOU DOING YOU STUPID EVIL IDIOTIC SHIT? YOU ARE MAKING THE WORLD A MORE MISERABLE PLACE. DIE, PLEASE, BEFORE I HAVE TO SPEND ANOTHER SEMESTER IN THE SAME CLASSROOM WITH YOU." Seriously, what is the point of doggedly pursuing a field that you don't enjoy and in which you have no talent and in which what little talent you have will be relatively underpaid because so many people love the field and are, um, somewhat socially unsuited any other kind of decently paid work? Foreign students in the U.S. seem particularly prone to this fate. I'm hesitant to judge them because I don't know what kinds of conditions are placed on their status here, their scholarships, etc., but if there is some institutional bias set up to force them to stick with CS even if they hate it, then that is the most pointlessly evil thing in the world -- a plague on those it directly coerces into CS, and a plague on those who must work with them in school and beyond.

      Anyway, I can testify that most of the students I was exposed to matched your description quite well (know nothing more than buzzword garbage) despite being exposed to decent theoretical curricula and some very bright teachers. You can't put the responsibility on the curricula or even the teachers. Actually, I was pleasantly surprised by the teachers I encountered; a fair number were incompetent idiots, as you would expect in the lowbrow classes I took, but many were quite good, and the most lucid lecturer I've ever had in any classroom (including graduate math classes at a real university) taught a beginning digital design class at a night class offered by a crappy state university extension. He had a PhD from an excellent school, had worked on microprocessor design for Motorola, and was VP of technology for a local startup. That didn't stop his students from glazing over during his lectures about design verification techniques and then asking half-baked AMD vs. Intel questions based on Ars Technica articles they skimmed at Starbucks.

    37. Re:College Classes by thegrassyknowl · · Score: 1

      Yes, in fact I have but I also said the transformation was not trivial. Right tool for right job.

      --
      I drink to make other people interesting!
    38. Re:College Classes by TheLink · · Score: 1

      Tomorrow's embedded developers are where today's embedded developers are- in China, Taiwan, Korea and Japan.

      Why? Because that's where "all" the hardware is being built. Doh.

      I do see a fair number of "demo" programmers from European countries, so I'm sure there'll be more than few people who can do embedded stuff. That said a lot of the current demoscene stuff starts out really small but ends up taking hundreds of megabytes in RAM.

      Lastly, 256KB of RAM is quite a lot. A lot more than what the early Apple II computers had.

      I had an Apple II clone, and a clone of the very good Apple manuals. Even 64KB was a lot back then :).

      --
    39. Re:College Classes by Shinobi · · Score: 1

      Yeah, I didn't say ours was extreme in how constrained it was. I just gave an example I ran into recently

    40. Re:College Classes by TheLink · · Score: 1

      The less constrained the better, I'm lazy :). It's probably getting harder and harder to find smaller stuff...

      --
    41. Re:College Classes by alanmusician · · Score: 1

      I regularly hear associates complain that they can't get a CS person who knows their ass from an infinite loop.

      Yes, but where you are wrong is the assumption that this is because of most university CS course requirements. I would also agree that if you've met a CS grad that doesn't at least think they understand big-O notation, then they were doing alot of sleeping through class.

      In my experience, the problem is that CS programs are flooded with people who just "want to work on computers." Sure, some colleges cater to this in order to churn out more students, but I think most of the problem is that your average wannabe game designer nerd sleeps through his pointer math, algorithm analysis, and even data structures classes. There are so many of them that the professors can't afford to fail them all. I saw this all the time in my school. My professors were literally thrilled to get students through that were genuinely interested in anything beyond games and fluff web technology.

      I believe that most universities teach solid fundamentals, but this latest generation of math-deprived highschool graduates simply end up more interested in buzzwords and fluff: These are all that they retain.

    42. Re:College Classes by try_anything · · Score: 1

      It surely cuts into most people's productivity. The extremely competitive (bullies) do better in heavy competition, but the more intelligent & creative types tend to hide in our foxholes until the shells stop flying, which is generally never, so it always looks like we don't get much done. I used to try to stand up to the bullies, and have a few times, but it's very draining.
      I agree. I'm a bit of a show-off technically (within the constraints of sharing code) but I don't bother standing up to bullies, other than making my technical judgment known. Even when you don't fight them, it's dispiriting (draining is an excellent way to put it) to watch them get their way time after time, just because nobody wants to be a martyr and make the massive investment of time and emotional energy necessary to oppose them. Organizations that tolerate such people will get what they deserve, such as people like me leaving for a better job -- yay! I did it just last year, and I still feel happy about it :-D Preserve your sanity above all else.
    43. Re:College Classes by Anonymous Coward · · Score: 0

      I had awesome classes in embedded systems and DSP getting my BSE in comp engineering at the u of mich ann arbor. Here were my troubles...
      1) Must first work in the QA dept developing tools in C#
      2) Have 5 years of experince doing exactly the same thing they are working on.
      3) At least 2/3 was contract work with 2)

      It all worked out in the end. I work for a video game company now and am getting my MS in computer science.

    44. Re:College Classes by brm · · Score: 1

      You had PALs, microsequencers, and eraseable ROMs? When I was in college, we built not only finite but also infinite state machines using just our bare hands and tiddly-winks. Then we used them to compute the route back to the dorm uphill through the snow.

    45. Re:College Classes by Neil+Hodges · · Score: 1

      Well, if you write a Perl script to connect to a *SQL database in some way, chances are you're using the query language within a statement somewhere.

    46. Re:College Classes by Eli+Gottlieb · · Score: 1

      or big O notation; I think they were all out getting a lot of Big-O's instead of studying These are CS students we're talking about here, if they've had a Big-O they didn't self induce then bless God for that!

      But seriously, big-O notation is a notation for indicating time or data storage complexity of an algorithm by showing the largest component of the complexity expression as a mathematical function of input-size n inside a big "O" for "order of complexity". Ex: O(n) (linear), O(n^2) (n-squared polynomial), O(log n) (logarithmic), O(c^n) (exponential), O(1) (constant). I had to learn this stuff to pass the Computer Science AP test in high school, what are you trying to tell me about Comp. Sci. graduates not knowing it?
    47. Re:College Classes by russotto · · Score: 1

      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.


      It's a seductive idea (at least if your conscience is sufficiently flexible), but remember that only a few top MBAs get to do that sort of thing. Most MBAs end up in middle management somewhere, caught between impossible directives and short budgets from above and sullen workers below, fighting for scraps of territory with others of their ilk, and getting laid off when the guys at the top want a new Porsche.
    48. Re:College Classes by russotto · · Score: 1

      I've got a CS degree and am doing embedded programming now. Most of the EEs here do hardware design, not software.

      Some of the major challenges of embedded work are

      1) You've got to do pretty much everything. The OS does little for you, and even the stuff it does for you, you've got to know how it does it inside and out. For some stuff, there's no OS at all.

      2) There's not much space. Small flash, little RAM, and no disk.

      3) There's not much speed or time. The processor is running at tens of megahertz if you're lucky. And you've likely got some real-time constraints; take too long and your device fails in some way.

      4) Debugging can be a major challenge, depending on your tool set. The device doesn't have a nice graphical interface with GDB in a window. If you're lucky it's got a dedicated debug interface.

      5) Sometimes it really IS a hardware problem :-)

      However, if you can program an Apple II (or other 8-bit) in assembler or write an efficienct Linux device driver, you're probably up to it.

    49. Re:College Classes by timjdot · · Score: 1

      I hope you don't expect to find a job doing embedded. This article is a joke. The pay is much better for slinging Java code or some other pseudo-science like Flash etc. It REALLY irritates me when companies say they cannot find employees because what they mean is they cannot find an employee AT LESS THAN THE LIVING WAGE! My friend works for MOTO in FL and makes $80K. He's been doing embedded for about 20 years. And houses are north of $300K there. Bottom line, according to the FHA he doesn't make enough to get a mortgage on a decent house there!

      --
      Expect Freedom.
    50. Re:College Classes by mikael · · Score: 1

      From what I have seen in the UK, the good CS graduates are setting up their own companies and avoiding the politics of seniority, cronyism, bait-and-switching, and corporate wing nuts trying to get bright graduates working on their pet management theories.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    51. Re:College Classes by Anonymous Coward · · Score: 0

      Someone mod this guy down.

    52. Re:College Classes by Anonymous Coward · · Score: 0

      I couldn't agree more. I am recent graduate (Computer Engineering) ... with dencent skills in C, VHDL and 3 types of assembler ... after graduation I had two options: works as embedded developer (if I was lucky) and earn a janitor salary, or go for Java and make a decent living. Guess what I am doing know.

    53. Re:College Classes by Z34107 · · Score: 1

      I go to a liberal arts college that manages to have a CS major. You're required to take Machine Architecture (you write assembly language programs for the x86 architecture, and learn about parts of the CPU and microcode and whatnot.) You have to take Operating Systems - our last lab was on UNIX fork()ing and its effects on a process's file descriptor table and i-nodes. You also have to take Data Structures, which talks about Big O-notation for measuring algorithm efficiency, and Event Programming, which touches on MFC and the Win32 API, as well as some less useful stuff like Flash.

      So - do "tech" schools have a worse CS curriculum than my liberal arts college?

      --
      DATABASE WOW WOW
  2. NOT Computer Scientists by Anonymous Coward · · Score: 0

    The reason you can't find any is that you are looking in the wrong college department. Your embedded device programmers are computer engineering majors and not computer science majors. Most of them are bad at programming in C though since they don't understand that resources should be treated as a scare item and the professors don't teach them that they are. Furthermore the college where I'm at doesn't teach ARM or x86 assembly, it teaches LC3 instead... what a joke that is.

    However some students, like myself, know x86 assembly and understand the value of memory and cycles. If you have a particular job in mind and want to pay for me to drop out and move though then I'd be glad to jump on with your company. Just let me know. :)

    1. Re:NOT Computer Scientists by Altus · · Score: 1


      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 learned our data structures and algorithms in C before moving on the lisp and scheme for higher level concepts like AI. We also learned a big about how processors worked and what micro-code was so it wasn't entirely divorced from the hardware.

      Maybe this isn't what its like these days but I haven't had a reason to look at such things in quite some time. I have no intention of going back to school in my industry any time soon and even if I did I would probably be looking for a masters in Software engineering (looking at programs that are about development process as much as anything else).

      --

      "In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson

    2. Re:NOT Computer Scientists by AuMatar · · Score: 2, Informative

      You're confusing computer engineering with software engineering. Computer engineering is a hybrid software/hardware degree- depending on your electives its like minoring in EE and majoring in CS, or majoring in EE with an emphasis on digital circuits and minoring in CS. Quite frequently with tougher versions of some courses- the asm course taught to CS students at UIUC was a joke taught on simulators. By the end of the ECE asm class, we were programming video games on x86 without using external libraries.

      Software engineering is a CS major with emphasis on process at good schools. At bad schools, its a watered down CS major.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    3. Re:NOT Computer Scientists by Anonymous Coward · · Score: 0

      Computer science should be a math major only distantly related to software engineering, just as astronomy and optics are not the same.

      I took CS rather than CompE (in 1988 those were the only options) figuring there was only room for a limited number of chip designers in the world. Now that I've seen how poor the robustness expectations are for desktop and even server software, I wish I'd done CompE and gone into embedded. I think I have the right temperament for it, but I don't know how to break in short of apprenticing myself and halving my salary.

    4. Re:NOT Computer Scientists by HornWumpus · · Score: 1

      CompE is more then just a hybrid.

      It's an actual no BS Engineering degree, they study the Engineering core curriculum for their first two years. Your comment about majoring in EE with digital emphasis and minoring in CS is pretty close. Majoring in CS and minoring in EE would be a cakewalk in comparison.

      The GP is just plain wrong regarding CompE being an IT track. IT is where the bottom half of the CS students wind up along with a lot of two year tech school grads.

      I graduated with BSs in EE and a CompE in 1987. The math minor was automatic for everybody in the program.

      Regarding you final comment. Unless CS is taught out of the Engineering school nothing called Engineering should be taught out of CS. I know of institutions where CS is taught out of the God Damn Business school!

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    5. Re:NOT Computer Scientists by Anonymous Coward · · Score: 0

      It's an actual no BS Engineering degree, they study the Engineering core curriculum for their first two years.
      I had no idea degree curricula were so uniform across all universities.

    6. Re:NOT Computer Scientists by HornWumpus · · Score: 1

      Engineering schools are all similar. Just as law schools and medical schools. Professional certification bodies are policing the schools so they can't dumb things down to please the kids.

      The BS in engineering track is basically the same for the first two years anywhere you can get an actual Engineering degree. By definition that's a degree the qualifies you to take the E.I.T. and later the P.E. test. You will be tested outside you're specialty (particularly in the E.I.T.), expect thermodynamics questions even if you're an E.E.

      Schools offering 'Engineering Technologists' or anything else short of 'Engineering' degrees should be avoided at all costs. At least until you've actually taken a crack at the real deal.

      That said why am I replying to an AC that knows nothing but still comments.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  3. Used to, still could, but probably won't by kninja · · Score: 4, Insightful

    Used to be an embedded developer for devices, but then I got interested in Ruby on Rails (it was much more fun).

    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.

    1. Re:Used to, still could, but probably won't by Anonymous Coward · · Score: 0

      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.

      I used to quite enjoy my C, Assembly and VHDL classes. However the same kind of analytical mind that made it a fun problem to solve can (it turns out) but just as easily employed doing business analysis for four times the money.

    2. Re:Used to, still could, but probably won't by BotnetZombie · · Score: 2, Interesting

      Not only are there probably more than a few people that already have the skills, but I also think that it isn't necessarily too difficult to get people into the mindset needed. I learned programming in C++ but without any real concern for efficiency or memory usage. On a job much later on, I had to write a browser for very limited j2me devices (total memory of 64KB). The browser downloaded, parsed a subset of xhtml, displayed (including images), navigated according to user action and even accepted text input (of course someone will now say that they can do the job in 1024 bytes or less). It was a total pain in the butt to write - however, having to rigorously manage the data structures, memory assigning and releasing, unrecurse functionality that is intuitively recursive in nature etc, I think that this has made me a better programmer. Even though I haven't done any embedded programming I don't think it would be too much of a problem.

    3. Re:Used to, still could, but probably won't by j35ter · · Score: 2, Insightful

      True!
      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 family from those guys payments. So, I'll just stick to my Python stuff and keep integrating some Brainfuck code, just so they cant fire me anytime soon.

      And at night I dream of indirect addressing, C pointers and interrupt vectors...

      --
      Delta-Mike November Bravo Tango
    4. Re:Used to, still could, but probably won't by zx75 · · Score: 1

      Why is it so hard to find good jobs doing embedded programming?

      I've done the coursework, and been trained in embedded programming. I'd be a junior at it, and would need experience but I could be one pretty easily.

      But like the parent said, are you going to pay me for it? I get a good salary working in high-level languages that let me create things that *do* so much more, unless I was overwhelmingly interested in embedded systems what motivation do I have to do it?

      --
      This is not a sig.
    5. Re:Used to, still could, but probably won't by djchristensen · · Score: 1

      I would consider you an exception rather than the rule. My experience is that "programmers" without solid computer architecture-level training have a very hard time understanding embedded/realtime systems development. There are certainly programmers out there without such training who would do well (like yourself), but then they most likely would have excelled in a computer engineering program had they chosen that path in college. I'm guessing that's a minority, though.

      I once lived through a year-long delay while another group had to completely re-architect, re-design, and re-write their part of a machine we were developing. They decided that multiple inheritance, persistence, and template libraries would be fun to use, despite the fact they had very limited resources. The result was a subsystem that ran an order of magnitude slower than the minimum requirement. (And by the way, the part I worked on was also in C++ and easily met all performance requirements, so no need to blast C++. Just because a language gives you a lot of rope doesn't mean you need to hang yourself with it.)

    6. Re:Used to, still could, but probably won't by twiddlingbits · · Score: 1

      I'm one of them. I did embedded for many years, I loved it but 90% of the work was defense systems and it was so cyclical. And most of the projects were poorly managed over budget, software always got screwed for hardware. I got my MBA, left for Technology consulting and never went back. I get offers all the time for a 25-30% pay cut to go back. Seems to me that programmers who know C and Assembler and can write tight code, know OS internals, and can interface to hardware are almost as extinct as IBM mainframe COBOL commandos, so we should (by the forces of ecomonics) command an above market salary.

    7. Re:Used to, still could, but probably won't by BotnetZombie · · Score: 1

      My guess is that 30-50% of the programmers I've worked with would have the knack for it, if needed. It's still a minority, but not a small one. Maybe I've just been lucky, not seen too many copypasta monkeys.

      Incidentally, I first got a 2 year software engineering degree, i.e. basic programming, data structures & algorithms and such stuff, but no theory and no mathematics. I only went back to school recently to finish off what was needed for my BSc in CS, and can definately say that I much more appreciated what was taught than I think I would have 10 years ago.

      Back on topic, I think the OP is spot on that if there was sufficient demand and salaries to go with that, good embedded developers would come in hordes out of hiding :)

    8. Re:Used to, still could, but probably won't by drachenstern · · Score: 1

      I'm still at Uni, but I gave a presentation on this sort of material just today.

      The main topic was regarding RS-232 I/O and input into various high-level lang's such as .NET, and the correlation between single device ports (serial, parallel) versus a multi-device bus. Trying to get across that, while serial and parallel are old-school and only currently used for legacy support, programmers should be aware of what it takes to program to those devices. (My motivation for this topic is that my current employer is a physical measurement sales agency, where most of the devices that we support are at a minimum of 10 years old and going strong, and most all of the communication is RS-232/RS-422/RS-485. The clients haven't heard of USB out in the field, so they don't want to buy that new-fangled-ness) I showed the pinouts and explained that you used to have to either program to the port directly (OLDER) or write to the port using one of a number of APIs (varied and many possibilities) which normally have to be licensed. Then I pointed out how .NET is so much more logical in it's approach (no really), and how the settings are exposed how you would think about it in all the settings dialogs, versus thinking of the serial port as a bi-directional file.

      The prof, during my QA session, asked why students should worry about accessing the hardware directly, versus accessing the hardware through a API. I responded that of course high-level programmers should use the API, but everyone should understand what the devices were expected to do underneath. The fact that I was discussing the older ways of programming the serial port didn't mean that everyone had to use that method. I then reinforced the fact that that was why I discussed .NET and how useful it was to mainstream programmers. Then he asked me why I was concentrating on serial/parallel instead of the USB for programming. I explained that once again, you're either using the API provided by the developer or you're the developer (team member, whatever) writing the driver (and therefore API) for the device, you're not going to reach into the middle of the USB stream and twiddle bits like you can with a serial device and a breakout box. I don't think he heard me when I explained that USB is a BUS, much like PCI. You attach a device, and allow the O/S to handle communication. Another student asked me about how the USB determines who gets a chance to transmit data. How do people not know about stuff like bus mastering and DMA and IRQs, etc? I realize I read more than most my age, and I've an inquisitive mind, but if you want to work with computers, you gotta get serious about knowing what they are and how they work.

      THE POINT

      So while I'm still just Uni fodder, I get that we should be able to program to the hardware no matter our preferred environment, and I think the staff at the Uni's keep thinking we should all focus on Java or Java++ or whatever, instead of truly understanding the hardware.

      --
      2^3 * 31 * 647
    9. Re:Used to, still could, but probably won't by tuomoks · · Score: 1

      Correct! There are many people who know how but when you compare it to the projects where Ruby (or Java, or ..) is used what's the point. Headache and less pay. I'm not on level where microcode people (next level, more headache) are but have done my share low level coding (at the time when systems programmers were real) for anything from controllers and channel drivers to multi-processor memory managers and schedulers. Once you get it, you can code to any hardware. But who would like to do that with what is payed today - it's just coding, must be easy, no need to pay, no high return next quarter, etc. I still miss it, it is interesting, gives you a real picture how hardware works behind all these "high" level languages and libraries. Skills on that level are needed if you really want to know how any computer language works on any platform or why your multi-threading doesn't behave at is should or why you start getting protection failures when the cpu model changes or why some are never able to code for real-time systems. And this doesn't exclude high level languages - there have been OS's in COBOL, Algol, Lisp, PL/x etc which are not very low level languages but then you really have to know how they work.
      Lately I have coded some memory, queue, restart etc routines for PDA's and mobiles - not my job really but too few people in project, the normal story - and it was fun again. You just look the hardware, what and how, and it is not difficult.

    10. Re:Used to, still could, but probably won't by Profane+MuthaFucka · · Score: 1

      Even rarer is the man who can suck his own cock, but it's the pussy that makes the money. Imagine, something that half the people on the planet possess has a lot more earning power than the self-sucked cock. It's almost as if the baby Jesus were fucking with the free market just to piss off Ayn Rand!

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    11. Re:Used to, still could, but probably won't by malevolentjelly · · Score: 1

      So you dropped writing low-level optimized device code in assembly and C to start developing (web applications?) in the slowest, most inefficient, and poor performing programming language on the market?

      Sounds like a major career change. Were you a hobbyist embedded developer then?

      That's like saying "I got tired of being a gourmet chef so now I am making vats of spaghetti-o's". It's more fun because they're shaped like dinosaurs.

    12. Re:Used to, still could, but probably won't by smellotron · · Score: 1

      That's like saying "I got tired of being a gourmet chef so now I am making vats of spaghetti-o's". It's more fun because they're shaped like dinosaurs.

      That comment reveals your prejudices. Don't get me wrong, I'm no Ruby fan myself, but web apps are very different than embedded systems. You're still a programmer, but you're solving problems on a different scale. The tradeoff of performance for succinctness/clarity is a natural progression when hardware costs less than developer man-hours. A sligntly better analogy would be, "I got tired of being a gourmet chef so now I plan excellent menus for a large restaurant chain."

    13. Re:Used to, still could, but probably won't by malevolentjelly · · Score: 1

      We're talking about rails, though. It's notorious for grossly mishandling data types, hashes, and databases. It's the shift of embedded to ruby ON RAILS that cathes me offguard. Last I checked, the device market is thriving.

      The impression I've gotten from ruby on rails development is that it offers generic functionality and ease of use to non-developers (I guess, its syntax is hideously awkward) over performance and agility. I don't think wastefulness is good on any level of development, no matter how large scale things get.

    14. Re:Used to, still could, but probably won't by try_anything · · Score: 1

      I would consider you an exception rather than the rule. My experience is that "programmers" without solid computer architecture-level training have a very hard time understanding embedded/realtime systems development.
      Most programmers have to be hand-held through anything for the first few weeks or months, and God help them if they can't find a decrepit, boring company that lets them do the same kind of programming for years at a time. The mistake is when companies that don't have time to train those kinds of programmers hire them and expect them to adapt to new conditions and requirements on their own. It doesn't work, and the company blames the programmers' training.

      In other words, the real issue is that only a minority of programmers are able to take skills developed in one context and apply them in a different context. Other programmers have to be retrained in each new context. Companies need to adapt their hiring practices to this reality. Either they only hire good (expensive) programmers, or they devise some scheme of using the mediocre ones effectively. (From reading project management books, it seems that the second option hasn't been seriously considered since Fred Brooks proposed his small team master-slave architecture.) Either way requires companies to lower their expectations. You can't just hire a random CS grad at prevailing rates and expect to get someone adaptable. That would only be possible if CS grads were much smarter than the average college graduate.

    15. Re:Used to, still could, but probably won't by sasami · · Score: 1

      the real issue is that only a minority of programmers are able to take skills developed in one context and apply them in a different context

      You're right -- and change "programmers" to "people" and you'll still be right.

      It used to be understood that education, particularly at the college level, was intended to teach people how to think. Most now believe that education is intended to train people how to work. Not that a college education shouldn't include that, but it's much less important than learning how to learn independently, think critically, adapt quickly, and communicate persuasively -- to say nothing of other essential (and learnable!) qualities like character, discipline, initiative, leadership, cooperation, and so on.

      This is why people used to graduate from university at the age of 12 or 13, and be considered ready to make their way in the world. It was assumed that they would simply pick up whatever knowledge they needed.

      Granted, there's much more knowledge to be "picked up" these days. But rather than augmenting the classical model, most of the world has entirely jettisoned it in favor of stuffing untrained minds full of unstructured data so that they can pass standardized tests and industry certifications.

      Here and there you'll find holdouts -- mostly in the US, at smaller, lesser-known colleges. And what you find is that these institutions accept B or C students as freshmen and turn out graduates who can out-think and out-perform competition from Big Ten and Ivy schools. In other words, a proper education makes people smarter. If it doesn't, then it's not education... it's just training.

      --
      Freedom is not the license to do what we like, it is the power to do what we ought.
    16. Re:Used to, still could, but probably won't by djchristensen · · Score: 1

      In other words, the real issue is that only a minority of programmers are able to take skills developed in one context and apply them in a different context.

      I couldn't agree with you more. You've done a nice job of generalizing what I was trying to say. I might add that I think there is a certain percentage of those "other programmers" that can't effectively be retrained in a new context. They're the ones who likely weren't very good to begin with, though. Ugh, too much pessimism. Maybe I need to watch the ending of Life of Brian again.

    17. Re:Used to, still could, but probably won't by try_anything · · Score: 1

      I'm skeptical -- not skeptical that people can be taught to think, but skeptical that anyone knows how. I've seen people gain knowledge and sophistication but never seen anyone start to apply their knowledge more abstractly than they habitually have since the age of twelve.

      I don't think any decline in education can be blamed. When I look to the past, I see exactly what we have today. In every age back to the dawn of the Greeks, contemporary education has been held up to ridicule, the mediocrity of its products mocked, the value of clear, critical thinking extolled, and quite often some bygone golden era of intelligence and practical education lamented. I think it's a healthy attitude not to regard our current institutions as adequate, but I don't think it makes sense to look to the past for answers. The literature of every age records that institutionalized systems of education have always turned out plenty of dullards. (And, it seems, every system has given up as hopeless people who later achieved extraordinary things.)

      As for the "CTCL" website you linked, teaching people to think has been a selling point of small liberal arts colleges since long before I did my college search over a decade ago. I haven't seen any evidence that it's more than marketing. They don't even have a monopoly on the marketing anymore -- watch any college bowl game, and you'll see ads for mega-universities and mediocre state schools claiming to use innovative and/or timeless techniques to teach self-reliance, creativity, and critical thinking.

      The only thing I've seen in graduates of small liberal arts colleges that is tragically missing in many graduates from elite schools is self-assurance. Some students have been so deeply scarred by the experience of working ten hours days to pull a B- in a class filled with brilliant students, taught by a Nobel Laureate, that they can't look within themselves for a good idea. Put them in a room full of monkeys and they'll start flinging shit at the walls because they're still afraid of falling behind. Students from small liberal arts colleges are perhaps a little towards the other extreme, but that's less tragic and more easily cured.

  4. There are not many Klingon programmers graduating by arivanov · · Score: 4, Interesting

    The profession has become domesticated.

    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.

    --
    Baker's Law: Misery no longer loves company. Nowadays it insists on it
    http://www.sigsegv.cx/
  5. Wouldnt'cha know.. by Creepy+Crawler · · Score: 1

    That's what I rejoined school for.

    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), and I have connections with a few of them. There was recently a job offering (60k embedded EE, 1-2 yrs exp) that one would go to Japan for. I'd jump on that, if I could. Also, with the spectrum opening, equipment implementation will happen roughly when I get done. Either way, I'm going to be making a "livable" wage ;)

    If I could travel abroad, I would. We only have one life. I'm going to make mine fun.

    --
    1. Re:Wouldnt'cha know.. by Rycross · · Score: 2, Insightful

      I wish I could jump on something like that too. As it is, I have a CS instead of EE, and no real embedded experience. I did want to pursue embedded systems early on, but as my first job was a .Net related job, I'm pingeon-holed into .Net jobs.

      As it is, I'm looking at doing an English-teaching-in-Japan stint. I wholeheartedly agree with your sentiment.

    2. Re:Wouldnt'cha know.. by Grishnakh · · Score: 3, Insightful

      I wish I could jump on something like that too. As it is, I have a CS instead of EE, and no real embedded experience. I did want to pursue embedded systems early on, but as my first job was a .Net related job, I'm pingeon-holed into .Net jobs.

      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 .Net programming job, your next one probably will be too, because it'll be extremely difficult to convince anyone that you'll make a great Linux kernel programmer, for instance.

    3. Re:Wouldnt'cha know.. by everphilski · · Score: 1

      Maybe as a CS. I'm a MAE (Mechanical and Aerospace Engineer) and I've gone from a simulationist (6DOF modeling and simulation) to a guy who writes seeker models and guidance models to working for NASA as an aerothermodynamist (heat transfer on rocket re-entry). In under three years time. The key is to keep on learning. Get that masters, and don't stop till your business cards say "Ph.D." on them. And learn outside the classroom too :) It's good for you and good for your career.

      Don't consider what you are doing now a pigeon hole, rather a leaping point. What can I jump to from here, with a little hard work and determination?

    4. Re:Wouldnt'cha know.. by smellotron · · Score: 1

      So if your last job was a .Net programming job, your next one probably will be too, because it'll be extremely difficult to convince anyone that you'll make a great Linux kernel programmer, for instance.

      Conveniently, recent college graduates tend to have oodles of extra time with which to learn other skills at a hobby level, such as kernel hacking or x86 asm or python web apps. No spouse, no kids, less likely to take work home. IANAOldMan, but I'd expect that only when life gets in the way of technical learning will you really be pigeonholed—and by that time, you probably have more enjoyable things to look forward to than the latest 9-5 task.

    5. Re:Wouldnt'cha know.. by Hognoxious · · Score: 1

      Employers always pigeon-hole people based on their previous experience.
      Not so sure about that, I'd written loads of software for PCs - interactive graphics on an 8086 including some assembler - in my sandwich year (internship) and when I got my first proper job did they put me in their PC dev team? No, they put me in the mainframe division, doing C080|_.
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    6. Re:Wouldnt'cha know.. by Grishnakh · · Score: 1

      That's not a good example. I spent a lot of my internship making copies, but that's not the kind of job I got upon graduating college.

      A better thing to look at is what you did in your second (real) job, compared to your first job.

    7. Re:Wouldnt'cha know.. by Grishnakh · · Score: 1

      Sorry, but this only works if your field is programming. If you're in some other type of engineering (especially things like aerospace, mechanical, etc.), you usually can't just do engineering work at home as a hobby. Try telling an aerospace engineer he should do some work on space vehicles at home in order to build experience when he's tired of working on Cessnas...

    8. Re:Wouldnt'cha know.. by Hognoxious · · Score: 1

      Where I come from an internship (industrial placement) *is* a real job. Perhaps that's why I didn't spend it photocopying?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    9. Re:Wouldnt'cha know.. by WarlockD · · Score: 1

      God I learned that one.

      I took ONE summer job as a kid at an IT shop and all they had me do is repair printers, pull dot matrix print heads to be refurbished, and make sure fixers work. I didn't know squat (I seriously think they were trying to fire me), but I learned how much I hated repairing printers.

      Now EVEY job I mention this little bit of fact, the first thing they have me do is printer calls. Of course, I MUST mention my previous experience as it usually gets my foot in the door.

    10. Re:Wouldnt'cha know.. by Anonymous Coward · · Score: 0

      I think the reason why is because only a very small subset of people can actually pull of the whole cross discipline thing.

      I've been programing in C++ for over 10 years and I can easily program in JAVA, but I don't think its reasonable to expect an employer to pay me my current salary to do a job I'd only be half as good at and not as efficient at either. If I had to take a pay cut to make it fair to my employer, I'd really not be interested.

    11. Re:Wouldnt'cha know.. by HeyLaughingBoy · · Score: 1

      Try telling an aerospace engineer he should do some work on space vehicles at home in order to build experience when he's tired of working on Cessnas...


      Not really. Many aerospace engineers are rocketry hobbyists. I have known Mechanical engineers who have 2-ton milling machines in their basement/garage for fun. Many people who enjoy their engineering work find ways to do it off the clock.
    12. Re:Wouldnt'cha know.. by Grishnakh · · Score: 1

      That's only true in a market where there's sufficient workers in both disciplines.

      For instance, if you're specialized in skill A, and you'd like to switch over to a job in skill B, but there's plenty of available employees who are already specialized in skill B, it would be pretty dumb for the employer to choose you for the job instead of someone with better experience, unless there's some other mitigating factor (you're willing to work cheap, you're already a successful employee there and are transferring laterally, etc.).

      However, if you're trying to get the job in skill B, and the employer isn't able to find anyone else decent (i.e. better than you) for that job, then that argument falls flat. Either the employer needs that position filled, or it doesn't.

      What we usually see is employers whine and whine that there's no one skilled enough to take certain jobs, but then they refuse to take anyone who has applicable experience and could cross-train into that job. So the job goes unfilled, and the employer just whines.

  6. I've Heard of That Machine! by chromatic · · Score: 5, Funny

    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.

    Good for them; Alan Turing believed it too.

    1. Re:I've Heard of That Machine! by nogginthenog · · Score: 4, Funny

      He was right. Until Apple came along.

    2. Re:I've Heard of That Machine! by Chemisor · · Score: 1

      >> 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.
      >
      > Good for them; Alan Turing believed it too.

      And now it is a near reality. Memory and CPU cycles are abundant and do not play much role in slowing down today's programs. Incompetent programmers who don't know how to program IO, or how to make their code small, slow down today's programs. As for virtual machines, there is no reason why the Java VM couldn't be implemented in hardware. It is already partially implemented.

    3. Re:I've Heard of That Machine! by ksheff · · Score: 1
      --
      the good ground has been paved over by suicidal maniacs
    4. Re:I've Heard of That Machine! by The+Master+Control+P · · Score: 1

      And why do the incompetent programmers not have a clue how to do IO right, or use efficient, compact code? It doesn't matter might have gotten As in their algorithms classes; They've never had the point driven home because they've never had to write programs for machines that run less than several billion instructions per second from a store of gigabytes of memory.

    5. Re:I've Heard of That Machine! by adamkennedy · · Score: 1

      And thus the difference between a scientist and an engineer.

      A scientist can work out what can be done, an engineer translates what is known to be possible into a set of limitations (real world and budget) to create a working system.

    6. Re:I've Heard of That Machine! by chromatic · · Score: 1

      And thus the difference between a scientist and an engineer.

      More properly, "The difference between an education heavy on theory and a vocational program."

  7. Eh. by Mongoose+Disciple · · Score: 4, Insightful

    I'm neither surprised by this nor do I necessarily find it something to get up in arms about.

    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.

    1. Re:Eh. by yada21 · · Score: 1

      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.
      Well hello. Likewise there's not time to teach engineer's how to build a sport's stadium, an automotive gearbox, an electric motor and an oil refinery.

      Have you got time to talk to, emm, a Mr Adam Smith calling from 1776?
      --
      I will have a sig when the market demands it.
    2. Re:Eh. by Anonymous Coward · · Score: 0

      Holy Cow,

      4 years, not much time, no wonder ... (Brain Dead)

    3. Re:Eh. by Bender0x7D1 · · Score: 1

      Actually, there is time - it's just that most students decide to skip some of the technical classes for an "easy A" class and there are limits to the number of courses that a program can require students to take.

      Since students are supposed to expand their horizons, most schools have a limit on how many credits can be required by a specific program. This means programs require their "core" classes and then require students to take 3 out of 5, (or however many, in some sort of pattern), of the other courses they offer. When I went to Iowa State for my undergrad in CS, (late 90s), the program was only 2 credits under the university limit of credits you could require in a program, so they did the "groups" thing which gave students some choice, but also made sure they hit specific areas. The current catalog, showing the required courses and the current groups, can be found here. [Warning: PDF]

      So, all the classes you would need to learn "both sides" are generally offered but, by Junior year, most students just want to graduate and get a job, so they take easy courses as their electives instead of more technical, (and usually harder), classes.

      --
      Reading code is like reading the dictionary - you have to read half of it before you can go back and understand it.
    4. Re:Eh. by Mongoose+Disciple · · Score: 1

      Sounds like your undergrad experience was pretty different from mine (UIUC). I didn't really have any flexibility to pick 'easy A' classes per se -- I mean, yes, I did have to take some humanities / social sciences / etc. classes that were generally easier than my math / physics / engineering / CS classes, but I also needed X specified amount of each of those to graduate. All my technical classes had to fall within a fairly narrow set of choices and roughly zero of the ones I took were applicable to what my career has ultimately been.

      (At this point, someone usually makes the argument that all those classes taught problem solving and I solve problems and therefore it's all great. I'm not saying my education was professionally useless, but almost all of it was about on the relevance level of being a Spanish major and then shipping off to Japan for your first job.)

      I was offered a small scholarship to Iowa State back in the day and it's more than possible that I picked the wrong school, not that most of us have any real idea of what we want to do circa junior year of high school when you need to decide. Still, I have to think that being forced to take that many more courses in embedded-ish programming I'd have had a better background in it at that point, not that it's been of much help to me.

    5. Re:Eh. by smellotron · · Score: 1

      All my technical classes had to fall within a fairly narrow set of choices and roughly zero of the ones I took were applicable to what my career has ultimately been.

      That's unfortunate... does that mean you don't write any software now? Almost all of my classes have ended up being useful for something or another (particularly anything involving Ralph Johnson, which AFAIK is something experienced by every UIUC CS major through senior design or software engineering). I also remember having a decent amount of flexibility in the technical elective coursework, but maybe my memory is playing tricks on me.

    6. Re:Eh. by Mongoose+Disciple · · Score: 1

      I do write software now, but probably less than 1% of my career has been spent any closer to the hardware than, say, Java or C#. I'd been programming as a hobby / in earlier school for years, and I can't say I picked up anything appreciable in that department as an undergrad.

      I don't think I had any classes with Ralph Johnson, and I'm positive I had zero exposure to typical software design patterns as an undergrad. (I know, you'd think if anywhere... ) This is in the mid-90s and I'm sure it's a lot different now. If today's students are spending more time with factories and singletons and less time learning to build a 286 out of NAND gates (as computer science students) I think that's a great thing for most of them, unlike the article author.

  8. The problem isn't virtual machines by PhrostyMcByte · · Score: 4, Insightful

    The reason for Java/C#'s popularity isn't because of the VM, it's because of the huge accompanying frameworks that allow for rapid development which is in most cases much more important than efficient cpu/memory usage these days. Build one of these frameworks for C/C++ and you will find it much easier to compete with newer langs.

    1. Re:The problem isn't virtual machines by Creepy+Crawler · · Score: 1

      And if you Linux/Unix platform as it was originally meant for, most of your library work is already done.

      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, so programming there is no surprise.

      And if I require, I can build "bare metal" interfaces. The kernel is open, unlike Windows. That, and building modules for a monolithic-modular kernel is simpler than a microkernel-like arch Windows has.

      --
    2. Re:The problem isn't virtual machines by Anonymous Coward · · Score: 0

      In Linux, we know what does what, so programming there is no surprise. ...said the guy who's never programmed before.

    3. Re:The problem isn't virtual machines by Anonymous Coward · · Score: 0

      Unlike windows this, unlike windows that... did the post you're replying to actually say anything about windows?

    4. Re:The problem isn't virtual machines by ucblockhead · · Score: 1

      C# and Java are inherently easier to code in. This is not due the the framework. It is due to things like the more difficult memory management in C/C++, the more difficult-to-use container classes and the arcane nature of C++ template syntax.

      I'm no Java bigot. Quite the opposite. I've been doing C/C++ for twenty years and have only a year and a half of C# and Java combined. My experience with C# was that I could code four times faster and ended with a program that used four times the memory and ran at a quarter the speed. But you have to give those languages their due...they *are* easier to code in which is, unfortunately, why colleges use them to teach instead of C++.

      --
      The cake is a pie
    5. Re:The problem isn't virtual machines by abigor · · Score: 1

      You sound like you're in high school. You didn't even respond to the parent.

    6. Re:The problem isn't virtual machines by abigor · · Score: 1

      Unfortunately, it also boils down to time to market. As you stated, you code four times faster, and with a decent framework and unit tests, you can get working code out the door four times faster (presumably). To my clients at least, that's worth way more than saving some clock cycles. No one really cares about that stuff unless you're working within some serious hardware limitations. They just want the stuff out there and working and earning. It's all about the bottom line.

    7. Re:The problem isn't virtual machines by aadvancedGIR · · Score: 1

      Except that we are talking about embedded here, the kind of environment where the closest thing to a framework is called the BSP (board support package, basically a set of drivers), which is specific to each variant of chip/board you might encounter. Anyway, most of the times, the requirements are also so specific/tight you end up rewriting your most critical parts over and over anyway.

      Embedded is not the kind of environment where you seek rapid development, it's more the old school mentality of spending weeks to gain a few microseconds. As a seasonned embedded developer, I fully understand it is only appealing to a small fraction of the coders (actually, myself and most of my coworkers are EE doing SW rather than CS).

    8. Re:The problem isn't virtual machines by russotto · · Score: 1

      As you stated, you code four times faster, and with a decent framework and unit tests, you can get working code out the door four times faster (presumably). To my clients at least, that's worth way more than saving some clock cycles. No one really cares about that stuff unless you're working within some serious hardware limitations.


      Or until your quick and inefficient solution is suddenly dealing with absolutely massive quantities of data. That's one of the big problems with optimizing for development time; the increase in machine speed and storage has been more than matched, in some fields, with an increase in data which needs to be processed.
  9. Re:CS != Programming by Detritus · · Score: 1

    An education is no excuse for willful ignorance.

    --
    Mea navis aericumbens anguillis abundat
  10. Digipen by aGreenAgent · · Score: 1

    Digipen (digipen.edu) has a Computer Engineering degree whose first graduating class graduates this year (I am one of them). The whole point of the degree is embedded systems development. Starting sophomore year, we have to develop an embedded system every year, including a functioning operating system for it. We take classes on control systems, state machines, RTOS (we have to make a kernel in 4 weeks), digital signal processing, among others. We are required to use assembly almost exclusively, and are required to learn the assembly language of PIC chips, freescale coldfire, and ARM. Embedded developers are right here :)

    1. Re:Digipen by BSAtHome · · Score: 2, Interesting

      Sorry to be a cynic, but learning these things in classes does not make you an embedded developer. It is the experience in a variety of fields that makes an embedded programmer. For what it is worth, experience in the variety makes you a programmer for nearly all fields.
      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 things are supposed to work and how they hook together (and you finally know how to read data-sheets correctly). It takes years to learn this.

      On the other hand, you have a good chance of getting the hang of it if you practice a lot, whereas the java-code-type-slaves probably never will understand the whole concept of a real embedded system (or what a stable program is in the first place).

    2. Re:Digipen by Rycross · · Score: 1

      It can be hard to get real experience when all the jobs out there want several years of experience in the field. Of course you can do personal projects, but its coin toss whether or not the company will consider that actual experience. Most HR departments I've dealt would consider 1 year of embedded experience, plus 3 years of embedded experience through personal projects as 1 years of "real" experience.

      Maybe I'm just unlucky. :)

    3. Re:Digipen by aGreenAgent · · Score: 1

      I'm not claiming to be an expert in any ISR techniques, but I've written many an ISR (for a college student). Digipen has very few lecture classes in general, we're required to implement things, not learn the theory behind them (as much). As far as being a green, fresh out of college, employee, I think degrees like the one at Digipen will hold up for embedded development.

  11. how many embedded developers are needed? by trb · · Score: 3, Insightful
    I'm an old school UNIX hacker, I worked at Bell Labs in the '70's. These days I hack software that controls robots used for rehab of stroke patients. It's not exactly embedded, since the code runs on an Ubuntu/Xenomai COTS PC, but it's similar in nature to embedded hacking.

    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).

    1. Re:how many embedded developers are needed? by Shados · · Score: 2, Insightful

      Thats what I'm thinking. If you train people too much in niche fields, they're more likely to be attracted to these niche fields... And then you have a market saturation. There's a reason why everytime there's an article about IT jobs, you have a billion CS majors from Slashdot posting about how they can't find one (even though the market is currently starved and needing developers like never before): too many people trained in things that simply don't have a market for. Its nice (and even a must) to know the basics of that stuff...but god damn....

    2. Re:how many embedded developers are needed? by Anonymous Coward · · Score: 0

      say "hacking" more

    3. Re:how many embedded developers are needed? by Anonymous Coward · · Score: 0

      it will be filled (guided by Adam Smith's Invisible Hand).

      Which will be what, after 4 years for an institutional degree in "embedded programming" and 10 years experience because the HR drone has no clue what they're doing?

      Sorry, the "invisible hand" is too busy scratching the rash of irrationality to focus on the market so much.

    4. Re:how many embedded developers are needed? by dougr650 · · Score: 1
      Wow. Apparently we have here a wide generational gap in the use of the word "hacking." I'm assuming you mean "programming" or "engineering." To me, "hacking" has an extremely negative meaning -- something that you do (reluctantly!) to get something working as fast as possible. If someone described himself to me in a job interview as an "embedded hacker," their resume would go straight to the round file.

      I don't care what people do to get a web site up and running, but that style of working just doesn't fly in most of the embedded world. I shudder to think that someone is writing software for medical robots that they would describe as a "hack!"

    5. Re:how many embedded developers are needed? by Lost+Engineer · · Score: 1

      Oh it happens in embedded. The "hacks" just get 5 years of code review and government certs.

    6. Re:how many embedded developers are needed? by Anonymous Coward · · Score: 0

      I think you are confusing the term "kludge" with "hack". A hack can be a kludge, but it's a beautiful one that only a hacker could come up with (or sometimes, appreciate).

      A lot of hacks "cut the gordian knot" in that get something working quickly without following the established rules. But most of the time when you break out of your design restrictions or other rules to get something working quickly, it's not a hack.

    7. Re:how many embedded developers are needed? by Sponge+Bath · · Score: 1

      ...train people too much in niche fields, ...then you have a market saturation.

      Which, of course, makes the PHBs and HR types very happy.

    8. Re:how many embedded developers are needed? by aadvancedGIR · · Score: 1

      Well, while it is a niche market, there are many industries that use some embedded developers. I've personnaly worked in that field for mobile phones, medical imagery equipments and police equipment, and I never had any difficulties finding a job. I also know people doing embedded dev for cars, commercial and military planes, trains, highway toll booths, Visa card readers or home appliance.

      So I would say that there are a lot of niche markets, but it usually requires a different mindset than the regular CS job (we usually work on much smaller modules but need to understand the tiniest details of its implementation), and a fairly different list of competences (I only write very simple C/C++, never use libraries or framework, don't know any protocol but I can tell you how much CPU and stack any of my functions will use on my chip as I write them and if you can call them from an interrupt).

    9. Re:how many embedded developers are needed? by bgat · · Score: 1

      Heh, I could probably keep a dozen of them busy right now!

      Wouldn't be Slashdot if I actually RTFA, but I do know from my own experience that part of the reason students aren't learning embedded concepts is because there aren't a lot of instructors who are willing to go through the pain required to teach them.

      To demonstrate an embedded concept, oftentimes you want to build a working model. And as soon as you bring hardware into the room, there's the chance it could fail and you'd look bad. Or you'd get a question you couldn't answer, or you'd touch something or change one line of code and break the system (frequently because the system was weak in the first place, but that's another subject).

      A lot of profs don't have thick enough skin for that! So they teach Java. :)

      --
      b.g.
    10. Re:how many embedded developers are needed? by Tablizer · · Score: 1

      If there is a need for embedded hackers, it will be filled (guided by Adam Smith's Invisible Hand).

      The "invisible hand" these days is biz lobbyists slipping $$$ into the pockets of congress for H1B's so that they don't have to pay real wages for spot-shortages.

    11. Re:how many embedded developers are needed? by TheLink · · Score: 1

      Why build your own? Start with prebuilt.

      How about a gameboy?

      http://www.loirak.com/gameboy/gbprog.php

      --
    12. Re:how many embedded developers are needed? by Anonymous Coward · · Score: 0

      Wow. You sound like someone I'd never work with. And I'm at the top of the field in terms of rates, and am turning away offers.

      Good luck with your career.

  12. *Raises hand* by Bugs42 · · Score: 2, Informative

    Yo. (Hopefully) future embedded software engineer right here. Currently majoring in Computer Engineering with a CompSci minor. I actually just enrolled in an embedded applications class this semester. Seems like a popular class, too - offered fairly often, and good enrollment each time from what I hear.
    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 are abandoning lower-level programming doesn't mean they all are.

    --
    Programmer: an ingenious device that converts caffeine into code.
  13. From EE, not CS? by SleptThroughClass · · Score: 2, Insightful

    Maybe the Electrical Engineering Department is training device programmers, not the Computer Science Department.

    1. Re:From EE, not CS? by Creepy+Crawler · · Score: 2, Informative

      That's right. EE are the teachers of embedded discipline. We have to know algorithms from CS, pure mathematics (enough for a minor at least), physics of light/energy/magnetism (as like math, enough for a minor), circuit design, OS design in theory and practicality, and a bunch of other things.

      All together, that's what an EE is. If it's not on fire, we can program it ;D

      --
    2. Re:From EE, not CS? by Anonymous Coward · · Score: 0

      > Maybe the Electrical Engineering Department is training device programmers, > not the Computer Science Department. Why would the EE departmertment be training CS? A department ought to be able to train itself, I reckon.

    3. Re:From EE, not CS? by Anonymous Coward · · Score: 0

      If it's not on fire, we can program it

      Wuss.

      Kids these days.

      "Oooh, my keyboard's on fire. Ooooh nooooo, my flesh is searing. Waaahwaaaaaahwahhh"

    4. Re:From EE, not CS? by Anonymous Coward · · Score: 0

      Well, he didn't say it's rocket science.

    5. Re:From EE, not CS? by Lally+Singh · · Score: 1

      Yeah, it's called Computer Engineering. Half EE and half CS. Spend as much time learning C/C++ as you do chip layout.

      CS got big enough that it's starting to specialize. Is that such a surprise to people? Somehow it came back to a dick measuring contest. ugh.

      --
      Care about electronic freedom? Consider donating to the EFF!
    6. Re:From EE, not CS? by Anonymous Coward · · Score: 0

      Kindly remind us all once again about the balance of EE:CS you had to employ during your alleged but highly improbable time at NASA or DARPA on your top secret national intelligence assignments.. Or is the real issue here your 'dick size' as you yourself put it?

      Don't worry I don't expect you to answer this post. Everyone can see a pattern here. You want to falsify your CV and publish it to the world - fine. But then when you post here on Slashdot and someone asks your for corroborating evidence e.g. some code to prove your claimed expertise, you crap yourself.

    7. Re:From EE, not CS? by TemporalBeing · · Score: 1

      All together, that's what an EE is. If it's not on fire, we can program it ;D Oh come on....even if it is on fire, we can program it. The fire just makes it more fun. ;-)
      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    8. Re:From EE, not CS? by Anonymous Coward · · Score: 0

      "The use of anthropomorphic terminology when dealing with computing systems is a symptom of professional immaturity. "-- Edsger Dijkstra

  14. I'm right here by nategoose · · Score: 1

    I have been thinking this for a long time. I finally managed to get a job doing embedded programming, but I did manage to get a lot of preparation for it in my undergraduate CS courses -- particularly in my Compiler class and my Operating Systems class. We also had an assembly class (16 bit x68) and a computer architecture class so they helped some, but less than you'd think. My main source of knowledge has been my curiosity of how things worked under the hood and looking into embedded programming on my own. A lot of embedded programmers are electrical engineers, but engineers tend to program a certain way and use the 'everything is a nail' approach and make bad use of the tools they work with when coding. CS people tend to make their own mistakes when doing embedded programming, and both groups tend to not understand what compilers can and cannot do to produce better code.

  15. Need Embedded Developer? by Anonymous Coward · · Score: 0

    If you're a company looking for a skilled embedded developer, reply to this with the name and contact information for your company. I'll give you a call, and if you're offering more than I make now, I'll consider giving you an interview.

  16. I've had enough of java by ampathee · · Score: 1

    I taught myself to code on an Amstrad CPC 6128 (128k of ram in two 64k banks, z80a processor - so not exactly "embedded" .. but optimization was important), but since then it's been VB, Java, and Delphi.

    I'd love to get my teeth into something embedded. But what? Can anyone recommend a fun device to play with?

    1. Re:I've had enough of java by jim.hansson · · Score: 1
      --
      preview button, my computer does't have any preview button
    2. Re:I've had enough of java by CaptainGoon · · Score: 1

      I saw this on Digg.com the other day: http://www.pyroelectro.com/projects/ir_radar/index.html/

    3. Re:I've had enough of java by solafide · · Score: 1

      Gumstix. The eBox, if you want something much, much meatier for $300ish.

    4. Re:I've had enough of java by jim.hansson · · Score: 1

      thanks for that link that lego thing looked realy interesting http://www.pyroelectro.com/2008/02/03/lego-rubiks-cube-solver/

      --
      preview button, my computer does't have any preview button
    5. Re:I've had enough of java by LowSNR · · Score: 1

      Agreed! AVR's are great little parts and are easy to get started working on. I believe Eclipse even has a plugin to use AVR-GCC and AVR libc for programming.

    6. Re:I've had enough of java by sjames · · Score: 1

      If you want a dirt cheap platform to play with, get a WRT54GL or similar AP and play with that.

    7. Re:I've had enough of java by azgard · · Score: 1

      Not exactly embedded recommendation, but I have recently purchased Xilinx Spartan starter kit - FPGA board (150$). I wanted to learn some VHDL, and so far I am happy with it (although the learning curve is pretty steep, if you have never done anything hardware related, but can be done if you are determined enough I think). You even get a small processor core (Picoblaze) with it for free. You can also download the Webpack ISE (the synthesis tool for their FPGA) for free from Xilinx and try it out (although it's a bit useless without the board). It is as close to actual hardware as you can get without soldering. For me it was more fun to program VHDL than just plain assembly.

  17. Re:CS != Programming by gangien · · Score: 0

    "An education is no excuse for willful ignorance."

    ignorance of what? DO you think it's the responsibility of CS professors to educate students on every possible application of CS principles? No. Does every CS student want to become an embedded programmer? No. Does every student even want to become a programmer? No.

    Programming is a tool that's used in Computer Science, not what's learned.

  18. Where? by taniwha · · Score: 1
  19. Its not gone "enough" by Shados · · Score: 1
    From the summary:

    '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
    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 code a minimalistic kernel, or do assembly, than it is to find someone who was trained in software architecture, design pattern, and development techniques, which are all required in the vast majority of jobs that CS majors are hired from (even if CS is probably not the right program for these jobs, its the reality of the world we live in).

    Its important that there is SOME background taught for the more niche jobs (lets face it: not that many people end up working in these fields, proportionaly speaking, even if you just consider the top tiers of jobs to filter out people without degrees and/or the poorly self taught ones), a lot even, but it sure is a heck of a lot easier to find someone who understands the code of an embedded device's kernel, than it is to find someone who knows the difference between Bridge and Strategy and State patterns.).

    More Niche fields should be in optional classes, and more mainstream (yet still theoric. Don't go teaching technology specifics...and Java is good to teach high level theory in a language agnostic manner, if done well) in the main classes... As it is now, you have people who are forced to take classes that teach things they'll never even hear about again, yet many colleges don't even have (not even optional!!) a class that touch relational model theory. Thats sad.
  20. Re:CS != Programming by nategoose · · Score: 1

    As stated by every Intro to Algorithms prof, you can optimize something to death with low level and hard to follow code, but if your algorithm sucks you've wasted your time. Are vo-tech ASM monkeys really gonna know how to do algorithm analysis and design? I could probably write bubble sort in 4 x86 instructions that would out preform all other bubble sorts on the same system, but I can also mathematically prove that most every other sort in any other language is better for large sets of randomly sorted data.

  21. They all went to the jobs that would have them. by 91degrees · · Score: 1

    I can do embedded development. I've a little experience with assembler on about half a dozen platforms, and know most of the quirks of C. A friend of mine is 10 years older than me. He grew up in an era when everything on a personal computer was essentially the same skill set. He knew at least as much as me 10 years before I graduated, and has been learning ever since. When I graduated, all the embedded developer jobs went to him and others like him. There were a lot more people for these jobs than there were applicants.

    But the embedded developers are getting older. And they're leaving the field, either going into management or retiring from the field. The industry didn't think ahead. All the promising graduates went in different directions because they didn't have the option. I could have gone into the field if anyone would have had me. I would have been seen as highly skilled in embedded systems. Instead I'm seen as highly skilled in the field I chose. Everyone else the same age as me is in the same position. We all have skills in areas that don't map well to embedded development.

    Nobody leaves university with the skills the industry needs. They all leave with the potential to develop these skills. The industry hasn't been developing these skills. It needs to change. Embedded software development companies need to hire graduates just for the sake of hiring graduates. You don't need to start when they're at university.

  22. Qt4? by Anonymous Coward · · Score: 0

    Build one of these frameworks for C/C++ and you will find it much easier to compete with newer langs. Qt4? Supports X11, Windows and OS X quite nicely from what I've heard.
    1. Re:Qt4? by ciggieposeur · · Score: 1

      Qt4? Supports X11, Windows and OS X quite nicely from what I've heard.

      Qt4 is nice but seems overkill for a lot of embedded systems. I'd pick Turbo Vision instead. Runs on Linux console, X11, ncurses, Windows, and DOS.

    2. Re:Qt4? by TheRealMindChild · · Score: 1

      You must be daft. Apparently you are to anxious to plug your own agenda rather than actually listening. Qtopia has been around longer than you obviously realize. I ran it on my 200 mhz ARM Zaurus PDA... fast/complete as you could want.

      --

      "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
    3. Re:Qt4? by ciggieposeur · · Score: 1

      Your embedded system is a 200MHz ARM that can be recharged on the wall every few days as necessary. Mine is a 100MHz Zf86 that depends exclusively on solar power, has no VGA card at all, has only a 115200 baud serial port and 11 megabit wireless for communication, and would use up a significant chunk of its 32MB RAM just loading the client-side X11 libraries. Hell, /usr/lib/libQtGui.so.4.2.1 (stripped) by itsef is 7 megabytes. Turbo Vision OTOH (which BTW I am NOT a developer for, I just use it sometimes) is under a megabyte and can be used over ssh and serial port.

  23. Re:CS != Programming by gatkinso · · Score: 1

    Yet CS is the department in which programming is taught. Hence the tendency for one to equate the two (CS and application programming).

    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.

    --
    I am very small, utmostly microscopic.
  24. Programming today's desktops? by pdh11 · · Score: 2, 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

    1. Re:Programming today's desktops? by Anonymous Coward · · Score: 0

      I've seen medium-scale software architected by the toaster contingent: it wasn't pretty.
      Yeah, the Cylons aren't great fighter pilots either.
    2. Re:Programming today's desktops? by Samrobb · · Score: 2, Insightful

      Perhaps tomorrow's embedded developers are programming today's desktops.

      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 camp that's really talking about dedicated-purpose desktop systems in a compact form factor.

      The point is... there used to be a pretty well defined spectrum of what "embedded" meant. Economies of scale and new technologies have started introducing gaps into that spectrum, so there's not a single continuous spread of processors, memory and storage that qualifies as "embedded". When you can take a desktop system from 1995 and shrink it down into something like a Hammer board or a Gumstix... it may be small, it may be compact, it may be used for a dedicated purpose; but practically, you're developing on something that has massively superior capabilities when compared to the traditional idea of an embedded system. You are, in fact, developing for a desktop system - albeit a desktop system in a small package with some unusual constraints.

      --
      "Great men are not always wise: neither do the aged understand judgement." Job 32:9
    3. Re:Programming today's desktops? by sjames · · Score: 1

      Almost everyone is focusing on the small memory and storage of embedded but leaving out the other key part. An embedded device has no rescue disk. On the production device, you turn it on and it either gets at least to a useful state for diagnostics and firmware reflash or it's a paperweight. When developing, the dev environment may include JTAG, serial, various debugging interfaces, perhaps a dev board with video (sometimes), but in other cases you have a debugging port (more or less serial) and a romulator and that's it. If you're involved in bring-up, you'll need to know a fair amount about hardware as well. It may be necessary to work with the hardware engineers to get the last bugs out of the design.

      I fully agree with your point as well. There's a lot more variability in resources between various embedded devices than in PCs. Different platform constraints call for different compromises between ease/speed of development, maintainability, compactness, and speed.

    4. Re:Programming today's desktops? by RotsiserMho · · Score: 1

      Hey buddy, I don't know what kind of lousy old-school EEs you've been working with, but over half my EE curriculum was spent on software and system design. We had to design the thing from the ground up, starting with requirements, then specifying features and I/O, then laying out a plan for writing the code using flowcharts, state machine diagrams, and (in one case) even UML diagrams. Only after that did we code anything. I'd say there's a lot more qualified EEs out there doing embedded development than CS majors and those programming on desktops. These days the desktop is so far removed from embedded devices (other than things with USB connections) that it's a completely different skill set. You just can't appreciate having all of 256KB of RAM and 8MHz of processing power when you have a dual-core system with 2 GB of memory.

    5. Re:Programming today's desktops? by Anonymous Coward · · Score: 0

      Just so! The two big things in current embedded systems seem to be:

              1) For REALLY small stuff, something like a Z80. Most 8-bits of the 80s used a 6502, but Z80 is similar in principle. This would be the real hard-core embedded stuff that really will use lots of assembly.

                2) A foo-CPU (ARM, MIPS, maybe others -- doesn't matter to the programmer too much in this scenario, they mostly just develop with GCC) with 8-32MB of ROM and 8-32MB of RAM, running some Linux or one of a few other embedded OSes that are more or less POSIX. To me this seems easy, since I started with Linux on a 386sx16, 8MB RAM, 40MB hard disk.. slackware. For one of these, it's essentially busybox, dietlibc if glibc is too big, and just putting on ONLY what you need. Personally I'm seriously considering finding work with an embedded systems developer of this type, as it seems even this is getting to be a lost art 8-).

  25. They're embed by Anonymous Coward · · Score: 0

    lol

  26. Java is taking away embedded developers? by Anonymous Coward · · Score: 0

    Sorry, would that be the Java that was originally conceived for set-top boxes and is ubiquitous on mobile phones? That Java? If anything, I would say that Java has done more for embedded development than any other language in the past decade or so.

    1. Re:Java is taking away embedded developers? by gatkinso · · Score: 1

      "set-top boxes and is ubiquitous on mobile phones"

      Neither use you cite is a true embedded application.

      --
      I am very small, utmostly microscopic.
    2. Re:Java is taking away embedded developers? by Anonymous Coward · · Score: 0
  27. Re:CS != Programming by profplump · · Score: 0

    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.

    While I don't entirely disagree I think you're discounting the huge amount of low-complexity programming work there is to be done, where you can make good use of code monkeys who don't really understand the project and/or couldn't design an effective solution on their own.

    Try this plan:
    1. Hire 1 good programmer
    2. Hire 1 good analyst
    3. Hire 1 good Q/Aer
    4. Have 1 and 2 work together to produce comprehensive, prescriptive specifications of the system
    5. Have 2 and 3 work together to produce a comprehensive, prescriptive test suite
    6. Hire 6 code monkeys who can read the specs -- which will include descriptions of any complicated algorithms -- to code the thing
    7. Hire 6 Q/A monkeys who can read the specs -- which will include acceptance parameters -- to test the thing

    That's a team of 15 people, half of the coders, and only 1 of them who really needs to understand what's going on, or to be able to design complicated algorithms. There are certainly limitations to the kind of coding that can be done on such a team, but there are lot of things such a team *can* do, and can do quickly and cost effectively.

  28. Where - The interweb by ChaseTec · · Score: 1

    There is not a huge business need for this type of programming knowledge so guess what - it's not taught as much in school. There are still plenty of people interested in this stuff. We regularly see articles about developers from all over the world working on the Linux kernel. Doesn't that require knowledge of computer architecture, assembly and C programming skills? The OSDev scene is full of people like this (see my homepage). I'm sure there are lots of embedded hobbyists that have regular codding jobs if you look for them. I can code in x86 asm and C but at the end of the week it's usually Java that pays the bills.

    --
    My Hello World is 512 bytes. But it's also a valid Fat12 boot sector, Fat12 file reader, and Pmode routine.
  29. Entry Level Positions? by Rycross · · Score: 1

    I certainly would have liked to do embedded programming. I really enjoyed my OS and Embedded Systems classes in college. As a result, when I was in the market for a new job, I was specifically looking for embedded systems work.

    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 that it matters anyway. My first job was doing .Net applications. Now, if I look for a new job, the only companies that would call me back are .Net jobs, with maybe a Java job once in a while. It doesn't matter how proficient in C++ I am, it seems.

    I'd like to do some embedded projects personally, but I wonder if any employers would care. It always seems like the HR goons only care about professional experience, unless your informal experience and personal projects catch the eyes of a techie.

    What can I do? I understand that they need qualified people, but its not as if all of us CS guys can't work outside of a VM.

    1. Re:Entry Level Positions? by Anonymous Coward · · Score: 0

      What can I do?
      Follow Sun Tzu's advice: Lie. (Deception is the most important tool in the Art of War)

      If you've got the goods and you're really (truly) qualified, they'll forgive you. If you can't/don't hack it, you'll be embarassed and tossed out on your butt, and the company will learn to screen it's employees better.

      Lying: The win-win solution.
    2. Re:Entry Level Positions? by gatkinso · · Score: 1

      Forget that A/C fool down below. My advice: learn as much as you can as a side hobby. Have some code to take in to show them. Know the toolkits and environments.

      Show them that not only are you willing to learn, but that you have already taking care of the "Hello World" stage and are moving past the trivial. Come equipped with real questions about your side project if you are stuck on something.

      Then, creatively craft a resume around these skills (but again don;t lie). be honest. Tell them you are willing to work like a dog but are still learning, and be willing to take a 10-15% pay hit if need be but a shrewd negotiator should be able to not have to.

      --
      I am very small, utmostly microscopic.
  30. Re:CS != Programming by gangien · · Score: 1

    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.

    Yeah sure, that's why most CS departments I've heard about, pretty much required a minor in math.

    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.

    There's a lot of CS that came before computers. It was just called math. I really don't know how useless it would or wouldn't be without computers. But whether it's useful or not, isn't really relevant to what CS is.

  31. Re:CS != Programming by trolltalk.com · · Score: 1

    Is it really that hard to understand? Tell people to go get vocational training if they want ASM monkeys.

    You sound bitter. Can't write assembler?

  32. Re:CS != Programming by debatem1 · · Score: 3, Funny

    Yet I wonder - what is computer science without the ability to actually program the computer? Consulting.
  33. Re:CS != Programming by poot_rootbeer · · Score: 1

    Tell people to go get vocational training if they want ASM monkeys.

    This is a troll, right? A subtle reversal of the old "tell people to go get vocational training if they want Java monkeys" line?

    It should be self-evident that it takes more knowledge, skill, and ingenuity to write a correct program in a low-level language, and have it run sufficiently fast on underpowered hardware, than it is to write a correct program in a high-level language on leading-edge hardware.

  34. Re:There are not many Klingon programmers graduati by springbox · · Score: 1

    Or anyone who took time to learn C properly. Doing some assembly wouldn't hurt either.

  35. My exact problem by SeeManRun · · Score: 1

    I am currently trying to get into this kind of development, but it seems like all postings for such jobs want tons of experience. My university clearly failed me in this department, so it seems like the only option is to find some router and write a custom firmware for it or do some other kind of embedded program. The only problem with this is I fathom it will take quite some time to get the necessary skills to work at it professionally, and I would imagine one would lose interest in a year. Takes experience to get experience it seems.

  36. Re:CS != Programming by nogginthenog · · Score: 1

    On the flip side unless you fully understand the hardware how can you write good optimised C code? In C you might use a long (assume long is 32 bits for now!) to hold a counter. But the assembler programmer will know to stay clear of longs because he's programming a 16 bit CPU, or maybe longs take a performance hit.

  37. Here is one by gatkinso · · Score: 1

    After 17 years of writing application code - I just got sick and tired of sockets, threads, and shitty toolkits like MFC, GTK, and Qt.

    Not that these constructs will ever truely disappear from my life, but christ that got old.

    So I took the plunge, dusted off my (very dated) assember and architecture texts, revisted a couple of device drivers I wrote in the course of getting my masters, then convinced an employer to hire me at my current salary level to write device drivers and learn FPGA programming (Verilog).

    They said "OK - be a *very* quick learner and we will keep you for longer than four months."

    Sounds like a deal to me.

    --
    I am very small, utmostly microscopic.
  38. Where are the jobs? by Stevecrox · · Score: 4, Informative

    As someone who finished whis BEng in Computer Engineering this year I have to ask, where are the embedded jobs?

    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.

    1. Re:Where are the jobs? by Shados · · Score: 1

      You have to realise how recruiting goes... Aside for the college "Job fairs", jobs that can be offered directly to students won't be posted. The jobs that get posted are the ones that cannot be offered directly to a student. Simple as that.

      So there probably were a lot of companies "willing to invest in students". They just contacted the students directly looking at their resumes, hired them up, and you never heard about it... Happens all the time.

    2. Re:Where are the jobs? by hungjar · · Score: 1

      You're having a hard time finding a job because of what's happened to the education system. It takes roughly two years to learn via on-the-job-training what the university should have been teaching you in the first place. It's a cycle that needs to be broken before it can get better. That's why the original article has a call to action of the Gov't, industry groups, and the universities to get together and discuss how to fix this before it's too late for US computer technology.

    3. Re:Where are the jobs? by fliptout · · Score: 1

      I'm pretty much in the same boat, though I have been out of school for 5 years. I do have some embedded experience under my belt, but typically companies need somebody with 10 years of experience. The biggest problem I have seen is that companies with a need for embedded people are totally unwilling to invest in budding embedded engineers. So, here I am writing Labview code for a living and coding for Pics and ARM7s in my spare time.

      --
      A witty saying proves you are wittier than the next guy.
    4. Re:Where are the jobs? by neomorph · · Score: 1

      Where do you live? I visit companies all over the U.S. doing embedded, and a lot of them are desperate for embedded developers. I saw a poster at a company just the other day offering a $10K bounty to any employee that finds one.

      Right now for embedded jobs, defense is where it is at. They are also most likely to accept entry-level folks. That's where I got my start in embedded.

      Actually I'm looking for a sort-of (low-level PC hardware) embedded developer right now. :)

      I really don't understand the arguments about embedded being a niche. Embedded software is a $5 billion business, more or less. It ain't COBOL, but there are enough jobs in enough geographic areas that you won't have to worry about changing careers for the forseeable future. And if you learned C in the late 80s, you could still be using the same language now, 20 years later, unlike the eternal rate race of PHP/C#/.Net/Ruby/Python/flavor of the day.

  39. Q: Where Are Tomorrow's Embedded Developers? by dvase · · Score: 2, Funny

    A: Sitting in Electrical Engineering classes, most likely in India.

  40. Where does the divide start? by jaminJay · · Score: 1

    At the University I attend, all of the embedded-related subjects are Microelectronics Engineering controlled, and all of the Software Engineering subjects are controlled by the Engineering-oriented segment of Information Technology. They used to be two separate schools borrowing some subjects from one another and complaining how the other areas that each teaches aren't applicable enough (Software Engineering in Micro is not real Software Engineering, Programming in IT is too high-level for Micro applications, etc.), now they are in the 'Engineering' school.

    This divide is propagated by the students, with most Micro students being lacklustre coders (from disinterest), and most Software students not giving a fig about the hardware. There are very few people doing a double-degree with Software and Micro, not just because it's hard, but because the culture clashes. A lot of people I've met in Software, however, started in Micro (myself included).

    Marry this with the fact that intake of students tends to be in the Business-related degrees, the number of IT and Electronics professionals is dropping and the schools themselves are beginning to struggle.

    The problem, as I see it, is one of glamour and financial success. Students are being wooed into the industries where the money is as being financially successful allows for a highly glamourous lifestyle and therefore required for 'sane' living. Engineers are once again being typified as dwelling in the basement of the company, working for schekels and getting no recognition.

    This shows that the major problem, as ever, is a social one. IT is once again unpopular for the money and a lot of medium-large size companies (where most graduates end up) still consider IT in the realm of making sure Windows Server and Office are installed and running properly for those people who do the 'real' work. This is what I think students are currently seeing and they are not interested in being the mechanics of the information age.

    So, where are the embedded developers? Well, I'm on my way (I hope), but I don't know of that many others following suit for exactly the reasons above (and the embedded courses tending to be post-graduate isn't helping, either).

    </rant>

    jaminJay "I bet someone guesses which Uni. I'm at..."

    --
    Leela: "Is all the work done by children?" Alien: "No, not the whipping."
  41. I'd be happy to. by Anonymous Coward · · Score: 0

    Jeff Bonhag
    35 Oak St.
    Rhinebeck, NY

  42. Re:CS != Programming by debatem1 · · Score: 1

    I disagree. It may take more time, but I don't think that it takes any more skill or ingenuity, seeing as how the conversions between high-level thought processes and low-level code are pretty much mechanical. It does of course require a different knowledge set, but that knowledge set isn't necessarily harder to obtain. In the end, this argument strikes me as one more salvo in the endless 'my-language-is-better' flamewar, subtly hamstrung with the fallacy that programming is mostly about syntax.

  43. Where I came from by b0101101001010000 · · Score: 1

    I am an embedded system engineer. I have a Bachelors in Electrical and Computer Engineering and a Masters in Electrical Engineering. I spent my last years in school in the infinitely useful embedded systems program at the University of Colorado, taking among other classes, Real-Time Embedded Systems http://ece.colorado.edu/~ecen5623/ under the insightful guidance of Dr. Sam Siewert. I learned what an embedded systems engineer was from him. As I continue to develop and meet other embedded system engineers I notice that many embedded system engineers have similar "round about" trajectories into the discipline. A common refrain is, "my company needed this little micro-controller programmed to do ... and I volunteered." What I'm getting at is embedded systems engineers come from a diverse background and seemed to eventually gravitate into doing the profession full time. The really good ones keep honing and developing their CS skills.

  44. Re:CS != Programming by nategoose · · Score: 1

    And that's why I hate when GCC complains when I'm using an unsigned char as an array index on an AVR.

  45. The tomorrow people by bghost4 · · Score: 1

    The embedded developers are out there, just go to uProcessor forums, These are all the different people that may be the embedded developers of tomorrow. Not many people want to program in Assembler/C anymore, its much easier to use Perl/Ruby/Java/C#...(insert abstracted language here) that takes all the Hardware out of the picture and just leaves the software problems at hand. In a sense why would any developer(software) want to have to deal with the low level mechanics/Memory management/Registers... anyway when most platforms have a high level language that lets them abstract the hardware so They don't have to work with it. Its much easier to say Vector myVector = new Vector() than to try and figure out how much memory they are going to need for something, then allocate it on the stack, then use pointers null characters and other low level "voodoo". And as for colleges teaching about infinite memory and cpu cycles, why not. I'm not saying you shouldn't be aware of the limitations and advantages of your hardware platform, but the computer industry has made such leaps and bounds as far as hardware is concerned every year that its not easy to pick what constraints you should conform to. in the 90's 4Gigs of ram was unheard of for a end user's PC, even a power user of any sorts and was most likely limited to mainframes if even they had that much. The embedded community is pretty much the same way, why try and write your stuff and cram it into a 8 bit platform when you can have dual Arm cores with media processing capabilities in hardware. And hell even some GPS chipsets have a python interface in them! and Java runs on most embedded platforms now too. it seems to me, we carry in our pockets the technology of 5-10 years ago. 400Mhz X-Scale processors, Multi processor embedded devices. that being said, Imagine what you could process on an AMD64X2 machine/Core2 Duo if you had no OS overhead and were writing all of your software in Assembly. Well a lil off topic, oh well, could have been worse :)

  46. Happened to me by krog · · Score: 1

    After getting a BSEE, I looked for four months for an embedded job which didn't somehow involve blowing up dark-skinned people. No dice. Everywhere, I got punted for having no work experience.

    Then I decided to go back to software, and got two jobs within a week. I chose the one a 15min bike ride from my house. The salary is about $20,000 more than I'd be making in EE.

    This is why I am not an embedded programmer.

  47. Re:CS != Programming by John+Courtland · · Score: 2, Insightful

    In your example, the Bus Factor is 1. Dangerous.

    --
    Slashdot is proof that Sturgeon's Law applies to mankind.
  48. On getting an embedded job... by Dragoness+Eclectic · · Score: 1

    I currently have an embedded Linux job. Note that I have over 25 years of programming experience in general, though not so much in embedded systems specifically. I'd gotten rather badly pigeon-holed as a Windows programmer in the last decade because my last several jobs were Windows programming--very frustrating, because I detest programming in Windows and very much wanted a Linux/Unix/etc programming job. Unfortunately, when your 20 year-old jobs say System V Unix and your 5 year-old jobs on the resume say Windows, they offer you Windows jobs...

    I managed to land my current job because of two things: I have 25 years of programming experience in C/C++, and because I tinker heavily with Linux as a hobby. I got into Linux From Scratch for a while because I was sick of SuSE Linux's aggressive handholding, and wanted to get to know my system all the way down at the inittab level, like I did when I was working with System V supermicros way back when. Thanks to Linux From Scratch, I was up on shell scripting, compiling entire toolchains and systems from source code, and knew how init scripts worked, which got me the job.

    Okay, having learned Python to maintain a mapping utility for a certain MMORPG also helped clinch the deal, since the internal testing website is written in Python and Perl, and part of my job is helping maintain it.

    I'm still amused that I got the best job I've had in 15 years because of my hobbies.

    --
    ---dragoness
    1. Re:On getting an embedded job... by Shados · · Score: 1

      Thats actually fairly common. I mean, let say I want to hire someone for Ruby on Rails or ASP.NET... they SERIOUSLY don't teach that in any college in the mainstream...so if you want someone with experience with it, what are your options?

      Only ones i can think of is:

      A) The person was an XYZ programmer, and got hired as a RoR or ASP.NET dev because of extensive general development experience, or experience in the field...so they got experience in those technologies from scratch in the workplace.... AND then lost that job, or quit, or something.... not really common.

      B) the person learnt RoR or ASP.NET in their spare time as a hobby.

      Thats really it... so same deal with your case. The skillset you described isn't exactly the kind of things people do everyday at work or in school...

  49. Re:CS != Programming by dgatwood · · Score: 1

    Yeah sure, that's why most CS departments I've heard about, pretty much required a minor in math.

    Maybe it used to be that way. For all I know, it might still be that way in a few places. It's pretty silly for a school to expect that of their students, though, as that's not what the industry needs. You should pick math as a minor if that's something you really love. There are always plenty of jobs for people in various math-centric areas like DSP, and if that's your thing, more power to you, but don't pick it because someone expects you to do so. That's just dumb.

    While computers can do math very quickly, computer programming and mathematics are still largely unrelated fields. You can program computers to do heavy duty math, and this is frequently done in some areas like audio and video compression, DSP, graphics compositing, 3D animation (writing the apps, not using them to create models and stuff), and other specialized fields. However, even for people working on software that does heavy math, there are still almost always additional developers working on non-math parts of the project---UI designers and coders, file format engineers, etc.

    Once you look beyond the limited projects that are heavily math-centric, the math focus falls off fairly rapidly. For every one person who does that, there are probably several thousand software engineers working on web apps and CGI, several thousand working on large database systems, hundreds working in Cobol for banks, a few hundred working on miscellaneous open source tools, fifty on productivity apps, ten people working on operating systems, etc. (I'm pulling these numbers out of my backside, but you get my point.)

    One thing I've noticed working in the industry is that the math background is heavy among older folks, but not nearly so much among recent college grads. That's a good thing. Having a more diverse workforce ensures that you are able to rapidly adapt to new demands, enables you to more easily come up with solutions to problems because you aren't all looking at it from a single perspective, and so on.

    Further, IMHO, having a seemingly unrelated minor or double major opens up a lot of doors that you otherwise wouldn't have. A lot of people in CS have double majors or minors in biology, chemistry, etc. and go on to work in biotech firms. A lot of people in CS have a background in music (the two areas of study are fairly strongly correlated from what I've seen) and go on to work in related areas. And so on.

    Indeed, the whole point of a minor (or a double major if you are so inclined) is to provide additional breadth beyond the skill set of your major---to open your eyes to new possibilities of convergence of multiple fields. Nowhere is that more important than in computer science. Computers have permeated almost every aspect of our lives. Once computers moved beyond being used as giant calculators and started being used in the home, on people's work desktops, etc., we found a growing need for people with a deep understanding of both computers and a myriad of other areas. Pushing people to choose a math minor fails to take this into account, and results in an overly homogeneous workforce that is highly skilled at doing only a subset of what is needed. In the long run, you'll find that such policies are short-sighted.

    --

    Check out my sci-fi/humor trilogy at PatriotsBooks.

  50. Entry level by LordMyren · · Score: 1

    I think a large part of the problem is the job market. Most job postings go by the "X years of Y" rigamaroll with very few people looking to hire what they should be looking for: talented new blood. I am one of many many computer engineers I know who opted to go into programming rather than suck down some totally shit entry level job for lack of on the job experience, even though I've been building microcontroller systems for years.

    I've heard outside the US the embedded market is a lot less corporate and a lot more about small teams of elite engineers. The US does not have this culture anymore. Bootstrapping is left to people who've already made bank. This is damning us.

    The amazingly sweet thing is that embedded is getting rediculously easier. System on chips have just about everything onboard you'd need for most embedded computers (some PHY, memory, connectors aside) and while more serial and p2p busses require stricter timing, the availability of cheap high quality fabs and the ability to forgoe routing a wide pci bus snaking from chip to chip to chip, well, I can only wonder how much longer the corporate model will endure.

    All thats left is the availability of small volume runs packaging and I think the scene will be in "upheaval" mode.

  51. Lack of coursework in colleges by Darkn3ss · · Score: 2, Interesting

    I agree, however for a much different reason. I feel that C++, *.NET, Java, etc. is the entire reason that computers need to be consistently faster and have more cores. The reason, being Object Oriented programming. The companies putting this crappy software out (all of the big names go here, with etc. at the end) don't have a clue how to make things efficient, they simply are paid to get the programs out the door as quick as possible, regardless of the performance. Embedded Engineers have to do things a completely different way. We don't have more time than perhaps 25-50 MHz to do everything that we need to accomplish, and with that time, we have to accomplish everything that a PC programmer takes for granted with an OS! I graduated as an Electronic Engineer. During my summer internships, I worked closely with an embedded developer with a background in CS. He didn't really understand the hardware like the Electronics Engineer does, but he was able to make it do what he wanted. During my time there, he convinced me to pick up a minor in CS. Because of my graduating, and my realizing after a year of attempting a CS minor, that I learned everything I needed to be an Embedded Engineer in my EE studies, so I decided to not finish up the minor and just graduate normally as an EE. Being hired on full-time, they paired me up with my original mentor's replacement. He was the type that belonged in a large team, and he would screw up his section of the project and take 3 weeks to update something that a competent person could do in 3 days, but the company didn't realize it until I started working closely with him, and went to the boss-man and told him that this fellow was holding me back. Just before he was going to get fired, he up and quit on me! I was upset, but he really didn't have a clue. Now, instead of the Embedded Engineer being the bottleneck, the Electronics Designer is the bottleneck because I work closely with him to write all of his test-software, which quickly turns into the finished product. However...there aren't that many people that I knew from college that wanted to go into this field. They all wanted to become GAME PROGRAMMERS! However, when they were seniors and job-searching, they realized that they were going to be developing desktop applications for the rest of their lives. The best programs I've seen for Embedded Engineers thus far has been at the local community colleges with tech degrees. Good luck finding them when you need them!

    1. Re:Lack of coursework in colleges by try_anything · · Score: 1

      I feel that C++, *.NET, Java, etc. is the entire reason that computers need to be consistently faster and have more cores.
      C++? That's confusing. C++ is the language of choice for people worried about low-level efficiency. You can write plain C in C++, if needed. As for Java and .NET: Nah, not really. Garbage-collected VM language platforms like Java and .NET perform quite well CPU-wise compared to C. What they need is more memory, not more cores.

      they simply are paid to get the programs out the door as quick as possible, regardless of the performance. Embedded Engineers have to do things a completely different way.
      Not true at all. Embedded programmers and Java server programmers both have schedule pressure and performance requirements determined by business considerations. Embedded systems occasionally get hustled out the door with bugs and crappy performance, just like non-embedded systems. Non-embedded systems occasionally get withheld from the market and sent back to development because of unacceptable performance, just like embedded systems.

      The reason, being Object Oriented programming.
      OO means a lot of things to a lot of people. Perhaps to you it means expensive runtime systems, dynamic everything, extensive use of the heap, and architecture-astronaut designs? In C++, OO is just a way of organizing source code. The resulting object code is just as fast, perhaps faster in some cases when optimized vtable lookups replace C idioms for doing the same thing. There's nothing inherently slow or bloated about object-oriented programming, if only because the term encompasses such a wide variety of programming practices.

      I think by "Object Oriented Programming" and "C++, *.NET, Java" you mean "programmers who overengineer their designs." In that case, then you're right, embedded programming is one place where overengineering is deadly. In server and applications development, a certain amount of overengineering is rational, especially when you don't have an agile development process. In embedded programming (at least in my experience) a successful product release does not result in the deluge of feature requests that are the real reason for "bloated" software. A programmer who assumes that version 1.1 will have twenty times as many features as version 1.0 will design in a bunch of hooks and architecture so that version 1.1 can be released in a timely manner. Agile/XP programming provides a way to avoid overengineering to a certain extent, but one thing that agile/XP doesn't address is that it's much easier to delay version 1.0 than to delay version 1.1, because you don't have customers breathing down your neck yet.

      They all wanted to become GAME PROGRAMMERS!
      Um, content creation and game scripting aside, isn't game programming one of the few remaining desktop programming domains where performance is paramount?
  52. Nothing but a con job by stonewolf · · Score: 1


    The guy who wrote the article is either an idiot or is out right lying.

    The reason so many people stay away from the kind of degrees he wants them to get is because there are very few jobs in those fields and the jobs that do exist are poorly paid when you look at them on an hourly basis. Not to mention that the smart young people he wants to con into being his cheap labor are smart enough to look around and see the thousands of unemployed and unemployable 40 something engineers. They are smart enough to "just say no" to working 60+ hour weeks for 20 years just to be left with no job and no hope of a job in their 40s.

    When the smart young people see that they can make a good living working reasonable hours until they retire doing the kind of work he wants them to do, the smart young people will demand that colleges offer that training and colleges will find a way to offer it. Until then, he should understand that most of the smart young people are too smart to be conned by people like him.

    The whole article is nothing but misdirection. He wants to make people think there are good jobs out there so they will get the training they need for the jobs and then... he can hire the cream of the crop for sweat shop salaries and work them for sweat shop hours until they wise up. At which time he will fire them an hire more people who have been conned into the same trap. The article is nothing but a self serving con job aimed at both students and colleges.

    I call bullshit on the entire article.

    Stonewolf

    1. Re:Nothing but a con job by hungjar · · Score: 1

      Hmm... I suppose you haven't noticed the proliferation of embedded devices you come into contact with every day. Cell phones, set-top boxes, NAS appliances, printers, wi-fi access points, your car... You would make it sound as though all of those devices simply develop themselves. There are thousands of developers who make a very decent wage here in the US that are helping to develop those devices. Companies like Google, Danger, even Apple are involved with embedded development and not paying the slave labor wages you're talking about. And, as a happily employed 40-something developer, I can tell you that the biggest problem we typically encounter is finding smart folks who don't require 2 years of retraining before they can become productive on a project. If you don't want to be an embedded developer, then don't. Not everyone derives enjoyment from watching their "thought" become real and have people appreciate what they've done. But, don't assume that all embedded developers are working in sweat shops for no pay. That's simply not true.

    2. Re:Nothing but a con job by stonewolf · · Score: 1

      Yes, as a matter of fact I have noticed all those embedded device. I used to do embedded development and would love to do it again. I love seeing a product go from nothing to shipping and in stores.

      The fact remains that there are thousands and thousands of 40 and 50 something programmers in the US who would love to do that work, who are fully qualified to do it, who can not get jobs doing it or any other kind of programming.

      Why is that?

      If there are only thousands of these jobs in the US then the output of a small program in a couple of colleges can easily provide all the people you need every year. Oh, but you don't want to train them, so they have to come out of college knowing exactly what you need for your current project. And if they studied processors you don't use, or an OS you don't use, or a language you don't use, then you don't want them. They must be fully buzz word compliant to even be considered for the job.

      So, what happens to *you* when management decides to use a different processor, OS, or language? The older you are the more likely they are to just lay you off and replace *you* instead of letting you learn the new what ever.

      Stonewolf

    3. Re:Nothing but a con job by hungjar · · Score: 1

      Well, first I am partially responsible for those decisions. As a senior member of the staff, I and my colleagues pick the next processor, O/S and language. If you get to my age and you are simply a coder, then you are 100% correct. You are at the mercy of management. However, one would hope that after almost 20+ years in the business, that the developer was more of a design lead rather than a coding grunt. I've worked with Motorola, Nokia, TI and many others in their development projects as a consultant. What they're looking for are people who *understand* how things work. The specific processor is rather immaterial if you understand how registers work. The same applies to languages. Some are more restrictive than others, but if you understand the issues associated with programming constructs, Java, Python, C/C++ whatever, it really doesn't matter until you get to efficiency on the processor core. If you're always plugged into AC, then even efficiency can be ignored as long as memory constraints, fan noise, etc. don't come into play. Many of these companies that develop these systems at least *say* they would be willing to hire fresh-outs, if it didn't take so long before they could be useful on a project for more than getting coffee. That's why so many of these jobs require at least 2 years of experience. It takes about that long to learn all of the things they didn't teach you in school. So sure, there is always a possibility that I could be the next one on the chopping block. But, it's my decision to let my skills lapse and my decision to keep my head down, not pay attention to trends and let management make all of my decisions for me. I can certainly see your point, but I don't see that there are fewer embedded systems in the world anytime soon and if US schools can't produce folks who can develop these systems, then someone else will and we'll see more jobs leave the US.

    4. Re:Nothing but a con job by stonewolf · · Score: 1

      You sound just like me before I got laid off. I was the senior guy in R&D looking into how to deliver various kinds of multimedia to 3G phones. I as fat and happy and loved my job. Then the board decided that they could make more money by firing the entire US staff and buying an Indian software company to replace us. No one at my level was consulted. No one in R&D or any other part of the company was retained. Several of the best people had to leave the US to get jobs.

      Anyway, the main point I was trying to make is that there are plenty of people, both young and old, who can do those jobs and who want to do those jobs. But, there aren't any jobs to be had. The old ones are retraining and moving on. The young ones are going where they see a future. What they see around them are tech companies that are laying off people every other day. What they see are the fathers, uncles, and neighbors losing their homes, their savings, and even their pensions because of dirty dealing at the top of the corporate ladder. They see all that and they go to other fields.

      I talk to them every day. Most of the ones who are interested in studying the kind of skills we are talking about are doing it because they want to start their own businesses. They don't trust existing corporations. I can't speak for all of them and I don't pretend to. I'm just reporting what I hear and see.

      I truly hope your luck/skill/karma holds out and you get to keep doing the work you love to do. But, I also think you are living in a deep state of denial.

      Stonewolf

  53. The industry killed the golden goose. by GrpA · · Score: 4, Insightful

    What happened to the embedded developers? The industry got rid of them...

    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.

    --
    Enjoy science fiction? "Turing Evolved" - AI, Mecha, Androids and rail-gun battles. What more could you want?
  54. Where are the embedded jobs? by ipsi · · Score: 1

    Seriously, I'm not surprised there aren't more embedded developers. There's next to no graduate Application Developer positions available right now where I am. I don't think I've seen a single Embedded Role come up recently. Admittedly, Wellington, New Zealand is a bit of a small sample size (then again, there's a disturbing number of IT jobs available given the population), but even so...

    Doesn't seem to be any point in specializing in Embedded Development, because, as others have said, it's too hard to get a job in it.

    You'd be pigeon-holing yourself into a market where there aren't enough entry-level positions to go around. Sure, if you got a job you'd be set, but if you didn't, you'd be kinda stuck. At least if you pigeon-hole yourself as a Microsoft C# Developer, then you'll always have work (you may not enjoy it, but it will be work).

    Me, I'm just wondering why people dislike hiring Graduates so much. Sure, most people would have hired during the Graduate Recruitment part of the year, but I would have thought there would be more people out there looking to recruit Graduates given there's a shortage of experienced workers, and them train them up. Apparently I was being a little on the hopeful side. Well, actually, I was being far too hopeful. Managed a few interviews, but there's always been someone with more experience to take the job I wanted. *sigh*. That, or I'm not enough of a 'people person' which kinda hurts when you're looking for a software development role. Looks like it's a support role for me until I can find something better. Assuming I can even get a support role with just a degree and no experience.

  55. Maybe we just need better hobbyist dev kits by Animats · · Score: 1

    If you want to do embedded systems development, it's cheap. If you know what you're doing. You can get an Atmel ATMega128 board with a little LCD display and a few pushbuttons for about $50, a JTAG programmer cable for about $20, and a complete development environment with simulator, debugger, and C compiler for free. Even C++ works; GCC supports the thing.

    Unfortunately, you can't get all this stuff in one box with a nice little "Embedded Development for Dummies" book. There are environments well supported for hobbyists, such as the Basic STAMP (late 1970s technology) and the PIC (1980s technology). But they're so retro it's embarrassing.

    I'm not saying it's a good career choice, but serious programmers ought to do a little low-level work on a tiny machine just to know what it's like.

    1. Re:Maybe we just need better hobbyist dev kits by Anonymous Coward · · Score: 0

      What about the Arduino (open source hardware) or others based off it (Boarduino [I'm getting one of these], Freeduino, etc.)?

  56. There are not many Klingon programmers "giving up" by Anonymous Coward · · Score: 0

    "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."

    Oh like when SUN had their Java chips, or Harris had their Forth chips.

  57. To clarify the above first paragraph: by Mongoose+Disciple · · Score: 1

    That is to say, after picking a set of classes to take over 4 years that would satisfy all the requirements, there were few if any additional classes necessary to make up the hours required for graduation, thus, not much latitude to pick classes for interest or grade padding outside of that list.

  58. Re:CS != Programming by smellotron · · Score: 1

    On the flip side unless you fully understand the hardware how can you write good optimised C code? In C you might use a long (assume long is 32 bits for now!) to hold a counter. But the assembler programmer will know to stay clear of longs because he's programming a 16 bit CPU, or maybe longs take a performance hit.

    Isn't that the point of the C99 header stdint.h ? For your example, I could use a fast_uint16_t and let the local platform configuration handle what that actually means.

    Type sizes aside, I agree with you, though. If you don't understand low-level compiler/machine details, you can't possibly expect to bend the language to your performance-obsessed will. This holds for all languages; it's just that in some cases (Java/Lua/Python/Perl6/...) the "machine" you need to learn is a virtual machine, and you end up inspecting bytecodes instead of asm.

  59. So where are the entry level positions? by rabiddeity · · Score: 1

    Right now I'm looking for entry level positions doing embedded systems work. This is what I want to do. The problem is that every job position I've looked at wants at least 2 years of professional experience. If you look up the article author's company, his most basic level positions say "The candidate should have a minimum of 2-5 years experience of embedded software development" and their FAQ page says "We are pretty fussy about who we hire. That is to say that if you are a true real-time, or embedded, engineering professional with 5+ years of experience, with any RTOS..." In that context, his article reads like a whine-fest. Everybody has to start somewhere. If nobody offers entry level positions, how do they expect to hire people into the field?

    Either he can offer entry level jobs and bitch that nobody can do them, or he can shut up. Seriously. Take a risk or two. Start offering newbies jobs, Mr. Anderson, and then you'll have room to complain.

  60. You have seen through his ruse. by Anonymous Coward · · Score: 0
    Cleverly, he has tried to dupe an entire generation into actually understanding the systems that they work on at a fundamental level. As soon as universities create programs that incorporate useless knowledge like managing cache flushes, writing interrupt service routines, and handling context switches, a whole generation of programmers will be completely unemployable.


    Who on earth needs a skillset like that?

    Then, he will scoop up all of the unemployable engineers at slave labor wages, laughing the entire time while sitting atop his throne made of golden skulls. In fact, this article was probably penned while he sat atop said throne.

    And he would have gotten away with it, too, if it weren't for you meddling kids.

    1. Re:You have seen through his ruse. by stonewolf · · Score: 1

      I didn't see through it, I lived through it. I have all that knowledge, and I'm glad I do. I used all that knowledge for over 30 years. There are at least 6 people living within a mile me, all in our late 40s and early 50s, all with that kind of training and experience, most with graduate degrees in EE and CS. We were all laid off from different companies, though IBM accounts for most of them (not me), and not one of us has been able to find a programming job since being laid off. I've been in contact with most of the companies you listed and many more.

      The list of companies you posted is interesting. Mind posting their current job openings for people with that skill set? Want to post the number of people they currently employee with that skill set? Show me that there is a demand large enough to employ the students currently training for those jobs. I can tell you the demand is not very large because there are thousands of unemployed programmers who would happily fill any empty jobs.

      I've become a teacher, one must eat after all. That puts me in contact with a lot of those wily young people. Classes I teach on Office applications are filled to overflowing. Classes I teach on computer programming, 3D graphics, game development, and so on are often canceled for lack of students. There are a lot of smart young people who have seen through the ruse and they are staying away in droves. They see that the market for the skills you mentioned is very small, the jobs are poorly paid, very risky, and in the long run, they have no future.

      So yeah, I've lived through the ruse (I fell for it). I am in contact with smart young people every day who are not falling for it. You don't see it. Oh well. Programming makes a great hobby. I should know.

    2. Re:You have seen through his ruse. by Anonymous Coward · · Score: 0

      The job listings range from Qualcomm (lists over 200 jobs that match an embedded software engineer's skillset) to Line 6 (a smaller company, only currently looking for 1 DSP engineer, a specialized subset). Lockheed Martin has a couple of dozen jobs spread around the country, Northrup Grumman lists several dozen. TI lists something like half a dozen openings. Motorola lists around 150 of various types worldwide, and Intel lists about the same number. Motorola and Intel specifically are looking for new grads, for all of the folks complaining about how hard it is to find embedded programming jobs fresh out of college.

      I don't know what's so interesting about those particular choices, they're all companies I know of that employ embedded software engineers. I chose some from government, some from industry, some large, and some small just so no one could argue "well, embedded software engineers are only ever hired by [large companies][small companies][government][private industry]". Embedded systems are everywhere -- cellphones, automobiles, network appliances, set-top boxes, airplanes... hell, your toaster will probably have embedded code in it soon and the demand for smart gadgets isn't going anywhere. As a result, the demand for people who make smart gadgets isn't going anywhere.

      If you do indeed know thousands of programmers who would love to fill those jobs, direct them to the respective employment sites - there appear to be plenty of listings. Or perhaps these companies are also in on the ruse, and are merely duping people into entering the field through fake job listings. How crafty of them.

      I've been an embedded programmer for the last nine years. It pains me to see people graduating now who don't know how to manage memory or manipulate pointers because Java has made them dumb. I'm looking forward to the day when I depress the brake pedal on my car and the anti-lock brakes fail because the virtual machine is busy performing garbage collection.

    3. Re:You have seen through his ruse. by Anonymous Coward · · Score: 0

      I'm not sure where you live, North Dakota perhaps? I'm 44 and have been doing embedded programming for over 20 years and never had a problem finding an embedded programming job. I haven't even had to resort to the big box companies like IBM or Lockheed. In the last 11 years I have worked at 3 different companies, sent out a total of 9 resumes and received 5 offers. Perhaps your skill set (and that of the 6 people living near you) is not what you think it is? I eat very well, I have a 37 foot Sea Ray, a Mooney (airplane), and 2 Porsches. My average work week is 44 hours, and I am exposed on a daily basis to programmer's complete ignorance of what a line of C++ code actually imposes on a CPU, and wish this were not the case. There is also the distinct possibility that you are just trolling for conflict. This is the much more likely scenario.

    4. Re:You have seen through his ruse. by stonewolf · · Score: 1

      I live in Austin, Texas. Where are you?

      Calling me a troll makes it easy to ignore me. If that is what you want then that is fine. I'm not going to get into a pissing contest about toys with you. Toys are fine, what is your net debt?

      One thing I will compare is the ease of getting jobs. I can't remember ever sending out more than one or two resumes to get a job. Most of the time if I changed jobs it was because of a phone call from an old friend who was looking for a lead technical person. As for my skill set, well I can only go by what I'm told and my previous record. I got one of my current teaching jobs by sending in one resume.

      But, that all ended when I turned 49. Not just for me, but for my old friends too. Tell me how I went from being the most experienced and most highly rated R&D person in my company to being unemployable in one day? Then tell me how you plan to make the payments on your toys if it happens to you?

      OTOH, honestly, I am happy for you. I'm glad you are doing so well and are happy with your job and your ability to get jobs. Just please don't make the mistake of thinking I am a troll. What happened to me can happen to you tomorrow.

      The students I talk to know how risky programming jobs are. They are avoiding careers in risky professions. I think it is a damned shame the schools have watered down their curricula to the point they have. OTOH, they are teaching what the students are willing to pay for.

      Last summer I gave a week long seminar on teaching game development. We had to add tables and turn people away because it was so popular. CS faculty are now looking to game development programs as a way to attract the number of students needed to save the professors jobs. And, the field is technical enough to require that the schools teach the skills you want. The point being that even CS professors are worried for their jobs because of the lack of demand for their services.

      Students are staying away from computer science. They have good reasons to stay away. If you want to change things you have to change your industry.

      Stonewolf

    5. Re:You have seen through his ruse. by stonewolf · · Score: 1

      I agree completely with your comment about Java. Teaching Java as the only programming language in a CS curriculum should be punishable by public flogging.

      OTOH your list of jobs is not very impressive. One good University level program oriented at that skill set could fill all those jobs in a couple of years. Well, a couple of years after the first student entered the program which means six years from now.

      As other posters to this discussion have pointed out, there are several (many) good CE and EE colleges in the US that are generating far more trained people than are needed to fill that number of jobs. It seems like you made my point. There is no huge demand for these people.

      Stonewolf

  61. Looking at the wrong major... by DCheesi · · Score: 2, Interesting

    If you want someone to program the low-level guts, look for a EE with some programming experience, or a Computer Engineer. CS major programs just aren't designed for that kind of work.

    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.

  62. Are you only talking to idiots? by Jack9 · · Score: 1

    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.

    This is hyperbole and a misrepresentation at that. Students dont VALUE memory and cycles the same way because software is not about efficiency anymore, it's about development speed. We sacrificed the ability to make efficient code for development speed (VMs) and the only people who seem to be unhappy are the people who specialize in efficiency. When you start paying ridiculous amounts of money for embedded developers, you'll be surprised how many people will flock to it. Welcome to America.
    --

    Often wrong but never in doubt.
    I am Jack9.
    Everyone knows me.
  63. Where's the training/market??? by visible.frylock · · Score: 1

    I have a CS degree. I'm comfortable with C++ and would be with embedded architectures if I just had the training. For my Assembly class, we didn't do MIPS. We did sort of an abstract assembly learning language (think Pascal for assembly). In said language, I implemented int mul and div, as the language didn't provide that. So yes I'm very comfortable having all my data right there interspersed with my instructions. Just give me 3 months, and I'll bust my ass and get up to speed on your platform. Oh yeah, silly me, the industry doesn't do that any more. At one point, I even really wanted to go somewhere like Intel or Nvidia. I thought that would rock the shit, working on low level graphics stuff. When I mentioned that in an interview process for a job not related at all to embedded, the guy thought I was crazy.

    Which is why I'm in IT right now and going back for engineering. With engineering, you have state exams to certify you know what you're doing. Now, this is just a generalization, but overall, management argues with actual engineers much less than they do with software people. Because engineering is much older and its effects can sometimes cause lives. Oh, but the talking down to programmers and software designers never ends.

    Although I love code, I'm going back because engineering is so much more professional. You know, you might actually get an iota of respect. Talented candidates for embedded apps are all around. But some of the best people get turned off by the (actual or perceived) attitudes of those entrenched in the industry. Where are they? Maybe you're turning them away.

    And probably the better question is, where's the market? Besides military apps, isn't it inevitable that this will move to places where people can afford to work for less?

    --
    Billy Brown rides on. Yolanda Green bypasses Gary White.
  64. OMG, so true ... by smcdow · · Score: 2, Interesting

    ... 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.


    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.

    --
    In the course of every project, it will become necessary to shoot the scientists and begin production.
  65. BS: Having dealt with Adaptec and Diamond... by tlambert · · Score: 1

    BS: Having dealt with Adaptec and Diamond and trying to get them to work with OpenSource drivers, I have to say that most EEs could not write modular software to save their lives.

    In the mid 1990s, we were unable to program drivers for the Diamond video cards because some asshat had decided that there was no need to put the PAL dot clock selector input latch tables in a sane location with a recognizable table terminator, because he/she decided that "everyone will be using INT 10 BIOS calls in real mode in order to set video modes on the cards, so why bother?". This was almost as much for hardware protectionism as it was to allow them to swap out PAL contents and ROM contents in tamdem without redesigning hardware - particularly, component layout and printed circuit artwork - to get "whole new video cards". We ended up doing MD5s of the ROMs and setting up our own PAL tables based on what we got as a checksum.

    Adaptec did a similar thing on their AHA29xx SCSI controllers, for fear that drivers written for them would would with someone else hardware, just like the BusLogic controllers worked with the AHA152x, 154x, 172x, and 174x card drivers. So they invented an arcane abstraction layer called "HIM", for downloading the SCSI sequencer software to RAM on the card, and relied on the license on the sequencer software to save them from clones. But they screwed up the implementaiton of the HIM, and the OpenSource community ended up having to write their sequencer software to work around the bad abstraction.

    So we ended up with a bunch of cards that didn't work in non-Intel hardware (MIPS, DEC Alpha, PPC, etc.), or with non-Microsoft supplied OSs. All because some firmware writers couldn't be bothered to think in terms of interface abstractions, and felt they could write better code than a CS or SWE person (at the time, CE was not an option as a major).

    So I call BS on the ability of people who understand the glass understanding how the glass is going to be used by the cusomers that buy it.

    For the record:

    - I am educated as a physicist, computer scientist [software engineering emphasis], and applied mathematician

    - I consider myself a member of the previous generation of embedded software developers, though not my entire career has been embedded.

    - I think the next generation of embedded developers are coming places like Taiwan and the poorer countries in Europe, where limited access to modern hardware means that they have to work harder with less, and lack of "a big market" means half of them are off hacking things like iPhones to make them work with the local infrastructure.

    -- Terry

  66. I teach at SPSU and our grads *do* know big O etc by Anonymous Coward · · Score: 0

    First, let me tell you that your examples may be too specific (I've never done DSP and seldom written a program where the difference between TCP, UDP and IP mattered), but I think the main problem is your sample :). I teach CS at SPSU (in an Atlanta suburb); our undergrads need to take an analysis of algorithms class, and a distributed systems class (plus a networking class). I've taught both algorithms and distributed, and guarantee most of our students learn those concepts (OTOH they're not required to take an embedded systems class or DSP).

    We're a good school, but I don't think we're exceptional in our programs; so I think you just have a very skewed sample

  67. "Embedded Development for Dummies" by gatkinso · · Score: 1

    I bet this would sell better than one might think.

    --
    I am very small, utmostly microscopic.
  68. GPS not Real-Time? by AmericanInKiev · · Score: 1

    Was I the only one surprised by the authors assertion that GPS is not a real-time operation?
    Last I checked GPS was one of the most time-critical operations in regular consumer use?

    What say you?

    1. Re:GPS not Real-Time? by russotto · · Score: 1

      Was I the only one surprised by the authors assertion that GPS is not a real-time operation?
      Last I checked GPS was one of the most time-critical operations in regular consumer use?


      It's a matter of terminology. A control system is "hard real-time" -- if the system misses a deadline, something breaks. With consumer GPS, if you miss your deadline, you just get a late position fix. Also the deadline with consumer GPS is fairly lax; you've got a full second to calculate a new fix. Some would call this "soft real-time"; obviously the article author doesn't consider it real-time at all.

    2. Re:GPS not Real-Time? by AmericanInKiev · · Score: 1

      In order for GPS to get a fix at all, it must very closely monitor some dozen satellites, and detect very small differences in time between radio signals.

      If the degree of required accuracy in the time domain is a measure of "real-time" requirements, I would have put the GPS very near the top. Laser scanning, also very high. Sonar systems are a few orders of magnitude lower. CD players require very high-speed reactions, and MP3 players wouldn't be terrible useful if they couldn't keep a beat.

      Sure, the UI of all these things may be soft, but the core tech seems tightly time-bound.

      Best,
      AIK

  69. It's not where you start but where you go by hedrick · · Score: 1

    I'd like to defend starting with Java. I'm currently mentoring a 14 year old who is learning programming. He started with Java, a year or so ago (after a little bit of hacking around in Visual Basic). The advantage I see is that it's let him quickly get experience with quite a variety of programming: GUI interfaces, sound, a client/server network application with multiple threads and synchronization. He's scary bright, but even he couldn't have done that in C in that time. I think it's worthwhile to have that kind of variety before he starts going into more detail, because it will give him a context to put the details in. He's about to go into a magnet high school run by engineers, so he's going to get the hardware and C++. I certainly wouldn't want to see him stick with Java for the next 5 years, but I think it was a good place to start. I'd certainly expect any computer scientist to have substantial experience with different types of programming, and the languages and tools that go with them.

    I've programmed in everything from assembly to Java. (I even taught a course in COBOL once.) I don't share the disdain for Java that many here seem to. Obviously I wouldn't write the Linux kernel in it (yes, my pawprints are in the Linux kernel), but I like it for quite a variety of tasks. I prefer not to make things more difficult than necessary. If you don't need to do your own memory management, why not let Java do it for you? It's less error-prone. (And part of a computer science education is to make sure you know when this makes sense and when it doesn't.) I still haven't made my mind up about Ruby, but in principle I'm interested in languages that are at a higher level than Java.

    I've been around long enough to have lived through exactly the same arguments when we switched from assembly to higher level languages. There are always arguments that we lose essential goodness. But I'm not convinced.

    1. Re:It's not where you start but where you go by PieSqrd · · Score: 1

      Honestly, I agree with that - Java should be a starting language. And maybe no more. It seems to me that a CS major would be expected to know how to program decently at least, even before starting at a university, so teaching a language other than Java would be advisable. Perhaps it would be a good language in middle or high school, to give people fast results and get people interested in programming. (By the way, that's more or less what happened to me. I started with Java in my free time, loved playing around with GUI, then started getting into some Lisp, C, and assembler for the purpose of finding out how compilers work.) Perhaps the real problem isn't that CS majors aren't being taught the correct things - it's that CS majors aren't really students who are interested in programming for the sake of it, but are just looking for jobs.

      --
      Linux is user friendly. It's just very particular who it's friends are.
  70. Chump change by gr8scot · · Score: 1

    The ability of a new hire to "hit the ground running" could save U.S. embedded systems companies millions of dollars each year. This is money that could be reinvested in additional research and development to make them more competitive in the world market, or simply yield a higher return to their investors. Regardless of what is done with the "savings," the incoming engineer would make U.S. companies more productive. Sorry, "millions of dollars each year" is not a national crisis. It looks like the total projected cost savings are too little to justify even one university adding to its CS curriculum topics that are already covered in physics & engineering, which are offered in many, but not all, institutions that teach CS. From the article, it looks like the ideal embedded developer is a double major, or major/minor in CS, and physics or engineering. I call BS on the claim that this is a problem deserving more gov't funding, and suggest that instead the same corporate interests get together and fund their own embedded systems graduate school, or night school in the neighborhood of their favorite engineering & CS departments. Whatever. Quit begging for tax money and invest in your own Training, Research & Development, you Welfare Queens. College is not meant to be a trade school for high-tech industry, it's meant to provide a general background, so new hires can "hit the ground running" with a reasonable amount of on-the-job training. The IEEE is such a bunch of whiny charity cases!

    What might be needed here is a summit of all of the interested parties. Let's get some dialog going and elevate it to a national priority. Perhaps someone in the U.S. Senate, such as Sen. Chuck Grassley (R-Iowa) or Sen. Dick Durbin (D-Illinois), who are both significant opponents of H-1Bs, could be champions of such a meeting. For that matter, maybe we need a national "mission," a la the Apollo space missions, to get things back on track and regain momentum. Perhaps a project that focuses on eco-friendly technologies, which tend to rely on embedded systems, is the right way to go. Who knows, we might be able to reduce our dependence on foreign oil and create a generation of engineering innovators at the same time.

    We must act soon. Many of the "greybeards" of embedded systems development are getting close to retirement age. We must try to capture their collective knowledge before it's lost and pass it on to the next generation of engineers. The U.S. embedded systems industry has a systemic problem that needs a holistic solution before we lose our technical edge. Even a "soft science" major knows you're required to quantify your claims to be taken seriously. Clown!
    --
    All 19 hijackers were known terrorists 09-10-2001. Lack of FBI intelligence does not justify warrantless wiretaps..
  71. Direction by WillRobinson · · Score: 1

    I write embedded code for a wide range of robotics and dedicated hardware. My suggestion is to build something that you will use. This makes your quest much more interesting. Sorry, never went to college, had to teach myself, so cant say what they have for classes and direction from that point of view.

    Display controller, at least 5 fields, or as desired. This could easily be used to for displaying weather information etc. Say, Wind Speed, Direction, Temp. Time.

    Example: Display controller, rs232 controlled.

    Some suggestions, a display controller that would receive rs232 from your computer. Say using one of the microchip processors, they have ones that have a tcp stack, or rs232 on chip (need level converter) (costs 20$) these require only a resistor and cap for clocking but your will prefer a crystal to keep within drift spec's of the rs232.

    This will teach you low level work in assembler, and you can also talk to it using your pc and VB if you desire, to acquire information and send it to the controller.

    Then you have the options of using a display controller or controlling the displays directly. The total cost will be low, you will be programming in assembly, (assembler is free) and have something you can use. If your just interested in the programming and not interested in figuring out the hardware, drop me a line, and ill send you some schematics.