Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Hardware programmer vs software programmer

  1. Nov 26, 2011 #1
    I have taken Computer Science for a bit more than a year and I was concidering to maybe jump to Electronics. My main reason for this is that I don't want to spend the rest of my life on a chair. I do love sitting by the computer, scripting/programming, learning and everything but I feel that it's not worth it to make a career out of it.

    So maybe Electronics is a milder version of that? More motional? Anyone who has some experience with the differences in working with hardware and software? What's the difference in the market? In lifestyle? Can a hardware programmer find a work as a software programmer and vice versa?
  2. jcsd
  3. Nov 26, 2011 #2


    User Avatar
    Science Advisor

    Hey Pithikos.

    By hardware programming do you mean creating physical computing or electronic devices out of existing hardware units, or do you mean doing something like say creating device drivers for specific hardware units?
  4. Nov 27, 2011 #3
    To some extent the roles are interchangeable.
    Industrial production lines involves both software, hardware and mechanical integration.

    Last, you may realize later in your life than sitting on a chair, as you call it, is the best way to deal with the job market.
  5. Nov 27, 2011 #4
    I am not sure myself. We just started deeper into Java at my class at the moment and it feels like it's not my thing.. I want to know exactly what I am doing. With all the abstraction I feel like this is a philosophy class and not a technical class. That's the main thing that got me into thinking. We had C earlier and I liked it more. We didn't program for any hardware what so ever so I don't have experience with that.

    I would say simply that programming hardware looks like more fun and it involves some physical contact with your material(microcontrollers etc). I am an open-source fanatic and I think the best thing would be if I could be doing Linux and hardware. However I am not sure how I could bridge the two.

    Something else I am a bit afraid is the math and physics. I am not that good in any of the two. However I would love the idea of being able to make my own mp3 player that runs on Linux :!!)

    How do you mean?
  6. Nov 27, 2011 #5


    User Avatar
    Science Advisor

    If you want to do something like program micro-controllers, a good way to get some experience is to get the architecture manuals and tools (you can program these things through an external interface like through a PC with a device driver that talks to your device).

    You will usually be able to get an architecture manual and a manual that contains the instruction set. In the instruction set, details should be given about what gets modified when an instruction is taken out. For example an instruction might modify hardware flags, hardware memory, hardware registers and so on.

    In terms of linux development, it's actually a lot easier now to create multi-platform projects like your MP3 player. Nowadays there are many system libraries to do your basic stuff like file management as well as supplying an uncompressed PCM format to a sound device.

    For the above, you just need a documented API reference. Just a tip though, make sure that the data structures that need to be passed to these routines are correct if you are using a multi-platform code base.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook