Skip to content(if available)orjump to list(if available)

I can't pay rent because devs just don't care

hnthrow90348765

>When someone smugly says "micro-optimisations don't matter, networks are great, CPUs fast and memory plentiful", proceeds to make an app one degree more complicated than Hello World use 4 GB of RAM and drain half my battery, I'm having dark thoughts.

TBH I don't think those are the same person. Lots of apps glued together by developers who never think about micro-optimizations, maybe under severe time crunches without QA teams or PMs who don't care and managers who chose to go with the lowest bidder, but sure, let's blame the developer.

I look at video game forums and subreddits and see the same logic when they don't like something; like, you honestly don't know how software or games are built if you are solely blaming the devs at this point.

lcnPylGDnU4H9OF

> I look at video game forums and subreddits and see the same logic when they don't like something; like, you honestly don't know how software or games are built if you are solely blaming the devs at this point.

I always read "devs" in video game discussions as referring to the company which owns the development work rather than the programmers at the company. If someone wrote a comment, "The devs don't let their programmers do their job" on a video game forum, I would logically expand "devs" to "managers at the development company". I totally see how that's not intuitive to a developer, though; perhaps that comes from my interest in video games before I ever became a programmer.

rbanffy

In many cases, micro-optimisations don’t matter. If they did, we wouldn’t have shell scripts.

It is a bit sad that a modern processor could run CP/M like a 4GHz Z80, but I also remember that back then Unix could take many minutes to come up.

paulryanrogers

Do you mean 4MHz Z80?

pydry

it's the ones who rave "microoptimizations matter goddamn it!" who will try to shave 150ms off the "send money" screen of the banking app and not notice that the app takes up 750MB of storage.

joshstrange

Or spend 2 days shaving off 150ms that no one asked for when we have much more pressing features. I don't care if the button is faster if the action it kicks off doesn't work. The road to hell and all of that...

anon7000

One of those matters a lot more to most users

joshstrange

It's kind of funny because I'm not 100% sure which one you are talking about. I assume it's the time, storage be damned. I agree that's probably what users will say but in that world (picking speed over storage) we will see this exact same article posted with a stronger focus on the app size (the post does make at least 1 mention of app size).

TZubiri

But it's usually the other way around? Lightweight usually means faster. It's takes less bandwidth, it can be cached more efficiently at network edges and in CPU cache.

There exist tradeoffs that might make bulkier applications worth it, like faster and cheaper development I guess.

danaris

...or maybe the ones who have the ability to shave 150ms off the "send money" screen do not have the authority to affect how big the app is overall.

bradley13

Add in the issue of change for the sake of change. I'm older, and wear hearing aids. Today, there was an app update that added nothing new, but it did rearrange the GUI. It's not better, it's just different.

Being a techie, it's no problem for me. But: how many nontechnical, elderly people are going to be lost?

Stupid management? New UI designer wanting to prove themselves? Don't know, don't care - I played dumb and sent in a confused complaint.

epolanski

I absolutely hate pointless UI changes.

Even worse ab tests. Had Gmail once on 4 different devices all going through different ab tests I couldn't make sense of it.

sotix

A UI change in my Tesla pushed me over the edge and made me commit to selling it back in December 2020.

snickerbockers

>New UI designer wanting to prove themselves?

it's actually kind of comical to think of all the IT departments out there forcing the entire company to beta-test a new webapp every five-years solely because they're either bored or afraid of not looking busy. I would rather they just spend 90% of their work-week playing WoW and only show up when there's a new problem but i can also understand the pressure to look busy and not let some overpaid exec like elon musk see how not-busy they are and come up with the bright idea that since the computers work 90% of the time without manual intervention that means you only need 10% of your staff.

TZubiri

My US bank is hilariously slow to change and I love it, debit card doesn't have that wireless thingy, the website did change recently, but it had 2000s dot com boom vibes before, and a rate of change of once every 20 years is fine, especially since they sent copious amount of emails and followed up to make sure everyone was able to do stuff.

In general I think the US is very respectful of slow change, hell you file taxes by sending mail or faxes!

0xTJ

I do find it ridiculous just how big mobile applications have gotten. Why does the UPS app have to be over 100 MB? It's got maybe a couple dozen unique screens visible to the user, few image assets, and mostly just settings, and account login, text entry, and pulling results from the web. It's not unique to UPS, most of the apps on my phone are of that size magnitude (Amazon is almost a quarter gigabyte with data), it was just a convenient choice because of how simple the app seems.

That being said, the oddest-to-me thing in this article is a bank call center not being open 24/7.

toast0

I don't know about iOS, but when I look at big APKs on Android, what I usually see is a good number of images that are essentially repeated 3-4 times for different dpi ranges, and localized text, in utf-16, for many languages, uncompressed. I think I saw something recently about Google providing tools to compressing localized text, but I may be misremembering. The logic for storing localized text uncompressed is something about mmaping the data and accessing by offset for efficiency, but when an app supports a majority of the world's living written languages, and users tend to support only one or two, the storage cost doesn't make sense. At one point, Google Play tried to do localization packs, but it never actually made sense to use, so nobody does. I know proprietary options exist to compress localized text in apks, but being part of the default system is important.

</dated rant> (edit: my information is old, and perhaps hopefully outdated)

mnahkies

Android as a platform definitely supports only downloading the image assets etc relevant for your specific device - whether applications are taking advantage of this is a different question https://developer.android.com/guide/app-bundle/app-bundle-fo...

g-b-r

Uhm I think Google Play now always only sends you only the resources for your device and language? (except for the few old apps that are exempt from giving the signing key to Google)

phkahler

>> Why does the UPS app have to be over 100 MB?

Oh oh!! Let me guess!! I don't do mobile but have looked into it. And the guy behind me is doing an app too. Everyone wants to minimize development effort so they pick a framework that will spit out both iOS and Android apps. It's the framework that ends up bloating everything. Maybe? That doesn't explain "why", it just pushes it off the app developer onto someone else.

bragr

>Why does the UPS app have to be over 100 MB?

There are two conflicting problems here that are the two heads of the same coin:

>"Why is this app so big, don't the devs respect my storage?"

vs:

>"Why is this app so slow, don't the devs respect people with poor connections?"

pjc50

? They're not in conflict at all, if the app is smaller it's also faster to download.

raydev

The app is only downloaded once every month or two for the usual updates. It happens in the background when you aren't using your phone anyway, and by default both OSes will wait until you're on wifi too.

App size doesn't matter much in the actual use of the app, especially if you're using it often.

Hizonner

... except that the complete collection of everything the UPS app needs to execute or display, in order to actually fulfill its function, summed up throughout all of its operation in every possible mode, probably fits in 1MB. If there's 100MB of stuff you store or potentially download for a shipping app, then you're including something that doesn't add value for the user.

Start by removing all the pictures, videos, and similar. Then take out the analytics crap. Then, if your app is still big, figure out what's wrong with your code.

Ekaros

It seems always so weird, when you compare those to some older well optimized desktop softwares. Some with decent number of features being in under 10 megabyte range...

edmundsauto

> Why does the UPS app have to be over 100 MB?

The same reason it takes longer to write a shorter letter. Nothing is free, removing things costs time.

ndriscoll

My experience is that it doesn't take longer. It just takes knowing that a lot of "best practices" are actually not (both dev and management need to know this, or at least management needs to trust dev).

gblargg

Apps are like subscriptions, a way to get their claws into your stuff and continually drain whatever they can from you.

TZubiri

Is 100MB a lot? It feels like a decent size, yet if you consider that a hello world weighs 17kb, it feels like a lot without an explanation.

I'd venture a guess that there's a fat dependency chain based on the need to avoid reinventing the wheel all the while not paying for software dependencies.

NPM import npm2 npm2 install obscuredependency

And npm2 doing full dependency duplication to avoid version conflicts, leaving like 2 or 3 versions of each base library, that kind of stuff

hexator

In my experience a lot of these kinds of messed up priorities tend to come from managers and PMs, not engineers. A lot of engineers would find it a fun challenge to support old devices and optimize the hell out of your app, but they just aren't given the opportunity.

dt3ft

Right on the money. We get paid to add more pretty buttons, rather than make sure exceptions risen by existing buttons are handled gracefuly at no cost to UX.

paxys

> I made that up. Not all of it, parts of it happened.

> I'm just ranting because it makes my blood boil.

So now we are just making up hypothetical scenarios and getting mad over them?

Tech people really need more hobbies.

happytoexplain

Use cases are hypothetical scenarios worth getting mad over. They are THE things we should give a shit about. When somebody on my team suggests something that's user-hostile in 1% of cases because they don't give a shit, I'm not going to just say, "well, I better not have negative emotions". That's how we get the garbage world.

jmull

If you want to do a good job, definitely do not get mad over use cases.

Devs are more like Spock, not The Hulk.

We work better when we stay cool, clam, and logical, not when we get angry and heated.

jsnell

But the hypothetical part here isn't just the use case. It's also the outcome. And the bad outcome did not happen, the author made it up.

barbazoo

Repetitive focus on negative thoughts or hypothetical situations could be a symptom of anxiety or anger. Doesn’t have anything to do with tech in my experience, more with mental health in general.

thehappyfellow

Yeah, I was angry when I was writing it, not denying it.

gblargg

Anger is often the only way to motivate action, since when you were calm you didn't care about solving it.

snickerbockers

I have definitely been in dozens upon dozens upon dozens of situations where a website or app struggled to do something that my dad's PC in the 90s could do fast enough for the modem to be the only bottleneck. And even then the P1 with the modem that ran into the phone line probably still wins out, which is disgusting given that its entire disk was smaller than the RAM on my phone.

ROPs vulernabilities and lack of linux compatibility notwithstanding, i swear flash wasn't even half as bad as modern web crap.

chihuahua

It's a very sophisticated rhetorical technique called "attacking a strawman." They've already won all the normal arguments they could find, so they create a strawman and attack it.

epolanski

My experience as a dev is that it's not devs not wanting to fix those issues it's decision makers that can't sell it upwards.

"We spent x weeks working so users with low memory space can update" is like unsellable and will get you laughs as a response.

On top of that, reality is that this effort is rarely deemed worth it in money terms. How many users are gonna change bank for that?

And don't get me started on QA.

Software is complicated and it's good and complex as the organizations making it, we devs are just one part of the problem.

xorcist

> "We spent x weeks working so users with low memory space can update"

But it's the other way around! That's the whole point. Every app starts out small. Apps don't grow unless you add complexity to them. It's much less work to do something simple than doing it overly complex. We see this all the time.

The question to ask should instead be: How can it be that "We spent x weeks working on increasing complexity" is not completely unsellable, if all your users want to do is pay their bills?

Now, reality is never that simple and users constantly ask for new features, that much is true. But why can we as an industry never listen to all those users who don't want new features?

It used to be completely normal to identify a need, sketch out the most appropriate funcitonality to solve that need, and them implement it. Then the core functionality is done. The software can continue to be developed around that functionality, but the core is fixed because the problem domain is well described.

No software is allowed to fit the problem domain anymore. It's just a constant pile of features upon features, to keep a legion of product designers, user experience managers, product owners, and an army of developers busy every day with no end in sight. The only break from the treadmill is the occasional product redesign, and if you can't afford that this increment then you can always change the frontend framework. Whatever happened to decent problem modelling and when you're done, you're done? Optimizing what we got instead of expanding it?

Etheryte

To an extent, I think this is still on the dev. Don't declare your feature done when the bare minimum of works on my machine when I squint is done. One of my first managers taught me this lesson, the feature isn't done when you're done coding, it's done when you've jumped through all the other hoops too, and it's actually live and ready to use. That includes stuff like tests, review, qa, and in this context, making sure it's performant. Agreeing to cut corners to meet an unrealistic deadline very much is on the dev.

epolanski

I agree 100% as I wrote in my final sentence, we're just part of the picture.

RajT88

Watch a Dune movie some time and replace "the spice must flow" with "the features must flow".

Making money is the task at hand, and orgs make money these days by monetizing users and not treating them well. Their status as a customer is taken for granted - because where are you going to go? All the other guys are as bad or worse.

The Chase app I use is 298mb.

jonhermansen

While I agree with you that a lot of sub-par technical people are relegated to the role of QA, just because you haven't seen one proper QA person in your life, doesn't mean they don't exist.

Have you ever thought to ask if the company you're working for puts their money where their mouth is, when it comes to quality? If they did, how are these people getting hired in the first place? What responsibility falls on the engineers who interviewed these folks? Does your reporting structure reward people who raise problems, or punish them? Who do your QA people report to? And please don't say the head of development, who is responsible for deliverable dates.

The best QA people I've ever known had such a good grasp on the market and customer needs that they were, in fact, product managers. Sounds like you've probably had a similar experience.

Don't throw the baby out with the bathwater. There's plenty to learn from Statistical Process Control and Deming, etc.

I've worked on more projects without a requirements specification, than with one. Without a competent PM, how will QA people even test? I guess they can intuit what the product actually needs to do, but then there's ambiguity. The reality is that someone (product) needs to document exactly what the product needs to do and how it must operate, in no uncertain terms. Even with a spec, it's often still quite ambiguous. I honestly see these problems as organizational, so when you slag on the QA folks, I get a little miffed.

I've caught plenty of bugs at review time, that could have been caught by some basic cursory testing on the developer's part. Mistakes happen. Even QA people make mistakes, we're all human after all. Does placing the blame directly on the QA people really help you? Imagine if you started asking questions about your development process, and where things could have gone wrong? The fish rots from the head, and often times bad practices are (explicitly or implicitly) rewarded by management, because they result in faster iterations, shorter delivery time, but something is definitely being lost here.

Sorry if my rant is slightly inflammatory, this is coming from a QA person who has seen a lot of these failures in practice, so I feel the need to defend the position a bit.

simpaticoder

There is one way to pay rent which requires no RAM or CPU cycles: write a check, and mail it. In my experience, most payees accept the date a check is mailed as the date of payment. (There may be exceptions to this, and I'm not sure what, if any, protections the law provides, so it may not be a valid fallback.)

In general society needs to maintain these low-tech fallbacks to high-tech "improvements". For example, we should keep taxis (that can be flagged down with your hand, and paid for in cash) and not rely solely on Uber, Lyft, etc. We should keep the ability to order from a human at restaurants. We must resist putting the smartphone into the unreplacable critical path of human life. To do so values technology above the value of human life.

supportengineer

It's already happening today where children and the elderly need a fully-charged, fully-patched secure device with multiple apps, passwords and two-factor authentication, just to receive health care.

asdsadasdasd123

For this to work, cash needs to suck less. The convenience factor will overpower any concerns you or i have.

cormorant

How would cash be made to "suck less"?

asdsadasdasd123

I think coins need to be banned full stop. At current prices, you can probably just do a paper quarter and create a law to allow cash payments to be rounded down to the nearest quarter. Most business would be ok with this since they can avoid the credit card fees. I think we should also go plastic like canada, the bills are easier to count, harder to get dirty, and harder to get lost or crumpled. I'd also imagine itd also be harder to counterfeit and easier to track.

jeffbee

In general one should never agree to use an app to pay rent, since these apps are often wrapped in terms and conditions. You should always just pay your rent by check, cash, or money order. Every jurisdiction in America requires lessors to accept these.

cormorant

Not quite. According to a quick search [1]: "Under California law, it's illegal for a landlord to require cash and/or electronic deposits as the sole methods to pay rent.1 Landlords must allow a tenant to pay rent using at least one of these other options as well: check, cashier's check, or money order."

When I lived in CA I had a landlord that demanded cashier's check. Do you know how annoying those are to get?

I could have also paid cash but then I'd take the risk that the cash, dropped in a mailbox, would "go missing".

[1] https://caretaker.com/learn/rent/rent-payment-laws-in-califo...

jeffbee

Doesn't seem like that much of a problem? My bank has a form in their app to have a cashier's check mailed to whomever.

thehappyfellow

Author here. I did not expect to see my post on HN!

It was a rant, I was venting, it’s not supposed to be an objective statement about the state of tech. It’s shouting into the void about the things I find unfair and unbearable, I don’t think it’s a great HN material.

I made up parts of the story because it didn’t happen to me and I didn’t want to share details of somebody else’s situation.

int_19h

FWIW I think it captures the sentiment many users have towards software today fairly accurately, and every software engineer who has even a modicum of pride in their trade really ought to pay attention.

One thing I'd like to point out, though, is that this kind of stuff isn't really about micro-optimizations. Most software in the "good old days" wasn't really micro-optimized either. No, what this is about is bloat. Layers upon layers of abstractions that, in most cases, amount to rearranging the pieces in the way the author deemed most aesthetically pleasing. When I look at call stacks while debugging most modern software, I can't help but feel that it spends most of its time calling functions that call functions etc, 20-30 levels deep. Most data flow isn't from component to component, but within the component between those layers. And it all adds up.

g-b-r

Well, it actually did happen to me (precisely to pay the rent), and I burst into applause after reading your blog post

thehappyfellow

It really makes me happy to know that my writing struck a chord for at least one person - thank you!

dangus

I guess “unfair and unbearable” is paying your rent at the last minute after business hours on a phone with 2012 specs. Wouldn’t want to plan ahead and pay on time or pay with a check or pay with autopay or pay with a laptop or pay with a computer at the library for free.

You say it’s not an objective statement about the state of tech and I would agree: it’s highly subjective, a literally made up story, and a dumbass opinion.

Getting a phone capable of doing an online bill pay is trivial. Literally free with a discount shit cheap phone plan.

The victim mentality will destroy you if you let it take over.

pjc50

> Getting a phone capable of doing an online bill pay is trivial. Literally free with a discount shit cheap phone plan.

No matter how cheap your phone is, if you're poor someone will always judge you because your phone is too expensive.

"Why do you have a more recent phone that 2012 if you're on benefits?"

dangus

I don’t think this has been true in the last 5-8 years where phones are incrementally different and essentially look identical.

I saw an ad yesterday for a free iPhone 13 with a discount carrier and that phone is almost indistinguishable from the current iPhone on sale.

kugurerdem

The thing is, until he said it was a made-up story, I thought it was real. This shows that things like that started to become the real norm.

I also don't think the author is in a victim mentality, it is more like a reminder to other developers that they can do so much better.

dangus

Just because the story is believable doesn’t mean that the people who are in the story are without responsibility or fault.

When you get into a lease agreement you should know how to pay going into it. If your landlord doesn’t take a form of payment you can handle you don’t sign the lease in the first place. That’s your life responsibility as a functional adult. Paying rent every month isn’t a surprise. Being low on funds isn’t an excuse and being low on funds isn’t the issue at hand.

mk_stjames

I have had insane numbers of problems being someone who travels/moves countries a lot with banks wanting their app to 2fa before allowing transactions, the app not working, my phone dying just when I am trying to pay my bill at a restaurant and getting my card declined, my ATM card also not working and then the website locking me out and requiring me to.... use the app to generate a 2fa code... from the phone... that just died.... on and on.

I was once trying to update my address so I could get a new bank card shipped to me as the old one was expired and I had just moved. I could not update my address beforehand because... I didn't know what my new address would be until my arrival in that country and my apartment hunt was successful. Once I tried to login, I got locked out, and upon trying everything I could to remember a special recovery code that I could not find written down anywhere, I called the bank and they said they would send me a new code by mail. But I couldn't get my code by mail because... I no longer lived at the address on file. They said sure you just need to login to update your address. Which I couldn't do. But they couldn't just send a code to a new address from someone over the phone, that wasn't secure.

I forget how I got out of that one.

I've basically checked out of all this at this point. I need to get off my ass and move my money better/differently because I've started to see a day where I can't prove who I am and I live somewhere where I can't walk into a physical location to do so. It's more than a bit scary.

treve

If you're in the critical path for life, all functionality should be accessible for someone accessing the internet in a library.

supportengineer

How about if no technology is required at all to receive services related to the "critical path for life".

Arch-TK

One of the reasons I have refused to switch to HSBC's app is because I refuse to take up space on my devices with software that shouldn't exist.

I remember when HSBC had a website which did not require JS to use it.

Dark thoughts indeed.

mirkodrummer

I read a bunch of comments defending the devs that shouldn't be blamed, but I can't stop remembering what happened to me some time ago. First time I login on an online banking service, it required a otp code sent via sms, nothing special except there was a countdown on page, and not the one for requesting a new sms, but a countdown of 30 seconds for inserting the received code. I received the code 2 minutes later. Maybe one shouldn't blame the devs but I can't think of myself in the same situation trying hard to convince the manager/designer that that was a very bad idea, how bad you should be at ux to accept to implement something like that? Having said that the article mentions and blame Javascript, like everyone's love to hate, but in the meanwhile my "performant" google app on my iphone is almost a 1gb in size