2 ms·
I've worked long enough to have seen it all. The mistake hardware people make when reasoning about software projects is that it is like hardware projects. It's
by jillesvangurp 4y ago
I've worked long enough to have seen it all. The mistake hardware people make when reasoning about software projects is that it is like hardware projects. It's why most hardware companies are pretty terrible at software. It just doesn't fit in their world.
Most engineering disciplines spend a lot of time for creating designs and blue prints before proceeding with the implementation phase. The mistake is assuming that software requires that too. It requires a little bit of thinking for sure. But fundamentally, the ultimate blueprint for software is executable. Your blueprint isn't finished until it runs. The process of producing the working blueprint is the whole point of a software project. You produce an executable specification in some programming language. The process of translating that to a working system (aka. compiling) is automated and does not require any human input typically. So, you do that very often starting on day 0 of the project. Until you are satisfied with the results. And why stop there? Many software products continue after their first release.
If you are building a nuclear plant (or any similarly large civil engineering project), producing the blueprints takes many years. In fact, nuclear plants are infamous for lengthy delays during that phase. Almost like a big software project. Unexpected things happen. Which then require changes to the blue prints. And until you have those, you're haggling with authorities and other stakeholders over permits, requirements, safety, and what not. It's fundamentally an iterative process that doesn't respect deadlines. Like software. Of course building the thing is also not without challenges but there's typically no room for a lot of improvisation during that phase. So, it's relatively easy and more predictable.
You can't really plan a hardware projects until after you have the blueprints. Hardware is just like software in that sense. The difference is that with software you are done once you have those. Planning the deployment (or customer implementation as it is sometimes referred to) is relatively straightforward: take the thing, install it, and run it.
- oscillonoscope 4y agoI don't think I really agree with that characterization. To take PCB design as an example, you could just as easily say that once you have your blueprints (i.e. manufacturing files) then you're done. I see two big differences between SW/HW. The first is that software has a free and fast iteration loop whereas that same feedback loop would cost 2+ weeks and $10k on a PCB design. This makes it so that upfront design and analysis is more reasonable than try it and see. The second is that SW team structures appear to be much more coupled and interdependent. Multiple hardware designers can work for months on the same project without having to communicate much with anyone whereas this seems rare for SW teams. This causes the interdependencies between personnel to be highly predictable even if the work itself is not predictable.