Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I don't think it's true that computers are great at exposing this. Software ranges from the concrete (does this button do anything) to the abstract (does this statistical program have an off by one error that's invisible to customers other than returning somewhat wrong results?). I think there's two competing definitions of 'work' in software - 'it works' as in 'allows for use' which can compete with the 'implements properly'. Computers and code will brutally expose the former, since it simply will not allow you to do something if it's broken. They don't necessarily expose the latter.


If the software should let me do X, I can click around and confirm that I can do X. I think most people would consider that the definition of “works,” rather than the quality of the code, the validation that the proper thing was built, etc.

Looking at the code can tell you whether it was “implemented properly” - or at least, if it was done reasonably competently.

Relationships, though, can help you know if that properly implemented code was likely a fluke or not. Does the person ask questions? How do they ask questions? How do they communicate? How do they capture requirements? How do they push back when something seems unclear or unwise? etc.


I don't buy your arguments - at all. At the end of the day people have strong expectation about what software should do. If it doesn't do that, they will quickly notice. If they don't notice (now or in the future) things like your "off by one" errors, then that requirement wasn't likely that important to begin with.

Now, I've seen plenty of "demo-ware" software that has been presented as something that was much more than it actually was, but again, stuff like that always falls over, riddled with bugs and crumbling under load, when it gets substantial use.

Some things you really can't fake, and software engineering is one of them.


Let's say you have a for loop that is supposed to run once, but some "programmer" calls it a hundred times. The program still works, but it's a lot slower.

Input lag on devices has doubled or tripled from the 1980s while clock speeds have increased drastically. Reddit and Hackernews do essentially the same task, yet Hackernews' load times are almost instant while Reddit takes more than a second to load at times.

It's true that you can't fake a minimum viable product, but it seems to me there is a long way from that to actually making something good.


We've outsourced the cost of development from the developer to the user.

Noone wants to write low level code because learning it costs money, so instead we just throw more hardware at the problem until it goes away...


Sort of. Would a user use all of that compute if it all wasn’t wasted? Probably not. What we’ve done is “inflate away” (similar to fiat and central bank policy) the need for additional human developer time through Moore’s law. We all pay for this through annual tech spend, which keeps the advancement treadmill running.

Human time is expensive, so it makes sense to throw anything cheaper at the problem first.


Perhaps we have different conceptions of 'fraudulent'. I don't think it necessarily implies 'fake', but something more along the lines of using inferior building material. Perhaps it 'wasn't important all along' or perhaps it'll lead to catastrophic failure in 25 years, who knows? Software 'engineering' may be hard to fake, but that's because you're probably defining it as the proper way to develop software. A lot of software is certainly not built in a way familiar to an engineer.


Building materials are judge based on the standard of "survives for at least three decades without crushing those inside" not "survives the next reorg or pivot." What would be the equivalent of inferior building materials failing over 25 year timescales in software? C isn't even twice that age and the oldest running mainframe software is probably only a little older whereas we've had millenia of experience constructing buildings.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: