Hacker News new | ask | show | jobs
by shaper_pmp 6019 days ago
What you really mean here is that humans are complex and adaptable and have a theory of mind, whereas computers aren't and don't.

This, however, is not a fault. I work in web development, and I see every single day confusion and problems caused by a mismatch between what someone asked for and what someone else understood they wanted.

When you're writing computer code you should specify exactly what you want - architects don't design a house by drawing four walls and a roof and some rough, to-the-nearest-metre dimensions on the back of an envelope, because then houses would fall down and kill people.

We shouldn't design software this way for the same reasons.

The main problem is that people are lazy, and think in generalities. That's fine for socialising, but many things in life require precision (especially in our increasingly-complex society)... and lazy people used to relying on implication and inference find it a great effort to be as precise as is required.

The solution is not for programming languages to guess what people want based off their imperfect, imprecise and un-thought-through requests - it's for people to learn to request what they actually want, instead of asking computers to essentially "do some stuff with a thing".

It's not a question of success of communication - it's a question of imprecise requirements, lossy communication methods and inescapable rules of information theory.

1 comments

> What you really mean here is that humans are complex and adaptable and have a theory of mind, whereas computers aren't and don't.

That exactly what I meant.

> This, however, is not a fault. I work in web development, and I see every single day confusion and problems caused by a mismatch between what someone asked for and what someone else understood they wanted.

Coming from the same environment I also see how this confusions are avoided. And that is by direct fast two way communication that does not end too soon, talking, drawing pictures, pointing fingers and prototyping. I imagine same solutions should be incorporated in programming environments to make them more accessible.

When you don't get what someone said, you just say to him what you understood and sometimes what he might meant by saying that and he agrees or clarifies until you both are sure enough that you share the same idea.

That kind of dialog might have place in programming environments. Code completion and parameter hinting are very crude and silly attempts on making such dialog. Despite their silliness they are immensely useful.

> When you're writing computer code you should specify exactly what you want - architects don't design a house by drawing four walls and a roof and some rough, to-the-nearest-metre dimensions on the back of an envelope, because then houses would fall down and kill people.

I just think that architect should not necessarily need to be all human. Some technical details can be worked out in dialog between human and machine.

> The main problem is that people are lazy, and think in generalities.

That is the problem but thats just how humans are. Even programmers. It's not gonna change so things should be designed in such way that allows people to be lazy, still got the things done and not to hurt themselves.

> That's fine for socialising, but many things in life require precision (especially in our increasingly-complex society)... and lazy people used to relying on implication and inference find it a great effort to be as precise as is required.

This effort comes more easily if you can clarify things step by step and not have to be perfectly clear from moment zero. I think current programming environments seriously impede designing solutions to problems because they require precision too early and do not infer enough in proper way.

> it's for people to learn to request what they actually want, instead of asking computers to essentially "do some stuff with a thing".

It's not gonna happen. It lies in biology. Organisms always try to achieve goal with least possible effort.

Progress is not done by making slaves not lazy but by inventing steam engine that enables lazy people to do more.

> It's not a question of success of communication - it's a question of imprecise requirements, lossy communication methods and inescapable rules of information theory.

In my opinion programming is about forming exactly same idea in two places, programmers brain and computer hardware. Designing a program is part of programming and computer should play more active role in this part.