Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I had the same experience when buying from Macy's, which I felt would avoid any possible shennanigans from Amazon. Same story. 4 pair of the same style and size, but different colors. All fit differently.


Physical products are HARD. Programmers take for granted our digital assembly line, where it's possible to generate millions of byte-identical products with ease. As a software "engineer" I do not envy real engineers one bit.


> As a software "engineer" I do not envy real engineers one bit.

Obligatory link to Hillel Wayne's Crossover Project [0]. The short version is that of 17 "real" engineers he interviewed who switched to software engineering, 15 said they consider software engineering to be an engineering discipline. Over the three blog posts he reviews the supposed differences between fields and finds that the crossovers don't agree with most of the stereotypical differences software people believe are there.

There are real differences that they identify, but they're not any more significant than the differences between traditional engineering fields, which are vast. But yes, one of the differences that they do point out is that software is not constrained by the physical world in any meaningful way.

[0] https://www.hillelwayne.com/tags/crossover-project/


As I like to say, if the construction world could tweak a $CEILING_HEIGHT parameter and hit the big "REBUILD HOTEL" button, and the entire hotel would systematically tear itself down and rebuild itself from scratch in about 5 minutes for a net cost of $5, and then run a large set of automated checks for code compliance, making sure the doors don't conflict with each other, etc. in the next five minutes, and spit out a report of all the results, you'd expect them to operate differently. VERY differently.

Coding is 100% an engineering endeavor. And just like any other one, a particular project may not be following engineering best practices and that project may be producing some dangerous garbage as a result, but I'm actually fairly satisfied with my engineering practices, as engineering practices, what with my automated testing, automated acceptance criteria, automated security checking, automated style checking, integrated peer-review practices, performance testing practices, engineering for redundancy and resiliance. If $YOU're thinking the coding world is awfully cowboy maybe that's a sign that $YOU need to up your game with the already-existing and well-documented best practices in our industry. To be honest most other "real engineers" would be green with envy at what we have available to us!


I know a few civil engineers and have been surprised at how many similarities that work has to software engineering. Some of the poor practices that people gripe about in tech are similar in that world, and the same goes for many good practices.


There are meaningful ways in which software interacts with the physical world.

Latency is the first to come to mind. The realities of how systems are designed and how permanent the storage in question is translate to latency and thus frequently performance bottlenecks.

Data durability is another thing to consider. Though frequently that's mostly abstracted away in the lower layers of hardware, system composition, and operating system / file system / libraries generally.

Limitations also exist in raw hardware performance (state machine speed, how parallel the computation can be, how parallel the desired process can be made) and capacity, for processing, temporary memory (RAM), and long term storage. Thermal considerations might also be a factor, but those are usually managed by lower layers and present as capacity limitations to typical software.

Software as a domain for achieving goals does offer an unusually wide degree of flexibility in approach. Today we also stand on the shoulders of many giants, with relatively easy access to extremely powerful systems that can obscure many sins for 'reasonable' workloads.


Fascinating, thanks for posting that, I know what I'm reading this weekend!


I mean that seems like a methodology that would run a heavy risk of sampling bias. This is literally people who have chosen to switch to software engineering, and who are currently software engineers.


The only way to make the sample better would be to also sample people who moved the other direction, but there haven't been nearly as many of those because software engineering jobs have been in much higher demand than other engineering positions.

What you certainly cannot do is sample people who have only experienced one field.

But yes, it's not meant to be a quantitative study, but there are a lot of very valuable insights in the blog posts.


You have to consider, most engineering disciplines learn how to program, but almost no one in a software engineering program learns how to design stuff.

And the jump from building academic programs in C/Matlab to building commercial software products is much smaller than the jump from having never used Fusion 360 to designing a commercial product.

Plus, there are many more resources out there for switching careers into software engineering. With CAD, you're kind of stuck with YouTube videos and the odd online course for foundational material.


I envy real engineers. There's something quite satisfying about being able to touch a thing you made.


Software engineers can engineer ways to engineer more than certified engineers apply existing ways of engineering.


Wait but then why is one physical iPhone identical to another physical iPhone of the same model?

I’m not asking to criticize. I’m genuinely curious.

Not even all electronic products always feel the same in one’s hands like iPhones of the same model do. For example I remember back in the day my Xbox controllers would feel different from my friend’s Xbox controllers even though they were the same model and supposedly manufactured the same.


> why is one physical iPhone identical to another physical iPhone

Apple is willing to pay the cost to minimize the margin-of-error at every step.

Another approach to keeping yield high (at the possible risk of hurting your brand) is to do what Intel did with their Celeron line. The equivalent for Apple would be a "value iPhone" which would not come with the same set of expectations from customers.


It's worth noting Apple (likely) do this with the SOCs - the bucketed variants with fewer operational GPU cores are the output. They just don't do it with the packaging.


Fabric vs metal/glass/plastic

It is also easy to make thousands of identical items when your build material is solid and can’t be stretched


It's much easier to get molded plastic into the same shape repeatedly, than it is to get fabric stitched together exactly the same way every time.

As for the Xbox controllers, it could be a lot of differences. Microsoft does not feel the need to keep different runs exactly the same. They may be more willing to buy different types of plastic depending on what's cheapest this quarter.

Or it could be much simpler, maybe iPhones do feel different. How much time do you actually spend interacting with someone else's phone (Have you ever even actually touched another person's phone, or just their case?), vs how much time did you spend with your buddy's Xbox controllers?


why is one physical iPhone identical to another physical iPhone of the same model?

It probably wouldn't be if human beings had to drill holes in the PCB by hand, place and solder components by hand, and hand-machine the case.

different from my friend’s Xbox controllers even though they were the same model and supposedly manufactured the same.

This could be things like slight changes in the sourcing of, say, springs for an analog stick, composition of rubber used under other buttons, and actual wear on components of the assembly line, like the molds used for injection molding of something with a pebble texture. Not to mention, obviously, that each controller will break down differently over time depending on use.


> Wait but then why is one physical iPhone identical to another physical iPhone of the same model?

Hard materials are easier than soft materials in some ways. If you lay a soft fabric out before cutting, is it slightly folded, perfectly flat, taut? It will all make a difference.

Moulding plastic or cutting a hard material like aluminium is more amenable to tight tolerances since you can use the same mould over and over, use the same cutter and the material doesn't flex, stretch or change in any significant way.


Well, partially its that for all of Apple's faults, this is one thing that they're neurotic about. But the xbox controller comparison isn't really good because controllers have moving parts. An iPhone, except for the side-buttons, doesn't.


Clothing is handmade. It doesn't matter if it's luxury or from Shein; it's all handmade. Artisans can work tirelessly to make sure everything is stitched the exact same way but anything below that is made for the mass market. Those tend to be people paid nothing to work as fast as possible to make as many items as possible. In that environment, you're going to get a lot of inconsistency. The only tech that helps here is the sewing machine and using lasers to cut the pieces. Compare that to iPhones where there are a lot of industrial machines that are used to create each of the pieces paired with highly trained individuals helping assemble it. The iPhone is also a "luxury" good so they have a lot of QC whereas a shirt from Old Navy is cheap and as long as it "looks" correct then they'll sell it for $8.


As to the iPhones: Apple does some really neat stuff with respect to tolerance stacking. As an example, they had a video from the iPhone X showing how they would measure the camera module, and then pair that to a cover that fit it best.


Feels like there's similarity to CPU and GPU binning.

Make a bunch of them with the same process then bin them based on the variability.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: