Live data from Hacker News

Things I Believe About Software Engineering

blog.wesleyac.com

11–20 of 231 posts

Re: Things I Believe About Software Engineering

#11
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…

Writing "correct" software is possible IMO, but is it worth it?

For most applications, is it worth spending several times more time and resources in order to make it "correct"? I don't think so.

Re: Things I Believe About Software Engineering

#12
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 came to write something simular.. Just because you havent come accross it, doesn't mean its beyond our capabilities, infact, by definition its within our means.

Re: Things I Believe About Software Engineering

#13
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…

Yeah, I think the author is being a little pessimistic here, but for the benefit of the doubt it may be interesting to understand what correct means in that sentence.

I mean, if correct = 100% uptime, 100% effectiveness, etc., then it's not so much of a software problem, but a hardware one.

Re: Things I Believe About Software Engineering

#14
post #7

> Writing non-trivial software that is correct (for any meaningful definition of correct) is beyond the current capabilities of the human species. I think it's worse than this: Defining correctness for any nontrivial system to the level of detail required by software is beyond the capabilities of any human or group of humans operating to a deadline. The only way to get there is to pare down the scope such that physic…

> If you get a theory, develop a test which the theory is vulnerable to [...] Some people seem unable, or unwilling, to think like that.

Because developing that test is often even harder than developing theory itself and developing nontrivial theory requires ALL of your mental effort.

Re: Things I Believe About Software Engineering

#15
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…

It's kind of curious coming out of university where I learned about doing requirements properly and up front (which I suspect kind of tends towards a waterfall approach) then comparing that approach to my work now.

Project managers constantly change their mind about requirements and then wonder why we're shipping late, although I suspect some of this is not considering failure/bugs when planning. Even when it comes to breaking down and estimating work, if the estimates software engineers produce don't align with the high level schedule they're automatically wrong or people start asking about what we can trim down (which somehow is always testing).

Perhaps it's idealism vs reality, but I find it a bit bizarre.

Re: Things I Believe About Software Engineering

#16
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…

It is said that the Apollo 11 lunar lander computer rebooted twice during the final approach. We could probably not say it was correct, but still it was robust. "for any meaningful definition of correct" sounds a bit to strong as an hypothesis. Maybe we could rephrase: for all piece of software S, there exist a definition of correctness for which S is incorrect. Timings in particular are very difficult to ensure.

Re: Things I Believe About Software Engineering

#17
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…

Writing non-trivial, correct software while not blowing the budget is beyond the capabilities of the human species.

Re: Things I Believe About Software Engineering

#18
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…

I'm guessing this is an average rather than absolute amount every day, and I also don't quite think it's possible to 'force' yourself to be more productive, as being productive is both about how fast you think, how fast you type and how fast you come up with solutions to a problem.

No matter how much you force yourself you can't just force yourself not to feel exhausted/restless/depressed or whatever else is effecting your productivity, you sure can alleviate these symptoms, but that's improving your well-being generally rather than forcing yourself to be productive.

So it sort of depends what you mean by force, I'm guessing it would just cause you more stress and make you eventually burn out because you're not in reality becoming more productive by focusing more, you're only stressing yourself out further.

Re: Things I Believe About Software Engineering

#19
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…

For me, I think I can achieve 8 hours if:

- I'm working on something I'm interested in

- I feel like there's upside for me if the project succeeds

- I can work in different places throughout the day, like my desk, my sofa, in another room, etc. Not really possible in an office

- It's a quiet area where I won't have people interrupting my flow state

- I'm not blocked on things I need to know

- I'm working on something that's been de-risked. I know what I need to do and I know how to do it

Re: Things I Believe About Software Engineering

#20
post #17
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…

Writing non-trivial, correct software while not blowing the budget is beyond the capabilities of the human species.

Allocating the correct budget to write non-trivial, correct sooftware is beyond the capabilities of idiot managers.
Post reply on HN