Quote Originally Posted by vincink View Post
Having worked in software development for decades, this is truly disappointing to read. Software isn't like a light switch, with only a few components. Software is like a metropolis-- a huge city with many systems, sub-systems, sub-sub-systems, etc, that no single developer can fully understand end to end. Working with one version of software whose complexity is equivalent to a metropolis is impossible; having two separate versions of the same software increases in the complexity of the entire product not linearly but exponentially. Now imagine a "new generation of developer" trying to understand the exponential complexity of two separate versions of the same software. Most software worth its weight in gold builds a library of knowledge over its life that is equivalent to the sum of all of Oxford's libraries.

You're asking developers to become gods when you say this, much as you might pretend you're not saying this.


More people exponentially increases the communication channels. Humans are terrible at communicating information. Adding another person may theoretically create a "bigger bucket" to hold more water, but it also adds more holes to said bucket. Information leaks rapidly in human communication and is subsequently lost. Do you use SharePoint at your place of employment? Or some equivalent knowledge repository? Microsoft intended that to be the solution for leaky and lost information. What it's turned into is a black hole. Even with AI agents that cull through it, the context of the original information is gone. No AI can restore that, and context is what brings value to information. Not the information itself.


Hiring skilled people in bulk and expecting a 100% increase in productivity is foolish and is the mistake there in that scenario. Sounds like whoever demanded more labor did not have work ready for three-quarters of the hired labor force. The best decision there is to keep the 2, fire the 8, hire 3 young, motivated developers as apprentices and train them up over the course of a few years so that they become a solid experts. Repeat. Apprenticing is the best model we have for transferring information, wisdom, and skills. Have a look at Canada's civil engineering history from roughly the late 1960s to 2020 to see how eliminating apprenticing nearly cost the entire nation of Canada its electrical grid. It's a great and humbling lesson in how to ensure knowledge, wisdom, and skill is sustained and increased over generations, and how to hire the right amount of people and keep them motivated (i.e., stave off laziness).


I'll let you in on a secret: since computer systems first appeared in the 1930s, the user has always been a tester. It cannot be any other way. Whoever uses software (or hardware, for that matter) is exercising it, and based on the user's unique input they are effectively testing the software, even if that's not their intent or desire. The QA department is simply a bunch of testers with some specialized skills and tools for testing software. And they have never been charged with the mission to find every possible defect in software. That is impossible.
This is very fair and appreciated criticism to what I posted earlier.
I thank you for it.

I was in a place of anger at the time of writing my original post.

My infuriating bit was more intended towards the software bloat found in most if not all software projects. I particularly hate the amount of garbage introduced into systems by people who don't really know what they are doing. That was the gist.
Point being, specifically the introduction of libraries in codebases that DO NOT need said libraries but instead could use 2 or 3 functions written from scratch and made as an importable module specific to the project instead of importing entire frameworks and introducing problems that would've not existed at all had it not been done.

I listen to Primeagen a lot and he has also brought up examples of code pieces where size mattered for example and after having written the small bits of code that was really needed to achieve something, watch an apprentice or some newbie bring back the entire external framework because he didn't understand or was lazy or just stupid/whatever to get the same functionality. Usually cuz hurr durr google or some other twat was using it. Yes, I know internal communication problems may be a factor here but are they really? When you look at the code and see some function called that isn't in your library, wouldn't you be interested to know where it's coming from?
But no, he needs it fast and in comes the whole library again... This is the part that infuriates me and makes me angry at the developers..
And that example from my POV is pervasive, it's everywhere.

And then the bit of catering to this folk is another angrying matter.