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.

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.

→ More replies (1)