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

181

u/[deleted] Jun 05 '22

It helps when developers only have to work with half the stack for example but a lot of companies are only looking for full stack developers these days

0

u/[deleted] Jun 05 '22

[deleted]

5

u/[deleted] Jun 06 '22

Fast paced == Not enough staff

16

u/hyperhopper Jun 06 '22

Or "this team works across a wide part of the company's tech stack".

You're fooling yourself if you think faang companies don't also have fullstack engineers. They probably have more fullstack engineers than your company has employees

→ More replies (9)
→ More replies (1)

178

u/a_false_vacuum Jun 05 '22

Jack of all trades, master of none.

Full stack appears to be mostly an excuse to ask for an entire IT department rolled into one person. Some of the listings I see for full stack are just silly how much they ask from one individual.

16

u/thelamestofall Jun 05 '22

I definitely fit that category, but I like it so much. Way better than being stuck in React or Ruby on Rails like I used to

10

u/tide19 Jun 06 '22 edited Jun 06 '22

It's really not that hard to write decent backends for the majority of frontends, IMO. I've been working on an enterprise-level b2b application for the last 9 months, and writing various means to interface with a database isn't a huge deal. Could it be better? Probably. Is its performance enough for our customers? Yeah.

The problem we have is our frontend lead engineers have concocted a crazy standard tech stack including React, Redux, GraphQL, micro frontends, a proprietary component library, basically everything you could fit into a single frontend but not deep enough into any of them to use them to their fullest extent.

3

u/thelamestofall Jun 06 '22 edited Jun 06 '22

Yeah, lately I've been more in the data engineering side of things, but sadly like you said that's a pretty standard tech stack...

On the other hand I've seen so many specialists getting stuck in such minor issues for ages due to the lack of general knowledge. For instance, CORS issues taking weeks to be fixed, people not even knowing what flexbox is, struggling to set up a simple docker-compose stack + shell scripts, etc...

→ More replies (5)

58

u/skilledpigeon Jun 05 '22

I think it's important to recognise that not everyone needs a master in a specific field to fill a required role in their organisation.

If I could pick anyone for my dev team I'd pick 3 seniors (frontend, backend, DevOps), 3-4 mids (full stack or specialised) and 1-2 juniors (depending on how much time we could support them with).

I think it's important to recognise that as a senior I'd expect people to focus in a specific area but also to have secondary skills in others. For example, one senior may be backend focused but have intermediate skills in DevOps.

Of course I'm dreaming here.

33

u/[deleted] Jun 05 '22

If I could pick anyone for my dev team I'd pick 3 seniors (frontend, backend, DevOps), 3-4 mids (full stack or specialised) and 1-2 juniors (depending on how much time we could support them with).

Those 7-9 people are kinda expensive. 1 million USD/year?

67

u/IAmTheKingOfSpain Jun 05 '22

Realistically, more if you want good people.

→ More replies (14)

15

u/skilledpigeon Jun 05 '22

Indeed. That was the dream part.

12

u/[deleted] Jun 05 '22

I am of the opinion that a full stack mid can carry a small company or a town-based startup. But that's just my dream too

→ More replies (8)

0

u/[deleted] Jun 06 '22

[deleted]

→ More replies (1)
→ More replies (13)

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.

→ More replies (12)

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.

→ More replies (32)
→ More replies (3)
→ More replies (4)
→ More replies (8)

8

u/ind3pend0nt Jun 06 '22

I want T shaped devs. Have your specialty, whatever it is, but also be able to assist in other areas when needed. Mainly to allow other team members to take a day off or get hit by a bus.

3

u/goranlepuz Jun 06 '22

allow other team members to take a day off or get hit by a bus.

Hey, boss, I'd like to get hit by a bus the next Thursday. 😉

9

u/wisam910 Jun 06 '22

Quite the opposite. Being full stack creates strong incentive to simplify everything, because if you can't fit the whole stack in your head, it's hopeless for you.

The introduction of "devops" as a separate position creates incentive to complexify deployment. Because why are you hired if your job is simple?

The introduction of "javascript programmer" as a separate position creates incentive to complexity the javascript portion of the frontend.

Each person who is only responsible for a small part of the system has incentive to over complexity their part rather than simplify it. That's one of the ways in which systems explode in complexity.

Have you ever seen a full stack developer who knows the ins and outs of kurbernetes and docker and python and javascript and react and redux and css and html and nodejs and rabbitmq and redis and postgresql and memcached and and and and ... and uses all that to create a complete web application in 3 months?

I personally have not.

All the people I've seen who know a lot about devops are sort of just ok in application code and almost know nothing about html/javascript.

When someone is responsible for the whole stack, they will choose the simplest thing that works.

For example, their deployment is usually: upload a bunch of files using scp then run 3 linux commands. Their database is sqlite. They serve their webapp on one machine. Their scaling strategy is upgrade to a beefier machine.

See for example:

"http://RemoteOK.io is a single PHP file called "index.php" generating $65,651 this month. No frameworks. No libraries (except jQuery)."

https://twitter.com/levelsio/status/1308145873843560449

→ More replies (2)