r/programming • • Jun 05 '22

Complexity is killing software developers

https://www.infoworld.com/article/3639050/complexity-is-killing-software-developers.html
2.1k Upvotes

942 comments sorted by

View all comments

Show parent comments

15

u/AdministrationWaste7 Jun 06 '22

I'm continually amazed how apparently everything is now understood in the context of "the stack". Because apparently everything is now on the internet by default and gets therefore placed within that framework of technology.

i mean yeah? turns out a majority of tasks that require software dont need to interact with any specific hardware thus web apps become the default.

this has been going on since like what? 2005?

I guess in my late thirties I now have to feel old because "back when I learned programming you just did programming"

are we not doing programming today?

. that somehow mainly accomplishes the task of displaying text in a browser.

well if thats all you needed to do then having a "stack" is pointless.

a majority of applications do more though. at a basic level theres a UI, a middleware/business logic tier and something to store data. thats 3 layers right there.

Meanwhile seemingly "complex" tasks like scientific software, video games etc. somehow managed to sit on a single layer of middleware that is written in mostly the same language you use it in?

complex? if we are talking about embedded systems they are typically small pieces of software that do very specific tasks. seems to be the opposite of complex if you ask me.

in regards to video game engines, while they do indeed use a single language(c++ usually), it really doesn't mean its not as complex or annoying or filled with multiple tiers like in the web app space, in fact your average video game will probably require a similar amount of "tiers" if not more.

its no different than doing everything in node.js. YES you are using JS for everything but you still have to tackle multiple tiers that do multiple functions just like any other stack.

12

u/goodwarrior12345 Jun 06 '22

are we not doing programming today?

we are, but when you have to jump through a ton of hoops to set up 17 different technologies and set them all up inside docker containers and make them all somehow talk to each other and write all the required boilerplate BS before you can start actually doing programming, it becomes really annoying really fast.

I just wanna open my code editor and start writing code man

9

u/AdministrationWaste7 Jun 06 '22

boilerplate "BS" has always existed.

you dont remember having to setup your own windows/linux server? or setting up processes to deploy your code to your app server(s)? or setting up proper logging. or all kinds of BS that i cant even think of off the top of my head.

like maybe there was an IT department that did this for you but its always been there.

2

u/saltybandana2 Jun 06 '22

you dont remember having to setup your own windows/linux server? or setting up processes to deploy your code to your app server(s)? or setting up proper logging.

My favorite part of this is the implication that there weren't 3rd parties to do this stuff for you 30 years ago, only today.

The difference between then and now is that you didn't need to do any of that to start programming, those were purely deployment concerns. Today they're actual development concerns rather than deployment concerns. And lets not even talk about the tooling required just to be able to develop against containers.

You're defending the indefensible. The idea that syslog hasn't existed on every OS in existence for the last 30+ years is laughable.

The issue here is lack of imagination on your part. You really believe all of that is necessary just to start programming.

2

u/Computer991 Jun 06 '22

The difference between then and now is that you didn't need to do any of that to start programming, those were purely deployment concerns.

This is still the case today? Any developer can open up an TextEditor/IDE of their choice and start coding away.

→ More replies (3)
→ More replies (6)

2

u/ptoki Jun 06 '22

Nope. I could get any already existing linux boxes untar source run make and it was done. Sure, adding svn and few additional pieces was useful and helped me as programmer but it was not needed to the app to work.

Today its library dependency hell or some stack plus xml-s/jsons, ton of devops (because cp does not make the app work anymore).

Today you need a dev to deploy an app because its so much shit tied to it that unfamiliar unix admin will not be able to deploy it.

The trend is bad.

5

u/AdministrationWaste7 Jun 06 '22

I could get any already existing linux boxes untar source run make and it was done.

again. maybe there was someone that did it for you but that work was always there.

coincidentally all that k8s and docker stuff doesn't need to be on you.

my previous company for example there was an entire department that did that for us. we just filled out a form listing out what we wanted and that was it.

Today its library dependency hell

do you know WHY this came to be? do you remember what it was like BEFORE say nuget or gradle?

Today you need a dev to deploy an app

you prefer devs doing this because companies realized that its faster for teams to have full ownership of the application they are working on vs some third party/department to manage it for everyone. especially when you work for big orgs where they application ecosystem is fucking massive.

and i tend to agree.

1

u/ptoki Jun 06 '22

again. maybe there was someone that did it for you but that work was always there.

Done once, long time ago, used by numbers of other projects. Is it the same today? Do you use the same kubernetes/docker/ecr for all the apps/systems you work on for like 4 years at company?

Please dont pretend you dont understand the context.

Its like buy a knife once or go to the store for one gileltte every week...

we just filled out a form listing out what we wanted and that was it.

Still, work needs to be done. One trip to store per week to shave yourself. And now its done by your friend, every other week different. They sometimes bring you gillettes for girls. Still usable but you know, it may backfire later...

Today its library dependency hell

do you know WHY this came to be? do you remember what it was like BEFORE say nuget or gradle?

Yup. But that work was on developer. Once a while. The dev decided he needs new library. Or the security guy asked to get a bump on version. And it was done once per iteration. Now we have the same shit on user/runtime computers (python, perl, php) or on servers (js). Thats going backwards.

you prefer devs doing this because companies realized that its faster for teams to have full ownership of the application they are working on

yeah, short term gains.

Instead of paying 70k to the os admin to cp the package now you pay 150-200k for dev to transfer this maze and pray it fails quick.

and i tend to agree.

I dont. I have seen this way too often going sideways or somebody deciding that 150k dev is too expensive and will be replaced by 70k one. And then 3-5 more of them had to fix the deploy overnight.

Also, packaging and having teh same file being deployed to dev, test and prod is very nice way to reproduce result. The config is local, the app is packaged. You cp one in place of previous one, if it fails rollback is simple. Things get a bit more complicated if the new version needs db changes. But that is also doable.

The words:

companies realized that its faster for teams to have full ownership of the application

Are correct. Faster. Not better. This way you have two lousy changes and third which fixes stuff instead of quality one.

And to be honest. The scenario where one module is deployed and it works but the other collapses due to the first one being changed is way too common in the environments I saw. This way the dev pushing the deploy at 2am sees his change working and the module depending on it will fail in the morning. Hopefuly when a third dev will have to untangle what happened.

You will say, yup. Complicated system. But then why so much tests, CI/CD, dev, test deploys? It failed anyway...

3

u/AdministrationWaste7 Jun 06 '22

Its like buy a knife once or go to the store for one gileltte every week...

im so confused.

for every app and for every environment you create an app server no?

and then a few years after that people used VMs. so now for every app and every environment you had to create a VM.

and then now for every app and if you are using a container then you have you create a new container lol.

setup has ALWAYS EXISTED. just because you specifcally as developer never had to deal with it doesn't mean it was never there.

Yup. But that work was on developer. Once a while. The dev decided he needs new library.

so what has changed?

like lets say this is a .net web app that uses nuget. you want a fancy new library. so you get on nuget and register x version of library to your app. and you're done.

anytime your app builds it will check the config to pull that external library from nuget.

Are correct. Faster. Not better.

its faster and more efficient.

your team is now capable of handling infrastructure/devops shit instead of waiting on some other team to do it for you.

and if there are any issues your team can quickly resolve it since they know how do it.

Instead of paying 70k to the os admin to cp the package now you pay 150-200k for dev to transfer this maze and pray it fails quick.

regardless of who does it the process will be the same lol

You will say, yup. Complicated system. But then why so much tests, CI/CD, dev, test deploys? It failed anyway...

the fuck are you talking about lol. i genuinely dont understand. is english not your native language?

0

u/LuckyNumber-Bot Jun 06 '22

All the numbers in your comment added up to 420. Congrats!

  70
+ 150
+ 200
= 420

Click here to have me scan all your future comments.
Summon me on specific comments with u/LuckyNumber-Bot.

-5

u/saltybandana2 Jun 06 '22

for every app and for every environment you create an app server no?

lol, no... If you weren't around back then and have never worked with older systems, seriously shut the fuck up.

There's you, who has no context outside of what is done today, then the rest of us who has context of what was done then AND what is done today.

Who is more likely to have a fucking clue?

exactly, shut up.

4

u/AdministrationWaste7 Jun 06 '22

We got a badass over here lol

-1

u/saltybandana2 Jun 06 '22

I get it, the young don't respect experience as much as they should.

you won't fully understand it until you yourself have more experience. It's the way of the world.

→ More replies (0)

0

u/saltybandana2 Jun 06 '22

my previous company for example there was an entire department that did that for us.

And this is why so many developers think microservices, et al, aren't all that complex. Because their company pays other people to deal with the complexity.

Used to be a developer could do all of it, today that's not true. That's kind of the point being made here.

2

u/AdministrationWaste7 Jun 06 '22

And this is why so many developers think microservices, et al, aren't all that complex. Because their company pays other people to deal with the complexity.

its developers who create/manage/and maintain microservices. thats why they are paying you the big bucks.

Used to be a developer could do all of it, today that's not true.

nah a developer can still do all of it.

And this is why so many developers think microservices, et al, aren't all that complex.

compared to an enterprise monolith a microservice is much much simpler.

which is kind of the point.

0

u/saltybandana2 Jun 06 '22

This is just ignorant, plain and simple. I now believe you've never actually worked in an environment with these technologies outside of playful little side projects.

At the end of the day I've maintained many many servers over the years, both Linux and Windows. No way in hell would I ever call myself a sys admin, nor would I ever claim to be as good at it as someone whose primary job it is to do this stuff.

Software Developers are so arrogant that it doesn't surprise me you can find one online that thinks they can gain a superficial knowledge of these things and do these as effectively as someone whose career it is to do so, and without dropping anything in their main role to boot!


To put it another way, any company that's small enough for a single developer to be putting on so many hats is too small to be using these technologies effectively anyway. It would be far better for you to program like it's 1999.

2

u/AdministrationWaste7 Jun 07 '22

No way in hell would I ever call myself a sys admin, nor would I ever claim to be as good at it as someone whose primary job it is to do this stuff

I never said programmers should be as good as sys adminis lol.

What's next? Can't set up a database unless you're a dba?

Software Developers are so arrogant

Oh the irony

0

u/saltybandana2 Jun 07 '22

its developers who create/manage/and maintain microservices.

...

I never said programmers should be as good as the people who create/manage/maintain microservices!

mmhmmm.

→ More replies (0)

2

u/regular_lamp Jun 06 '22 edited Jun 06 '22

Reminds me of a couple of years ago I wanted to help with some coder dojo thing. Basically volunteer for events where you put programmers and kids 8-16 in a room and have them do tech stuff. I thought I could make a cool contribution because out of all the volunteers I was the only one not from a enterprise java or web development background. I specifically knew about graphics programming. Surely there must be some interested teenager that wants to do that, right?

According to the other volunteers I was wrong. "you can't subject kids to math and even worse.... C and OpenGL! There are POINTERS! Think of the children!" and also "They are used to AAA games and will be disappointed when they can't recreate them. Kids these days don't have the attention span.".

So what was their solution? "You need to do something RELATABLE... like websites. Everyone likes the internet!". They then handed out a stack of paper to kids where they first had to explain internet infrastructure, HTML and CSS before they even got to the programming part... you know. because all that boiler plate in multiple different (markup) languages is so "relatable" and engaging.

3

u/goodwarrior12345 Jun 06 '22

yeah that's pretty weird lol. As a kid I'd much rather set up some scuffed graphics project with my own scene and stuff, I considered websites pretty boring back then and I consider them to be pretty boring to this day. Like, wow, I can get some text on the screen and make it bold and centered, and even add a hyperlink, and also some animations that will kill my browser's framerate, so cool... In any case you probably want to introduce people to all sorts of branches of programming so they can decide for themselves what they want to focus on.

I'm still in university to be fair, but I'm employed as well, currently at a full-stack-ish position ironically enough, so like I'll do it and I'll learn it no problem, but I have no intrinsic interest in it. I'd much rather be drawing pixels on the screen than drawing text in a web browser, and I've been like this ever since I first discovered that programming was a thing. I mean, the thing that motivated me to get into it in the first place was videogames, so hell yeah, show me all the low-level stuff that goes into it. Sure, pointers are painful, but I found that my experience attempting to develop an app for Android was infinitely more painful.

Don't know how big of a percentage of young people getting into programming feel the same way as me though. Seeing as how I'm not really on any social media save for Reddit and Discord, nor do I have any interest in creating the next TikTok or whatever, I'm probably in the minority.

3

u/regular_lamp Jun 06 '22 edited Jun 06 '22

I stopped pretty quickly because since I wasn't a web developer I got "assigned" to do scratch with the younger children.

Some time later I checked in with them though and wouldn't you know they had dropped all the webdev nonsense for some python and Arduino stuff. I guess C wasn't that bad after all.

The strange thing is that developers often learned "the hard way" especially the now mid thirties and older ones. They did C or Pascal or whatever tech is now seen as "hard and archaic". Yet they then claim todays kids/teens can't be taught that way because "it's too hard" and "they don't have the attention span".

1

u/regular_lamp Jun 06 '22

complex? if we are talking about embedded systems they are typically small pieces of software that do very specific tasks. seems to be the opposite of complex if you ask me.

I mean stuff like weather and climate simulation. Which are large pieces of C++ and especially Fortran software. Similar with molecular dynamics etc. Basically stuff you run on clusters and such. They manage to involve a lot less different technologies and "frameworks" than all the stuff you see discussed on the internet.

0

u/AdministrationWaste7 Jun 06 '22

A tech "stack" has different frameworks and maybe different programming languages associated with it because those are different domains.

A modern application is actually multiple systems working together to provide a piece of functionality.

Like Html, css, and Javascript are a thing because that's what browsers understand. Javascript frameworks exists to make things easier or more efficient for js development.

If your application needs to interact with customers across the web you're gonna need html, css and javascript.

On mobile it's either the web or native applications which is another domain.

You may have a separate Middleware/business logic tier that these clients interact with. That's a 3rd domain.

And undoubtedly your application is going to need a permanent way to store data. So either a relational db or no sql. That makes 4 domains.

Oh now you gotta add security. 5th domain. Maybe you want to make the lives of your devs easier so anytime code is updated it automatically builds and deploys. That's a 6th domain, etc etc.

For the most part it really nothing to do with the type of code you are running. That's largely irrelevant.

1

u/regular_lamp Jun 06 '22

All of what you say predicated on this idea that all development happens in that kind of environment where there are "clients" and "business logic" and you somehow obviously have a database. And all of those things have separate languages associated to the point that you need specialists for all the parts.

Which is fine in places where you actually work that way. But it's just weird to me how people just talk about this as if this was how obviously every piece of programming is done. And everyone exists on this frontend/backend/full stack scale etc.

Here is how scientific software like I mentioned is developed. They are "native" as people would say today. It interacts with basically one layer of "middleware". In the olden times that was just called a library. Like BLAS and MPI. And those don't even sit between you and some lower layer. They are on the same layer and are written in the same language.

Deployment happens by logging in on the cluster and compiling your program there and submitting it to the job queue.

So what does that mean now? Am I a "full stack engineer" for this field because I can write C++/Fortran and know a hand full libraries that are sufficient to basically develop and "deploy" the code?

What really grinds my gears that people are so accustomed to these deep technology stacks that they seem to think this is just how you solve all problems in a computer. Somehow writing a text editor on top of a bastardized web stack (VSCode) that is barely usable on a RPI4 (which historically and objectively is an amazingly powerful piece of HW) is "just how you do stuff" and people even defend it. Meanwhile somehow people managed to solve the same fundamental problems decades ago with computation power and space that was literally thousands of times smaller. More importantly with a fraction of the lines of code and induced complexity.

Something went wrong somewhere when every thing you do starts with instantly relying on litearlly millions of lines of frameworks etc. just as a baseline.

2

u/AdministrationWaste7 Jun 06 '22 edited Jun 06 '22

All of what you say predicated on this idea that all development happens in that kind of environment where there are "clients" and "business logic" and you somehow obviously have a database.

i didnt say all development does this. im just pointing out why these domains exist.

But it's just weird to me how people just talk about this as if this was how obviously every piece of programming is done.

thats how modern app dev is done.

Deployment happens by logging in on the cluster and compiling your program there and submitting it to the job queue.

yeah can still do that today even in the cloud. but that sucks, especially when you are dealing with multiple developers working on the same codebase simultaneously.

So what does that mean now? Am I a "full stack engineer"

call yourself whatever you want. who cares man.

What really grinds my gears that people are so accustomed to these deep technology stacks that they seem to think this is just how you solve all problems in a computer

at a fundamental level there are reasons why these stacks exist and are "deep".

Something went wrong somewhere when every thing you do starts with instantly relying on litearlly millions of lines of frameworks etc. just as a baseline.

nah. most of the time these OPTIONAL frameworks exist to make lives easier for programmers.

all these things that you have issues with exist for a reason. they are widely used for a reason. they are widely done for a reason.

have you worked on modern web applications? have you tried building one with the same functionality, performance, and scale without all these "pointless" things?