Live data from Hacker News

Imaginary problems are the root of bad software

cerebralab.com

311–320 of 511 posts

Re: Imaginary problems are the root of bad software

#311
post #208

Earlier quoted context omitted.

Qt isn't even in the radar of most companies currently building multi-platform applications in HTML. And it won't be soon, for two main reasons: developers able to use it are expensive, and most Qt applications in the wild still have the "uncanny valley" look and feel about them on every OS but Linux. Not to mention that with SaaS being more profitable than selling unlimited-use licenses, a lot of apps also have HTTP…

All this sounds great from the perspective of retail shrink wrap software. Today, the major use cases for Qt on the desktop are in-house corporate software. And, no one cares about "uncanny valley". Only HN and online nerds care about that stuff. Average, non-technical, corporate users care about functions, not form. Hell, they are happy with a VBA app! Also, lots of in-car and in-seat (aeroplane) entertainment syste…

There's a reason in-house corporate software started becoming web based 15-or-so years ago: web is cheaper, easier to hire for, faster to develop and deploy, doesn't require installation or updates, easier to troubleshoot, doesn't need special pipes for communicating with the server (yeah I remember the days of DCOM, CORBA, WCF and other weird protocols instead of HTTP).

It is things like Qt that only HN and online nerds care about.

Don't get me wrong: I really like well made native apps and I think they're great. But Qt apps are almost never as great as software made with native toolkits directly.

Re: Imaginary problems are the root of bad software

#313
post #300

Earlier quoted context omitted.

From a person who started using computers from the early 2000s era: THANK YOU! None of the current SaaS apps I use can come close to the experience of using softwares from that era. Take a simple list view of a typical Windows/Mac software? 1. Command clicking selected multiple objects 2. Shift clicking selected a range. 3. Right clicking brought up selection actions. 4. Double clicking opened an object. This pattern…

Also: CTRL+A selects all CTRL+Shift+End selects all from where you are to the end CTRL+Shift+Home selects all from where you are to the top One of the (many) problems of web UIs is they often ignore the keyboard completely.

Or as is increasingly the case: they actively hijack what should be system-wide keybindings - making it even worse.

Re: Imaginary problems are the root of bad software

#314
post #29
post #17

I know it’s just an arbitrary number picked but this bit jumped out at me: “You’ve just wasted $15,000 on two months work with a team of contractors” The project may also have been doomed because $15k is not very much for something like they described. But again, fully aware that they probably picked a random number. I’d have just added another zero to make it more realistic.

In our agency 10 years ago we build such websites, it would cost 3000-5000 dollars max. Just with PHP and a simple self build CMS. Including a simple responsive design. We also hosted around 250 of such websites on a single dedicated server. It was very very fast.

I totally agree with this, normally it should be the cost of any content website for clients. The site is fast, and we just need to deploy on one dedicated server or for free with simple maintenance cost per month these days. We still do the same for small clients, with application building with us and want a content page for their blogs.

Re: Imaginary problems are the root of bad software

#315
post #308

Earlier quoted context omitted.

I can’t help but feel that Agile is at least partly to blame for this. Things like you are describing usually don’t come under the “minimum viable product” purview and thus get pushed out indefinitely until the product is at the “very mature” stage. At that point there’s the risk that the product will be re-written and the cycle reset again.

Nah. If anything a lot of these trends are directly anti-agile, e.g. avoiding labels and using icons so that it's easier to translate your app, even though the icons take longer initially and you're never actually going to translate your app.

I’m not really arguing that. I’m saying there is a trade-off between having the common OS feature set described above (Ctrl/Cmd-select, etc) and implementing/iterating a web/mobile product quickly. Often standard UI paradigms are never implemented or implemented inconsistently. AWS, widely known for their Agile practices, might be the epitome of this with their web console. Sometimes I can sort columns by clicking on them, sometimes I can’t. Some products allow shift or control click and some do not. Etc etc. I can only assume the product teams are doing their best within their constraints but as an end user it’s a piece of suck.

Re: Imaginary problems are the root of bad software

#316
post #263

Earlier quoted context omitted.

Interesting, I believe there is something to finance that allows or forces things this way. There’s much less fidget spinning and much more business in it for some reason.

Regulations, I’m guessing.

Regulations are a good excuse, but there is still a lot of fuckery in Finance apps, especially in the Fintech space.

Stability is something that must be culturally hammered and enforced by leadership.

If it's done by stakeholders, the app will look simple but still be a juggernaut of over-engineering underneath.

Re: Imaginary problems are the root of bad software

#317
post #68

Earlier quoted context omitted.

Ive seen a lot of engineers complain about YAGNI being taken too far but none who have seen their concerns validated by reality.

All depends on what the I is in the YAGNI. I have seen development be parallised where the same work is being done again and again by different developers in different ways because YAGN { maybe 2-3 days of upfront architecture and design for a 6 month project }. This results in bugs and maintenance nightmares. This was before unit tests were common though, so maybe unit tests may have saved it. But surely it was slow…

It certainly feels that way. 2 or 3 days of up front architecture and design with hindsight is always better than 2 or 3 days of up front design in reality, but of course you dont have that hindsight when you start.

I've had to do up front on multiple projects and it always results in overengineering - we focused on things that didnt matter, designed things that were inappropriate, etc.

I'd always rather take those 3 days and redistribute them as extra refactoring time.

Re: Imaginary problems are the root of bad software

#318
Even tho I'll get flak for it, I'll call bs on the article.

It's the same as the phrase "(premature) optimization is the root of all evil". Does it mean you should never optimize? No. Does it mean you should always optimize as a last step? Also no.

Here's the full quote: "Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."

It's way more nuanced and basically says: "Stop wasting time on optimizations with little gain, but still do them where they are useful/necessary."

Right now I'm working on an embedded device running a small Linux. Our resource usage is well within the bounds, so thinking about better architectures or optimizations is an imaginary problem. Right? No. Not at all. Making our software smaller and/or faster doesn't only mean we can put on more software, it also means we could produce cheaper because we need less resources.

Thinking about and experimenting with different architectures or newer technologies also seems like imaginary problem solving at first, but there is a good possibility that you improve your system as well. A better architecture could make your software more maintainable or give you the flexibility to implement new features in a way, that was really cumbersome with the old code.

So while I agree with the sentiment that you should not implement things you don't need, I also think that there should be room for people to experiment and try out different things. Because sometimes, the people working with the code the longest are blind to it's many shortcomings. Because it's normal for them to just work around them. But getting rid of those shortcomings can save you hundreds of man hours of work in the long run.

To cut a long story short: Do experiment. Do think about problems you might have in the future. Do the mental exercise and think about how to improve your current code and architecture. But don't blindly implement it

Always evaluate what your trying to do. Check if it improves the things it's supposed to improve and also check if it doesn't make matters worse elsewhere. Get to know the tradeoffs and make informed decisions if changing something that works to something that's better is worth it to you.

Re: Imaginary problems are the root of bad software

#320
post #208

Earlier quoted context omitted.

The problem with the controls is mostly because they don't want to pay for Qt (multiplatform toolkit), so instead every company (badly) implements their own controls in HTML to save money. I suspect ultimately they waste much more money than they save.

Qt isn't even in the radar of most companies currently building multi-platform applications in HTML. And it won't be soon, for two main reasons: developers able to use it are expensive, and most Qt applications in the wild still have the "uncanny valley" look and feel about them on every OS but Linux. Not to mention that with SaaS being more profitable than selling unlimited-use licenses, a lot of apps also have HTTP…

> If you want a "Premium" native look and feel, people gotta go directly to the source: native APIs.

I've seen this regurgitated a hundred times, but I don't really know any more what that "native look and feel" is. On Windows, it might be the old Windows 95 controls, but those are quite limited. What system today is made of dropdowns, checkboxes and OK buttons?

Post reply on HN