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 - "overengineering"
Got assigned an intern to mentor him, with an explicit order not to do any of the legwork for him.
We start out with some fuzzy requirements. Intern starts overengineering a generic solution, so I make out a best architecture that conforms to the business requirements and I explain it to the intern why are we going to use such approach and tell him how we are going to do it in three phases.
I explain the intern the first phase, break it down in small tasks for him and return to my projects...
After a couple of days of no words from the intern, I decide to check up on him to see how is he progressing, only to hear him complaining the task is boring. So, instead of doing the assigned tasks, he decided he should do a "design" for a feature I told him explicitly not to do, since it is going to be designed by the design team later on.
I explain it to the intern that we have to do the boring task first because we can't proceed with the next phase of the implementation without the necessary data from the phase one.
Intern says okay and assures me he got it now. Few days later, I check up on him, and he tells me he feels he is doing all the work and that I don't contribute to the project. I call up my boss and tell him intern wants a meeting. Since I was working from home, I quickly pack my things and head to the office. Boss talks to the intern before I managed to get to the office. Once I got there, I meet the intern, and he tells me everything is okay. I ask what did the boss say to make things okay all of a sudden, and he tells me he said we are a team now. Our company has a flat hierarchy model, so he tells me he doesn't feel he needs a mentor, that we are both equal, and that I have no idea how to work in a team, and then proceeds to comfort me on how human interaction is hard and that I will learn it one day... I was like wtf?
I tell him to finish the phase one of the project and start with the phase two, and I leave home again.
I call up my boss and ask him what did he say to the intern, and he says: "nothing much, just explained the project a little bit and how it fits in the grand scheme of things.". I ask about the equal team members thing, and me not being a mentor any longer, the boss goes wtf, saying he never said anything about that to him.
So the kid can't focus on a single task, over-engineers everything and doesn't feel he can learn anything from developers with more experience, doesn't want to obey commands, and also likes to lie to manipulate others.
Tomorrow we'll decide what to do with him...
Sorry for the long rant, it was a long stressful day.86
When pandemic hit in 2020 I found myself out of work. Until then I used to have a java based pirate gameserver of a MMORPG as a hobby.
When pandemic hit I noticed that online players count increased from like 70 to 200 without much advertising because purely of people being stuck in home. So i decided to scale and spent 2 years with that. What a wild ride it was.
So i invested a bit in ads, managed to reach around 500 online players, opened my own company and launched a couple other successful spinoffs of that gameserver.
First year it was a goldmine but I was doing 10-14 hour days because I had to take care of everything (web, advertising, payment integrations, player support and also developing the server itself, ddos protections and etc.). I made quite a bit of money, saved for a downpayment for mortgage and got an apartment.
Second year I noticed that there was a lot of competition and online players count dropped, but I double downed on this and invested a lot into the product itself and spent most of the time developing a perfect gameserver that would be the big bang while also maintaining existing ones. Clasic overengineering mistake. As you can guess, I crashed and burned on all levels, never even managed to launch my final project because simply the scope was too big and I had trouble finding decent devs to outsource it to, since it was a very niche gameserver.
In the end I learned a lot especially about my own limits and ownership, now Im back to being a dev but working as a contractor.
I believe having actual business owner experience allows me to have different perspective and I can bring more to the table rather than focusing on crunching tasks.6
Before new years eve I prepared a sheet on google sheets that allowed people to add drink recipes and order drinks (specify how many of each drink they want), calculated part of budget each person had to cover and generated shopping list of drink components with exact amounts needed.
It was more fun to make that thing than to attend the party.2
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?16
It all started with a simple shell script that ran a bunch of build commands.
Then it became a python script that ran a bunch of build commands because why not?
Now it's becoming an electron app with a jazzy UI.. that runs a bunch of build commands. Because why not!
I was hoping to work on my project this weekend. Turns out, the kindergarten gave all the parents a task - to make a Christmas-y house with their child.
Well, I didn't work on my project, no doubt about that. But I found some other place to overengineer the shit out of it. And, frankly, I LOVED it.
2 days wasted. Not even sorry.
EDIT: all the materials are from the trash bin. That makes it even more fun!
EDIT2: Paint job is my wife's :) I'm too sloppy for it.13
dev "no no no, you're overengineering it. You just need one class for that"
Me "but ... Those are different object that share a common interface. The internal logic is not the same, only their output is. You know ... That's the purpose of interfaces"
Him "no no, as i said, you don't need that. Listen, you can put ALL the fields and methods in a single class and then you can use a switch with different cases .."1
Okay. For fuck sakes, writing complex code that's meant to handle "everything" and is "super generic" can be a fuck up. Like just keep shit simple. THAT is the show of great and impressive work. Over engineering is not it. Yes your shit works and yes your shit is fancy but was it needed? How long did it even take you for this over kill? How long will it take the next person to understand or not.
Someone now has to sit and run through your shit to get what you were doing. Instead of just being able to look and once and have it all figured out.
Keep things simple.
Lost 2 hours on bullshit 🤬4
This new guy has a senior position and is 20 years older than me.
Im not a senior because I didn’t study (still have 10y of experience) and i don’t care about the title as Long as the salary is good.
But.. he sucks, he doesn’t know basics, keeps overengineering, I have to explain basic stuff to him over and over again like JOIN in sql, lambda, method references and async threads in java..
He probably makes much more than me and has a higher title..
I feel like nobody notices because I keep helping him to finish his shit.
Soo my dad has a food printer he uses to print edible images on cakes our customers order. The food printer needs to run at least once a week (regularly) to kinda guarantee not to get fucked up with its ink, as that can damage the printer when it's dry. My dad though doesn't have regular orders...
The printer has a standard function to test all colors.
My dad asked me how this task could be managed regularly, as I'm the IT guy 🙄. His idea was to log all the dates on paper.
Now I'm trying to automate this task via Windows so we don't have to care about papers to manually log when the next test must run. On Windows the printer settings can be accessed to run this color check.
... I've got a feeling this will be another one of those tasks that I will overengineer over the top😅. I've already done my research with automated batch jobs (never done batch before) but the normally proposed code for a "Düsentestmuster", so the color check, prints a different overview I was not expecting, which doesn't fit the purpose.
Now I'm here and, as I currently see no way of simplifying it, I have to kinda simulate a person that opens these settings and runs this check. With Python, pyautogui and Tesseract OCR, to prevent the program from clicking anything wrong. Although I'm sure there should be an easier way for this, I haven't found it, so I guess I have to proceed on this path and take the experience I gain as a bonus...10
Need to fetch data from a website for project I'm working on
Look for an API with no luck
Spend 2 weeks developing a ridiculously overengineered and slow webscraping program with Selenium
Find an API
Overengineering. Finding the right point between overdesign and no design at all. That's where fancy languages and unusual patterns being hit by real world problems, and you need to deal with all that utter mess you created being architecture astronaut. Isn't that funny how you realize that another fancy tool is fundamentally incompatible with the task you need to solve, and you realize it after a month of writing workarounds and hacks.
But on the other hand, duct tape slacking becomes a mess even quicker.
Not being able to promote projects. You may code the shit out of side project and still get zero response, absolutely no impact. That's why your side projects often becomes abandoned.
Oversleeping. You thought tomorrow was productive day, but you wake up oversleeped, your head aches, your mind is not clear and you be like "fuck that, I'm staying in bed watching memes all day". But there's job that has to be done, and that bothers you.
Writing tests. Oh, words can't describe how much I hate writing tests, any kind of. I tried testing so many times in high school, at university, even at production, but it seems like my mind is just doesn't accept it. I know that testing is fundamentally important, but my mind collapses every time I try to write a single fucking test, resulting in terrible headache. I don't know why it's like that, but it is, and I better repl the shit out of pure function than write fucking tests.
About 4-5 hours ago I wanted to make simple websocket to get input from textarea and parse it on server and somehow got myself into developing in asyncio -> aiohttp -> graphql-core -> graphql-ws -> aioredis
and svelte-> typescript
I still didn’t make the stuff I wanted but I’m very close on backend at least.
I have some frontend part somewhere in my old prototypes so it will be faster if I figure out svelte.
Still don’t understand what the fuck just happened.
Maybe it’s because I wanted try those frameworks for a long time.
All ‘simple’ examples I found have around 20-30 files for backend and same amount for frontend so more then 50 files to get this shit working.
They’re called oh irony “simple chat”.
Now I see why no one fucking understands this shit.
I’m trying to cut mine to 5 files.
I thought developers are lazy bastards who don’t like write code.
But now after this they’re all looking like adhd coders.
Looks like Monday won’t be my best day.9
Am I a hack? Like yeah I complain about technology left right and center, this sucks, that sucks, what fucking moron wrote this?! These days I do write my own alternatives (which usually work surprisingly well). But for what? And was I really in a position to complain about those other things? Impostor syndrome, it's so annoying...
Oh and also, is it really all worth it? I like retro tech and so I do have a fair interest in the history of technology. Say between VHS and Beta, sure VHS was superior in practice and won the video cassette war, but Beta machines were seemingly better constructed. VHS won because it did just enough. Perhaps the same is true for software? Overengineering, is it poor engineering?
Anyone can build a bridge if the budget is unlimited and it can take a lifetime to construct. But part of engineering is making a bridge that'll just barely stand and be finished in a few years. I've been working on my own Linux distro since August last year and am not even close to finishing it. Chances are that it'll take several years. Perhaps I've been looking at the problem the wrong way all along?1
I've learned GNU Make
I've also wasted several days writing a makefile for a project consisting of multiple assemblies each being one of a few types. (Shared object, executable, assetlib, beverage)4
Context: This team has been constantly behind on deliveries, ignoring advice from other teams or more experienced colleague, making mistake after mistake and now, just revealed they have major performance issues, as warned...
So, in the most recent Sprint review they were, once again, criticized for their bad approach and inability as a team to receive feedback and work on that feedback, resulting in mediocre development...
As I left the room I heard one of them say:
"We make this huge rocket that most wouldn't be capable of doing and they cry that it's blue and not green... Others make a ls on a command line and everybody applauds"
Now, this is for everyone to whom the shoe fits...
Listen here you little entitled snotty prick, where do you think you are!? Yes most should not make a rocket when the requirement was a bike! That's overengineering and besides that most of your decisions were arguably wrong!
I will never applaud you or anyone else for doing your fucking job and being mediocre about it... What we applaud is value added! Value to the project, to the process or to the team... Bring value and I will applaud, do your job and you get a salary. Be a snotty childish dipshit and you might find yourself forcefully searching for new professional challenge!
Life lesson learned:
Despite good intentions, don't overengineer the front-end, when time is heavily constrained and the release is scheduled and is communicated to media outlets immediately after.
A broken release just makes the client send around multiple emails per minute with tens of people in CC.
Shit happens... at least it was a bargain for them.
Someone here told me once that according to him/her OOP was often overengineered and I was wondering why.
Then, recently, I started diving deep into Symfony. And I got it.2
It's a shame that people don't want to use F# but prise C# for how cool it became and continue becoming. At the same time, little do they know that many of the features were simply drawn from F#.
It's just rediculous how far this OO and C-Style syntax crap has progressed. They keep copying things from functional langugages, making the initial language to be a monstrocity like C++ is now, insted of just using languages like C#. I mean, it was right there before C#: async/task, immutablility, records, indexes, lambdas, non-null by default, who the hell knows what else.
Besides, many people (in my company at least) are just blindly overengineering with patterns and shit, where a simple function would be just enogh.
Watch some some NDC talks about F#, in particular those of Scott Wlaschin. It's just better in so many ways: less noice (I'm looking at you, brackets, commas and semicolons), the whole LOT of type inference and less duplication (just look at the C# signatures of linq methods - it's difficult to read them), immutability by default, non-nullable by default, ADTs and pattern matching, some neat features like type providers (how many times have used "paste special" or an online tool to create C# classes from a JSON/XML file, and how many times have your regenrated it because of schema changes?) and units of measure.
Of course, in some cases it's not optimal, in some cases mutable datastructures of C# are better for performance. But dude, how many performance critical systems have you wrote in C#? I mean, if it comes to performance you should use Rust or C++ or C after all.
Making software is science. I'm not talking about overengineering, just doing things right (with a minimum of automated testing, abstraction, architecture easy to modify, stuff like that). If you don't wan't to invest money in science, but only in business, get external providers for parts of your product, if not all of it. Stop making custom stuff that already exists, unless you can make something better (because it most probably ain't be cheaper, regardless the quality level).1
for the 3rd time ive tried introducing some version control on a project that really needs it because it has multiple people working on it.
And because the last time my efforts got shut down because in practice people thought it was too much of a hassle to develop locally rather than on the shared development server directly, I made a feature that would let people checkout branches on said server...
Apparently the action of; saving > committing > pushing to your feature branch > merge after aproval, is still too much for people to comprehend; "I think this is too convoluted can't we just keep pushing to the production server to check our work and then commit and push to the master branch"
So I just got pissed and said fuck it, no more git then, I'm not even going to put any effort into changing tooling here anymore, and this is a massive project where we have to manually remove code that isnt ready yet from the staging environment.
Are the people I'm working with just this stupid or am I really overengineering this solution because I think 4 people should not be working on the same file at the same time without any form of version control and just direct upload to FTP.
(and yes, I know I should leave this job already, but social anxiety of starting at a new company is a big obstacle for me)3
Imagine filling 50 files full of garbage unreadable code to build what is essentially a cron job microservice...
Oh we have a console program
then a module to pull in all the services
then a manager to manage the actual jobs
then if they fail it all cascades back up
My god, this isn't NASA.
The amount of overengineering I have seen in the past few hours is insane.
Keep It Simple, Stupid!!!2
I overcomplicated shit yet again.
Last year we had taken over a massive project, where the main problem was an abundance of design patterns. I was (who am I kidding, I still am) a newbie, and most patterns I'd seen the very first time. By the end of it I learned what they're good for, but now I love design patterns for what they are rather than the problems they solve. I write the same horror that I saw and I know full well how terrible it is, but I Just. Can't. Stop.
What do I do?2
Ugh, fuck man. I had planned an extremely general function for printing a truth table for a given proposition for a course, with a little functional programming thrown in. Instead, we are just supposed to show all 2^8 possible truth tables for 3 variables. That's eight nested loops with a hardcoded string that you inject the 8 values in.
I feel so disappointed1
I tend to overengineer. Why? Because I had a view in JavaFX with its controller that had a bunch of key listeners which changed the UI. I wanted to change the view based on wifi connection/no connection with a server, which was managed in a Client class. The controller took the client to give it a message that client then had to send. For "separation of concerns" I created a separate view + controller for the "not connected" state.
Now the Client knew all about the connection, so I put up the Observer pattern and wanted the Main (Application) class to swap the layouts as an Observer of the Client. After an Exception on FX thread and Platform.runLater(), to solve the issue, I faced a new problem: the key presses weren't executed anymore. I still don't know why this happens. Maybe I'm missing something.🤷
Then met with one of my group partners (it's a uni project):
Let's attach the Observer to the original controller. Have only the original view that changes due to the controller updates as Observer. Let's see if that might even remotely work...🤔
a "configurable" confirmation system, where page conditions (e.g. customerId=someId, etc.) are stored in the DB as a comma separated string to be run through a stack expression evaluator, so that customers can add a "confirmation" (aka just a modal dialog) with custom reminder text when a user does a certain thing on a certain page....2
People are whining about frontend bloat, overengineering, too many packages on npm and whatnot.
And I'm just like: "Hey! You still can write your own leftpads y'know..."
I just don't get why having lots of options has to be so bad...
I usually do like a good bit of challenge when working with web technologies for the first time, because one I learn to master them, I am really proud of myself and I can bring it as an asset for new projects. This means that I try to be as open minded as possible when working with a framework for the first time.
This being said, Magento1 has got to be the most overly complex, badly documented and unconfigurable thing even.
The fact that there's no way to easily understand how to configure a module has me distressed1
I somehow managed to create 2 different IDs and realize that I'd need to store previous value for one of them - in a tabbed view component. Although to be fair the component allows reordering tabs and moving them across containers with drag&drop.
Mexico just got for a big earthquake and people is organizing a lots of ways to help.
> Some guys started a webpage and they are adding useful information and data for the people. They create a repo on GitHub to improve information.
> Mexican devs start discussing which technology is better for solving imaginary problems about escalate the servers, concurrency, creating a CMS, creating a public API, tokens for publishing the API... Instead of using something quick like firebase or some Trello to just publish info.1
How do you know when you’re overengineering something? Like, you look a project and know you can build this with vanilla JS but the creative team wants it built in React because “components are better”. What do you do?
"Overengineering is terrible".
The project's owner wants to employ Kafka in the project, however, there are only a few hundred simultaneous connections. The programming team questioned, "Is it Overengineering?"
"It's that terrible," the project's owner said.