Hardware vs software - Page 1
Forum section: electronics / general

author: off-by-one
author_rank: Newbie
timestamp: May 02, 2010, 09:45:07 pm
content: Hi guys and gals. I'd like to open some discussion about hardware vs software career. I've been looking for the best audience for this kind of topic, but most of the software people on the net are not really interested in hardware and the hardware folks on the other hand are harder to find. EEVblog and this forum is a blessing.About myself: I have a B.Sc in computer electronics, consisting of topics like: Analog and digital electronics, PCB design, microprocessors and signal processors, embedded systems, EMC, FPGAs, signal processing, C and C++ programming, and so on... Quite a few topics to scratch the surface of. Mostly hardware related, but also few software courses.Now in the working life I have drifted into a software engineer position. I work with microcontrollers with and without OS and some larger systems with embedded Linux. I don't mind doing software as long as there's hardware involved, but the hardware I guess is what I'm really interested in. Unfortunately the hardware I usually work with is very basic and there's nothing fancy about it. Is it unrealistic to want to work with interesting hardware and applications?On the other hand, working on the software gives me probably more power over the quality and how the product ends up, than if only designing the hardware. In the recent years I have learned a lot about software, but I still suck at it. I now realise it's really hard or even impossible in some circumstances to write quality software.I'm thinking I should try to steer my career back towards hardware related things before it's too late. I'm sure there are people working in both, hardware and software, but is it really possible to master both? There's also many other things I'd like to learn, like FPGAs and PCB design, but I'm afraid that if I don't focus on some single thing I won't specialise in anything ever.What are your thoughts about hardware vs software?

author: Kiriakos-GR
author_rank: Super Contributor
timestamp: May 02, 2010, 10:51:08 pm
content: My only advice could be , to stop acting like one man show.And I speak in positive spirit.My own dream was to find one good team , and to specialize in one part of the all project,and share the success or the failures with them.Thats the ideal condition to do something great.The hard part ,are to find the proper team of people to work with.I have read the half library of INTEL , about north bridges , and memory controllers ,and it did not help me to become wiser ..

author: Polossatik
author_rank: Frequent Contributor
timestamp: May 02, 2010, 11:52:15 pm
content: You need all sorts of people, from the dudes who know every little grinding detail on making a decent PCB layout to the codemonkey's who have no actual clue what a µcontroller actually is but can write some neat routines.In general my feeling is that "software" people who have actually a decent grasp on the hardware side (and i'm even talking about network admins etc) have a shear advantage over those who don't. Seen the rise of "software" in hardware designs (like you say) I think the inverse will be more and more relevant.The one person that is often missing out in *any* project is the one who can "translate" between different groups of "guru's".The fact that that kind of profile (from jobrelated point of view) is often also tagged as "managaerish/political" is IMHO the reason why so few projects have really a decent person doing that kind of stuff, most of the time it's some idiot who has no clue what *any* tech say's... )There is of course a huge difference between the Q what you want to do and what profile has jobs / makes the biggest $$$$.If your current working env (and assuming you more or less like it there) has also some HW development, then maybe try to to have a closer chat/relation with the people doing that side of the story?If not, then I guess the best bet is a smaller firm that does some rather "niche" market, they tend to have less rigid structures and the actual need for people who know (or want to know) different stuff.The major hurdle then will be convincing them to look beyond your work experience and not hire you as a "software dude"Your B.Sc in computer electronics might be a good asset there.Personally I'm a bit in the same boat - I would love to get (bac)k into electronics, but I now happen to work for a software molog.And I doubt there is an easy path out(besides taking a junior position somewhere and even then - the only "electronics" on my CV is an basic electronics degree 17 years ago and the first 6 months of my "career"... )So for now just having fun with µcontrollers, FPGA etc in my spare time and we'll see...I must say that most people I know with an electronics degree end up on the software side (or started a brewery..but that's an other story) -some did however, but it's also maybe a matter of luck , you need to "get in" a certain circle in your local jobmarket.edit: ha , and on a side note , I'm not entirely convinced by your "working on the software gives me probably more power over the quality" statement

author: EEVblog
author_rank: Unknown
timestamp: May 03, 2010, 01:44:44 am
content: I just filmed a drive-time rant in response to this post.Not sure if it makes any sense, will have to watch it back!Dave.

author: Simon
author_rank: Unknown
timestamp: May 03, 2010, 06:23:51 am
content: I think a good understanding of both is important but your involvement depends on how big the projects are and how many people work on it. I'm not really certain how someone can write good software if they do not know the hardware, particularly on uC's, pc's are a little different although not that much as there is lots of garbadge out there (.net software being one very good example) for PC's too and it mostky comes from microsoft so go figure. A good quality product needs good quality hardware and softare

author: Simon
author_rank: Unknown
timestamp: May 03, 2010, 03:59:55 pm
content: I find both important and need building in harmony with each other and the need for a software solution carefully considered, for example when i designed my dynamo regulator (yea I know i keep on about it but it is my first and current main project) I had to consider hardware and software side by side:what sort of circuitry would i need to interface the pic to the outside world ?what could I do in hardware that would be more reliable than software ?is the software going to cope with the functions ?how could I optimize the relationship between the hardware and software ?was I trying to cut corners with software when I should implement it in hardware - this was an important question when i had to ensure that things would not go out of control and i end up with an over voltage ?was it wise to even use a uC ? - yes it was but i had to design a "descrete" version as well to satisfy myself that the woes of a uc and programming was worth my trouble,in my case this is a critical design because it is responsable for the management of the car's electrical power and that powers the regulator itself so self destruction was not an option and the cost could be the car's electrical system also. Also a uC proved wothy because it works up to 125 C whereas I was having trouble getting other parts over 85 C,

author: A-sic Enginerd
author_rank: Regular Contributor
timestamp: May 03, 2010, 05:44:32 pm
content: Allrighty, here we go:It's all good. As some have said - with the technology needed for a HUGE chunk of today's products, solid hardware designs need to be coupled with well engineered and well written software.Where's the job market? Well, if you want a better promise of a paycheck I'd have to say steer more towards the software. With the markets I've worked in the ratios have been something like 5 or maybe even 10 to 1 of software people to chip designers. And for all that lump of people only maybe one or two board designers (more the hardcore EE types).That being said, if you truly want to be incredibly valuable and at the same time truly have the interest and the drive, become well versed in all the areas. Ok, so "software" can be a pretty nebulous term and has many facets to it. I've had the impression that most of the people reporting on this forum of having written or are writing "software" I would actually term more accurately as "firmware". It's the "software" that sits very close to the hardware. What would I call "software"? Best example I could give my direct personal experience would be say...the guys that write and support the TCP/IP stack on products I used to work on.Anyway, truly the most valuable people I have encountered are the ones that in a single meeting can have intelligent and articulate discussions with everyone involved. Everyone from the firmware and OS guys, to the ASIC / chip designers, to the people designing the boards that pull all the hardware together. And yes, it is possible to find these people. They usually have at an absolute minimum of 10 yrs under their belt and have spent measurable time focusing on each aspect at some point or another. E.g.: 2-3 yrs as a firmware developer, 2-3 yrs as an ASIC engr, 2-3 yrs as a board designer.What's my perspective on all this? By degree I'm a Computer Engineer. This means I've had course work to at least get the basics on all aspects. Everything from "Programming Concepts and Methodologies" (including data structures), to advanced logic design, to "Electronics Circuit Design" to be able to perform a Fourier analysis or tell my Dad why his 3-phase pump is running backwards. By experience I've been an ASIC engineer the entire time. Sometimes on the design side, sometimes on the verification side. Which brings me to my next suggestion.The single position I can identify today that is a maximum blend of software and hardware is a modern day ASIC verification engineer that is using latest tools and techniques. These are the guys (and gals) that are using advanced software concepts (OOP and the like) to verify the guts of a chip design before it's released for tapeout. Which means, yes they actually have to understand the inner workings of the chip. And often the work they do lays the foundation for the firmware and software that's used on released product. Now admittedly this still leaves a hole in the all rounded experience - the board design and down and dirty analog issues. I'm working on fleshing out some of this experience myself as we speak.Oh, and as far as level of pay, from the companies I've worked in - ASIC engineers and some (but only the exceptional ones) of the analog / board experts collect top pay. Most of the "average" board designers would be next in the pay scale followed by the software and firmware guys. However, be forewarned that if you jump at the ASIC realm simply because of the pay - it's a dying field. The cost of doing an ASIC these days has put it out of reach of most companies. Unless of course you have ambitions of working for Int-hell...errr...excuse me...Intel. But at the same time they pay less than the rest of the market for said position, so go figure.

author: A-sic Enginerd
author_rank: Regular Contributor
timestamp: May 04, 2010, 04:57:53 am
content: Quote from: EEVblog on May 03, 2010, 01:44:44 amI finally was able to watch the blog after my prev response and I'll throw my $0.02 in here instead of there.I would agree with Dave that it is difficult if not impossible to truly "master" such divergent fields.However, if you truly have the interest and the talent to do so you can become well versed enough in at least the firmware (note I'm specifically saying 'firmware' and not 'software') and the digital side of electronics to be a very valuable person. And yes, I also agree with Dave that it takes more than doing just a hokey little one or two projects to reach that 'well versed' state. Now, what does it take to be well versed as a proficient EE doing what I have referred to as "board design", well that's where someone like Dave has better advice. Note that what I'm calling a "board designer" is the guy that does everything related to designing the circuits, making part selections, designing the PCBs, etc etc etc.There is one additional note I'd like to toss out there about discussions around VHDL / FPGA / etc, but I think I'll actually post it as it's own thread just to see what sort of feedback there is on that.So in summary, I personally agree with Dave on the aspects that it can be quite difficult to become a true master of all facets of software, firmware, hardware, etc. However, with proper drive and talent I do think one can become well versed enough in all aspects and, given enough time and talent, can actually be quite a valuable asset. Contrary to Dave's opinion that you'll be stuck at the pee-on level.Truly lofty goal though and can take some peoples entire career time to reach that point.

author: EEVblog
author_rank: Unknown
timestamp: May 04, 2010, 07:00:14 am
content: Quote from: A-sic Enginerd on May 04, 2010, 04:57:53 amYeah, as usual that wasn't quite clear enough.It's actually quite common to have people who have a wide gamut of design skills to complete a typical project from design to coding. And it's also quite common to have the "one man band" design team who do everything from design, toBOM, to layout, to enclosure design, to coding, to documentation, to testing, to production, FMEA etc, not to mention project management etc.I put myself in that category, I can do almost everything in that list and more with the exception of HDL and the more advanced C++ and web/os type software etc. But that doesn't mean I'm necessarily the best person for any of those jobs though!It gets much less common when you get into the extreme ends of various skill chains, and that's where it gets really hard to maintain top skills in all areas.Is it harder to sell yourself as such a generalist? Yes, generally, as the majority of jobs would be more segmented and departmentalised. That's why if you are a generalist you'd typically customise your resume and highlight the stuff they are after to make you appear more specialist.It's hard to convince someone that you can truly do "everything", even if you actually can!And unless you've actually got one of those "one man band" jobs, you'll typically find yourself doing more focused work and not maintaining your skills in other areas. And that's when other specialist can come along and trump you because they are more proficient etc.Dave.

author: off-by-one
author_rank: Newbie
timestamp: May 04, 2010, 10:18:25 pm
content: Hi, I'm a bit overwhelmed from all the responses. Thank you all for those and thanks Dave for the rant. It's nice to see I'm not the only one sucking at some domain.General consensus seems to be that it's impossible to avoid software with these days electronics but it's unlikely to be able to master both sides. A Generalist might be good at a manager position, but I don't think that's what I want.Maybe Dave took a bit too literally the "sucking at software" part.I mean, it's normal to still suck with only few years of professional experience. Mastering anything will take time. (Teach Yourself Programming in Ten Years) I have learned a lot in these years, so I don't think I'm hopeless. More worrying is that I don't seem to enjoy it like before.A-sic Enginerd pointed out the difference of firmware and software and I agree. This is probably one of the reasons why I'm not enjoying my work as much I'd like. The problems I'm solving are almost always related to the application and this takes me far away from the hardware. As I said, the hardware is pretty basic. I think nobody commented on if it's unrealistic to want a job with interesting hardware and/or applications?So, where's all the need for firmware programming? As the complexity of applications increase, operating systems and higher level languages are becoming more common in embedded systems and the hardware is abstracted out. Is it in the hardware vendors and OS companies? I guess some smaller real time applications in some industrial environments will need firmware without OS?

author: EEVblog
author_rank: Unknown
timestamp: May 05, 2010, 01:57:09 am
content: Quote from: off-by-one on May 04, 2010, 10:18:25 pmNot at all, and there are plenty of those jobs around.Some of the most interesting stuff I've worked on has been the most usual, like underwater stuff for the military.And then there is the interesting and fun stuff when you design and build your own test rigs (shock, vibration, temperature etc) instead of outsourcing it to a test lab for example.QuoteThere are countless places where firmware does not require an OS and OOP. That's why they still sell 10's of billions of small 8 bit micros every year, and almost none of them have an OS as such.It's just that the smart consumer level toys get all the exposure.Dave.

author: A-sic Enginerd
author_rank: Regular Contributor
timestamp: May 05, 2010, 04:12:37 am
content: Quote from: EEVblog on May 05, 2010, 01:57:09 amAnd there are many products that actually still have crap loads of needs for firmware even if the product is sophisticated enough to also have an OS and higher level software. The two primary markets I've worked in have OS's (how do you make an acronym like that plural?) that are specialized for embedded systems, but there's still a trainload of firmware. Granted the magical thing about these products that makes this the case is that we design our own ASICs for the products so of course that means there is no way any off the shelf firmware would work. So something to consider when your poking around. The more custom chips and hardware a product is designed with, the greater the likelihood there's a goodly chunk of custom firmware and software driving it. However, that's getting to be a smaller and smaller percentage as what Dave said about more and more products being able to find an off the micro and supporting hardware.Hey, you could always check out ASIC verification. Maybe not as high of demand as some fields, but certainly always in need for any team that is doing their own ASICs.Best of luck on what ever road you travel.