You wouldn't expect someone writing about the opportunities and lessons from the JavaScript/CSS frontend world to have a huge amount of insight into the work and opportunities of firmware developers.
So it is with hardware, and personally it frustrates me when software people think they can generalize about the "hardware" space because they printed a 4 layer with JLCPCB and now they know the "hardware" world and its ins and outs.
This post is about PCB design and fabrication. The equivalent would be if a hardware person spent a day banging their head against Azure Continuous Integration workflows and wrote a post entitled, "Lessons learned by a hardware guy venturing into software".
What I find concerning is the unwelcoming attitude towards newcomers like myself, prevalent in some hardware and electronics communities. My critique in the article is directed at this exclusionary mindset. It’s important to remember that every expert started as a beginner, and a dismissive approach does not benefit the community. We all have unique contributions to make, and diminishing the experiences of newcomers isn’t constructive. Let’s focus on fostering a community where learning and growth are encouraged for everyone.
The HN audience has folks from all aspects of hardware design, from architecture, to RTL coding, to physical design, or hobbyists programming FPGAs, etc., Saying "hardware was an entirely new world for me. I found it to be an unforgiving, harsh, complex terrain," just sounds wrong to them, like you're drawing conclusions about a huge field based on a narrow hobby project.
You seem to have set out to write an opinionated piece with a particular point of view, and said in your intro that you were going to be controversial, so you must have expected not everyone would agree with everything you said.
That’s literally one of your headings. You can’t hide behind the arrogance of the EE community when you say stuff like that, especially if you’re just ordering a four layer board from JLPCB. No offense but you didn’t manufacture anything - you did the equivalent of spinning up an EC2 instance via the web interface, installed nginx on it, and blogged about it as if you were a cloud architect. That tone permeates the post, despite the titular admission.
I would approach any professional community with much more humility. Especially when you’re still learning stuff like ”When assembling parts, you may face delays if some are unavailable.”
On the other hand it also means that the problems person encountered are likely nothing extraordinary. And that it's something other beginners should watch out and further research, as they are likely to encounter similar challenges. Beginner articles can also be useful for those who have no idea where to start as means to gather keywords for further reading.
Having beginners share their experience might not be useful for most experts. But it can be helpful to highlight common pain points and areas of potential improvements for educators and people making tools.
Personally, I'm also a software engineer who ventured into hardware, and even am now professionally doing hardware design. I find that perspective worthwhile. But I am an ASIC engineer, which is a very different kind of hardware than PCB design or integrating ICs on a breadboard. The lessons and realities of each are different. So I would find it helpful if the post (and title) clarified what specific field was being discussed.
> So it is with hardware, and personally it frustrates me when software people think they can generalize about the "hardware" space because they printed a 4 layer with JLCPCB and now they know the "hardware" world and its ins and outs.
You appear to be who he is complaining about. I'm an embedded dev, and what he wrote isn't far off the mark - I see more inaccurate posts of about from software-only devs.
It's been fun to see how with Fusion 360, a 3D printer, and JCLPCB you can build all kinds of devices. YouTube and GPT-4 are excellent tutors for hobbyists entering the hardware space.
The 2 week wait for custom parts from China makes you realize the advantage they have over there when it comes to the rapid prototyping stage of product development.
Producing PCBs domestically in the US is a sad joke. There are only 3 types of fabs here:
1. Stuck in the 80s and can't do much more than 2 layers and 10/10mil
2. Super high-end govt contractor ITAR jobs programs. Great quality but thousands for a run
3. Other shops that claim to produce pcbs but actually just farm them out to a partner in China and reship.
So even for protos China pretty much always wins.
As a price comparison, let's take an 8layer board I quoted through Screaming Circuits in the US. $4k. PCBway can do the same board for a bit over $300.
Have you found domestic assembly services that will take a hobbyist prototype order, charge less than $2k and turn in under 2 weeks (US or Euro)?
For ~100 SKUs and 200-400 placements.
There's definitely some bootstrapping costs to acquiring tools (3d printer, soldering set up, adjustable power supply, Fusion 360 license). That's around $1k-1500 for a nice hobbyist setup by the time you get everything.
The real cost is when you decide to quit your software job to work on a hardware project :)
Like the OP, I make a hobby related product as a side hustle. There are some sources of word-of-mouth advertising through web forums for enthusiasts. Usually you have to give something before you can get something back, and respect the forum rules. I never mention my product unless someone specifically asks.
Also, I was an established member of a forum before I ever even dreamt up my product. I made a couple to give away, and another forum member wrote up a review. The rest is history. ;-)
It's worth reiterating this for college students, etc. considering going down the hardware path. While I got a tremendous amount more intellectual satisfaction by going for an electrical engineering degree instead of a CS or even CompEng one, that was because I realized CS was the kind of thing I would end up in anyway and would gladly study on my own terms. Numerical methods in differential equations, not so much.
If you do decide to do EE in 2023, I strongly recommend you break the mold of sparkies being atrocious coders. The skills are natural complements, even if for some reason most people like to pretend otherwise. But one is much more lucrative on average.
I find this interesting. Did you end up getting a CS degree and then compare the intellectual satisfaction?
I found CS fascinating. Of course you get to choose your own path through CS and could possibly avoid most of the major breakthroughs, but to do it in earnest is revelatory. There is Godel’s Incompleteness restated/rediscovered through computation; the church-Turing thesis, Curry-Howard correspondence, graph theory, etc. I never did EE, but I did some math in my past and CS felt closer to pure math than anything else I’ve studied.
No, but we could always flip the question since we know you didn't do EE. ;) I did however slap on a math minor and find out I'm way better at abstract algebra than I have any reason to be.
I'll sum it up as "I'm just more of a frog than a bird", but I don't really think that's it. I think relevancy selection is just an inherently hard philosophical problem and it's really hard to actually grok the internal or aesthetic kicks smart people get at different things.
Dynamical systems tickle my fancy, so do group actions and finite fields and generating functions, the incompleteness theorems don't, go figure - at least not present day me, a depressed teenager me looking for philosophical solutions in all the wrong places ate that stuff up.
Unfortunately, doing hardware is hard without reading. Lots of it. Choosing a part requires reading datasheets by the dozen or hundreds, so you get fast at skimming them but when you pick one and design its circuit, you need to read every damn page of that PDF. And then go and dig up the errata if it exists too.
Lots of knowledge about hardware exists either as institutional knowledge in people's heads or in books. But, electrons and physics still work the same way they did 30 years ago, so there's no reason you can't read an EE book from that long ago to get foundational concepts.
Coders (myself included) try to Google our way to the fastest solution to each problem. Why read API documentation if someone has a solution on stack overflow? Unfortunately papering over knowledge gaps will often explode in your face because there inevitably will be mistakes, and now you have to wait 4 weeks to respin and assemble a new board.
Long turn times and physical costs require a bit more level and less yolo in hardware. So there is no reason to become allergic to reading if you want to be in hardware.
If they say "I did X Y and Z but I have problem W" then I try to provide more directed, actionable assistance, or at least explain how to debug the problem.
That at least keeps me feeling like I'm being helpful, but not wasting my time.
I have these three on my shortlist: (i) The Art of Electronics (3rd edition), written by Horowitz and Hill; (ii) Digital Design and Computer Architecture: ARM Edition; and (iii) The Elements of Computing Systems: Building a Modern Computer from First Principles, by Nisan & Schoken
But keen for more.
I’m newish to embedded software and hardware and I find it difficult but oh so rewarding. Highly recommended.
The very same reason why it's called "Software" rather than "Dependaware".
> If It Can Be Done with Code, Don’t Do It with Hardware
We all complain about why my washing machine needs a connection to Wifi and why my brakes don’t work while I’m tuning the heating on the display (joking to emphasize the craziness of plugging the infotainment on the CAN bus), but our hardware is now so reliable that it’s more reliable to do something in software and reuse existing HW bricks, than to design a specific circuit for a dedicated function.
However, anything safety critical or that could potentially hurt the device always needs hardware dedicated to it. As an example, using a couple I2C-adjusted buck regulators. Very convenient, until your i2c gets wedged or you get bit flips due to noise on the bus or a i2ç peripheral glitch with some other device on the bus. Now your 1.2v rail has 4 volts on it. You can't fix that with software.
Of course we're all different, but I'd assume the real driver would be the ability to run specific beloved apps of yore.
In Taipei we have Fablab which has a CNC machine, laser cutter, multiple 3d printers, oscilloscope, and soldering irons, among a thousand other little bits and bobs. I'm guessing most cities have similar, and I've heard of phenomenal libraries with tools like this. It could be worth looking into this! Universities often have all the equipment you need as well.