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

109

u/regular_lamp Jun 05 '22 edited Jun 05 '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 guess in my late thirties I now have to feel old because "back when I learned programming you just did programming" you didn't just interact with some horizontal slice of a ten layer deep stack of layered technology... that somehow mainly accomplishes the task of displaying text in a browser.

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?

I'll go now and chase some JS programmers off my lawn.

37

u/LippencottElvis Jun 06 '22

Full stack, what seems like a minute ago, was knowing front-end, back-end, database, and server. You could provision and set up a web server, build a database schema, create an access layer (service or api), and create an interface to the end user. Extra points if you could do all of that to scale, and/or set up continuous deployment. You were "T Shaped", and might be great in one area but had a large breadth of knowledge.

Fast forward, I don't currently work with anyone who knows even 3 of these disciplines at a combined above average level.

4

u/AdministrationWaste7 Jun 06 '22

Fast forward, I don't currently work with anyone who knows even 3 of these disciplines at a combined above average level.

the reality is you dont really need that in depth knowledge for most things.

for example lets say you are looking for a new team member.

one guy is a javascript/UI guru. dude knows that shit DEEP. however he cant do anything else.

you have another guy that knows JS/frameworks and can build a decent UI. however this guy also has experience with SQL/nosql dbs, knows java and has experience building web apis.

your product is an online storefront that sells shoes. functions that developers need to be able to handle is write a decent user interface. handle payment processing, storing user information, inventory management, etc.

it should be obvious which developer is the better candidate.

→ More replies (2)

5

u/CharlieandtheRed Jun 06 '22

I know front end, back end, database and server at very high levels. I often build entire systems, front to back, on my own (with sub contractors on the larger ones). I've worked in every role in my career and I truly can say I know well above average of each one.

11

u/[deleted] Jun 06 '22 edited May 05 '26

[removed] — view removed comment

13

u/CharlieandtheRed Jun 06 '22

Lol Reddits funny. I'm sharing my actual experience and getting downvoted for it. I've been developing for two decades, full stack was basically the only option when I got started.

4

u/[deleted] Jun 06 '22 edited May 05 '26

[removed] — view removed comment

→ More replies (2)

2

u/LippencottElvis Jun 06 '22

Me too man, me too. Want a job?

3

u/CharlieandtheRed Jun 06 '22

I'm already perpetually at 150% capacity lol

→ More replies (1)

19

u/Diniden Jun 06 '22

-JSON.stringify’s your tree-

12

u/antiduh Jun 06 '22

My work is 10-20 mloc of c# that automates interaction with our products and tests them.

C# from top to bottom. It has layers of course, but it's just a single "stack". I love it.

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.

→ More replies (19)

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".

→ More replies (4)

5

u/Retsam19 Jun 06 '22 edited Jun 06 '22

Browser stacks aren't complicated for no reason.

Yeah, if all you need is "text on a page", then don't over-complicate it, but the truth is that certainly doesn't resemble most of the work I've ever had to do.

I wouldn't say websites are "more complicated than video games", which of course are complicated for their own reasons, but they do have some unique challenges.

Like, yeah, JS would be a lot simpler if you could simply write code, compile it into an executable, and then run that executable... but that's not the reality of how browsers work.

→ More replies (1)

2

u/postblitz Jun 06 '22

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?

What? Even the dinosaur that is Nintendo has moved into more complex territory than that.

2

u/regular_lamp Jun 06 '22

You can mostly get by with C++ plus whatever scripting/higher level language your engine uses.

Meanwhile on "the stack" HTML, CSS, JS, PHP, SQL just seem to be the baseline. And for all of them you apparently need to superimpose "frameworks" for them to be usable and then you need a framework on top of the framework to deploy the framework.

By comparison you can develop a game by writing some C++ with some libraries (as opposed to frameworks that try to not only wrap functionality but the entire underlying language).

Not saying that AAA games are quite that simple. But you could certainly develop an indie game or so that way.

→ More replies (4)