Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "complexity"
"Hey, Root, someone screwed up and now all of our prod servers are running this useless query constantly. I know I already changed your priorities six times in the past three weeks, but: Go fix it! This is higher priority! We already took some guesses at how and supplied the necessary code changes in the ticket, so this shouldn't take you long. Remember, HIGH PRIORITY!"
1. I have no idea how to reproduce it.
2. They have no idea how to reproduce it.
3. The server log doesn't include queries.
4. The application log doesn't include queries.
5. The tooling intercepts and strips out some log entries the legendary devs considered useless. (Tangent: It also now requires a tool to read the logs because log entries are now long json blobs instead of plain text.)
6. The codebase uses different loggers like everywhere, uses a custom logger by default, and often overwrites that custom logger with the default logger some levels in. gg
7. The fixes shown in the ticket are pretty lame. (I've fixed these already, and added one they missed.)
8. I'm sick and tired and burned out and just can't bring myself to care. I'm only doing this so i don't get fired.
9. Why not have the person who screwed this up fix it? Did they quit? I mean, I wouldn't blame them.
Why must everything this company does be so infuriatingly complicated?11
Manager: I want the front ends to be more dumb, too much logic is happening on the frontend.
Me: both of the sites are just multi step forms, I’m confused about the complexity part.
Manager: yea but don’t we have a bunch of third party api calls?
Me: we have 4 and they are public facing apis.
Manager: yea, make a new api and move this api calls to the backend and I want both frontend teams to send the same shape payload.
Manager: oh and I don’t like how the business team does the a/b testing and splitting traffic, let’s move that to the backend as well.
Me: but… that a/b testing platform they use in ran by another team and they have a full set of features for business analytics…
Manager: yea let’s just replicate those features and move them to the backend.
Me: but it’s a product!
Manager: look! You are the best backend engineer we got! I know you can do this!
Me: I lead the frontend teams…
Manger: good news we are giving you a promotion with raise you are now a senior engineer.
Me: I confused but happy… I think..9
"LeT's uSe gRaPhQL!" They said.
"It EliMinAtEs cOmpLeX aNd vErBoSe REST coDe!" they said.
Me sitting here for hours waiting for the backend team to fix major regressions every time they push the smallest "updates" to staging... 🤡
Call me a boomer but I can't help but feeling graphQL makes things MORE complex than REST... either that or the backend devs have no idea what they are doing17
Dev: So we need around $50-100 a month to activate and use some key services that would greatly reduce our backend complexity. Would this fit into our budget? Actually, we've never really discussed in general what sort of tech budget we have to work with...
Management: UNTIL WE HAVE SUSTAINABLE REVENUE, OUR TECH BUDGET IS 0
FullStackClown: 0? Are you serious? You can't spare a few hundred dollars TOTAL over the next 3 months until our next round of funding clears?
Management: ALSO WE ARE REALLY GOING TO NEED YOUR HELP TO FIND PRODUCT MARKET FIT FROM THE TECH SIDE
FullStackClown: Oh no... we've gotten to the classic point where they think tech is the thing that will solve their problems... abandon ship...8
i'm feeling so sick right now.
PM invited team for today to present his "vision": "<name of our component>: what it is and what it is not".
but it didn't make sense and showed that he hadn't understood the problem at all. the whole architecture made no sense given the problems that shall be solved. his architecture diagrams missed some essential parts that were actually the giant weak points of his concept. his pseudocode, that should exemplify interactions between components, didn't address the complexity of required interactions at all. it's like he expects some magic to happen and has no fucking clue about the requirements (but acts like it), even though he is the manager of this software project.
and when devs ask really interesting questions that fundamentally question his concept, discussions lead to nowhere and questions are not answered. at some point he literally said "there is no such thing as <name of our component>, i still have to find this out"
really!? after one and a half year, since you sold the idea for this component to upper management, and after half a year of development, you still can't tell what it is what we actually want to build? are you fucking serious?!
at some point in discussion he said that these questions need to be answered but that "there's no time left", and he ended the meeting. although there was still half an hour of meeting time left.
i'm so fucking sick of this, i hate everything right now. i can't listen to this bullshit any longer. in discussions, he contradicts himself all the time, it is so fucking surreal i'm starting to feel like i'm insane.
it makes me really sad and tired. i don't want to care about this shit any longer.14
Most kids just want to code. So they see "Computer Science" and think "How to be a hacker in 6 weeks". Then they face some super simple algebra and freak out, eventually flunking out with the excuse that "uni only presents overtly theoretical shit nobody ever uses in real life".
They could hardly be more wrong, of course. Ignore calculus and complexity theory and you will max out on efficiency soon enough. Skip operating systems, compilers and language theory and you can only ever aspire to be a script kiddie.
You can't become a "data scientist" without statistics. And you can never grow to be even a mediocre one without solid basic research and physics training.
Hack, I've optimized literal millions of dollars out of cloud expenses by choosing the best processors for my stack, and weeks later got myself schooled (on devRant, of all places!) over my ignorance of their inner workings. And I have a MSc degree. Learning never stops.
So, to improve CS experience in uni? Tear down students expectations, and boil out the "I just wanna code!" kiddies to boot camps. Some of them will be back to learn the science. The rest will peak at age 33.17
I had previously ranted about being assigned to a very messy project. I spent 3-4 months alone adding features and CLEANING things up.
Recently, there had been talks about a new major development phase on this project. But things lingered and the day before I’m to go on vacation, I get the news that this new phase starts in 2 days. Since I’m going to be on break they’re putting other guys on the project who don’t know anything about it.
Fast forward two weeks later.
I’m back from vacation.
I find out one of the guys has strong opinions about doing things certains ways… but unfortunately they are "ways" of unnecessary complexity, abstraction and verbosity.
After just a couple of weeks I’m already lost in the complexity of his code, which supports features of VERY LOW complexity. Fuck, has he ever heard of KISS? Has anybody heard of it where I work?
Now I have to spend my mental energy trying to make sense of this pile of crap rather than actually spending it getting things done.1
May be just me, but I am quite frustrated with complexity of systems nowadays, even more how it’s became a norm for developers to import a library for every little sh*t…
Like, do you even need to import that OSS library, can’t you make it without it? Is it really worth it to import that monstrous library of 10k loc, just so you can save writing those 50loc for just once?
It almost feels like it’s driven by logic “if you don’t own the code, then you don’t need to maintain it”. But ironically you still need to mantain it, only now not the code (best case), but the library itself. You have to upgrade it (for security, bug fixes) and you better pray there’re no breaking changes. And if you encounter an edge case/bug that no one addressed yet, then well, I bet you wished you didn’t use that library in the first place.
It’s so much easier to support small piece of code within your codebase, than fix a bug in a library, that possibly has thousands of unnecessary dependencies, enormous abstraction trees, and infinity loc to support all possible use cases, which your project doesn’t even care about.
Just to make it clear, I am not talking, about cases where some library would really do some heavy lifting for you, it would be non-sensical not to use it in that case.
And talking about complexity, let’s not even mention microservices, kubernetes, and other hyped stuff…
Does anyone else shares the sentiment?17
A lot of people are very good at making extremely complex and hard-to-read React components.
Very very few are good at making clean and easy-to-understand React components.8
I bitch a lot about the complexity of Rust. But every time I do it I go ahead and applaud just how fucking good the compiler messages are.
A fucking thing of beauty.2
me: i looked into the customer dev's project and even though it's C#, i can use it as a source of inspiration for my own C++ library.
PM: okay, maybe we can even still use it, so that you use a C# dll with your C++ code.
other colleague: that's a bad idea. it can already be a challenge to use unmanaged c++ in dotnet, but the other way round it's even more difficult. C# and C++ are languages that behave quite differently and it will be hard to implement a correctly working interface.
PM: okay. well... then please analyze this project's complexity in terms of LOC and create a class diagram, so we get an idea of how complex it is.
PM: hmm... maybe we should split this topic. since dev x will also rely on your library, analyze this project together with him, each of you look at another part of the classes.
me: that's.... i think that's a bad idea. implementing this functionality in this library is my job, not of dev X. he won't be involved in implementing any of the funcionalities and for him, it shouldn't matter how this works.
PM: yeah, but since we are prototyping, maybe we should just violate the "separation of concerns" rule.
me (internally): (ノಠ益ಠ)ノ彡┻━┻
in the end i could convince him to do it my way, but for fuck's sake... when was the last time he actually succesfully implemented something? 🤦♀️
I got the booster shot yesterday but I'm pretty sure they injected me some psychoactive drug. I had the weirdest dreams - I was have in-depth arguments with my post-doc about complexity and deep learning, and I came up with 3 different directions for my research. Also my mom was singing Despacito in the background.
My arm is dead and I can't even connect cables on my beloved robot :(7
uSE AnY pRogrAmMinG L@ngu@g3 yOu liKe.
1nTervi3weRs Do N0t CarE aBouT tHe L@nGuAge.
Fuck you. Stop asking time complexity or space complexity of functional code. No one fucking knows.19
TDD has not been proven in studies to provide substantial reduction in cyclomatic complexity or other metrics of software development.16
Great tool and all, but your documentation is at 🤡 levels, I need to read 20+ pages to get a full overview and understanding. So far I've had to read a dozen plus blogs and stackoverflow posts to find hidden flows (authentication first to do this, etc. etc. etc.)
Don't market your tool as "reducing complexity & saving time" and showing one-liners in the docs when in reality there are lots of hidden steps and NOT one-liners!!!!!!
This is why everyone complains it takes 1-2 days to just get a freaking pipeline working!!!!🤡
This was originally a reply to a rant about the excessive complexity of webdev.
When webdev was simple, it was normal to have the user redownload the whole page everytime you wanted to change something. It was also normal to have the server query the database everytime a new user requested the same page even though nothing could have changed. It was an inefficient sloppy mess that only passed because we had nothing better and because most webpages were built by amateurs.
Today webpages are built like actual programs, with executables downloaded from a static file server and variable data obtained through an API that's preferably stateless by design and has a clever stateful cache. Client side caches are programmable and invalidations can be delivered through any of three widely supported server-client message protocols. It's not to look smart, it's engineering. Although 5G gets a lot of media coverage, most mobile traffic still flows through slow and expensive connections to devices with tiny batteries, and the only reason our ever increasing traffic doesn't break everything is the insanely sophisticated infrastructure we designed to make things as efficient as humanly possible.11
The amount of energy spent to just write ‘Hi’ and click a send button is so big that we should consider banning of sending hi messages.
Instead of just saying “Hi!” we are now using analog to digital preprocessors that convert it to bunch of 0 and 1 to send it over communication layer and deliver it to other human being that will convert it from digital to analog by reading it but that is simple.
By sending message using phone we also:
- save it to local phone
- convert it to couple protocols
- transmit it over air so make connection to internet provider services that would generate logs on this provider as well as whole routing table before it gets to the target person
- save it on messaging provider disk
- probably be processed by filters by provider, sometimes be reviewed or listened by third parties and also processed in bulk by artificial intelligence algorithms
- finally delivered to target phone and saved there where that person would just change this text to their inner voice and save it
- sometimes encrypted and decrypted
- sometimes saved on provider
- sometimes saved on phone manufacturer cloud backup
- don’t get me started on people involved to keep this infrastructure in place for you just to say hi
There are also some indirect infinite possibilities of actions for example:
- emit sound and light that can lead to walking from one room to other
- the floor in your house is destroyed cause of it so you need to renovate your floor
- sound can expose your position and kill you if you’re hiding from attacker
- sound can wake you up so you wake up in different hours
- it can stop you from having sex or even lead to divorce as a result simple hi can destroy your life
- can get you fired
- can prevent from suicide and as a result you can make technology to destroy humans
and I can write about sound and light all day but that’s not the point, the point is that every invention makes life more complicated, maybe it saves time but does it really matter ?
I can say that every invention we made didn’t make world simpler. The world is growing with complexity instead.
It’s just because most of those inventions lead to computer that didn’t make our world simpler but made it more complicated.1
Today I want to put an age-old question to rest. What is art and what is not? What's the difference? In art world, there is actually a consensus that was reached in the second half of 20th century.
First, the audience has no merit to decide what's art and what's not, as art has inherent characteristics. So whether a piece is art or not is left for the artist to decide.
But the artist too cannot just call anything they make art. There is just one criterion — if only the art piece itself is enough to justify its making, and the artist sees it as the only award they need for making it, it's art. Otherwise, it's not.
"But wait, that's not entirely correct, this is incomplete", you say. Well, it's in fact complete, but because our society progressed way faster than our languages, we're having a hard time to describe novel complex things with words. Language can't keep up with rising complexity.
We use "horseless carriages" instead of "cars" when we describe anything complex enough. The good explanation of how language works and why do we act like this is outlined beautifully in Benjamin Bratton's "The New Normal". A small book of forty-something pages, but I never spent that much time on every page in my life. The best book investment for me after "The Code Complete".22
Does anyone else find it strange that the stupidest people in the company are making all the decisions.
In order to be able to engineer software you have to understand everything that the product owner knows, the business analyst knows, the product manager knows + how to actually make the system both work in a reasonable time frame and be maintainable long-term.
But we're not the one making the decisions. The irony of it is something that I can't get beyond.
And when I do go out on a limb to point out a logical inconsistency to UX or product... They don't thank me for it they hate me for it and then 3 days later figure out that they should be doing it and quietly follow my suggestions.
Seriously is the goal here to create good software or to avoid stepping on everyone else's toes in the company who is overwhelmed by the complexity of the project.
I think companies based on a hierarchy of non-technical people controlling technical people, in the creation of software products are a dying breed.
When it comes to creating software products everyone in the hierarchy should be technically minded.
I've seriously been trying to come up with an alternative perspective here.
The executives of the company are completely out of touch and the only thing which looks like progress to them in a sprint review is something visual on the front end.
The technical architect, the product owner and the product manager all seem to be engaged in keeping the executives happy and managing their expectations. By means of obscuring the truth.
Imagine how much more cost-effective building a software product would be if the executives were engineers themselves.
I'm keen to do an experiment and build a company comprised of engineers only.
Obviously they need to have insight into the other roles. But none of these other roles are as complex as implementation itself.
So why exactly are we the slaves of these well-meaning under thinkers?8
Why the fuck is every tech lead and manager obsessed with the idea of breaking down tasks?
It's true some tasks can be broken down into smaller ones. But there are situations where a task needs to be done by 1 person in X days. Breaking it down into 2-3 tasks so that "they can be done in parallel" actually requires more efforts among devs, introducing unnecessary complexity and more risks.
9 women cannot deliver a baby in 1 months ffs. I guess these people never learn.8
Why does everything about Android have to be this verbose, convoluted and complicated?
Why are there no simple solutions to most problems? I have worked with Flutter and Go and none of these have the same level of complexity as Android.
It’s almost as if the Android team lists out the possible solutions to a problem and intentionally pick the hardest and difficult to understand.5
Isn’t it delightful when you come in to a large project to discover that they have a large underlying core that no one wants to touch but everyone relies on.
Quickly perusing the code you realize that the base was clearly created by someone who found their first tutorials for Java, but were previously a c developer.
It’s funny cause this code is of course from ~20 years ago and in different sections you can tell they were a C developer, a business admin, a Db admin, a junior conforming to pressures from others.
I recently looked at the deep rooted abuses of Java beans, and this entire internally created state management engine that serves no purpose but to create contrived complexity.
The use of propriety tools, that they paid lots for that perform incredibly simple tasks that have long since been solved by the open source community. Many of which are long defunct.
And the constant focus is on monkey patching the engine to solve small issues, which bloat the time to deal with issues. Since everything needs to be tested by their methodologies.
The inability to understand that the underlying structure is the issue and that tackling that, rather than just shifting the entire solution to new languages will suddenly solve the problems(or other underlying systems).
It’s just sad.1
When you're using openapi generators and stuff for generating SDK code and let "the architect" handle the data structure and nomenclature, don't you hate having to add 33 (I counted) models, most of which are just the same class with different name or one property apart from each other, serialization of which gives request body overhead 56-132x (actual calculated results depending on the model complexity) the size of actual data you want to send, just to add support for one endpoint that needs just one model that started this whole madness?
I just had to add this one top level model reference and this happened to me. Those 33 models are not including the ones I already had included in my project so they didn't have to import them again.
For the love of <your_belief_here /> and all that's holy, never ever agree on generating code based on openapi if the person responsible for that is unexperienced. It will do more harm than good, trust me.
Before we decided to go with generated SDK my compiled product was a bit over 30KB, and worked just fine, but required a bit of work on each breaking API change. Every change in the API requires now 75% of that work and the compiled package is now over 8MB (750KB of which is probably my code and actually needed dependencies).
Adding an endpoint handler before? Add url, set method and construct the body with the bare minimum accepted by the server
Now? Add 33 models (or more), run full-project find&replace and hope it will work with the method supplied by the generated code, because it's not a mature tech and it's not always guaranteed it will work.
"I don't shy away from complexity, I avoid it when possible"
Excuses that sound legit pt. 1
*looks drowsy* Ugh my head..
You know what, guys? If you can freshly and directly remember how to do this:
- calculate the time complexity for each type of loop and code structure
- knowing how to write the following regex:
"A 15-digit number starting with a possibility of a group of 1-2 digit numbers, segregated into three 5-digit numbers tuples with three different separator characters, evaluated ahead"
- mentally work out how to reverse an array's indexes (swapping algorithm) without writing anything down
- know how to optimize a binary search in your head
then kudos to you. lmao
I'm rusty. It took me a while..7
So I got accepted into a Master’s programme for CS - which is kinda cool but hardly unexpected. Guess I should feel elated about it, but honestly, I don’t know how I feel about it. Really it only adds additional complexity into the next few years of my life: I feel a little gutted that I have to switch over to my plan B regarding the sporting side of my life (there’s no way I can work full-time, study AND train for IM simultaneously - there’s just not enough hours in a day…), but that’s okay. At least I had a plan B knowing I might get accepted to these studies now.
What it really complicates is decisionmaking regarding this: https://devrant.com/rants/5571843/...
At my current workplace, I have officially 2hrs each week + an additional full work day a month to use for studying during work hours (in reality I tend to use more than that because I can, whenever there are no pressing matters need doing), and my gut is saying that’s unlikely to be possible in a consultancy position in a startup. Maybe it is, I don’t know. Need to ask.
In life, very few things are ever straightforward, aren’t they? But hey, at least I get to do my Master’s and I get to do it in a quality university!
In most businesses, self-proclaimed full-stack teams are usually more back-end leaning as historically the need to use JS more extensively has imposed itself on back-end-only teams (that used to handle some basic HTML/CSS/JS/bootstrap on the side). This is something I witnessed over the years in 4 projects.
Back-end developers looking for a good JS framework will inevitably land on the triad of Vue, React and Angular, elegant solutions for SPA's. These frameworks are way more permissive than traditional back-end MVC frameworks (Dotnet core, Symfony, Spring boot), meaning it is easy to get something that looks like it's working even when it is not "right" (=idiomatic, unit-testable, maintainable).
They then use components as if they were simple HTML elements injecting the initial state via attributes (props), skip event handling and immediately add state store libraries (Vuex, Redux). They aren't aware that updating a single prop in an object with 1000 keys passed as prop will be nefarious for rendering performance. They also read something about SSR and immediately add Next.js or Nuxt.js, a custom Node express.js proxy and npm install a ton of "ecosystem" modules like webpack loaders that will become abandonware in a year.
After 6 months you get: 3 basic forms with a few fields, regressions, 2MB of JS, missing basic a11y, unmaintainable translation files & business logic scattered across components, an "outdated" stack that logs 20 deprecation notices on npm install, a component library that is hard to unit-test, validate and update, completely vendor-& version locked in and hundreds of thousands of wasted dollars.
I empathize with the back-end devs: JS frameworks should not brand themselves as "simple" or "one-size-fits-all" solutions. They should not treat their audience as if it were fully aware and able to use concepts of composition, immutability, and custom "hooks" paired with the quirks of JS, and especially WHEN they are a good fit.
I was approached by some guy on a project and I need your help figuring out how to go about this.
the project is basically a website where school owners who are not tech savvy can input necessary details about their school and it spins up a site from an existing website template built in react for them.
an extra complexity will be creating custom domain names for each site. will this also be possible ?
I've not done something like this before and I dont know the word for it so making a Google search has been quite hard