also I just realized that Brazil did NOT make a programming language entirely in Spanish and call it “Si” and that my professor was making a joke about C… god damn it
this post is probably too nieche but I feel like Lemmy is nerdy enough that enough people will get it lol
There’s one big difference between hobby work and professional work: If you do hobby stuff, you can spend as much time on it as you want and you are doing what you want. So likely, you will do the best you can do with your skill level, and you are done when you are done, or when you give up and stop caring.
If you do professional work, there’s a budget and a deadline. There’s a dozen things you need to do RIGHT NOW and that need to be finished until yesterday. There’s not one person working on things, but dozens and your code doesn’t live for weeks or months but for years or decades and will be worked on by someone when you are long gone. It’s not rare to stumble upon 10 or 20 years old code in most bigger applications. There are parts of the Linux kernel that are 30 years old.
Also in professional work, you have non-technical managers dictating what to do and often even the technical implementation. You have rapidly shifting design goals, stuff needs to be implemented in crunch time, but then gets cancelled a day before release. Systems are way more complex than they need to be.
I am currently working on the backend of the website and app for a large retail business. The project is simple, really. Get content from the content managers, display a webside with a webshop, handle user logins and loyalty program data. Not a ton of stuff.
Until you realize:
We are trying to overhaul this right now, and we just had a meeting last week, where we got someone from all of these teams around a table to figure out how different calls to the customer database actually work. It took us 6 hours and 15 people just to reverse-engineer the flow of two separate REST calls.
If you see bugs and issues in a software, that’s hardly ever due to bad programmers, but due to bad organizations and bad management.
This is exactly what the software crisis is, btw. With infinite time and infinite brain capacity, one could program optimally. But we don’t have infinite time, we don’t have infinite budget, and while processors get faster each year, developers just disappointingly stay human.
So we abstract stuff away. Java is slower than C (though not by a ton), mostly because it has managed memory. Managed memory means no memory management issues. That’s a whole load of potential bugs, vulnerabilities and issues just removed by changing the language. Multitasking is also much, much easier in Java than in C.
Now you choose a framework like Spring Boot. Yes, it’s big, yes you won’t use most of it, but it also means you don’t need to reimplement REST and request handling. Another chunk of work and potential bugs just removed by installing a dependency. And so on.
Put it differently: How much does a let’s say 20% slow down due to managed memory cost a corporation?
How much does a critical security vulnerability due to a buffer overflow cost a corporation?
Hobby development and professional development aren’t that similar when it comes to all that stuff.
Maybe it’s sort of a tragedy of the commons thing. Maybe new standards should have support for limiting the resource use of stuff and the defaults would be low enough that it would force companies to allow time to write good code or it will be unusable on 90% of machines. This might actually fix the issue. Companies could force programmers to just churn out terrible code as fast as possible but would have to actually allow time to optimize and clean up. Idk. I just deal with it by avoiding all that stuff because I actually have enough willpower to stop using something even when it’s more convenient out of principle, which I realize is rare. Most people just want their tik tok OS and they don’t care if they have to pay $1000 for a device that’s a glorified streaming media player. I’m glad Linux exists and it’s still written in C. I’m going to release a game some day and Im going to target Linux as the native client and I don’t care if I lose 80% of my customers. I want to be part of the solution and not the problem, but I understand survival and keeping a job is important to someone like you. Anyways good talk, and windows XP and 7 were much better then any modern operating system ever will be. Linux is catching up fast and we will probably all be on Linux running C code before long with the state of the industry. I can’t even use windows anymore. Much of the web is becoming that way as well. Purely profit driven, run by publicly traded companies that hate humans. Always brownosing the state and their corporate sponsors so the gestapo doesn’t come for their profits next.