Live data from Hacker News

Things I Believe About Software Engineering

blog.wesleyac.com

131–140 of 231 posts

Re: Things I Believe About Software Engineering

#131
post #88
post #8

> Writing non-trivial software that is correct (for any meaningful definition of correct) is beyond the current capabilities of the human species. Bullshit. Humans have been sending computers into space for decades, and while yes, some have had programming problems, most worked correctly, for a very specific definition of correctly. Thing is, NASA (and Russian and Chinese and Indian and ...) space engineers have appr…

And it's obviously not the developers' fault, but the clients/customers'. You want a 100% bug-free web browser? OK, so let's define precisely and formally what the browser is supposed to do. Then, you'll sign a very expensive contract, and in 6 months to 1 year, I'll deliver the software, with a formal proof it works as expected. Of course, the requirements won't change during the development process, and any update…

What fun proposal! No one wants it but it is exactly what we need.

It should do a bunch of really creative things then further new fancy web tech shouldn't exist. Something like: Distribute documents signed by their author in a truly robust way. It should have A review and certification system and It should help monetize publishing in a truly transparent way.

Write it in hardware design language and run it in an emulator. :-)

Re: Things I Believe About Software Engineering

#133
> Being aligned with teammates on what you're building is more important than building the right thing.

It depends. If iterations are quick and the current direction is roughly on the path to finding the right thing yes, otherwise no unless you are choosing to redefine software engineering.

Re: Things I Believe About Software Engineering

#134
> Most measures of success are almost entirely uncorrelated with merit.

A more important and useful thing to understand is that merit is measured by rules that bubble out of social systems.

A mistake you can make is to believe the the rules of merit that you believe are the same ones others believe, that the ones they state are the same ones they actually believe, that the rules don't depend on context, etc.

It's hard for people to accept this because we're taught that merit is an inherent quality, we may internalize the rules of merit we learn, treat them as constants, and then build our self-images based on those rules.

(I'm not suggesting to give up on the idea of merit altogether, but you'll do better to think of it as something you achieve for personal satisfaction and not necessarily expect external rewards.)

BTW, the rules of success (beyond the most basic stuff) are also social constructs, but they are different than the rules of merit. It's a mistake to expect them to necessarily be harmonious or consistent.

Re: Things I Believe About Software Engineering

#135
post #129

Earlier quoted context omitted.

autonomous driving is a great example here. It will never be "correct" because there will always be accidents. So the author is right about that. But it is very possible that those cars may be 10x safer than the average human driver some day.

What if you are an above average driver? Maybe for most people it would be an improvement in security, but for you it'd be more dangerous to be in an autonomous car.

If you're an above average driver, a below average driver will ram your car unexpectedly. And there will be nothing you can do, because your reaction times are human.

Also, you're likely not as above average as you think yourself to be.

Re: Things I Believe About Software Engineering

#137
post #8

> Writing non-trivial software that is correct (for any meaningful definition of correct) is beyond the current capabilities of the human species. Bullshit. Humans have been sending computers into space for decades, and while yes, some have had programming problems, most worked correctly, for a very specific definition of correctly. Thing is, NASA (and Russian and Chinese and Indian and ...) space engineers have appr…

I think correctness is achievable for a lot of things, but the industry at large isn't chasing it. People ask for a feature. How long does it take, how much does it cost? Dang, can we get it sooner?

Nobody ever asked me about what it takes to ensure it is correct. Nobody asked me to work with them to produce a detailed specification that exhaustively considers all cases that must be accounted for, nobody asked for a formal proof, nobody asked me to run a model checker, not even do something like design by contract. And when I look at job postings, all this stuff is completely absent. I was excited when I found one company that recognized Ada and Spark, and got me into an interview for mentioning them.

Just sprinkle some assert and make a few tests. If shit stick to ceiling, it's cooked. That's how the industry works.

We aren't even trying. It's pretty funny that everyone's making claims about what's possible when nobody is trying.

Yep, I bet there are niches, like in aerospace, where some try, and I'm sure some of them also succeed at correctness. We only hear about the failures.

Re: Things I Believe About Software Engineering

#138
post #8

> Writing non-trivial software that is correct (for any meaningful definition of correct) is beyond the current capabilities of the human species. Bullshit. Humans have been sending computers into space for decades, and while yes, some have had programming problems, most worked correctly, for a very specific definition of correctly. Thing is, NASA (and Russian and Chinese and Indian and ...) space engineers have appr…

Couldn't agree more but I can say it wasn't just NASA. The industry as a whole used to be more aligned with engineering but this has changed considerably since, say, the rise of "Agile".

Re: Things I Believe About Software Engineering

#139
post #32
post #24

Couldn't agree more with every point listed. These are fantastic points. I do not know the author, but reading these points makes me suspect he/she is an experienced software engineer that has been doing this for many years now. I expect that especially his first point (about being humble in the face of software systems complexity) will provoke many hubris-filled comments. I fully agree with the author: we are incapa…

I have a different expectation of correctness; absolute correctness is impossible, in practice correctness is not a binary condition. Even if something provably executes correctly according to spec, the spec may be wrong (and probably is, since everything interfaces with humans eventually). Everything is in a process of becoming; 100% correctness is not achievable, but it's not desirable either - it costs too much; i…

Wow, that's along-winded way of saying "perfect is the enemy of good enough".

Re: Things I Believe About Software Engineering

#140
post #6

> Peak productivity for most software engineers happens closer to 2 hours a day of work than 8 hours. Is it possible to improve this by training? For example if I'm productive 2 hours and force myself to be productive 10-30 more minutes each day for a number of days and when I'm comfortable with 2:30 hours of productivity, force myself to be productive for 30 more minutes. Would this eventually lead to 8 productive h…

> Would this eventually lead to 8 productive hours? In same way that sleeping 10 minutes less each day leads to you not needing sleep at all or showering at 1 degree more each day makes you impervious to boiling water. So, no, absolutely not and potentially dangerous to your health.

By the same logic an endurance runner that trains to run 1 km more every few training sessions would end up ...running indefinitely?
Post reply on HN