Hacker News new | ask | show | jobs
by Tomte 4144 days ago
That's exactly the point why "software engineering" still isn't.

It's tinkering, and as much as we software developers would like to keep it that way, at some point mankind will just have to solve that problem once and for all.

And today's software development will be called "software art" or whatever.

3 comments

We'll never solve that.

What we likely will do, is develop higher level abstractions for more and more sets of problems so the subset of problems developers works on will change.

Just like an exceedingly small percentage of developers today needs to care about hitting the hardware directly.

>That's exactly the point why "software engineering" still isn't.

"Still"? It will never be "engineering", as we don't have enough constraints and fixed boundaries to guide our development process.

How long will it take to invent a flying car? That's engineering right? I want a precise estimate. Also it needs to be made out of a material that is both transparent and can withstand crashing into a concrete wall at 85 mph. And the entire thing needs to be powered by a fuel that can be harvested from inorganic compounds. It must seat 6 people as wel as be able to interact automatically with a aerial car traffic control system that is being built by another team using standards that haven't yet been developed.

How is that any different than software? Software engineering is a thing. There are constraints however each implementation has the potential to be novel. Electrons or steel, it's all engineering. Even engineering has trial and error. Would you say the Wright Brothers didn't engineer the airplane?

What's the definition of engineering? Let's refer to Wikipedia:

Engineering (from Latin ingenium, meaning "cleverness" and ingeniare, meaning "to contrive, devise") is the application of scientific, economic, social, and practical knowledge in order to invent, design, build, maintain, research, and improve structures, machines, devices, systems, materials and processes.

Even "tinkering" is engineering. In fact every invention comes from tinkering. There's no definition of engineering in existence that would preclude software development from being considered authentic engineering.

In terms of constraints and fixed boundaries, to suggest software doesn't have those is just nonsense. Just try leaving out the curly braces next time you write something in C. Unlike a field such as writing, software does have rules. I can write a misspelled sentence and forgo the rules of grammar and my sentence will still be "compiled" and probably understandable. A book doesn't stop working because of a bug. Software certainly does. Thus, there are plenty of fixed boundaries and constraints on our work. The characteristics of steel are analogous to the charactistics or a specific software class. Except in our business, many times we have to invent the steel ourselves.

> How long will it take to invent a flying car? That's engineering right? I want a precise estimate.

No, that's R&D, a task which then later leads to engineering when a working solution has been found.

How is invention tinkering?
It's not. People think that because inventions tend to result from tinkering that the two are causally related. They're not. Tinkering is merely one of the ways to provide a mental space in which invention can occur; invention itself is not engineering.

Implementing the invention is.

In that you don't know whether what you do will work or not before it does. Lightbulb as an example.