

Ask HN: What is the Holy Grail for Software Engineering? - __Rahul

Physics has its Theory of Everything - what's out there for Software Engineering?
======
jashkenas
Holy grail, eh? Well, if you really want to swing for the fences...

* Programming a computer in plain English.

* Teaching a machine to compose (real) music, or draw (real) art.

* Simulating a brain -- or, even better, emulating one.

* A programming language that makes it possible to write code that's worthy of being read as literature.

~~~
redthrowaway
While I agree those are worthy goals, the middle two are CS, not SENG. Real AI
is probably the loftiest goal in CS, but it requires a lot more theory work
before anyone will be able to implement it.

------
aaronblohowiak
Minimizing the cost of producing secure, reliable, efficient systems that
fulfill business objectives and are inexpensive to modify (where modifications
preserve reliability and performance.) Included in the cost must be the risk
of finding engineers to provide maintenance and changes.

------
ctkrohn
Building software like we build bridges.

There are a lot of things wrong with this analogy, but I think it still
encapsulates a nice ideal. We'd like to get it right the first time, and make
it last with minimal maintenance.

(This is for software engineering, not computer science)

~~~
aaronblohowiak
Physical construction envy is naive.

Many bridge-building projects go over time and over budget.

Most bridges have a feature list fixed years before construction is begun.

Bridges are static. Even draw-bridges do not adapt to their environment
automatically, but require human intervention.

There is a categorical error when you try to apply construction practices of
static things to the construction practices of dynamic things, hence the
failure of waterfall. Note that the original papers that introduced waterfall
actually suggest a system that more closely resembles iterative development
than BUFD.

~~~
regularfry
If we found a way to make BDUF work reliably, it would transform the industry
overnight, and turn software development into a recognisable engineering
discipline. The fact that we haven't _yet_ , and that one particular approach
failed, doesn't mean that it isn't possible. Nor does it mean we should stop
trying.

Iterative development is an interesting stop-gap, but it's certainly not the
be-all and end-all we should be looking for.

------
balakk
Enterprise software perspective - IT managed directly by business users. In
that, the system can accept natural language descriptions of business logic,
resolve ambiguity, and can self-modify, maintain, and heal itself. In other
words, a virtual software architect.

~~~
d0mine
Such system would be necessarily self-conscious with all severe problems it
implies and human reproduction already produces such systems.

------
alt
The Holy Grail of software engineering — the one true approach to building
software systems that can be applied, universally, to any and all software
projects.

<http://www.cse.unsw.edu.au/~se4921/PDF/CACM/p15-glass.pdf>

------
daniel-cussen
There's really three problems I can think of, in decreasing order of
difficulty:

1) writing an AI,

2) proving P=/=NP, and

3) founding a 200-billion dollar company.

~~~
steveklabnik
These are computer science, not software engineering.

Oh, and #3 is neither...

------
Tycho
You know that scene in Independence Day when Jeff Goldbloom flies into the
mothership and uploads a program to shut it down? That.

No, I don't mean an alien empire running on Mac OS 7.6.5, I mean extreme
interoperability so software can rewrite itself to work on a different
platform (self-porting, in other words).

Having said that, their firewalls were lacking!

------
trizk
A self programming, learning computing machine.

------
Tichy
Doing correct time estimates? Finding an engineering methodology that actually
works?

------
tzs
A lot of the suggestions so far have really been for CS, not software
engineering.

For software engineering, how about a practical way to do proofs of
correctness for large real-world systems written in mainstream languages?

------
robsmith
Users that read the manual

------
gvb
Solve the P vs. NP problem. <http://en.wikipedia.org/wiki/P_versus_NP_problem>

~~~
joshes
Let us not conflate computer science with software engineering.

~~~
gvb
Ahh, yes, my bad.

------
johnbender
A model checker that somehow cleverly handles external input and statespace.

Lacking that, haskell's type system :D

------
evanrmurphy
To make software so extensible that you never have to rewrite it, or so
painless to rewrite that you never mind.

------
invertedlambda
A programming language that does exactly what you want, exactly how you want
it, exactly when you need it.

------
curt
How to talk to women? Couldn't resist.

------
dheerosaur
Something that could have answered this question for us.

------
rnicholson
"Good, Cheap and Fast" and not being forced to pick two.

------
joeld42
A general purpose memory manager that doesn't suck.

------
RK
Provably secure, stable, error free code.

------
kingsidharth
It's a Holy Grail. It's a mystery!

------
jamespitts
Becoming more than human.

------
binaryfinery
The Singularity.

<http://mindstalk.net/vinge/vinge-sing.html>

I think Vinge explains it better than Kurzweil.

~~~
evanrmurphy
Vinge's "superhuman intelligence" rhetoric bothers me because it suggests that
intelligence is a one-dimensional quantity. I don't think this makes sense
except in the context of specific domains. For example, a basic calculator has
superhuman intelligence when it comes to arithmetic, because it can evaluate
arbitrary expressions much faster than a human can and doesn't make mistakes.
But it's dumb about everything else.

Update: The child comment by binaryfinery points to where Vinge addresses
this. Sorry, I failed to add the disclaimer that I only skimmed the article.

~~~
binaryfinery
FTFA: "Let an ultraintelligent machine be defined as a machine that can far
surpass all the intellectual activities of any any man however clever"

------
alnayyir
Here's a real holy grail of software engineering that might actually be
attainable without getting Strong AI.

Significant code reuse without using a lot of hacks. I think Lisp and Ruby
made great strides towards this, but I don't think we're quite there yet.

------
jpr
KISS

