Hacker News new | ask | show | jobs
by turnip1979 3572 days ago
I'm a SW guy .. been mulling getting a job in hw at some point. I watch a lot of YouTube and do hw projects in my spare time. Is there something like sw boot camps for developing hw skills? I'm almost considering getting an ee bachelors or masters as a part time student.
3 comments

Not really, because hardware is not amenable to boot-camp style things.

Basically, hardware is way /way/ harder then software. Imagine software where each compile took multiple weeks, and cost lots of money (hundreds of dollars for the simplest of projects, to tens or even hundreds of thousands for really complex things). Changing the layout or design almost always involves a complete board respin.

There is no easy getting started (maybe arduino stuff, but there is SO MUCH horrible misinformation in the arduino communities), because the minimum functional system is a complete system. You basically have to get everything right the first time in hardware, or it won't work. The learning curve is more of a learning wall.

You're right that you couldn't do a 'boot camp' style short course and land an EE job, but it's not a hard as you make out if you set your sights lower.

To give one example, let's say you want to start out by making guitar pedals. There's a healthy market for boutique guitar pedals, plenty of existing designs available online that you can modify when starting out, and when you're ready to start making designs from scratch you're looking at stuff you can understand with entry level electronics knowledge. Furthermore, there's room to grow as your knowledge improves (can get into DSPs, for example).

Can you specify what SO MUCH HORROR amounts to in the arduino community?

From reviewing these posts, it seems like EE spend most of their day frustrated trying to get the device to simply boot or do the simple thing. If there's a tool for beginners that snaps together and avoids these headaches, that seems valuable in itself, almost anti-HORROR.

My issue with the arduino community basically comes down to:

1. The HORRIBLE code quality in the entire arduino codebase.

2. The prevalence of straight up factual errors everywhere in their stuff.

3. Their shitty, SHITTY schematics.

To be clear, getting a AVR to run a "flash the LED" program is trivial. There is really not much /to/ an arduino (it's an overglorified atmel eval board).

When you refer to `trying to get the device to simply boot or do the simple thing`, what you're normally talking about is trying to get a fully integrated complicated system to power up and function to the point that it can then be debugged further. This is a COMPLETELY different ball-of-wax, and requires a much more broad toolset, because you have to be able to diagnose why it's not working. Sure, with arduino things, you can plug the bits together, and it'll MAYBE work (assuming non-buggy libraries, which is very much not usually true). OTOH, if it doesn't work, ¯\_(ツ)_/¯. You're going to need a logic analyser, or an oscilloscope (or both!) to figure out why. I can pretty much guarantee the person who initially wrote the library for each of your "snap together" module components did have to go though all that.

Basically, arduino stuff is the PHP-equivalent of the hardware world. The general quality is low, there is little push for improvement, and everyone is sticking buggy crap on the internet.

For example, the "Arduino Mega" (call it a goddamn ATmega2560, dammit) has multiple hardware serial ports (4 of them). For a long time (possibly until today), even if you weren't using the ports, it allocated two 64 or 32 byte buffers for each port statically. This is on a platform with 8KB of RAM total.

Would it be trivial to fix this? Yep. Did they? Not the last time I checked.

These are also the same people who decided malloc() on a platform with 2 KB of ram was a good idea (it's not).

Thanks for the reply, I'm just seeing this. I'd agree with you that anyone who knows what they're doing and is looking to deliver a professional product will find the Arduino, it's price, it's libraries, unsuitable.

Think of it like physics problem sets though. You don't get to Physics 503 by just reading the first three text books, you have to actually do the problem sets and struggle with them. In our first problem here, assume there is no friction, even though any experimental physicists will tell you that's crazy, that never happens. Once you've mastered the exercises, then you criticize their clunkiness and move into a framework with more realistic assumptions.

And for me, the refusal to fix sub-optimal design is pretty appreciated as it doesn't subtly break some aspect of already written books, tutorials, shields, etc. Beginners will often look to copy very literally an already known solution, which may be on someone's blog from 2011. Little changes, which happen often with RasPi, result in hundreds of comments like 'This doesn't work, please help!'

I got this in my inbox a few days. An Oakland, CA coworking space has an "Engineering Accelerator"[1] that they're doing on nights and weekends to help people do hw engineering. Not sure if it's 100% what you're looking for.

[1] http://www.engineeraccelerator.com/

depend on what hw skill that you try to acquire, things like fabrication/device level design, antenna RF design/measurement etc, you have to go to university, because many of these topic require some very expensive equipments to gain the hand on exp, but not necessary truth for like something like digital circuit design