Hacker News new | ask | show | jobs
by wondringaloud 2239 days ago
I'm glad someone else sees this the way I do. What the blog writer did was tinker with something. They didn't engineer it.

I was a mechanical engineer prior to switching to software. As a general rule, the things we do in software are very distant from engineering.

3 comments

I think the analogy to mechanical engineering is something like this:

A seasoned engineer notices that everyone is only building suspension bridges all of a sudden.

They point out that you can span a stream with some bricks or rocks and a bit of mortar, and are ridiculed.

Next, they build a highway overpass out of concrete pylons, and stress test it to 10x the necessary engineering load, and point out it cost 10% as much as a typical contemporary suspension bridge. That’s this article.

Or vice versa: they notice that everyone is only building concrete bridges all of a sudden, disregarding the traditional and much cheaper approach of hanging boards under some rope handrails; upon being ridiculed, they build a suspension bridge across a river for 10% as much as a concrete bridge.
What the author did was build a prototype to demonstrate and explore what was possible. That is exactly what engineers do when exploring a problem.
When you hear "Engineer", you often think of calculus, statistics, formal testing, requirements gathering, documentation, repeatable results, etc... along with a fundamental understanding of the problem space and possible solutions.

I think this is akin to NASA working on the Apollo program vs. someone in their garage attempting to build a go-cart for the first time.

When you just slap things together and see if they work - are you really engineering? Can you exactly repeat the process and achieve exactly the same result every time?

I think we often cross "research and development" with "engineering". Exploring a problem space and tinkering with concepts isn't engineering. Taking what you've learned, planning out and executing a solution to a precise set of requirements, and being able to repeat your steps and achieve those results again and again - is engineering.

>When you just slap things together and see if they work - are you really engineering?

Why not? That's basically what testing is. Which was one of the attributes you attributed to "Engineer" >formal testing

>I think we often cross "research and development" with "engineering"

My general take:

Scientists primarily focus on learning and proving new knowledge & ideas. (i.e. they research)

Engineers focus in using proven knowledge and applying it to design and create things or solve problems. When things are not perfectly certain, they can prototype and do tests similar to how scientists do experiments (e.g. aerodynamics in wind tunnels). (i.e. development)

Good points, but usually when we talk about testing in the realm of engineering, it's a means of verifying something is within the bounds it was designed for... not just to see what happens.

We don't run test suites on our software to see what it does. We run test suites to validate it operates as it is supposed to.

I think the way you described testing is more in line with tinkering and research rather than engineering. It's experimentation, not testing.

When the outcome is unknown and unreliably unpredictable, it's research (tinkering). When it's predictable and has a known, repeatable outcome, it's engineering.

>Good points, but usually when we talk about testing in the realm of engineering, it's a means of verifying something is within the bounds it was designed for... not just to see what happens.

Yeah that's fair.

I had originally skimmed the article, but after re-reading it the author apparently admits they didn't put any careful thought into what they made. No real goal. Just slapped stuff together so to speak. Which I'd agree doesn't quite sit as engineering to me...

Well I don't - maybe you do. I think more along the lines of "ingenuity" as described here: https://interestingengineering.com/the-origin-of-the-word-en...
When saying "this is engineering" the article refers to all the engineering effort at the OS level that went into making this possible.

As the title says, this is dumb code. But it makes use of years of engineering effort to deliver a result which can get you very far without thinking about the low level.