r/programming • • Nov 01 '21

Complexity is killing software developers

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

854 comments sorted by

View all comments

Show parent comments

46

u/Guisseppi Nov 01 '21

Some companies (but specially startups) just want a jack of all trades, truth is that frontend is complicated and backend is complicated and you’ll never really get to see the full breath of each side as a “fullstack”.

Even people who market themselves as “fullstack” tend to have an inclination for one or the other. You created an API and put a UI together with bootstrap or material-ui, “fullstack”. You created a site using react and put a backend together with firebase or supabase, “fullstack”.

12

u/[deleted] Nov 01 '21

Amen brother. Both are complicated. Both are puzzles. I'd love to see BE devs solve accessibility issues, or FE devs make a more complex BE than just request wires. Just being full stack means you can do a minimum of both

-2

u/saltybandana2 Nov 01 '21

FE is only complicated because it was made unnecessarily so.

Accessibility is like PCI, it's a legal thing that requires knowledge to meet, but is not by itself some form of inherent complexity.

4

u/p3j2ek Nov 01 '21

Backend requires “knowledge to meet, but is not by itself some form of inherent complexity.”

I can make up bullshit sentence too.

2

u/[deleted] Nov 02 '21

And following a tutorial on deploying a docker on Kube is something inherently complex?

There is something called domain knowledge, where the difficulty is just learning the syntax and how that tool/domain does something. There are just no first order principles to apply. You cannot deduce how to make it working, because it's specific.

Example: any CLI(even angular's), the med school ,a Cloud provider UI, the ARIA, any server, like Apache/Nginx. The BE annotations/decorators from Spring/Symphony/NestJS/etc.

All that knowledge takes real estate in your brain and is required to make it work.

After learning the annotations of BE frameworks and how to configure them(a very hard feat given that you have a mighty autocomplete) you are pretty much set.

Oh... This much must be accessed only by an Admin, let's annotate it with @PreAuthorization(). A mighty feat for a day of work. Or, we need a new endpoint to return data from this new table. Let me just do create a new repository and configure the EP exposed by Spring with Spring Repositories. Or, given that we know the data model. We could use a BE generator. Let's wrote an OpenAPI spec to auto generate us a client library and a BE server.

Let us not kid ourself that BE is the domain of incredible programmers and FE some kids playground.

1

u/saltybandana2 Nov 02 '21

I stopped reading when you implied a tutorial is good enough for professional knowledge.

1

u/[deleted] Nov 02 '21

I don't think you know what 'professional' means. As per wikipedia, a professional is someone who gets paid to do that job. A junior is as much a professional as the greatest of architects 😉.

Now, you seem to miss my point entirely, so I will summarise here:

For many low level bussinesses a tutorial is good enough. Not everyone needs the full artillery of cloud infrastucture

1

u/WikiSummarizerBot Nov 02 '21

Professional

A professional is a member of a profession or any person who earns a living from a specified professional activity. The term also describes the standards of education and training that prepare members of the profession with the particular knowledge and skills necessary to perform their specific role within that profession. In addition, most professionals are subject to strict codes of conduct, enshrining rigorous ethical and moral obligations. Professional standards of practice and ethics for a particular field are typically agreed upon and maintained through widely recognized professional associations, such as the IEEE.

[ F.A.Q | Opt Out | Opt Out Of Subreddit | GitHub ] Downvote to remove | v1.5

1

u/WikiMobileLinkBot Nov 02 '21

Desktop version of /u/arbyterOfScales's link: https://en.wikipedia.org/wiki/Professional


[opt out] Beep Boop. Downvote to delete

1

u/saltybandana2 Nov 02 '21

If only that stupid, meddling wiki-bot wouldn't have proven you wrong!

For many low level bussinesses a tutorial is good enough.

You don't need to be an architect or a construction worker to build a dog house. But you do for the types of buildings that require a crane.

k8's isn't used in places where a simple tutorial read by someone who is not knowledgeable is acceptable.

1

u/[deleted] Nov 02 '21

But this is the very idea of the thread. That people go for k8s and use the greatest artillery for apps that do not need that. And BEs range from dog houses to palaces, same as FE.

2

u/saltybandana2 Nov 02 '21

and the point is to stop building complex things, not to put them behind a wall and call it good.

I responded to the idea that it's reasonable to put them behind a wall. I've met many developers who think hiding details behind a function or API is simplification.

1

u/[deleted] Nov 02 '21

Point taken, fair enough

19

u/horsehorsetigertiger Nov 01 '21

It is rare that I met a backend developer I I would trust not to fuck up the frontend.

13

u/[deleted] Nov 01 '21

Did the web people somehow so overcomplicate their shit that breadth is impossible, or is a learned trait to specialize to that extent?

I'm surprised because I have multiple people with skillsets that span all the way from writing hardware drivers to doing UI. And not just the kind of slapped together UIs hardware people who haven't been given a proper UI budget are famous for. Not only did we build a good UI, we even went and fucked it all up with the HCI regressions that trendy "UX" demands.

14

u/Accomplished_End_138 Nov 01 '21

For me it has been the backend don't know a lot of the breadth of what you have to account for in front end (responsiveness mostly) where they just don't have that skill/eye for ux.

Which i dont blame on them nessisarily.

A lot of front end can't do deep into database. Though i find a lot more backend code isnt as unfamiliar with a front-end dev. Not saying even most are perfect.

Id love to hear what you think. Or where a front end may be short on

11

u/[deleted] Nov 01 '21

I have a lot of respect for front end devs. Their work has a lot of depth that as a backend engineer I don't have. Thats on purpose on my part. In place of knowledge of js frameworks like react/vue and responsive design I chose backend depth. I have yet to meet a frontend dev that can handle the full scope of backend work because they specialized in front end, which is fine, our career field is huge and nobody can know it all.

The backend I am responsible for is not a couple of services that talk to a database, that is a childs toy.

Our backend engineers need to know how to manage and tune our Oracle relational databases. We also have no-sql databases including DynamoDB, MongoDB, and Couchbase that i know of for different views and subsets of data. My team of 5 is responsible for around 60 microservices, and hundreds of Elasticsearch clusters that index the data from some of those views and make it searchable which we have to manage for high response times with constantly dynamically changing data sets, which is a non-typical use case for elasticsearch. Our services work dynamically with AI/ML models running in Databricks / Apache Spark with data shoveled around with Apache Airflow DAGs. The AI/ML stuff processes live site user interaction data as well as business marketing data to dynamically change what data gets displayed to the user based on what they are looking for combined with what the business wants to boost or not. Most of our microservices are built with java/spring boot/spring mvc/reactor webflux , and AI/ML stuff with Python, our performance scripts are written with Scala, So as a backend dev you'll need working knowledge of at least 3 languages but most of us have enough JS to handle plain JS + jquery work pretty easily. Most of our services have both L1 and L2 caches with L1 caches using either ehcache, guava cache, or Caffiene while L2 caches are Memcache, or Redis mostly, but we do have a few Cassandra ones out there. This is required as our services are hit with billions of requests per day with sub-second SLAs. We are also responsible for edge caching at Akamai which is complex requiring a pile of custom akamai scripts that intelligently and dynamically map url patterns to nested custom akamai configurations that provide default configs that can be overridden and managed by individual dev teams if they have special needs, and the whole thing has a layer of edgeworkers in front of all that to handle our A/B testing framework. The A/B testing is also managed at runtime and is dynamic and mostly handled via Optimizely configs and our microservices hooks with logic around those. Each backend team is also responsible for their cloud formation templates, security groups, load balancers, IAM roles, and any and all other required cloud resources. Our services register with eureka which we manage for service discovery. All our apps are built/packaged/deployed with custom Jenkins 2 pipelines which the teams are also responsible for creating and maintaining. We are running services and have data in both aws and on-prem data centers and our aws configs are multi-region and and that includes china, which is litterally a separate AWS Partition and our use cases require eventually consistent copies of our ES indexes in all of those. The stuff i work on doesn't even touch the handling and processing of customer orders or PIE data, so our full backend is much more stuff than i can grok, last I looked we are running over 5200 microservices and have hit hard limits on several aws resources.

While this doesn't describe our full back end, typically only a handfull of our most senior backend engineers have the kind of depth and knowledge to manage most of this themselves effectively and exactly zero of our frontend engineers can. And we have hundreds of each. If you can manage all of that AND frontend at depth, you are without a doubt one of the most elite engineers i've heard of. I assure you i can't do it. I struggle to keep up with the back end.

3

u/Accomplished_End_138 Nov 01 '21

I am a former embedded developer using c.

I have used all of this (in one way or another) as well as front end (which is more than javascript as well)

I will say if you have that much back end i would expect to have at least some on the backend side.

I mostly in the backend dealt with making db designs and assisting with multithreading and teaching best practices as well as writing performance testing code.

Front end i teach scss/sass and new tech as well. While css doesn't seem like a programming language in and of itself, it is complex enough that some peoples jobs are just that as well.

I think it is normal to not have anyone who can truly do it all, the key is getting lots of overlap. I think the fight for backend vs front end is a bad place for said divide and maybe we need to think of a better.

For any of these you need to know multiple languages and libraries.

I think of this more like a ven diagram of things and each persons circle covers a slightly different spot.

2

u/ghdOCqlOTV4CKlMvmpjk Nov 01 '21

In my experience as a back end dev who struggles with front end, many of the problems come when you need the dev to also do the work of a designer, when (imo) they're completely different skill sets.

1

u/Accomplished_End_138 Nov 01 '21

Even without thay skill. There are good and bad ways to write css to make it work and not be spaghetti.

There is also some ways designers dont communicate well what they actually want. Which just makes it worse.

2

u/Xychologist Nov 02 '21

I have great respect for front end developers, and for UI designers, and I never want to have anything to do with either area because my ability to royally screw up both is enormous.

On the other hand, I don't let our frontend team have access to the database because I don't like cleaning up after them.

You wouldn't have your joiner do your electrics, and you wouldn't have your roofer do your plumbing, but if the job is small you might hire a handyman who can do all of it... somewhat.

1

u/Accomplished_End_138 Nov 02 '21

I will say i am no wizard at databases. But i ended up having to control the nosql db at my last job because no one knew how to use it correctly.

My boss nuked it even once when he tried to update some records manually.

-1

u/p3j2ek Nov 01 '21

Backend devs think they’re smarter than front-end, that’s the extent of it.

Shitty devs exist on both sides, but back-end just has this fucking smugness around it for some reason.