this post was submitted on 25 Sep 2023
4 points (100.0% liked)

Programming

17001 readers
248 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

Recently re-discovered this gem of a blog post, written in 2018 by Nikita Propokov, about his disenchantment with the state of modern software. Do you think it's still relevant today (perhaps more/less so than it was when it was written)?

top 11 comments
sorted by: hot top controversial new old
[–] ono@lemmy.ca 1 points 11 months ago* (last edited 11 months ago)

Programmer time is more expensive than computer time.

That might excuse inefficiency if all of these things were true:

  • The programmers (or their employers) were buying new computers for all their users
  • The new computers were fast enough to keep slow software from wasting users' time
  • The electricity to run them was free and without pollution
  • The resources consumed and waste produced by that upgrade cycle had no impact on the environment

What's really happening here is that producers of software are making things cheaper and easier for themselves by shifting and multiplying costs onto the users and the environment.

The amount of waste is staggering. It's part of why I haven't enjoyed professional software development in years.

[–] jadero@programming.dev 1 points 11 months ago

Good article that I think does a pretty good job of outlining the problems of "Computer time is less expensive than programmer time."

I was "raised" on the idea that end-user time is more valuable than programmer time and nobody really talked about computer time except in the case of unattended-by-design systems like batch processing. Even those were developed to save end-user time by, for example, preparing standard reports overnight so that they would be ready for use in the morning.

I think that one place we went off the rails was the discovery that one way to manage efficiency was by creating different classes of end-user: internal and external. Why would management care about efficiency when the cost of inefficiency is paid by someone else?

So much software is created explicitly for the purpose of getting someone else to do the work. That means the quicker you get something out there, the quicker you start benefiting, almost without regard to how bad the system is. And why bother improving it if it's not chasing customers away?

[–] TheFerrango@lemmy.basedcount.com 0 points 11 months ago (1 children)

It only got worse, and now that enshittification is in full effect for most big name consumer software, the speed at which things are falling is rising exponentially.

I only expect even worse now that AI has become mainstream and companies are half baking it into every notepad they find.

[–] monomon@programming.dev 1 points 11 months ago* (last edited 11 months ago) (1 children)

Funnily, due to this, i often find an open source app that is way better than whatever annoyed me.

Just today i used an Adobe product that got me raging. Within minutes i installed an oss equivalent that was a joy to use in comparison.

It's an interesting trend.

[–] Mikina@programming.dev 1 points 11 months ago

This is my experience as well. I've always tried to be privacy-conscious, and stick to self-hosted alternatives or FOSS, but I was also lazy and didn't really tried too hard. With the recent enshittification problems for almost every product that has a corporation behind it, it's a lot more in my face that it's shit and I should be dealing with it.

It made me finally get a VPN and switch to Mullvad browser. Get rid of Reddit completely. I finally got a Pixel with GrapheneOS and got a NAS running.

It's also doing wonders for my digital addiction. The companies are grossly mistaken in assuming that my addiction to their service is greater than my immense hatred for forced monetization, fingerpriting and dark patterns. It's turning out it's not, and I've dropped so many services in the last few months I never was able to really stop using, most of them thanks to popups like "You have to log in to view this content" or "This content is available only in app", or "You are using an adblocker...". Well, fuck you. I didn't want to be here anyway.

[–] ptz@dubvee.org 0 points 11 months ago (1 children)

IMO, it's more relevant today than it was when written. None of the problems called out in the post have been addressed, and many have gotten worse.

[–] ebits21@lemmy.ca 0 points 11 months ago (1 children)

Why would it get better? Higher level programming is faster and saves companies money… they’re not going back to super efficient assembly or something to make xyz from scratch.

Article has a bit of an “old man yelling at clouds” sort of vibe.

[–] AAA@feddit.de 1 points 11 months ago (1 children)

It does have that vibe, but it's unarguably true that a lot of software and websites are ridiculously bloated and slow.

[–] varsock@programming.dev 1 points 11 months ago

7 years ago when I started my career, My first project we sat down and designed the program and interfaces.

Today, we implement features using best practices, never sitting down to design and end up accumulating technical debt that we don't have funds or time to go back and fix.

Time to market is proportional to time to obsoletence. We don't design for longevity anymore :(

[–] Mikina@programming.dev 0 points 11 months ago (1 children)

I was just thinking about something similar in regards to gamedev.

For the past few years since college, we've been working on a 2D game in our spare time, running on Unity. And for the past few months I've been mostly working on performace, and it's still mind-boggling to me how is it possible that we're having troubles with performance. It's a 2D game, and we're not even doing that much with it. That said, I know it's mostly my fault, being the lead programmer, and since most of the core system were written when I wasn't really an experienced programmer, it shows, but still. It shouldn't be that hard.

Is the engine overkill for what we need? Probably. Especially since it's 2D, writing our own would probably be better - we don't use most of the features anyway. The only problem would be tooling for scene building, but that's also something that shouldn't be that hard.

The blog post is inspiring, just yesterday I was looking into what would I need to get a basic rendering done in Rust, I may actually give it a try and see if I can make a basic 2D engine from scratch, it would definitely be an amazing learning experience. And I don't really need that many features, right? Rendering, audio, sprite animation, collisions and scene editor should be sufficient, and I have a vague idea about how would I write each of those features in 2D.

Hmm. I wonder what would be the performance difference if I got an MVP working.

[–] spikespaz@programming.dev -1 points 11 months ago

Unity is trash and I'll just leave that alone.

Using Rust for a game engine with wgpu, unless you already know Rust intimately and have used the Vulkan API before, is going to be difficult for you. I recommend you give it a try, but last I checked wgpu expected you to be familiar with Vulkan and is missing comments on most crate types and functions.

You might have better luck with something like macroquad or miniquad, but you'll probably hit a wall and realize you want to do something that the developer didn't think to expose an API to make possible. You're also on your own for sound. Bevy has many components and I know it's popular, but I don't know if it has rendering. Maybe macroquad is the missing piece? Oh, and then text rendering. That's a tough one.

I recommend a couple options: browse lib.rs or AreWeGameYet for game engines that aim to provide a complete package.

For non-rust, recently Relogic gave a bunch of money to Godot and FNA, so I would check those out. That's going to be your quickest start (towards minimalism and performance) that isn't unity.