Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API

From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "complexity"
-
Conversation today...
Guy: "Hey I need a real quick script to pull some values out of an XML document...is that possible?"
Me: "Uh...yeah that's pretty simple if that's all it has to do."
Guy: "Ok excellent I'll send you some files and documentation."
Me: "Ok so is this like a one time use thing or do you need to parse multiple of these?"
Guy: "Actually it needs to run all the time, on this specific PC, watch directories for any files that are added, then generate a XLSX files of the values, and also log information to a database. Etc"
Me: "Oh that adds quite a bit of complexity from what you originally said. It's going to take more time."
Guy: "But you said it was easy."
Well fuck you...12 -
Team Lead: Anyone has any concern on their tasks? I'll see what I can do to help.
Me: Yeah I'm afraid I would not be able to finish my task on time because of its complexity.
Team Lead: Try harder.
What's the point of asking?11 -
Password complexity checker for big car rental company is set to insane mode
☑️ 30 char
☑️ symbols
☑️ numbers
☑️ upper & lower
❎ still 'too weak'10 -
Anyone looking for something interesting to do???
Step 1) understand how basic circuitry works on a bread board nothing too fancy. ( Implement NAND, AND, ADDER, SUBTRACTOR)
Step 2) learn about microprocessors and how OS works
Step 3) learn assembly
Step 4)write a basic assembler and understand how loaders and linkers works !
Step 5) write a kernel with very basic features like memory management and process management and some drivers for IO
Step 5) write an emulator for some simple systems .! ex chip-8.
Step 6) read about compiler theory and automata
Step 7) write a basic Python interpreter that compiles (not interpreter) to native assembly.
Step 8) implement TCP stack .
Step 9) learn as much as u can about complexity measurement ), data structures and algorithms using C or C++ it's very important ( familiarity with pointers and thus computer memory )
Step 10) learn any high level language of choice like Python or Ruby.
Step 11) stop debating over tabs vs spaces , emacs vs vim , angular vs vue, php vs Python , OOps vs procedular vs functional ( just know about all of them and when to use but don't fucking debate over which one is superior )..
Step 12) live happily and be healthy.30 -
In a user-interface design meeting over a regulatory compliance implementation:
User: “We’ll need to input a city.”
Dev: “Should we validate that city against the state, zip code, and country?”
User: “You are going to make me enter all that data? Ugh…then make it a drop-down. I select the city and the state, zip code auto-fill. I don’t want to make a mistake typing any of that data in.”
Me: “I don’t think a drop-down of every city in the US is feasible.”
Manage: “Why? There cannot be that many. Drop-down is fine. What about the button? We have a few icons to choose from…”
Me: “Uh..yea…there are thousands of cities in the US. Way too much data to for anyone to realistically scroll through”
Dev: “They won’t have to scroll, I’ll filter the list when they start typing.”
Me: “That’s not really the issue and if they are typing the city anyway, just let them type it in.”
User: “What if I mistype Ch1cago? We could inadvertently be out of compliance. The system should never open the company up for federal lawsuits”
Me: “If we’re hiring individuals responsible for legal compliance who can’t spell Chicago, we should be sued by the federal government. We should validate the data the best we can, but it is ultimately your department’s responsibility for data accuracy.”
Manager: “Now now…it’s all our responsibility. What is wrong with a few thousand item drop-down?”
Me: “Um, memory, network bandwidth, database storage, who maintains this list of cities? A lot of time and resources could be saved by simply paying attention.”
Manager: “Memory? Well, memory is cheap. If the workstation needs more memory, we’ll add more”
Dev: “Creating a drop-down is easy and selecting thousands of rows from the database should be fast enough. If the selection is slow, I’ll put it in a thread.”
DBA: “Table won’t be that big and won’t take up much disk space. We’ll need to setup stored procedures, and data import jobs from somewhere to maintain the data. New cities, name changes, ect. ”
Manager: “And if the network starts becoming too slow, we’ll have the Networking dept. open up the valves.”
Me: “Am I the only one seeing all the moving parts we’re introducing just to keep someone from misspelling ‘Chicago’? I’ll admit I’m wrong or maybe I’m not looking at the problem correctly. The point of redesigning the compliance system is to make it simpler, not more complex.”
Manager: “I’m missing the point to why we’re still talking about this. Decision has been made. Drop-down of all cities in the US. Moving on to the button’s icon ..”
Me: “Where is the list of cities going to come from?”
<few seconds of silence>
Dev: “Post office I guess.”
Me: “You guess?…OK…Who is going to manage this list of cities? The manager responsible for regulations?”
User: “Thousands of cities? Oh no …no one is our area has time for that. The system should do it”
Me: “OK, the system. That falls on the DBA. Are you going to be responsible for keeping the data accurate? What is going to audit the cities to make sure the names are properly named and associated with the correct state?”
DBA: “Uh..I don’t know…um…I can set up a job to run every night”
Me: “A job to do what? Validate the data against what?”
Manager: “Do you have a point? No one said it would be easy and all of those details can be answered later.”
Me: “Almost done, and this should be easy. How many cities do we currently have to maintain compliance?”
User: “Maybe 4 or 5. Not many. Regulations are mostly on a state level.”
Me: “When was the last time we created a new city compliance?”
User: “Maybe, 8 years ago. It was before I started.”
Me: “So we’re creating all this complexity for data that, realistically, probably won’t ever change?”
User: “Oh crap, you’re right. What the hell was I thinking…Scratch the drop-down idea. I doubt we’re have a new city regulation anytime soon and how hard is it to type in a city?”
Manager: “OK, are we done wasting everyone’s time on this? No drop-down of cities...next …Let’s get back to the button’s icon …”
Simplicity 1, complexity 0.16 -
Pessimist: a O(2^n) algorithm's performance decreases exponentially as input increases.
Optimist: a O(2^n) algorithm's performance increases exponentially as input decreases.2 -
We are pioneers.
We build software, an extremely complex concept that didn't exist just 70 years ago.
We learned to harness its complexity and bend it at our will. Just stop for a minute and think about what happens when you load a URL in your web browser. The whole process.
In all human history, nobody has ever been the protagonist in something so complex as software. Yet we know that all of this wouldn't exist without a community of developers, sharing code and knowledge over the same system that they have created.
_We are dwarves perched on the shoulders of our fellows_
That's why even if nobody understands our work, I still think this is the most beautiful job in the world.12 -
Biggest scaling challenge?
The imaginary scaling issues from clients.
Client : How do you cope with data that's a billion times bigger than our current data set? Can you handle that? How much longer will it take to access some data then?
I could then give a speech about optimizing internal data structures and access algorithms that work with O(log n) complexity, but that wouldn't help, non-tech people will not understand that.
And telling someone, the system will be outdated and hopefully been replaced when that amount of data is reached, would be misinterpreted as "Our system can not handle it".
So the usual answer is: "No problem, our algorithms are optimized so they can handle any amount of data"6 -
Completed a project for my final year CS degree and my professor rejected saying it is of very few lines of code.Hope he learns to evaluate projects on complexity and logic rather than number of lines of code. :/29
-
"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 -
(Interview for sde-3 position)
(continuation of https://devrant.com/rants/2132431/... )
Interviewer - *opens laptop. Gives a question.* solve this.
Me - *a bit surprised that such questions were being asked on a sde-3 level*
this is the 4th or 5th question from geeksforgeeks, isn't it? I know the answer to this. Do u still want me to solve it?
Interviewer - *not believing me* Yes
Me - okay. Well this *writing down the original solution mentioned on the site* is the verbatim code mentioned on the website, with complexity O(n^2).
However I feel this is not the optimal solution. Let me write a better solution.
*I provide a better solution*
This has a complexity of O(n log n) . What do you think?
Interviewer - Nope. This could be a lot better.
Me - okay. Let me see. Did some minor changes, added some caching (obviously this will have no effect on the base algorithm) etc
How about now?
Interviewer - nope. Still not good.
Me - okay. Can you tell me how to improve it?
Interviewer - no we are not allowed to solve problems for you. It is not our interview, it is yours.
Me - that makes no sense. Interviews are a two way street. I'd very much like to know the optimal answer to this.
Interviewer - okay
*copies down the answer from geeksforgeeks*
This is good
Me - *at first I thought this was a prank or something. *
I just mentioned this answer here.
Then I spent the next 10 minutes providing a BETTER solution.
May I know how yours is better?
Interviewer - this solution has 2-3 loops. Yours has a function calling itself.
Me - that's called divide and conquer using recursion mf!
Anyways let's take an example and do a dry run.
Interviewer - okay
*we do dry run*
Interviewer - oh yes. Yours ran faster. But it will run fast only sometimes.
Me - yes. Each time the algorithm rolls a dice to decide if it should run fast or slow. You have one goddamn awesome weed dealer man.
I got to go. Thank you for meeting me.14 -
IF LIVES DEPEND ON A SYSTEM
1. Code review, collaboration, and knowledge sharing (each hour of code review saves 33 hours of maintenance)
2. TDD (40% — 80% reduction in production bug density)
3. Daily continuous integration (large code merges are a major source of bugs)
4. Minimize developer interruptions (an interrupted task takes twice as long and contains twice as many defects)
5. Linting (catches many typo and undefined variable bugs that static types could catch, as well as a host of stylistic issues that correlate with bug creation, such as accidentally assigning when you meant to compare)
6. Reduce complexity & improve modularity -- complex code is harder to understand, test, and maintain
-Eric Elliott12 -
Boss comes in and gives me some js code for syncing data (he hacked it together the other day, really messy with like 5 callback lamdas stacked into each other)
Boss: Make it faster and more reliable and add some progress indicator
So i look at the code and he literally pulls all the data as one json (20+ MiB). Server needs multiple minutes to generate the response (lots of querys), sometimes even causing timeouts....
So i do what everyone would do and clean up the code, split the request into multiple ones, only fetching the necessary data and send the code back to my boss.
He comes in and asks me what all this complexity is about. And why i need 5 functions to do what he did in one. (He didn't -.-). He says he only told me to "make it faster and show progress" not "to split everything up".
So I ask him how he wants to do this over HTTP with just one request...
His response: "I don't care make it work!".
Sometimes i hate my job -.-11 -
When everything has been abstracted..
While I think it's encouraging to newcomers into the field of programming they should always strive to delve into the abstracted details.. The amount of complexity that we deal with 'infinite'.4 -
Fuck those who cover their incompetence with complexity. Fuck those who fall for their shitty tricks. Fuck you for depriving me of any sense of accomplishment with overcomplicating everything to show how smart you are when you are not. Fuck you for creating a culture of overthinking egoism instead of shipping and finding out who was right. FUCK YOU IN THE ASS YOU BIKESHEDDING, MOTHERFUCKING CUNTS!4
-
"Your resumé looks really good. We would really like to hire you. But you need to do this completly job unrelated test/coding challenge first."
----
"Is the test Android related?"
"Yes"
*Opens Test* -> "what ist the complexity of this function (written in c)"
*Scrolls*
"Implement algorithm xyz in Go lang"
*Closes test and breaks something*
----
"You will need to Code on a small Android projekt so we can see how you work"
"OK, how much time will i need to plan for it?"
"Our lead dev decided to make it small so its only 4-5 days."
----
What is it with all this stupid hiring test these days? And what do these recruiter think?8 -
Simplicity is a prerequisite for reliability.
I put those words on the wall in giant vinyl letters, and I point to them every time someone asks me "can you add a frontend button which checks this external API and stores the correlation between the amount of rain and the sales numbers of purple buttplugs inside the user profiles?"
People always ask for one more column in a table, one more paragraph under an image — they never ask for replacement or removal of items.
So I force them. Want a feature? Fine, if you point at something of equal or greater complexity to delete.2 -
One day at a doctor who started a small conversation:
Doc: What is your job?
Me: I am a software developer, I write computer programs basically.
Doc: Interesting. How does it work?
Me: Oversimplified you have special languages to tell the computer what to do and then this is converted into a program you can start on your PC. The languages are a bit like basic english (thought of Pascal at this moment).
Doc: So then it is a pretty simple job.
Me thinking: OMFG yes that's why I studied it 6 years, because it's soo easy.
Me thinking at home: Next time tell them that you are a computer scientist and that it is applied mathematics basically. Maybe then they will get a clue of the complexity. 🤔14 -
"I think most programmers spend the first 5 years of their career mastering complexity, and the rest of their lives learning simplicity. " - Buzz Andersen2
-
I think I figured out why so many companies jumped on board the Agile approach. Companies heard Productivity Bonus and Put Stuff into a List Of Things to Do, and left out all the rest of their responsibilities. One of my past companies was like "We're going to take an Agile approach to everything! Except, we're not going to shield developers from everyone who has stuff in the backlog, and we're going to have other meetings during the day on top of the scrum meetings to check on your progress, and we're going to measure points in time instead of complexity".
I feel like the creators of the Agile Manifesto would be really upset at all of the poorly implemented processes. Because all of us developers are pretty upset.6 -
Junior dev:Hey,see my code works :)
*After analysis of code*
Senior dev:Let's talk about complexity bro
Junior dev: shit :( -
*Got a request for installing and configuring an online shop for a client*
Me: Do you have a web space already?
Client: No, I don't want to pay for it. (FYI: They only cost about 20€ a year)
Me: Okay, but free hosters are often slow and unprofessional. I really do not recommend using free hosting services.
Client: Doesn't matter, do it.
Me: *Working on the shop for several weeks, finally goes online*
One week later, client contacts me saying shop is offline. I realize the free hoster he used shut down their services (bankruptcy), resulting in the loss of about 90% of the work that I had done (no proper backups due to complexity)
Client: How can that even happen? You'll redo the shop, right?
♪~ ᕕ(ᐛ)ᕗ5 -
Somebody asked on how to get started on Full Stack web application development.
This is how I got started.
Client side Web Application Development:
---------------------------------------------------------------
• Start with basic HTML, CSS and JS, JSON. For quick learning, see W3Schools for these topic or YouTube it.
• Get a local web server. "200 OK!" webserver chrome extension is a good start. (https://chrome.google.com/webstore/...)
• Learn Chrome Dev Tools to debug the pages. YouTube it.
• Get a good IDE. I am very happy with VSCode. You can use it for very serious WebApps.
• Start learning JavaScript language in depth, but just related to Web Browser related topic or you would get sucked in server side too early.
• Install node.js. Learn NPM package manager. Learn basic node commands.
• Learn complexity of JS file referencing, JS modules in browser. Just learn, don't use it yet, to understand the benefits of code bundlers.
• Learn Webpack code bundler.
• Learn how to make you simple site much faster and using in Mobile using "Progressive Web Apps".
• Now learn to make modular UIs. I love React. Focus on getting the UI code modulear. Create Single Page sites. (You are not there yet to create a Web App) “Create-React-App” started kit is a good starting point.
• Learn to create multi-page site using React-router.
• Learn application state management using Redux.
• Learn to create application decision engine using Redux-Saga.
Practice and master each stage.
Along above, learn git / GitHub (to learn from others code), find good web resources like Medium / Smashing magazine, good YouTube channels etc. I subscribed to some popular Udemy courses too.
Server side Web development:
------------------------------------------
:) First learn client side Web Application development. Server side learning is another story.3 -
Today the CEO asked us to create KPIs to follow a junior tasks, daily.
The problem it's he wants KPIs to foretell problems or delays in his tasks.
The junior is analyzing 14 years old C++ code, made by an electrical engineer who had all worsts practices possible when coding.
We explained that we couldn't make real, true KPI that would foretell the advancement due to complexity of the legacy and the fact that the junior had NEVER USED C++.
SO.... He asked to know how many code lines he made daily and an estimate of how many lines he'll have to do to complete the task.... So he could foretell advancement.
....
....
It was the 5th time in less than 60 days, that the CEO bypass totally the CTO to ask some stupid useless shit. So now all developpers have resign, complaining about the CEO actions/stupidity.2 -
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.
Me: but…
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…
Manager: ….
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 -
!rant
Yesterday a friend of mine asked if I could help her with an assignment. The goal was writing shortest path agorithm in excel. I told her I don't know excel or VB but I will look into it. I didn't even know that we can code in excel 😅 After 1,5 hours of research and coding I writed a well documented code that does the job (with n^2 complexity of course). I feel VERY motivated after this. Because I did well job at an unexperienced environment with a language that I don't know!
Tldr: my new favorite ide is excel.3 -
so i posted this image on my facebook wall(my business depends on facebook) and my father commented, check 1000 times then 😐
i wish i could say, it is not that easy, but i feel it is better not to say anything then explain the complexity of programming 😢3 -
"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 -
It was when I ditched React. I replaced it with raw JavaScript, with frontend being built with Gulp and Twig (just because HTML has no includes). Here are the results:
1. Previously, a production frontend build took 1.5 minutes. Build time became so fast that after I push the code, the build was done before me going to Netlify to check build status. I go there, and it’s almost always already done.
2. In a gallery with a lot of cards, with every card opening a modal, the number of listeners was reduced from N to one. With React, I needed 1000 listeners for 1000 cards. With raw JavaScript, I needed just one click listener with checking event target to handle all of the cards.
3. Page load time and time-to-interactive was reduced from seconds to milliseconds.
4. Lighthouse rating became 100 for desktop and 93 for mobile.
But there is one more thing that is way better than all of the above: cognitive complexity.
Tasks that took days now take hours. Tasks that took hours now take minutes.
Tasks that took thousands of lines now take hundreds. Tasks that took hundreds of lines now take tens.
In real business apps, it is common to build features and then realize it’s not needed and should be discarded. Business is volatile, just because the real world is volatile too. With this kind of cost reduction per feature, it became way less painful to discard them. Throwing out something you spent time and emotional resource on doesn’t feel good. But with features taking minutes to build, it became easier.30 -
I've been locked in a room with another dev for 2 days working like insane to remake a outdated crm system. Had to inform the department lead that the deadline isn't possible and we need another week. Got questioned about what we had been doing the past days, redesigned the database, migrated data, frontend etc. Boss goes "that's all you manager in 2 days?" We went in with 2 slides and had to design and plan everything from scratch.
I lost count of how many rounds and added complexity happened in 2 days when Customer came by. Now there is going to be a board meeting with PM as he complains that the project is taking too many resources and should be killed. I invited myself to that meeting to defend the work done. Hold my laptop and watch this.7 -
Do you know what is world needs?
Good fucking tutorials for all programming languages.
Every time I want to learn a language it's a fucking mess. Tutorial here, tutorial there. Read the docs, it's fucking outdated. This person using this design, that person using that.
I am so tired of this shit.
also, for a simple example most website uses some complex architecture, something they think is the next thing.
Even searching for a simple QT singleton pattern gives me a webpage from QT Wiki which uses templates, typedefs and this shits to just show a FUCKING EXAMPLE OF THREAD SAFE SINGLETON.
I really wish there's was a greater platform for this. A platform that follows some certain standard rules for tutorials.10 -
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 -
Adios Motherfucker!
Finally got that pile of misery finished. That simple ticket exploded in complexity and had quite a bit of scope creep. So so glad it's over. I mean, apart from code review and QA. But still. It's done!
Also: I may have been drinking already. Clearly not enough from the painful lack of typos and silliness. Gonna go work on that.6 -
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 -
Today i implemented something of such a complexity that the part of my brain i am in could not follow it.
(Really guys. I did not know what i was doing. I only knew i had to do it exact this way)
This feeling when you are in a tunnel and unstoppable. I even documented what i did.
Sadly i do not even understand my thoughts there xD
I wrote about three hours straight and then run a test. And the only mistake was a variable not filled as described. Used another one and it run smoothly as hell.
Today i will drink a beer on whatever part of me did this. Cheers6 -
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 really hate fucking Wordpress!
I hate it's stupid API, with it's stupid hooks and actions and all those stupid functions and no fucking logic to any of it!
I hate it's stupid plugin system, with all that fucking overhead that brings no real value and adds all that complexity for nothing!
I hate stupid fucking multiple calls for the same fucking assets, loading them over and over again because every stupid plugin calls them again and again!
I hate motherfucking SHORTTAGS, or whatever the fuck they are called!
I hate that every stupid fucking plugin and shortcode and fucking every little fucking piece of HTML comes from a different fucking place, with different fucking structure and different fucking classes and stupid fucking loading seaquences that make no fucking sense!
And I hate fucking page builders !!!!!
Fuck!!!!
I should be fucking coding on this fucking peace of shit, but I just cannot fucking take it any more!!!
IT NEEDS TO FUCKING DIE!
It should be relegated to the darkest corners of the internet and all the servers that have it's fucking code anyware on their systems should be disconnected and buried in the deepest pits of hell, just to be sure it never, EVER, surfaces again!!!
AAARRRRGGGHHHHHHH !!!!!!!!!5 -
I dont see why recruiters find it relevant to ask how many lines of code a piece of software has. Like seriously why!?!?!?!
It by no means measures the quality of the code or the usability or complexity of the software.6 -
I’m pissed.
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 -
Y'all ever notice how the size and complexity of a project is a source of pride for those whom created the project, and a source of dread for those who need to maintain it?7
-
I found university very worthwhile, mainly for what it exposed me to that I wouldn’t have necessarily learned otherwise. University exposed me to a lot of knowledge which allowed me to discover the fields and concepts that really interested me. It also forced me to learn math, and I’ve come to really love mathematics, even though my knowledge is still not that deep. I really respect and appreciate math now that I have more than a superficial understanding of it.
CS-wise, the things that have been most useful in practice have been complexity, data structures, concurrency, and others, but complexity is probably the absolute most important thing to at least learn the basics of.
I would not say that university is a necessity though. You can absolutely get by teaching yourself, especially if you are disciplined/interested enough to keep doing it. The important thing is to learn *what* to learn.2 -
Worst part of being a dev?
For me it's putting myself into infinite loops wrestling with my own self doubt. Is this really how I want to solve this problem? Could this code be cleaner? Surely there's a better way to do this? Am I adding unnecessary complexity? Is this going to come back and bite me in x months? And so on...
In fact, most days I just feel like an imposter.4 -
Why is C++ the first language taught in schools when Ruby is a much simpler and fun language?
History says because the courses didn't get updated.
Conspiracy theory says it's to keep out people who can't deal with complexity.21 -
I am a firmware developer with 4 years experience. C and sometimes assembly is my bread and butter.
Like 2 years ago, I was really interested to make a switch to application development. Got referred by my friend to her startup.
But I was a bit rusty with my data structures, high level languages and interpersonal skills.
The first question was to find the number of occurences for each word in a paragraph. The language choice was Java. But I was allowed to use C++ since it was the closest relative to Java that I knew.
And I started implementing a binary search tree from scratch and started inserting each tokenised word into it, wrote a traversal algorithm.
The interviewer, luckily, was a patient guy. After I completed my whole mess, he asked is it possible to do this in a slightly better way with constant time access without traversal.
I said yes, we can with a hash table but I dont know how to implement one. He replied I dont expect you to implement the hash table but see you use it. I asked him if I am allowed to used the standard library, for which he said ofcourse.
*facepalm*.
Finally I understood his expectation, referred cppreference.com and used an unordered_map.
Later there were some quesion on databases for which I tried my best to answer. And I frankly replied that I am not comfortable with JS frameworks as of now. Got rejected.
So the mistake is I never asked basic questions like what is the time complexity expects, if I was allowed to use standard library, didnt spend some extra time on studying stuffs needed for the domain switch and most importantly I panicked.7 -
Best tool:
Your hands!
- incredibly flexible
- express a lot of commands trough very little code (just raise the middle finger and tell me if you are not expressing something VERY strong with VERY little complexity)
- reusable
- interfaces
- smells of good soap
Worst tool:
Your brain
- highly power consuming
- wrinkly, ehw!
- overthinks a lot
- imposter syndrome
- hooked on sugar like it was cocaine
- hooked on cocaine like it was sugar
- refuses to comprehend chthulu6 -
We did a small automated review on our code base at work. We discovered that multiple single functions written by my colleagues have a cyclomatic complexity of over 420.
I can't think of words to describe how shit that is.11 -
As if my head couldn’t get any bigger... today we had the guys from the static analysis tool come in to show us how to use the tool and all that... the guys tell us don’t be alarmed, everyone who runs the tool for the first time has thousands and thousands of errors... my co worker did his as a “demo” and had 44 thousand MISRA errors. And a McCabe Complexity score of 700 in main().. I laughed ... and he and the guys from the tool laughed and said well fine then let’s see yours... so they set mine up to run, the room was silent, as I just smiled... only 2 MISRA mandatory errors.. and a few dozen required MISRA errors. My main McCabe score was 13.... understand both software project are working, and do very similar functions, only difference is different generation of product and who programmed it...
My boss walked in the room ... and says sooo how bad was Chris’ code as a joke... and the static analysis tool guys (who literally check people’s code for a living!) says ugh no sir, you have a very talented software engineer on your hands... we’ve never seen someone run the tool and have that few of issues... my co worker was very jealous to say the least... -
I might lose my job this week
I'm part of a team of 2 tech people
We were hired as programmers. But over these past 10 months we've done everything from helpdesk to fixing network infrastructure, i setup a backup server for the company, started properly managing the companies passwords,and a host of other things not in my contract.
But my boss is changing the deadline again and she refuses to listen to anyone's concerns, she doesn't understand the complexity of what she wants and since the best we've done so far can be considered at best a prototype in my opinion shes going to be disappointed
So at the next meeting me and my coworker are going to politely list our grivences point out all shes had us do at the same time and the impossible deadlines.
I've seen herpitch a fit for less so I'm fully prepared to be fired in rage in which case I'll compile the documentation and information on what we've done to email her.
But I'm pretty sure she won't find anything long term for the 40k salary shes expecting. Especially with how slow she is to do work herself. I was supposed to be on company health insurance since October 2020
In a way I'm kinda relieved at the potential of being fired.3 -
Okay so I have been a consumer of devRant for a while now but never posted anything. This is my first.
So yesterday I modified an existing method(some very minor changes!!). Today after coming to the office I see that I have comments from Sonarqube stating
"Reduce cognitive complexity from ** to 15.
I get that it is a good measure to maintain readability but this refactoring is not part of my change at all and any mishap can break the whole code base!!!.
My code even won't build because of this company restriction that there should not be any issues from Sonarqube.
I really want to bash my head against the wall right now.11 -
So today I saw another 'OOP should die' article.
And I decided I should google around a bit to find out why.
Reasons I found:
- Things get too complicated
- Things get too abstract (same as the above really)
But when I search for alternatives, only functional programming and different ways to use OOP get mentioned.
I still don't get why OOP is supposedly bad though.
Maybe my 20-30k LOC projects aren't big enough to see it?
For me the abstraction works very well. The abstraction is used to keep the complexity low(er).
And the different ways of using OOP are a plus-point for me. (Like the Entity-Component system)
I don't know enough about functional programming to be able to say it's better or worse, but the ideas behind it a perfectly usable in languages like C#.
So if any of you have a good concrete reason to not use OOP, please feel welcome to tell me in the comments :)13 -
Matryoshkas are better companions than Ducks, and here's why:
-Made with wood. The material of Men! No industrialized rubber to spread Capitalist propaganda
-Multi-layer. Explain your code with different levels of complexity. Babushka Matryoshka is keen on C!
-Never feel alone. Maybe you want some intimate one on one, maybe you want a whole party of helpers, all thanks to pocket dimensions (included with the Matryoshkas).
So what's your excuse for not having a Matryoshka Comrade cyka!9 -
Scrum. And agile. And people over-communicating. And estimating work complexity on a prototype. And people in general. I like nights, when all annoying people just shut the fuck up and sleep.1
-
Boss: I want Module 4 (regular complexity) done by tomorrow.
Me: *with not enough experience to get it done within a day. Still does it by staying up all night*
Next Day
Boss: I didn't want this, skip rest of the modules and jump to Module 10 (extremely complex) and I want it tomorrow.
Me: ;_;12 -
what's the thing that reminds you, that you are a developer?
I said "the time complexity of finding my car in this parking lot is n factorial".11 -
!rant
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 -
Full stack developer.
I know what it's supposed to mean, but I feel like it gives discredit to the devs who perfect their area (frontend, backend, db, infrastructure). It's, to me, like calling myself a chef because I can cook dinner..
The depth, analysis and customization of the domain to shape an api to a website is never appreciated. The finicle tweaks on the frontend to make those final touches. Then comes a brat who say they are full stack, and can do all those things. Bullshit. 99.9% of them have never done anything but move data through layers and present it.
Throw these wannabes an enterprise system with monoliths and microservices willy nelly, orchestrate that shit with a vertical slice nginx ssi with disaster recovery, horizontal scaling, domain modeling, version management, a busy little bus and events flowing all decimal points of 2pi. Then, if you fully master everything going on there, I believe you are full stack.
Otherwise you just scraped the surface of what complexities software development is about. Everyone who can read a tutorial can scrape together an "in-out" website. But if your db is looking the same as your api, your highest complexity is the alignment of an infobox, I will laugh loud at your full stack.
And if you told me in an interview that you are full stack, you'd better have 10+ years experience and a good list of failed and successful projects before I'd let you stay the next two minutes..1 -
Clients that barely can turn on their computer that have opinions on how much complexity and time is involved developing X feature. I'm no rage-o-holic, but that is one of those rare things that make me want to stab someone in the face.
-
daily.
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.
me: ...
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.
me: sure.
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’ve come to the conclusion that developers who like react have never used it for anything even remotely complicated.
Because here’s reacts dirty little secret; it doesn’t scale. Not even a little. It’s flexible, but that leads to every developer writing their code in a different way.
It’s simple and easy for simple side projects, but as soon as you have to pass state to a child component, you’re fucked. And god help you if you’re modifying the state in said child component. You can try using redux, but that’s a bandaid solution to the real issue.
There are better alternatives, namely Vue. There’s no need to write unintelligible code that’s a mutated hybrid of html css and js. We as web developers realized mixing these technologies was a bad idea a long time ago.
React simply doesn’t scale. It’s flexibility, complexity, and the awful code quality it leads to makes it a nightmare for large projects with multiple developers
Some of its concepts are interesting and useful though. It’s functional concepts allow for easy code reuse, among the other benefits associated with functional programming
I sincerely hope that the hype around react dies out, and a new framework emerges that takes the best from react and fixes the glaring issues it currently has24 -
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 -
Tfw you *have* to tell the client it's *technically* possible, but at the cost of work and complexity... and they come back with "let's simplify the whole thing then" *.*1
-
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 -
Got an assignment in school to make an easy project in c for embedded real time processors with a free complexity level (it was really early in the course and many had never been programming before).
Since I've been working a few years in development I decided to create an own transmitter and receiver for an own protocol between processors (we had just spent a week to understand how to use existing protocols, but I made my own).
The protocol used only 1 line to communicate with half-duplex and we're self adjusting the syncing frequency during the transmission. I managed to transmit data up to 1 kbps after tweaking it a bit (the only holdback was the processors clock frequency).
Then I got the feedback from our teacher, which basically said:
"Your protocol looks like any other protocol out there. Have you considered using an UART?"
Like yeah, I see the car you built there looks like any other car out there, have you considered using a Volvo instead?1 -
Informative article on why Golang is relevant is today's computing ecosystem. I too find many server side programming being done in Golang nowadays. I liked its c like features and simplicity over complexity.
https://medium.com/@kevalpatel2106/...24 -
I just came across this piece of recursive code, as much as I can guess this should be an infinite recursion but somehow it executes and does terminate. Can anybody tell me how this happens and what will be it's time complexity ?15
-
So we decided to adopt Scrum where in manager(scrum master) picks the stories for dev, changes them during sprint and also decides the complexity of task. so much for a servant leader!!3
-
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 -
So I saw this argument between two intellectual titans on Quora about C vs C++. It was pretty amusing lol.
First Guy: “C programmers are the Amish! They’re afraid of change. C++ is a better C because it repairs it insufficiencies like classes and namespaces.”
Second guy: “C is fairly consistent, while C++ is inconsistent in many places. It performs so many allocations without you even knowing it. It’s complexity is very distracting !”10 -
Don't you guys feel like sometimes we make a huge deal in regards to what is basically grabbing a bunch of shit from a db and making it display on a flipping website?
I sometimes feel bored at how repetitive this shit is. Its the same shit, with various degrees of complexity to do that get data and post data or update data.
I dunno man, sometimes i just feel like there is too much for something that is inherently simple.3 -
"A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want."- Niklaus Wirth2
-
"Ralph" has been working on a process that updates a field in a SharePoint list and bellying aching for almost a month. Couldn't use the C# client, too hard...tried to use the SharePoint REST entry point, using C# too complex...Javascript also was overly complex. Tried to use PowerShell, that worked but could only run on the SharePoint Server and it didn't have access to the 3rd party system.
In our stand up this morning, again, he was belly aching he is still not done because of the complexity of SharePoint.
I thought "Good lord...what the frack is the problem? Surely other devs in the world aren't having this much of a problem."
Fire up google...search for an example...copy the MSDN C# example...run it...tada...updated the SharePoint list just fine. Maybe 15 minutes of effort (< 20 lines of mostly copy+pasted code).
Next stand up, I'm contemplating calling him out on the BS, but I suspect he had working code for a while. Wouldn't be the first time he has dragged his ass working on a project until folks get fed up waiting and he has an "intellectual breakthrough" and brags how all his effort was worth the time. Similar to the firefighter who starts fires just so he can 'be the hero'.1 -
while reading rebecca & brain's book on object oriented software. I realised that the programmer is a special kind of person. the complexity he can handle, the struggle to implement a system, from input to output, satellite control, AI, robotics, heck, even the planning required for a simple android app, the complexity is overwhelming at first, then you get your jotter and break it down into parts, and you drive yourself to the edge of sanity figuring out an algorithm, then you go over that edge implementing it, but oh that great super hero feeling when you finally get something to work exactly as specified, I'm not sure people in other professions can understand the satisfaction. I'm very young in the whole programmer world, but I'm growing fast, I'm just really grateful programming found me, I mean, can you think of something else you'lld rather do? yeah, me neither.4
-
I want honest opinions. Do you think the following is a good or not so good interview question. Why or why not? Defend your argument.
Define a function where the input is a list of integers. It should find and return all the unique sets of three within the list that sum to x.
For example, given the list [1, 3, 2, 5, 6, 8, 10, 13, 15] and with x = 16, the function would return [(10,5,1), (13,2,1)]
If the candidate presents the trivial solution with time complexity of o(n^3), ask if can be done in o(n^2) or better.8 -
fuck time zones and time changes, why the fuck we don’t have one time on the planet and one date that is just day.
No month, no years - all the complexity would be gone, day wouldn’t have 24 hours but it would be something more precise, there won’t be a second
time that earth goes around sun is
365,25964 days
31558432896 milliseconds
we should start count time differently so it’s not relative in space time continuum, what should be relative is the mass38 -
JS interview:
– we expect you to know the concepts of immutability, persistence, software architecture and systems theory, methods of analyzing complexity beyond the big-O notation, safe parallel code execution with web workers, WASM, modern web standards including working drafts, progressive enhancement and graceful degradation, WCAG recommendations and web accessibility in general, UX strategies and modern graphic design trends. Nice 20k github stars you got there. By the way, what's your opinion on modern optimistic UX?
– I know this all but I somewhat disagree with some status-quo UX strategies
– unfortunately it's a no
PHP interview:
– Do you know how to wipe your ass?
– *excited hysterical jumping with head nodding*
– You're hired25 -
Warning: This contains spoilers for Silicon Valley S4 E10:
.
.
.
.
.
.
.
.
.
.
.
.
.
At 5:35 Gilfoyle says: "In order to hold that much data we would have to go RAID 0. [...] If we lose even one platter, we lose Melcher's data. Permanently."
But my question is: Why use RAID at all? Just storing the data without RAID would reduce the complexity, and if one disk fails, only the data on that one disk is lost. Also, I doubt speed is a priority at that point, since the whole thing is running on a home broadband connection, which something like a WD Gold data-center-harddrive (200+ MB/s) can easily max out.
Also, wouldn't it be easier to pay the broadband bill out of their own pocket, instead of moving tons of server equipment to Stanford?4 -
Interesting..
From the book Effective Java, third edition:
"1997, when Java was new, James Gosling (the father of Java), described it as a
“blue collar language” that was “pretty simple” [Gosling97]. At about the same time,
Bjarne Stroustrup (the father of C++) described C++ as a “multi-paradigm language”
that “deliberately differs from languages designed to support a single way of writing
programs” [Stroustrup95]. Stroustrup warned:"
"Much of the relative simplicity of Java is—like for most new languages—
partly an illusion and partly a function of its incompleteness. As time passes,
Java will grow significantly in size and complexity. It will double or triple in
size and grow implementation-dependent extensions or libraries."
Bjarne Stroustrup (the father of C++)6 -
Things story points are great for:
- Helping the team estimate their workload for a sprint
- Discussing the relative complexity of a task / story
Things I will slap you for, hard:
- Arguing that all the easy stories you plan to pick are actually infinite story points to make you look better
- Going "yeahhhh look at me I did 5 more story points this sprint than Bob, I'm amazinggggg"
- Trying to subtly change the story point assignment after you pick a task so you can do the above while doing sod all work
- "Hmm your team only did x story points this sprint, but team poopoo over there did x+10, what's going on?!"5 -
I agree with many people on here that Front-End web development/design isn't what it used to be.
Things used to be simple: a static page. Then we decoupled design from description and we introduced CSS; nice, clean separation, more manageable - everything looks nice up to this point.
Introduce dynamic pages, introduce JavaScript. We can now change the DOM and we can make interactive, neat little webpages; cool, the web is still fun.
Years later, we start throwing backend concepts into the web and bloating it with logic because we want so much for the web to be portable and emulate the backend. This is where it starts to get ugly: come ASP, come single pages, partial pages, templates,.. The front-end now talks to a backend, okay. We start decoupling things and we let the logic be handled by the backend - fair enough.
Even later, we start decoupling the edge processes (website setup, file management, etc.) and then we introduce ugly JavaScript tools to do it. Then we introduce convoluted frameworks (Angular,..). Sometimes we find ourselves debugging the tools themselves (grunt, gulp, mapping tools,..) rather than focusing on the development itself (as per ITIL guidelines; focus on value), no matter how promising today's frameworks claim to be ("You get to focus on your business code"; yeah right, in practice it has turned out differently for me. More like "I get to focus on wasting copious amounts of time trying to figure out your tangled web").
Everything has now turned into an unfriendly, tangled web (no pun intended).
I miss the old days when creating things for the Web used to be fun, exciting and simple and it would invigorate passion, not hate.
<my cents="2"></my>3 -
Programming contest assignments, first level:
1. "...if you don't know how to return values from a function, you can just print them"
2. "...if you don't know how to read files, you can assume data is in global variables"
3. Required recursion
4. "...and estimate its time complexity.", "You may pre-process the data, but use at most o(n^3)", "your algorithm must use under n^3 operations"
That escalated quickly!1 -
Is your code green?
I've been thinking a lot about this for the past year. There was recently an article on this on slashdot.
I like optimising things to a reasonable degree and avoid bloat. What are some signs of code that isn't green?
* Use of technology that says its fast without real expert review and measurement. Lots of tech out their claims to be fast but actually isn't or is doing so by saturation resources while being inefficient.
* It uses caching. Many might find that counter intuitive. In technology it is surprisingly common to see people scale or cache rather than directly fixing the thing that's watt expensive which is compounded when the cache has weak coverage.
* It uses scaling. Originally scaling was a last resort. The reason is simple, it introduces excessive complexity. Today it's common to see people scale things rather than make them efficient. You end up needing ten instances when a bit of skill could bring you down to one which could scale as well but likely wont need to.
* It uses a non-trivial framework. Frameworks are rarely fast. Most will fall in the range of ten to a thousand times slower in terms of CPU usage. Memory bloat may also force the need for more instances. Frameworks written on already slow high level languages may be especially bad.
* Lacks optimisations for obvious bottlenecks.
* It runs slowly.
* It lacks even basic resource usage measurement.
Unfortunately smells are not enough on their own but are a start. Real measurement and expert review is always the only way to get an idea of if your code is reasonably green.
I find it not uncommon to see things require tens to hundreds to thousands of resources than needed if not more.
In terms of cycles that can be the difference between needing a single core and a thousand cores.
This is common in the industry but it's not because people didn't write everything in assembly. It's usually leaning toward the extreme opposite.
Optimisations are often easy and don't require writing code in binary. In fact the resulting code is often simpler. Excess complexity and inefficient code tend to go hand in hand. Sometimes a code cleaning service is all you need to enhance your green.
I once rewrote a data parsing library that had to parse a hundred MB and was a performance hotspot into C from an interpreted language. I measured it and the results were good. It had been optimised as much as possible in the interpreted version but way still 50 times faster minimum in C.
I recently stumbled upon someone's attempt to do the same and I was able to optimise the interpreted version in five minutes to be twice as fast as the C++ version.
I see opportunity to optimise everywhere in software. A billion KG CO2 could be saved easy if a few green code shops popped up. It's also often a net win. Faster software, lower costs, lower management burden... I'm thinking of starting a consultancy.
The problem is after witnessing the likes of Greta Thunberg then if that's what the next generation has in store then as far as I'm concerned the world can fucking burn and her generation along with it.6 -
Reviewing some code the other day, seeing a lot classes like:
SimpleThis
CoreThat
BaseSomething
I get the idea..Microsoft is doing it...disguising complexity with clever adjectives.
I think in my next project I'm going to start naming things like
SpaghettiMonster
GodClass
Repository (cause, every framework needs one)
Then in a year and a half-dozen other devs adding their bits, someone asks "SpaghettiMonster...WTF?...why is this data access called..<dev looks at code> Oh good Lord ...oh well...at least the class name is accurate"2 -
I had some fun with ChatGPT today. I wondered how good its problem solving skills are. Turns out, it's no better than an entry/junior dev armed with all the docs out there - it knows what's written there, how to use the thing (language/framework/tool/etc.), but it has no "understanding" neither of the problem nor the tool, in a holistic way. It's got the knowledge, but it neither has the skill nor understanding of how/why to use it to solve a problem (any problem beyond plain simple complexity).
So the problem I asked it to solve was related to this one I had: https://devrant.com/rants/6312527 .
It was painful to troubleshoot this problem with ChatGPT. It kept on focusing on this particular problem and reacting to errors while trying to fix its initial solution. It took us a good while. Eventually, it reached a working solution, but it was an ugly, convoluted approach that was not feasible to cover my use case with.
FWIW I think it is interesting to follow its line of thought. Eventually, a pattern emerges of how it tries to solve the problem. And it reminds me a lot of myself on the first week in the IT field :)6 -
@linuxxx’s recent post inspired me to try out linux again and see if I want to use it as my primary OS. My past experience with linux has always been endless fiddling with settings or drivers or whatnot, so I was wondering if you’ve got advice on what level of complexity is appropriate in solutions. E.g. if using the terminal and changing a bunch of config files is normal, or if that is generally unsustainable on the long term.
Thanks, I can’t wait to see how this experiment goes 😄18 -
An intern approached me for help in one of their past exam questions. They said they had already turned in the exam but just wanted to know the answer. The question was not that hard and I had a bit of time to kill so I helped them.
Me: So, to make it O(n), you have to make it a double linked list, and keep a tail.
Them: But the problem requires us to solve it with a single liked list.
Me: You can just iterate it at the end to make it single-linked again. That costs O(n), so the solution is still O(n).
Them: Oh yeah right. I don't think we even need a tail though, we could just have a variable pointing to the last link.
Me: ...which is called a tail.2 -
Looking for a second opinion/validation.
*Me: “Perhaps this simple and concise way to ensure the user doesn’t lose their data before they leave the page that requires non-zero yet minimal input from the user. (Read: ya gotta push a save/submit button)”
*Everyone else: Let’s pretend to read the user’s mind and perform relatively complicated functions behind the scenes, of which the user will most likely be unaware, that will add an undetermined amount of complexity to the development because we think it’s “where things are going,” by saving the value of a certain HTML element as it loses focus.
Edit: this is an exclusively-internally used app.4 -
Oh gosh, if you like building stuff, how do you find a job that is actually building stuff instead of dealing with software complexity bs, bureaucracy, red tape, processes to justify other people’s jobs… 🤦♂️9
-
Hey fastlane!
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!!!!🤡 -
Is it just me or does changing the theme on Notepad++ to Deep Black make everyone's code feel like it has the complexity of Autodesk Maya?
-
TDD has not been proven in studies to provide substantial reduction in cyclomatic complexity or other metrics of software development.17
-
Developers who think complex code is good.
"Oh, lookie here, I can swizzle methods and inject dependencies in the runtime!"
"Although we have no valid use case, let's use dependency injection and follow the commandory stateor patterns because I watched a video."
Just because you learn something new that looks cool does not make it practical, you tosser.1 -
Hey guys! lambda is amazing! Docker containers! They said the whole amazing point with containers is that they run the same everywhere! Except not really, because lambda 'containers' are an abomination of *nix standards with arbitrary rules that really don't make sense! That's ok though, you can push your shit to fargate, then it will work more like those docker containers you know and love and can run locally! Oh wait! fargate is a pain in the ass x 2 just to setup! You want to expose your REST api running on a container to the world? well ha, you'd better be ready to spend literally 2 weeks to configure every fucking piece of technology that every existed just to do that!!!! it's great, AWS, i love it, i'm so fucking big brained smart!!!
give me a break.... back in my day you'd set up an nginx instance, put your REST / websocket / graphQL service whatever behind it, and call it a day!!!!!!!
even with tools like pulumi or terraform this is a pain in the ass and a half, i mean what are we really doing here folks
way too complicated, the whole AWS infrastructure is setup for companies who need such a level of granularity because they have 1 billion users daily... too bad there are like 5 companies on the planet who need this level of complexity!!!!!!!
oh, and if your ego is bashed because of this post, maybe reread it and realize you're the 🤡
i'm unhappy because i was lied to. docker containers are docker containers, until they aren't. *nix standards are *nix standards, until they aren't
bed time.12 -
[vent]
I am java dev with 5 yoe at a place which has really good engineering talent.
Was assigned a feature request.
Feature request requires me and one more older dev(in age, not in exp at company) to write the code. My piece is really super complex because of the nature of the problem and involves caching, lazy loading and tonne of other optimization. Naturally it makes up 90% of the tasks in the feature request. On the other hand, the older dev simply has to write a select query (infact he only needs to call it since a function is already written).
Older dev takes up all the credit, gives the demo, knows nothing but wrongly answers in meetings with higher ups and was recently awarded employee of qtr.
It looks as if I do the easy work whereas he is the one pulling in all the hard work.
Need advice to justify my work and make others realise it's significance, nuances of area and complexity of it.
Do not expect monetary benefits, just expect credit and recognition for the worth of work I am doing.15 -
When I interview a super cocky candidate:
"Write a merge sort algorithm that works in linear time complexity."5 -
For context, I've been working for a couple years now with Rust, and, I have to say, the experience has been astoundingly pleasant. The language is both incredibly productive and meets each of my use cases and stipulations regarding speed, safety, and complexity. That said, I've come to beg the question, "what is the point of functional languages like Haskell?" To me, what seems attractive about Haskell is the inherent thread safety, and the added syntactic niceties of code written in the language. However, one must keep in mind, my experience with Haskell has been pretty limited, simply due to the massive learning curve that the language presents. Such a "learning curve" brings me to my central point: these days with languages like Rust which bring together the best from functional and imperative worlds, it seems like functional languages are becoming increasingly irrelevant. Let's face it: no sane person will choose to learn a functional language as their first language, outside of academia and mathematics, and OOP/OOP-like languages remain dominant in the space. So, why then, is Haskell any different? What benefit do languages like Haskell pose in the modern CS space that thread-safe, non-GC languages don't already provide?2
-
Do you all look for code complexity O(n) while coding? Or you make sure that your code runs and never look back what's happening ?
Because as per code review no one looks for code complexity and that's so sad11 -
i am a weak developer, i dont know that much of what im doing, unexpected things come up, i dont like time estimates (estimating time is harder than complexity estimates), some school of thoughts dont like estimates https://youtube.com/watch/...
my manager posed a thought exercise to me, imagine im a contractor (im not, clearly not skilled enough to be) , contractors can estimate how much time precisely a task will take to do their work, get jobs, etc
is it possible to learn this power? how does one git so gud, walk in learn how existing code base works, change, edit , build on top of it, ideally doing quality work9 -
Recently installed SonarQube and its been amazing to see the level of code quality (or lack thereof)
Some projects have 30 to 60 days of technical debt and I found a few files with a cyclomatic complexity over 100. I’m still learning what the “good” numbers should be.
Yesterday, couple of devs were very proud they were going to start reducing the numbers, they started with one of my solutions that had 5 minutes of technical debt. Yes, 5 minutes.
DevA: “OMG…look at this…it has a cyclomatic complexity of 11…that’s terrible. I thought we were supposed to be professional developers.”
DevB: “And take a look at this, he used the double-slash instead of a triple slash for comments. How does any of code even compile?!”
Me: “Maybe we should tweak some of those SonarQube rules so they make more sense to our code base. We’re never going to use unicode, so all those string culture warnings should go away and code comment formatting? Who cares? Be happy we have comments. I think we should also focus on the bigger fish in that pond. The CRM project is one of the biggest and has a lot of improvement opportunities.”
DevB: “There you go again, don’t bring me problems, bring me solutions..ha ha”
DevA: “Yea, no kidding …hey…did you see the logger? OMG…the whole class is over 25 lines…we gotta split that up into smaller projects so it’s more manageable.”
It’s a good thing our revenue stream isn’t dependent on people getting work done.3 -
This was originally a reply to a rant about the excessive complexity of webdev.
The complexity in webdev is mostly necessary to deal with Javascript and the browser APIs, coupled with the general difficulty of the task at hand, namely to let the user interact with amounts of data far beyond network capacity. The solution isn't to reject progress but to pick your libraries wisely and manage your complexity with tools like type safe languages, unit tests and good architecture.
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 -
Been hacking frontend for a while, know most of the perks and tricks of css and html, have implemented countless of projects with angularjs, have even created jquery plugins and gulp packages, have won hackatons in UX design.... Still, a SFO company turned me down for a front end dev position cause I could not find the K most frequent words in an array in O(n) time complexity...3
-
I have a co-worker who won’t stop “refactoring” our codebase. He will go on a long tangent — under the guise of working on a proper story — and then reveal proudly after a few days that he now introduced a new middle-layer into the code which will help us such and such.
I have never seen any benefit from this. I think sometimes cleaning up variable names is nice, but a lot of the things just add noise and complexity. He’s a junior dev, I’m a senior dev. My progressional opinion is that he is doing a bad job. Management doesn’t know the full extent and the lead programmer scolds him every now and then but in the end let’s the code changes pass code review. “It has already been implemented so what’s the harm”.
Then the rest of us are stuck with horrible merge conflicts. I recently noticed that some new business-important unit tests that I wrote were mysteriously gone. Oops — lost in some misguided refactoring I guess. I’m assuming they were failing after the refactor, so clearly they had to go... Fortunately the underlying logic still works I think.
His main tactic in all of this seems to be to just use argumentative stamina. He will lose discussion after discussion but doesn’t seem to care. He’ll just talk and talk. And the in the end the lead tech gives in. And/or doesn’t have the energy to catch the error introduced.
I swear, the company would be better off without him. Maybe even better if we keep paying him but he just cleans the toilets instead. Sometimes I almost believes he gets up in the morning to come to work and just fuck with people all day.2 -
Let's face it: I am and will always be a tinkerer. Yes, I know my ways around, I can sneak into legacy code bases easily and throw new stuff in there, I've seen software stacks. But scarcely sound design, really modular. Even from the cleverer, experienced ones. They can master more complexity, so they can handle more spaghetti. Some essay from the 80's had this grand idea to organically 'grow' software. That's how it looks like most of the times: cancerous, parasitic super fungi (armillaria). Yeah, we all know have to fight bit-rot and entropy, but it was all lost before already. We'll never get rid of legacy protocols, legacy code.
And even when we go green field, start a fresh. Yeah, take a great design, make everything new, after some months of throwing features and outer constraints at the thing, it's the same old mud again.
But we can still dream on: some day I will design great APIs, I will have great test coverage, documentation, UML design, autometed tests, fuzzing, memchecking, I'll work professionally, clean coder style.
Pfft forget it. Maybe change for consulting, because we'll continue to dream of the 'clean' code, so you can sell the next 'recipe', development method. It's like diets. As effective. For the one selling.2 -
"When it comes to writing code, the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity." - John D. Cook
-
I've now worked on both monolithic solutions and microapps/microservices. I gotta say I'm not sold on the new approach. There's so much overhead! You don't have to know your way around one solution -- no, now you need to know your way around 100 solutions. Debugging? Yeah, good luck with that. You don't have to provision one environment for dev, test, staging, and prod. No, now you need 100 environments per... environment. Now, you need a dedicated fulltime devops person. Now devs can check in breaking changes because their code compiles fine in that one tiny microapp. The extra costs go on and on and on. I get the theoretical benefits but holy crap you pay for it dearly. Going back to monolithic is so satisfying. You just address the bug or new feature head on without the ceremony and complexity. You know you're not crapping on other people's day (compilation-wise) because the entire solution compiles.
...and yeah, I'm getting old. So get off the lawn! ;)2 -
Today I finally experienced the power of something I learned in university: propositional and predicate logic.
Many developers I know think that such education is useless. Well, today I have proven that it is very useful. On a day to day basis, working on banking software, complexity in purely logic is very low. However, we have a screen that must show or hide elements based on some input values and conditions associated with certain elements. How hard can that be, right? Well, there are many variables to take into account and as such it's absolutely not trivial.
This screen didn't work properly and maintaining the code is hard as there is a lot of logic to show/hide, enable/disable things and so on. After quite some time and attempts by fellow developers, I decided to refactor the whole thing. I'm responsible for the quality of the software and it was quite degrading, so I had to do something.
In order to get things working properly, I defined collections of constants (ui elements) and predicates. Then, I defined for which element what predicates must be true, in order to hide/show, disable/enable etc. I then translated these predicates into code. And guess what? It works! Of course it works. It's logic. But I'm very pleased I finally could actually use some of all the math I studied!5 -
When do you know something is being overdesigned or overengineered?
The applications that the other programmer started building are killing me. He's using Clean Architecture and it has like a million different classes and shit. It's not messy or anything, but fuck it's overwhelming.
Just to figure out wtf was happening when getting the currently signed in user's email, I had to go through like 30 folder and files. Maybe more. All files were fairly simple on their own, but the entire flow was mindfucking me. Use cases, schemas, gateways, repositories, entities, models, etc etc
And that's the client facing application, I haven't checked the API yet, though it seems like that one is simpler.
The worrying aspect here is, any time anyone else has to mess with this, they'll also have to deal with this shit. This needs some really good documentation.2 -
// O(n²) complexity
for(x;y;z){
for(a;b;c){
}
}
Dev's argument: "We use this everywhere, as long as it gets the job done! Time is money!" How ironic..
So you would rather make your processing speed suffer for the sake of saving time? No, clean code doesn't matter. No, we should not waste time spending even a mere microsecond thinking about writing better code or at least consider it. No, we should just vomit out bad code at top speed. Good idea, guys. Idiots everywhere..6 -
I definitely made a channel in the dev Slack I'm in for algo practice with the description bigOHNOtation.3
-
Some people of devRant are astonishingly stupid.
I post a rant of Ryan Dahl where he says he don't like the unnecessary complexity of modern software. It's an obvious UX rant, but @Crost says that it's about rushing releases and writing sloppy code to "tick the item off my list and solve the problem". @Crost and other boubas, if Ryan's vision was more widespread, macOS, the OS you all hate so much, wouldn't have existed because Linux would have the best UX ever.
I post a rant about Google algo being nasty and throwing triggering shit at me. I previously posted stuff like this, Root confirmed that it works just the way I think it works, it's a manipulative piece of crap. But @Oktokolo says that "The algorithm literally just gives you same of the stuff you just saw", well, I don't know, nice view of the problem for a guy with no computer and no smartphone, @Oktokolo! All that "youtube recommendations gathered us together on some obscure video" comments, and you still don't get it.
I post a rant about how I redesigned a fucking color wheel icon. It shows a "before-after" pic and the colors are obviously the same, but fucking @Oktokolo be popping up again, telling me that I have eye condition (!) that makes me see more blues than yellows.
No wonder you guys don't know how to use CSS, the simplest programming language (yes, it's a programming language).
No wonder smart people like SortOfTested just leave.
I still refuse to believe that devRant user base consists of stupid people exclusively. Perhaps they are just average, and I'm the genius with my Aspergers just getting way more information out of my environment like I always do.21 -
When you finally have some servers racked and configured in VMware to build a lab environment for the team....
But to access VMware you need to run citrix receiver from a mac to launch Chrome on Windows to access the VMware ESX Web UI but only on the HTML5 version as Flash doesn't work....
Now to spin up virtual machines that you can only upload via ova images but not locally cos that tries to show you the Windows citrix local files....
Do I even dare ask if I can access this via API so I can actually provision this with Ansible like I want too?! -
they say everything "old" is better, but in programming, dependencies in C was a mess. Shut up. Sometimes C is a cult enforced by those who don't even write in C. Now I build my projects with Parcel in less than a second with no configuration. It uses a full-blown AST for everything. If I want more performance with similar DX, I use fastpack, bringing build time down to tens of milliseconds.
art? charli xcx, sophie xeon, death grips, just to name a few. they made things that weren't imaginable before, ultimately pushing music forward. Hendrix is good but they're just incomparable in terms of beauty, complexity and sophistication.
literature? every old book I read feature same conflicts. they are so similar it's almost boring to read them. meanwhile, Erlend Loe delivers a complex idea without using a conflict (!) and without any character changes. that's insane.
"older is better" is getting old. it's time for you to seek for some other reusable gibberish to insult what other people create.
finally, let me remind you that you, my friend, create nothing.46 -
My biggest sin is overshooting the problem - developing something "with the future in mind" which ends up way more complicated than it should be.
It works, works great, but nobody can maintain it because of the complexity, and because I usually write no comments in these situations.
But hey! At least I'm aware of it and working on fixing it in me.3 -
Fuck Java because java is one of the worst first languages you could pick. In the following I’ll highlight two main issues. One issue, the complexity of Java, will make life more difficult for you immediately, and the other, the danger of developing myopia regarding programming languages and their capabilities, has the potential to hurt you for many years to come and possibly your entire career9
-
By any chance can someone explain logarithms to me and how they relate to complexity growth? I can do the calculation but it's only from memorisation. I just don't understand how it relates to a graph.10
-
How do you explain to your client that no, you cannot have a perfect solution, because the algorithm is O(2^n)?
I mean, without requiring him to get a degree in CS. Also without making him think that you can't build efficient code because you're dumb. Or that the hardware is slow.3 -
Today’s topic in my Computability & Complexity Class:
The Halting Problem and The Undecidability Results
...sounds like my life2 -
the two code review personality types
review activity:
- dev A: requests code review, sets dev B and dev c (myself) as reviewers
- dev C comments: this review is marked with a complexity > 9000, touches > 20 files and has zero comments... also there's a lot of refactoring going on, making it hard for me to tell what the actual relevant changes are. can you please add more comments to this review?
- dev B (10 mins later): approved review6 -
In an algorithm class, professor introduced us to some simple search algorithms (bubble sort, selection sort, insertion sort, shell sort). He did a quite decent job and most of the students were able to grasp the code and understand the differences in those algorithms. But then he spoiled his whole lecture with one additional slide. There he proposed an optimization: Instead of using a temporary swap variable, we just could use the first array element (or the zeroth element, respectively: the one ad index 0) for doing all the swapping. We just had to document that, so that the caller would "leave the first position of the array empty", resulting in "cleaner code". And he did that in the same class where he used Big-O notation to argue about runtime complexity. But having the caller to resize the array and to shift all the elements by one position did not matter to him at all, because it was "not part of the actual algorithm".2
-
Sometimes I feel guilty when someone has worked on some unquoted bit of work that they've invested some time in and everyone gives a low quote in poker planning - tend to give a little extra complexity points for them, gotcha back bro 👍1
-
Object Orientation is not a feature, it is an unneeded layer of complexity over a dying paradigm, Imperative Programming7
-
After listening to the deadmau5 plane crash story on h3h3 this exact thought play went on in my mind.
The universe wants to be uniform. Everything is the same, nothing reacts anymore.
Humans like the complete opposite. We like complexity and entropy. We create and we destroy.
But we are part of the universe.
So if you break this down into absolute math statements, they are contradicting.
So are we breaking the equasion?
Or are we part of the equasion?
...Are we the universe's self made antidote to itself?2 -
There is a tool in my job that creates web pages by giving him what to display as content, and with that system, we can call applications from other web apps instead of re-implementing it.
But it has some flaws. Some that are natural, like its complexity.
And others.
I was calling an application from another webapp. I got an error 500. So I used a tool made by the enterprise to see the error in detail.
And the error 500 is in fact a 404 hidden.
Well, good job. -
Probably joining my first real project. Truly no amount of university education can prepare you for the sheer scale and complexity of an enterprise software project. 100+ git repos, 5 different services running just to run the project locally, with tunnels open to 2 different DBs. It was daunting to touch anything.3
-
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 -
There are a few email addresses on my domain that I keep on receiving spam on, because I shared them on forums or whatever and crawlers picked it up.
I run Postfix for a mail server in a catch-all configuration. For whatever reason in this setup blacklisting email addresses doesn't work, and given Postfix' complexity I gave up after a few days. Instead I wrote a little bash script called "unspam" to log into the mail server, grep all the emails in the mail directory for those particular email addresses, and move whatever comes up to the .Junk directory.
On SSD it seems reasonably fast, and ZFS caching sure helps a lot too (although limited to 1GB memory max). It could've been a lot slower than it currently is. But I'm not exactly proud of myself for doing that. But hey it works!1 -
"Refractor this method to reduce its Cognitive Complexity from 110 to 15 allowed."
*Pan*
Ok let's do it :
label : for(....) {
if(...){
for(.....){
If(...){
....
break label;
}
}
}
}
*Pan Pan*1 -
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.7 -
Swift SUCKS
Why?
Because of its absolutely useless complexity...
a total simple thing: i have a string and want to concat a integer with it, so:
var x = stringVar + intVar; right? NO
its var x = stringVar + String(intVar);
or getting the index of a element in a array?
var index = array.indexOf(element); thats logic, right??? Not for swift, gotta go with: var index = array.index(of: element); WTF??!!
And all the other shit: nil instead of null, int++? Nope.
And there are SO MANY MORE things, where u just think, Apple really though different........than all normal coding languages.......
I´ll honestly rather learn C and recode Ios or have a look at objective-c...14 -
Reminded again why every professional developer should at least read and understand basic algorithms...
Colleague: I don't understand why this agregation query is so slow, the counting is on the DB.
This function used to work fine... Now it sometimes hangs.
Me thinking: why does everyone assume db has unlimited resources and computing power so everything should be quick (no time or space complexity)...
Maybe if everyone understood this stuff our code base wouldn't be so shitty from the start...8 -
>Be me, humble physicist turned quantitative developer
>Big physics nerd, but code for the cash
>Working on some quantitative finance software, all about risk measures
>Girl comes over one day, cute as a quark
>Think to myself, "This is it, time to make a move"
>Instead, brain decides it's time to explain my work
>Start rambling about refactoring, polymorphism, and data encapsulation
>She's looking at me like I've started speaking in binary
>She tries to steer the conversation back to normal stuff, but I'm stuck in a recursion loop
>Keep going on about my project, can't seem to stop myself
>She tries to stay longer, even tries to show interest in my work
>But the more I talk about algorithms and time complexity, the more her eyes glaze over
>Eventually, she gives up, says she has to leave
>She leaves, probably thinks I'm more interested in my code than her
>mfw I realize I've chosen code over companionship
>Why am I like this?10 -
This night I had a fever and seen a weird dream. So, scientists discovered that our whole perspective is wrong, and the notion that anything is but a sum of its parts is now completely irrelevant. One can’t disassemble a thing and know how it works and what it consists of. Basically you want to build a computer, you buy all the parts you need, but you can’t assemble it anymore — it just doesn’t work, and nobody knows why. Same is true for cars, industrial machines, software and pretty much anything that have something to do with engineering.
So, earth went into riots, massive layoffs occured, world economy collapsed, and the forces of what used to be USA, China and Russia joined to tackle the problem. A research was started and we found out that we now have complexity cores (!) that distribute emergence (!!) in an ephemeral way (!!!) and that is what makes things work. Theory of New Complexity (!) emerged, and all the engineers were required to go back to universities to attend lectures about how complexity works and how to make things in that new reality7 -
Is it me or some libraries are actually more complicated and take more time to master than the layer they're based on? Why should I use something like ng-flex (to do flex in angular LOL) or react-hook-form? It just adds a layer of complexity for what gain exactly?4
-
"Technical skill is mastery of complexity, while creativity is mastery of simplicity." - Christopher Zeeman
-
https://youtu.be/-NxoNdTj_7U
Just wanna share try to watch till end you'll find the complexity of simple USB3 -
Google bloody captcha.
It works fine, until you have more than one form on a page then the complexity increases by 100000%.
Finally my colleague gets it working then I read an article that says bots use Google own speech recognition service to defeat it. Fun times.3 -
~They said~
Why don't we write code that runs in parallel on AVR, and yeah, keep it simple, we don't want complexity.
*Me*
:/ :| -
I found out the importance of time complexity. It might not seem like a big difference between O(1) and O(2). But there's a big difference hardcoding 500 lines and 1000 lines of data.
I made a navigation app for school using dijkstra's algo. However it had no data available so I had to hardcode it. Long story short, there was a ton of hardcoding. Always try to improve the time complexity of the code you write.2 -
I'm writing all the dev things I know in a docs site as a means to be hireable should I need to switch jobs.
I'm not gonna go too deep on how I'm doing it. One style I'm enjoying is making every article take only one page long, and if they take longer, maybe consider breaking it into another article.
Fuck long articles. Yes, that's a bit autistic.
But I will describe the challenges I'm finding (which are quite many) in further detail.
One of them is that words can be ambiguous. Production can mean the production environment but it can also mean production in plain english.
And there are tons of cases like this.
Because of this, I felt a lot of confusion in my beginner days. So it my objective to write this as to prevent as much confusion as possible.
Granted, I don't want to write "development for dummies". Software is complex. But because it's complex on its own, I don't want to add complexity to the learning process through obscure language usage.
"Fine", I say, "I'll disambiguate". But this means I find myself branching out very often into fundamental or commonly used software terms like "framework", "model", "scaffold", "algorithm", "viewport", "breakpoint", etc.
Another challenge is reaching good levels of completitude.
This means I have to explain that obscure CLI flag I never used in my life.
If I don't do this, then what makes my docs different than these superficial dev.to or medium posts? Nothing.
But trying to explain EVERYTHING about a software can generate a lot of frustration: I never finish.
It also makes me wonder "do I even know shit?". I think some amount of insecurity is healthy and pushes myself forward.
But at some point it's kind of making me feel like shit. Maybe I just need to keep learning.1 -
Production goes down because there's a memory leak due to scale.
When you say it in one sentence, it sounds too easy. Being developers we know how it all goes. It starts with an alert ping, then one server instance goes down, then the next. First you start debugging from your code, then the application servers, then the web servers and by that time, you're already on the tips of your toes. Then you realize that the application and application servers have been gradually losing memory over a period of time. If the application is one that don't get re-deployed ever so often, the complexity grows faster. No anomaly / change detection monitor can detect a gradual decrease of memory over a period of months.2 -
Note to devs here. Please don't choose a framework for the hype at your work. Use it on your own time or company hackaton/learning time.
I'm looking at you angular.
Production ready doesn't mean sanity ready.
Now because some dev choose such technology for arbitrary reasons. (hype, latest acronym on CV). I spend more time debugging and understanding than I would if some simpler technology was chosen. Look at all the options then choose the simplest one that has and seems to have active maintenance. Zen of python is the best thing to happen in programming and I think everyone, even if you don't like Python should follow it. Save you and your colleagues brain time and ask for advice.
Also IMO react is probably third or second best option, higher if one requirement is to be react native. Angular is even lower because it's complexity is unforgivable when a dev has not enough front-end experience.8 -
Not dev but, enough for the story. Had an assignment to create a hashtable for my DS course. Asked a friend how he managed resizing and the load factor
Friend= tablesize*50
Me= what...
Friend= space complexity what... -
Exploring myself was always an existential dread for me, even in childhood.
For any arbitrary thing I always struggle to give straight answers to following questions:
Do I want it?
Do I like it?
The complexity of the topic itself doesn’t matter. From choosing what to eat to reading about ideologies, the fear and confusion remains.4 -
This is probably a standard pattern/algorithm, but I feel pretty good about myself figuring this out.
I was doing a programming challenge and found myself with 2 lists of integer points (x,y). I needed to see where the points converged and identify those locations. Of course I started with a brute force approach and did nested loops to find these locations. This was taking WAY TOO LONG. These lists were 200K each. So checking with naive looping is 200K * 200K operations. Which is a lot.
Then I thought, well I am checking equality, so I will create a third map. The index to the map will be the point, and the data will be an integer. I then go through each list once incrementing the integer for each point that exists in each respective list. Any point with a value greater than 1 is a point convergence.
Like I said, this has got to be a standard thing, so can someone tell me what algorithm this is? I am not sure how to search for this.
I am fuzzy on complexity notation but I think the complexity started at n^2 and was reduced to n. Each list is cycled over once.4 -
I've been working on a side project for a while(many months) and I'm at my 3rd refactoring and concluded that the greater service I want to achieve the more complex the project become, nothing exceptional, except I feel like doing the effort of an entire team of software developers.
Someone else has/d such a feeling/experience? If yes, I would like to hear your thoughs/story(just curious ;)
Ps: soon I'll reveal some screenshots here :32 -
Dev boy to Dev girl: "What's the time complexity on you loving me, baby?"
Dev girl: while(iExist){
Int n = Random.Next(1, 100);
for(int i =1; i < n^4; i++){
Console.Write("..."); } }
Dev boy: Assert.Fail(); -
Anyone who codes like this?
if(IsThereAValue($("#txt_term").val(), true) == false)
{
}
this is too much!!! damn! complexity!!!
PS. He is my senior developer.6 -
Don't refractor for fun!
An anecdote from my previous company. A developer had written a shitty java console app for fetching stock prices. About 3000 LOC. just one java GOD class. So, when me and my friend looked at it, we were amazed how that code works with all that if conditions spanning 100LOC. so. My dear friend underestimated the complexity. Since it just fetches stock price and puts in database right. I can write it in few days and much better one. So, he started writing code in an OO way. Three days later I see he still working on it. Having a glimpse at code. The app is now Object oriented shitty and ugly.
Guess what new code never goes in prod too.
Learning
Don't underestimate complexity of app.
Be empathic about fellow developer. Don't think he has written a shitty code. Think why he had to do so.
Don't work on refractors if there is no one to guide you.3 -
Tips on getting promoted on work:
1. Collect a list of all improvements and achievements that u did during your time in that workplace
2. Compare your output with your colleagues output, check their MR's, their complexity and compare with yours.
3. Talk with your manager about a raise. Tell him about your achievements, like maybe you are working on a wider scope than others. Maybe you are mentoring junior devs. Or maybe you deal with a bigger workload than others but still deliver on time. Maybe your communication is good or maybe you document stuff very well and in that way you make your team more efficient and increase team output. Whatever. Pitch and sell yourself. Also provide some personal reasons why you need a raise, like maybe u have kids or maybe your rent doubled. Inflation and so on. Selling point is that u are a human not a greedy bastard.
At the end of that talk the manager most likely will say that he needs to speak higher ups, he needs to gather feedback from your colleagues and so on. Give him a week or two if possible, no more.
He will probably get back to you with an offer. If there is none start applying, get an offer and put in your notice. In my case I waited 3 months for my raise to go through. I put in my notice, had a stressed call from manager, showed him my offer and my raise was arranged the next day. -
Do you know why my mom likes me so much?
Because my mom asked me to heat up all the food. And I did it in O(1).2 -
What's better for finding candidates for a development role: having the candidate solve a complex whiteboard problem or have the candidate refactor some code (maybe a couple of small modules) while explaining as he/she goes through each step?
I personally feel both are good, but I think refactoring is a very much needed skill when you're dealing with the complexity of millions and millions lines of code, so being able to change your inital design to make it more readable and flexible later on is crucial. And refactoring usually goes hand and hand with having tests in place.
An interesting exercise would be to give the candidate a test suite with the corresponding code that's tested in a working state and let the candidate decide how much refactoring needs to be done. In the process the candidate would need to break and fix tests of course while changing things... it'll give a good measure of their ability to take code and change it to a "better" state of design and flexiblity.
On the other hand I do think there is a place for cliche white boarding problems because it really shows one willingness to tackle complex problems which do arise in most development jobs. Asking the questions and being persistent goes along way and can really help when you're collaborating with other developers to solve an issue at hand.
Overall I think there should be a white board problem, but I don't think that should be the deciding factor. Rather couple it with other very practical skills you should have as a developer already; among those being refactoring.1 -
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 -
Oh my freaking gosh! Okay so im "lead tech" on the robotics team. Ive come up with several ways we can improve our system. I had it all planed out and calculated but when i run it by the teacher running the team, EVERY SINGLE FRICKING TIME they shoot it down and they say "that just adds another layer of complexity" and I just want to yell because sure its a bit more complicated but so the fuck what?!?!? It works (theoritically according to math) efficiently and more efficiently than what their doing which is almost unknown to me because why the fuck not?! And omg i sware my entire team has the attentionspan of an ant because any time i need them to explain something, they get dustracted with whatever the hell they get distracted with and they NEVER SHUT THE FUCK UP. Any who other than that being super annoying thats not the point. Point is, the fucking teacher is afraid of making things a bit more complicated for no good reason and ever idea i have they shoot it down so (even as lead tech, and main programmer) i feel extra useless and im not gonna be here next year, so idk what the fuck there gonna do when i leave. (Like seriousally, im not even being conceded, ive been programming for several years. The other programmers have no idea what there doing) but if they dont learn that complexity isnt bad this team will NEVER get higher in the competition.4
-
Even if Microsoft has done considerably steps forward in recent years with dotnet core being an open source platform, it still retains a bit of its microsoftian dna. Let me make an example. Start a new test project with xUnit. It doesn't log to console. Decide to use the standard Microsoft.Extensions.Logging that should be the new, performant way of logging. It comes with 4 providers and **it doesn't log on file system**. Bottom line: all the complexity of a complex stack without the solution you were looking at the beginning. Resorting to thirdy party tools to do the job (serilog).2
-
"Delete all code!" That should be the mantra!
Was watching some stuff from destroyallsoftware.com. Not entirely convinced. So I should cook up my own shit.
So here is how the argument goes:
There's quite some negativity in the term "legacy" software. Partly it may be the envy to software that runs on actual machines and is not that phantasm, that perfect first lines on a greenfield project until it gets messed up as it has to put up with all the real world messiness. But the negativity it deserves is actually for the code that we cannot get rid of. This ugly class or function that soaked all the complexity and functionality so it defies any positive change. And always when it appears on your screen, it irks you, enrages you, makes you punch the screen, because you can almost feel the distaste physically. - *That* is the definition of "legacy" in its true negativity. No software should be like that. On the contrary. Every line should be replaceable, dispensable, disposable. At the verge to deletable. Because you know: the best code is no code.
This is where my hatred of code could get productive: Delete all the wretched, loathsome stuff and replace it, with something that just sucks less and can be thrown away any time. Don't expect beauty or perfect design. It'll never finish.3 -
What do you guys think of code review? It was supposed to find potential mistakes in your code base, and share your knowledge with your co-workers, right?
In fact I have very bad experiences with code review, not just with 1 company, but quite a few. Code review process always comes to something like this:
Reviewer: Hey, I don't like your solution A because of disadvantages A1. You should implement solution B, because of advantage B1 blah blah...
Me: Yes, it's true that solution B provides advantage B1, but at the same time introduces much more complexity to the code base than necessary, and has disadvantage B2. I am aware that solution A has disadvantage A1 but it is justifiable and easier to overcome than B2 imo. In fact, solution A also provides advantage A2 that you might not know...
Reviewer: No, you HAVE TO implement B because of advantage B1 blah blah *repeating why B1 is awesome again*
I feel like it's just people trying to shove their preferences down my throat. Either code review is useless, or the companies I work for do something very very wrong in code review. Anyway, it's really discouraging me fron participating in team discussions.5 -
Blake 1803: 📜"To see a World in a Grain of Sand And a Heaven in a Wild Flower"
🌏🏖🌌🌻
Me 2017: 📱Impressive compression ratio, but what is the complexity of Sand to World decompression? -
the industry we try to make for them their first inhouse app, is having a lot of data that we need to import to the app. (machines, workers, materials, products, etc). The problem is that they want to give them to us in excel files, instead of making data entry. So thats ok for start, but after some point of complexity and relations we figured out that it turns to be a deadend.
How do you manage situations like this, with huge old fashion companies??4 -
Folks, it's happening!
Look at this shit: they managed to create a web editor / infrastructure technology which enables you to write backends blazingly fast. No deploy time, no git (versioning with feature flags).
Sadly, this comes with the worst vendor lock-in ever. But it is still a great idea to take the approach to drastically remove complexity out of today's software.
https://darklang.com/
I am torn. But I would prefer if it was OSS of course (to be able to self-host it).7 -
I’ve been doing web development and mostly focusing on the frontend side of things professionally for almost 10 years. Still, I have to put up with some backend developer who did a couple of years of frontend development who now thinks he knows it all. Everytime someone reports a UX problem or asks for a feature that has some complexity and needs more thought to have a good enough solution, he steps out of his lane with “suggestions” on how to get it done with solutions that are half baked and don’t consider things like accessibility, responsiveness, or even semantics. Still, he is the hero and we’re the bad guys when we call him out for only providing crappy solutions and presenting them as complete solutions.
-
Data scientists unite!
I am working on a face recognition solution to identify and tag different faces in real time and currently using chinese whispers algorithm for clustring. The more I think about it the more inadequate it sounds (number of faces encoded increase over time thus the complexity). I've heard about YOLO but cant really decide. Please enlighten me!7 -
At an interview, interviewer keep on hitting me with theoretical questions, why python don't have switch cases, what is default sorting in java etc... I told him I don't bother about theory, then this conversation happened.
I(Interviewer)
I: do you know time complexities?
me: Yes
I: okay, tell me a few sorting or searching algorithms which have logarithmic complexity?
me: binary search (with loud and confident voice)
I: he told, in worst case it will have O(n) tell me any other
me: *thinking*
I: what are you thinking? what is time complexity of merge sort
me: O(nlogn)
i: it's logarithmic.... -
[Talk by a security expert. The main point was, complexity kills security.]
7 minutes later a friend via IM: Hey, let's use OpenStack! Just 33 micro services to install! -
I'm tired of react.js' overbearing presence in almost all facets of development. It doesn't matter what kind of job postings I see, Front- or Backend Developer, a baffling amount of companies want react, react-native, next.js, etc. I'm exhausted by people singing high-praises to its name, hearing ad-nauseam, that it is the most immaculate 'framework' to ever exist. Everything that react does makes - of course - sense and is the only logical way to do web-dev and the react-way worms it way to other technologies as well.
"React is the fastest, bestest and most popular ever and you should feel ashamed for not having mastered it. By the by, since it's so easy to use and learn, if you can't build a high-complexity enterprise SPA within a week with it, you must suck as a dev".
True, nobody words it like that, but that's how I feel about almost any react related articles that pops up every single time. I couldn't get into react. I didn't find it easy and I never could adopt that thought-model necessary to work with it for any even mildly complicated SPA and boy, did I get some nasty feedback for it. I get it, I do. I'm slow and definitely not proud of it, but react simply makes no sense to me. I'm not even saying that react is bad. It's just not my kind of technology. The fact that I used nest.js for a backend application makes feel bad, because it's "too much like Angular".
Everything has to be "react" nowadays and that's how I feel every single day, while I have that damocles sword looming over my head.
The current dev-world makes me want to abandon anything IT related at this point. It's simply not fun, it's more suffocating than it ever was.7 -
I'm writing a couple of tutorials on web development, nothing really professional, just my perspective on explaining things from scratch.
It's funny how quickly things get hard to explain.
You try to explain web frameworks and you have to differentiate between client side and server side frameworks.
But some people don't know what client or server means.
So you try to explain what the client-server model is.
But then the word model is not clear to some people, it's like a jargon word in software, so you have to give some kind of explanation for the word.
And so on.
This complexity and layering of terms is normal on every science, but I feel terms deserve proper explanation and disambiguation, which isn't usually done.
So far I don't feel a lot of things are as complex as they are considered in an atomical sense, they are complex in the sense of requiring understanding of layers that are very simple in themselves.
It is quite a challenge to be the least obscure, to give explanations with the least number of possible interpretations.6 -
So I have question about my resume.
During my college time, I have done two projects related to politics:
One is to analyze the bias of media. What I did is scrape news covers for Trump and Hillary during election year and get sentiment analysis. The result is not surprising that among NY Times, NBC, Fox, Eashington Post, and CNN, Fox news is clearly favoring Trump, since Fox news is a republican news site.
The other project I did was to analyze the speech complexity and sentiment of the election. One of the observation we made was that Hillary and Trump are almost at the same level regarding speech complexity. However, Trump has a more positive sentiment in the speech, which is true consider how much he loves to say make America great again.
Now the question is, when I gave my advisor my resume, she said that I'd better not put those two projects on my resume since they are related to politics.
But, I am applying for a data science master degree. Seriously, I was just collecting the data and the data speaks for himself, why should I take those projects off my resume? I'm very proud of those projects I did as a matter of fact.
So here is the question. Shall I take off those two projects on my resume because they were political or I should leave it thereawarreally need some professional views. Please.1 -
I had been working to make API call Asynchronous..
And now complexity is too High..
Yet i am happy that Code working as expected..! -
"I don't shy away from complexity, I avoid it when possible"
Excuses that sound legit pt. 1
PS: guilty3 -
How to deduce the time complexity of any algorithm faster?
And is there any software that calculates it and suggest another optimal algorithm instead?1 -
I had a discussion with my colleagues about my bachelor thesis.
Together we created within the last 18 month a REST-API where we use LDAP/LMDB as database (tree structured storage). Of course our data is relational and of course we have a high redundancy there. It's a 170 call API and I highly doubt that it's actually conforming REST.
Ensuring DB integrity is done in the backend and coding style there is "If we change it at one place, let's make sure to also change it everywhere else", so you get a good impression how much of spaghetti code we have there.
Now I proposed to code a solution in my bachelor thesis where we use a relational database (we even have an administrated Oracle DB with high availability) and have a write-only layer to also store the data in LDAP but my colleagues said that "it would add too much complexity to the system".
Instead I should write the relational layer myself and fetch the data somehow from the existing LDAP tree.
What the actual fuck, spaghetti code is what makes the system really unnecessarily complex so that no one will understand that code in 2 years.
Congratulations, you just created legacy code that went into production in 2018 while not accepting the opportunity to let that legacy code get eliminated.
Now good luck with running and maintaining that system and it's inconsistencies.1 -
Time estimation of software development should be a product of observation of historical evidence, and many factors that come with it, like:
- What was the language used?
- How many developers worked on it
- How many years each developer has in experience in programming?
- IQ of each developer
- How many kids they have
- The weather
- ...etc
Analyzed by data scientist.
TL;DR
Not something you get by asking developers and interrupting their work, because many are people with superior complexity who often overestimate their capability of solving given problems.
Don't trust them to estimate!4 -
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 -
"Controlling complexity is the essence of computer programming."
-Brian Kernighan (Software Tools)2 -
Recruiter after not hearing from a company I applied two months ago: "Please accept my apology for a belated reply, I am struggling with Office 365."
Fucker - if complexity of Office caused a two month delay to answer a fucking email than you need to have your small spastic brain checked asap.
Should've just kept his mouth shut rather than to insult people by sending these kind of excuses.2 -
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. -
Area: oil & gas
Full time job: SCADA apps, network comms, real time database;
Part time job: drilling app for geologist engineers, real time data acquisition, lots of math calculations and simulations;
I'm loving both jobs, because of working with external acquisition devices, because of freedom of work and complexity of the field. -
Dependency injection is the most useless piece of crap ever invented. Convention over configuration my ass.
It simplifies nothing a good architecture and pattern can't solve. It's just the current trend but it's the hugest pain in the ass I've ever experienced. It just adds complexity to the project.
I think it's just a thing for masochists and lazy devs, but then why not sticking a huge dido up your ass it's the same fucking thing.12 -
The job description of my internship:
You must be able to understand the complexities of receiving a unit test that you are told needs only mock data in the test database, but has never worked since it was written by a contractor a year ago. No one knows how the unit test works and requires testing a complex algorithm involving graph theory that you have not learned about yet. The task starts at 1 complexity and turns into a 13. -
to be honest, i hate every OOP, in my opinion it's just add complexity in every way. yet i would like to use Functional Programming but it's fukking hard to learn and hard to get use to. Tryna get used to Haskell.4
-
I know that when a deadline is present, things like cyclomatic complexity might be something that is a left aside. But I hate so much having to troubleshoot a method with 15 levels deep of nested if, try-catch, loops... Fuck!3
-
My project is a cloud based automated testing product. My current story is to extend a module to support multiple of a particular testcase type in one test run instead of just one. This has uncovered a rats nest of complexity because everything is designed with the assumption that there will only ever be one of these testcases.
Refactoring about 5 different classes just to get into a state where i can pass a list of testcases into a service instead of just one. Wrecking my head... -
I earned the title of "sql king" due to the complexity of the sql I write (not proud of that because it makes maintainability hell) . It's pretty cool except sometime I feel like I can write shit code and ship it to production just because none can review my code properly or rather spend enough time understanding it,
basically I am not challenged enough...
What do you guys do if you are not challenged or bored ?
Never contributed to an open source but it might be the solution4 -
I expected to need the better part of an hour for a feature.
Here I am, two days later, still trying to figure out a solution. Turns out, there is a lot more complexity to it than I anticipated. -
I am used as a complexity proxy by my team. I foresee many problems and they do not seem to listen to my advices. And guess who will be blamed if something doesn't work, haha, kill me :)1
-
So, our lab professor in university for data structures was evaluating my friend's group assignment next to me and my colleague.
Professor: So, what does this method do?
Friend: I feel it would be best to explain our structure first and then how our methods work.
P: No, no. It's okay, I'm seeing it here in my laptop. *Looking at their report which included nothing about the structure of the assignment since she asked specifically only to place the methods and their complexity analysis due to not having time to look and evaluate a full report for each group*
F: Okay, *proceeds to explain*.
P: Okay, and why is your code commented?
F: Because it's good practice and we learned in subject x last semester.
P: Impossible! I teach that subject and I did not teach that in my classes.
F: Okay, but our professor did.
P: *Says nothing*.
They got a 3.25/5 as a grade for it and got really pissed off. I mean, they spent a lot of time making the assignment's structure perfect, optimizing their code and the professor did not care for the structure, just the methods, on the data structures subject.
FYI, they are workaholic, dedicate a lot of time improving their skills and their normal grades are usually >= 4.25.2 -
Disclaimer: the project I'm about to mention contains the first lines of Go I have ever written.
Still, I'm quite proud of how quickly I got it working considering it's also my first time working with GTK.
This project that I've been working on the past few days is finally done. But it's %50 percent spaghetti, so refactoring time. I decided to have a look at my cyclomatic complexity numbers, and my biggest function (not main()) had it at 7.
As it was quite large, I split it up into to parts: the preparation and the actual timer loop. As I appear to need to use a goroutine, by the time I'm done passing channels and all hell to handle them, my loop function now has a score of 9 for cyclomatic complexity.
So fix one bug, leaves two in its place?
But I still need to better learn Go, anyone have a good (relatively painless, informative, quick-ish) course they can recommend? I've been thinking of trying out codecademy's one...6 -
When it comes to dev tools, It seems like everywhere you turn these days all you get is a rabbit hole trip to GitHub's issue queue WTF! Oh, and there are so many tools out there so we all now need to have a task management tool which just add to the complexity of local dev development, fuck that! To make matters more absurd, those who write them tools think that it is a great idea to rename commands between each minor release because why not after all machines know how to decipher changes right? Wrong, last I checked, machines rank high on the autism spectrum and won't find a command unless you lead them directly to its file system location. The command fuck you could not be found are you sure you spelled it correctly, or did you mean fuck me? is all that it's capable of. Sigh...4
-
!rant
Experienced devs please tell help me.
Learning software development has been a challenge. Many times it's frustrating.
I also learn languages and I find them to share one trait with software development, which is complexity.
At first I looked at languages the way I'm currently doing with software. I'd look in a new language and after decided it's cool to learn it, I would stare at it for a few weeks trying to realize what the heck I was going to do. I wouldn't even know how to get started.
Eventually this stage goes away and I think that is about to happen with me with software.
But then a new challenge would come, which is me not making progress as I wanted. That's sort of happening with me by learning software as well, bit in language I now know how to deal with it.
That's because I work full time with something that isn't in my interests and when I arrive home Im tired and want to relax. So I decided my language learning had to go slower as long as I have this job, meaning no hours spent in front of books or a pc studying - that's what I could do with English, I was a teenager and had 12 hours a day to do whatever I wanted.
So I usually spent 5 minutes here and there learning something in my target language when I can, no frustration needed, my only rule is: practice everyday, even if I don't learn anything new.
With software, that doesn't apply though.
So, what I mean by tracing a parallel between these to fields is that I have a strong conviction is that once you get the principles on how a certain kind of learning works, you can apply it everywhere in the field. But with software it's been harder.
Anyways, I see that are some principles that apply, cause trying to learn software is changinge and teaching a lot of things like:
*you have to read a lot (of documentation) . At first I thought all documentation was painful to read and understand, but I found out some software are well documented and one can use those only to get used with it.
*immersion / discipline are important. I'm not very disciplined, I'm better with immersion but both are important if you need to acquire complex subjects/skills
*how to deal with complexity. I installed Arch Linux a few days ago. Just to install it I ended up reading more than 20 pages of documentation (install guide, Wpa supplicant, systemd, networkd, xorg, etc etc). Gradually I'm realizing that when you have to install/tweak something in that distro you necessarily spend a bunch of time trying to understand how it works, otherwise you don't get too far like in Ubuntu or Debian.
*and lastly the one that bothers me. Constantly getting frustrated and feeling crap about my poor skills. No matter how much I progress, it still seems like I'm stuck.
(that's when I ask your help/opinion :) )4 -
2014
I did some cool projects with node JS.
We had this project where we had several embedded sensor box components communicating via a node js server backend with some fancy visualization.
And one of the guys was a total idiot. His part was to write some embedded code for a sensor box. He also wrote some data receiver in C# which was a totally over patterned mess and nothing worked.
For some unknown reason this guy made me his arch nemesis. He also never liked the team. While the rest of the team actually was super cool.
So in the final presentation out of a sudden in his part of the presentation (He had a Mac and had his slides done in some nasty whatever incompatible format) he pulled out some slides with code metrics. The best part was where he compared the embedded C code with my js code in terms of cyclomatic complexity. I will never forget this moment. Some nice bar chart.
Good I loved that guy for this moment.
And that made my year! -
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! -
Calling something "idempotent" is fucking stupid. Why do you have to overcomplicate an already complicated shit such as terraform?
Why not call it unchangeable? Something that can be understood by a 2 year old. What even is the "immutable" word for if not even that is being used??? Why have 2+ words that define the same shit. Are u fking stupid who the fuck coined this phrase Idempotent and thought it was a good idea
When i read idempotent i have to remember and translate in my mind that it actually means "not changeable". On contrary theres "Non-Idempotent" so this fucks up the complexity even more cause Now i have to translate it as "non-not changeable -> which means it is everything But not changeable -> so if it is NOT not changeable -> it means it IS changeable" Fffuck offf13 -
Airflow… airflow… I hate you so freaking much, you are a bloated piece of software that packages wayyy too much and increase the complexity of any solution we built on top of you. Plus unit-testing and integration tests are wayyy too difficult with you. But man… your recent UI changes are a massive welcome.
A year ago I was tasked with either upgrading airflow to version 2 or to migrate the code to another tool. Naively I thought “well might as well upgrade to avoid a rewrite”. Little did I know that the reason airflow didn’t scale out well for us, was due to people over the years not having a grasp on airflow primitives like “pools”, “workers” and “operators”. Ended up refactoring the entire codebase for both infra and DAGs anyhow AND upgrading the beast AND lower cost by a factor of 2 (from $100-$150 daily to $50-$70 daily).
But seriously feels like I could’ve solved the scheduling issue with literally any message queue+decent library (like celery or Faust) and I’d have half the headache.3 -
One of my Computer Science modules this year revolved around completing a team project, and one person in the team basically fucked it up for all of us in the last minute.
We had to create a simple task management app for a fictional company, the university did not care about how the program looked and all that mattered was if the app is functional or not. The app relied heavily on a database, so all we basically had to do was get, modify, and add data from a database. Now this person did his part of the programming, but with an outdated database model and did not even test his code as he said MySQL wasn't working on his home computer.
2 days before the final deadline is when we decided to merge everything together in the git repo (as that's when the rest of us finished our tasks), and that's when we found out none of his code worked. We then spent the next 48 hours with little sleep to try our best to fix everything, but unfortunately due to his tasks carrying a majority of the complexity of the program we couldn't fix it all in time and we ended up losing roughly 50% of the marks.
This all probably could have been avoided if one person in the team did look at his git branch properly, but this person was the programming lead of the project and didn't ask for any help at any point until the last moment when we merged everything together. Oh well though, at least I've learnt better for the next team project that I do2 -
What kind of side projects would you like to see from someone interviewing for a JavaScript (front end or backend) related role? If they started with tutorials but did something different is this okay? I also want to start something small, so I can stick with it, but I don't want it to be too small or lack complexity. Thoughts?6
-
C- let's See
C is a procedurally developed language follows sequential method of solving a problem.
Example
If a teacher of an Institute teaching various subjects, Maths, English, Science and History.
Case1.One student comes and asks teacher to teach English
and next student to teach Maths,
And the other to teach History.
Case2.Next students comes for English
Case3.Other one for History.
So what I understood regarding C is procedural language is
It completes first case1,next case2, and then case3. (Task after task)
Here English is taught 2 times seperate
And History too 2 times separately making time and process complexity.
C is a platform based high level language support only desired platform. If I program in windows with i3 processor , it runs only on the same OS and Processor, if code is run in other computers.
Single threaded, if a code is interrupted in between, stops there and doesn't allow other part of the code to run.
Java
In this if the same above cases encountered then and tell
Computer to create a Class of English and tell all the students to attend the class(time saving, No complexity and not repetitive)
Same way Creating History class and make all students attend the class at once.
Students may be the objects created.
Multi threaded language, if a task is interrupted following code cannot be stopped. Allows other part of thecode to run.
JVM- Java virtual machine allows Java code into signs that can be understood by computer. Where as C converts into binary code.
A class concept added to C language become C++rant support rant learning to code want to code jvm newbie asking high level languages are cool discussions java c mistakes3 -
The world would be better if the TypeScript guys knew what they could create with less complexity in any other language. Of course, if they are interested in learning. There are SPA applications out there that have more lines than Doom 3.7
-
"It's just as easy to create a small REST microservice as there is for a small one-off script, so let's follow the design pattern of creating a REST service first."
I don't think my manager understands how different in complexity these two things are.1 -
"What is to be sought in designs for the display of information is the clear portrayal of complexity. Not the complication of the simple; rather the task of the designer is to give visual access to the subtle and the difficult – that is, revelation of the complex." - Edward Tufte
-
I'm going to have test on monday about this one subj and today was the last theory class before the test. When the teacher asks about the time complexity of an algorithm in the best case some people reply "when n is 1". I can hear the teacher facepalming already LoL
-
"When it comes to writing code, the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity." - John D. Cook
-
Has OSS Projects build systems become more complicated lately?
I took a stab at building concourse ci on FreeBSD. It being written in go, I expected it to be rather straight forward but no.
To "compile" the web UI assets, yarn (an alternative nodejs package manager apparently) was required. (Are js and CSS really compile targets now?)
Installed yarn and ran yarn build, it complained about lessc not being installed, so ran yarn install lessc which then told me that I was running an unsupported operating system.
I can compile the actual consourse binary just fine, but without yarn doing it's thing the assets required for the web UI does not get compiled in and therefore doesn't work properly.
Maybe I compile the web UI assets in Linux, and cross compile my FreeBSD binary...5 -
Re-instantiating the interesting bits from the other thing:
Time complexity of unsorted array equality operations. Go!23 -
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. -
Sooooo how much should I expect to get accomplished as a new junior developer? I feel like I'm making progress but basically everything is a struggle and I do it wrong to learn. Is this normal? I understand a lot but also the complexity of the projects im working on (in comparison to my skill level) means I'm basically always wrong and in need of guidance.
Thoughts? -
A majority of the bosses/PMs/supervisors tend to be soo stupid and lack the knowledge of the actual problem's complexity so they expect you to hit keys and voila, project done.. It gets on my nerves big time.
-
in this takehome challenge: let's see how much we can over-fucking-complicate every single thing. You want one selectors (that could just be one-liners) stacked on top of MORE one liner selectors? you got it!
you want sagas with fucking wierd ass syntax that can be replaced with i don't know, BUILT IN JAVASCRIPT??!!? you got it!
oh yeah, and with all this complexity, not a single line is written with TypeScript...
...i can't remember the last time i fucking had to write the characters 'propTypes' on a react project
what the hell is this, 2015?
it's absolutely mind exploding mind boggling how these orgs operate
double the work, double the time, double the cost
but what do i know? i'm just a 🤡 -
I want to understand Linux services better. Most of the time if I want to run a process in the background, I just use nohup and &
And put the commands in either init.d or crontab.
But lately I've seen some more complex scripts where it's called like logstash start/stop which does a free things including recording the PID somewhere?
In Linux terms it seems to be called starting a daemon. But what's the difference, benefit to all this complexity?8 -
*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 -
Have you deployed ElasticSearch to production? If so, I got couple of questions for you.
How much complexity did ES add to the project overall from a developers perspective?
How much did this differ in price from other solutions you used? In production loads that is.
✌🏼7 -
Long time frustration
My close friend wanted to focus on machine learning and AI. in summer he did some research and figured out it is difficult to get those jobs. Now he is learning Angular 2. And applying for web development.
I am tired of people getting into web just because everything else seems difficult to them.
I just don't like people who think web is easy. And take it for granted.
I know comparing to machine learning Web does have an easy entry level barrier. But tired of devs, undermining web development complexity.
I think world thinks
Web is so easy that you can do it even if you hate it.5 -
The more I learn about Spring... It feels like it just hides complexity.... And thus allows developers to make their apps more complex?
I can imagine there will be a Component class with like 20 references to other components either directly or indirectly... But then when something crashes or some error in output data is noticed in prod for some reason...
You cant tell exactly what cause the error because the objects' state is so complex, not sure which component or combination actually causes the issue.
Essentially makes a lot of black boxes?10 -
If a project's structure is shit, well of course, let's continue using it because "it is known". Doing it any other way "will add complexity".
That I wasted three days making my working code adhere to the clusterfuck of a structure, nevermind that. Let's continue. And yes, colleagues do agree that the structure is shit, though let's improve it ... later.
Or in other words: Suck it up, we always have done it this way. Fuck you and your ill-advised attempts of trying to improve it. -
Been doing some MATLAB art for my dissertation, going to slowly increase the complexity hopefully for some more interesting results!
-
String[] hidingPlaces = new String[1000000];
hidingPlaces[Math.rand()*1000000] = "bug";
findBug(hidingPlaces);
public int findBug(String [] are) {
// todo: return index of bug with complexity < O(1)
} -
Programmers in python are few in my opinion I wonder this because of the lack of courses in French or the complexity of the language ? 🤔6
-
Common Man: How do you software developers earn so much? What's the secret of your success?
Software Developer: It's not a secret really. It's like any other job, we make sure we are always needed. So we create a mess and then get paid to solve the mess. How you ask? Software developers create the most complex and useful software. Since it's complex, others learn it and become part of the so called the few experts and then get paid tons as very less experts are there for the software and the creators of the software are also of course experts and in fact considered Guru, because, well, they wrote the complex software. They are geniuses, because it's so hard to write complex software. And many of these experts also create new tools to make the software easier to use, for newbies. They also write articles around it - explanations, tutorials, inner workings and gotchas, and also publish books and videos - in paid tutorial sites, and some videos on YouTube too. -
complexity is spirit demon that enter codebase through well-meaning but ultimately very clubbable non grug-brain developers and project managers who not fear complexity spirit demon or even know about sometime
one day code base understandable and grug can get work done, everything good!
next day impossible: complexity demon spirit has entered code and very dangerous situation!
grug no able see complexity demon, but grug sense presence in code base
demon complexity spirit mocking him make change here break unrelated thing there what!?! mock mock mock ha ha so funny grug love programming and not becoming shiney rock speculator like grug senior advise
club not work on demon spirit complexity and bad idea actually hit developer who let spirit in with club
https://grugbrain.dev/ -
My focus is cloud infrastructure and developer tools. I like it because of the complexity and the feeling that enabling developers to do more is a multiplier of good I can do in the world.
-
Once a React aficionado, twice the frustration we endure,
In the realm of libraries, React's problems seem impure.
With Svelte's elegance and grace in our sight,
Let's vent about React, as day turns into night.
Boilerplate Overload, a monotonous affair,
Classes, constructors, lifecycle steps we declare.
In Svelte's simplicity, we find a breath of fresh air,
Just markup and magic – a coder's love affair.
Complex State Management, React's Achilles' heel,
Redux, Mobx, and their massive code appeal.
Svelte's state handling is a cinch, for real,
No more tangled webs of logic to conceal.
Unnecessary Re-Renders, React's performance woe,
Countless updates, like a never-ending show.
Svelte updates what's needed, like a pro,
Efficiency and speed, in its radiant glow.
Verbose Syntax, JSX's verbosity on display,
HTML in JavaScript, causing dismay.
Svelte's concise template syntax lights our way,
No more endless tags, just code that's here to stay.
Lack of Truly Reactive Behavior, React's hurdle high,
Hooks to wrangle, state to satisfy.
Svelte's reactivity, no need to question why,
It just works, oh my, oh my.
Ecosystem Complexity, React's sprawling sprawl,
Choices galore, making us bawl.
In Svelte's world, simplicity is the call,
A coherent ecosystem, it has it all.
Learning Curve, React's mountain to climb,
Classes, hooks, context, a hill of time.
Svelte's gentle curve feels sublime,
A smoother path to code, so fine.
Tooling Overkill, React's complex array,
Build tools, linters, configs in disarray.
Svelte's streamlined setup leads the way,
No more intergalactic code buffet.
Debugging Headaches, React's mysterious realm,
Complex state, intricate components overwhelm.
Svelte's predictable model, a soothing helm,
Debugging becomes a peaceful realm.
In the end, React, a complex labyrinth we explore,
Svelte's elegance and simplicity we adore.
If only React could learn, its problems to deplore,
A brighter future, for React we'd implore.3 -
By filling out their tracking tools in a language they can understand prior to their deadline of needing the data, being honest in their meetings, and being right about the time/complexity of the effort.
-
How much do you quote for an average complexity android app? Considering we have the server and infrastructure ready.2
-
If we can transform the search space or properties of a product into a graph problem
we could possibly use Kirchhoff's theorem to reveal products which are 'low complexity'
in particular search spaces, yeah?
Now according to
https://en.wikipedia.org/wiki/...
"n Cycle Space, A family of sets closed under the symmetric difference operation can be described algebraically as a vector space over the two-element finite field Z 2 {\displaystyle \mathbb {Z} _{2}} \mathbb{Z } _{2}.[4] This field has two elements, 0 and 1, and its addition and multiplication operations can be described as the familiar addition and multiplication of integers, taken modulo 2"
Wouldn't this relate to pollards algorithm, because it involves looking for factors of coprimes modulo N or am I mistaken?
Now, according to wikipedia, "in a group, the additive identity is the identity element of the group, is often denoted 0, and is unique."
If we make the multiplicative identity of our ring or field a tuple of the ratio of a/b for some product p, or a (and a/w, where w is the square root of p), or any other set such that n*m allows us to derive a or b, we could reduce the additive identity to the multiplicative identity, making the ring trivial. Solving for p would then mean finding a function from R to R, mapping every number to 0, i.e. finding the additive identity.
Now in a system with a multiplication operation the distributes over addition, the "additive
identity annihilates ring elements", so naturally, the function that maps to 0, gives us
our additive identity, we need only find the subset, no?
Forgive me if I'm wrong, but shouldn't this be convertible to a graph search?
I'm WAY out of my depth here so if anyone is familiar and can enlighten me I'd be grateful.
It's all unknown unknowns to me. -
"Her complexity is a glorious fire that consumes, while her simplicity goes unapproachable. But if one takes time to understand her, there is something beautiful to find, something simple to be loved. But she goes unloved, for being misunderstood." - Anthony Liccione
-
I hope Scott Meyers is learning Swift, because it's gaining so many edge cases and keyword-level features that programmers who use it will need an "Effective Swift" book to tell them which language features to avoid to get their work done.
I wonder whether it will survive that complexity as C++ did, or collapse under the weight like Perl. -
Hasn't technology become magic - and we ignorant sorcerer's apprentices who can perform a video call to the other side of the globe perhaps while we understand only some bytes of the thousands software snippets that were piled up by us code monkeys to perform the miracle? ...
This however has always been the state of software (for us developers): that this house of cards needs constant care by our hands to not collapse - in constant fear we may preserve the facades while the number of components that interact, the sheer mass of code only allow for guesswork and hotfixes accumulating the technical debt. Yes, we have all that terms for that. The problems are known since the 80s or 60s, so we might be relabeling it once in a while, but mainly it is just: complexity.. or entropy.2 -
How should you override Equals in Java?
We have model classes with lots of fields and the we override the details equals to compare all the fields. I guess like doing a deep comparison.
And in all these classes SONAR is complaining about lots of ifs, complexity, etc.
And it's killing the analysis time... Old issue never fixed because whoever setup sonar was too incompetent to bother asking, researching, or fixing...
Is there a better way to override the equals to get the same result but without triggering SONAR issues?
Pretty sure this is a solved problem. And well if the top of my head, is just create a Util method that uses reflection like
Boolean equals( Object a, b, Class class)
foreach (String f: class, getFields()) {if !compare(class.getField(f,a),class.getField(f,b)) return false; }
return true5 -
Learning vue and it's lovely, except FUCKING V-MODEL I'm literally 10 hours of tutorials in and I still have no clear idea what the thing does, I'm pretty sure it's like 2/10 complexity thing but someone just HAD TO name it V-MODEL so that it doesn't give you a slightest hint of the actual functionality, like you might as well have named it v-cable or v-oompaloompa, it would have the exact same information value (none).3
-
I usually try to break down what they are asking for into smaller parts. The tricky part is scoping them without granular details of how it will actually get done and thinking only about complexity. Then add up time and give the total a bucket size. 1-5 hrs 6-15, 16-30, 30+ etc. Turn around time is another matter but that's never predictable. By the time clients approve the quote availability is totally different.
-
Feature not a bug...
My work laptop has started rebooting almost every night.
It's not clear why, but I sort of think of it as a feature now.
I have an ultra-wide monitor, plus another wide next to that one, and a bunch of virtual desktops.
I often think "ok everything is where it is that's good" but coming in reality with a bazillion things open across all the desktops and screens sometimes when I come back the next day ... it's actually just a lot of mess / overhead to pick up where I was.
Sometimes I think we introduce a lot of complexity to solve a problem and ... actually it's just more complexity if you're not already 8 layers deep.5 -
I'm starting to gain a dislike for OOP.
I think classes make it easy for me to think of the entities of a problem and translate them into code.
But when you to attempt to test classes, that's when shit hits the fan.
In my opinion, it is pointless to test classes. If you ever seen test code for a class, you'll notice that it's usually horrible and long.
The reason for this is that usually some methods depend on other methods to be called first.
This results in the usual monolithic test that calls every goddamn method on the class.
You might say "ok, break the test into smaller parts". Ok. But the result of that attempt is even worse, because you end up with several big tests cases and a lot of duplicate code, because of the dependency of some methods on others.
The real solution to this is to make the classes be just glue: they should delegate arguments onto functions that reside on its own file, and, maybe afterwards emit events if you are using events.
But they shouldn't have too much test code classes though. The test code for classes should be running a simple example flow, but never doing any assertions other than expecting no exceptions.
For the most part, you'd be relying on the unit testing that is done for each delegated function.
If you take any single function you'll see that it's extremely easy to write tests for it. In fact, you can have the test right next to the fuction, like <module>.xyz <module>.test.xyz
So I don't think classes shouldn't be used at all, they should just be glue.
As you do normal usage of this software this way, when a bug is discovered you'll notice that the fix and testing code for this bug is very usually applied to the delegated functions instead of being a problem of classes.
I think classes by themselves sound sane in paper, but in practice they turn into a huge fucking messes that become impossible to understand or test.
How can something like traditional classes not get chaotic when a single class can have x attributes and y methods. The complexity grows exponentially. And sometimes more attributes and methods are added.
Someone might say "well, it's just the nature of problems. Problems can have a lot of variables".
Yeah, but cramming all of that complexity into a single 200 lines class is insanity.12 -
http://smashcompany.com/technology/...
... AWS services are more complicated than installing, maintaining and securing your own Linux installs? RLY?!? -
Okay... Complexity Theory.
Polynomial time
Nondeterministic Polynomial time
If not now, when you first learned of P and NP, it's time for you to share what you thought P and NP were acronyms for.2 -
How do folks feel about IoC/DI?
I used Spring and Angular for the first few years of my career, so it seemed like it was a mandatory pattern of a framework and my team would never deploy an app that couldn't use it (even if it was just a Lamda or something, we found smaller DI libraries). Now I work in Express and React, and I look back and feel that those patterns required me to write more code, created more complexity, and wasn't any easier to read or understand, and was way more bug prone, and debugging the injection pipeline itself was effectively not possible.
I guess I'm wondering: what do people feel that it buys them?17 -
I never finished it, but before I was working in the industry, I was coding through a book called Build Your Own AngularJS. My intent was to have piecemeal instruction/example in TDD and code way above the level of complexity I was used to. You essentially build the core of AngularJS in about 900 unit tests with total coverage. 1000pages long, its no walk in the park.
I gave it up when my time was short, and focused on higher level concepts: building apps, learning tools of the trade.
Now that I am getting plenty of exposure to that level, I am thinking my free learning hours may be better spent going down into the complex worlds shown in this book. A couple of things I found there really stayed with me and shaped how I think about problems. It was also very illuminating to see how complex algorithms work “in the wild”. I cant stand learning algorithms in isolation, generally speaking.
Has anyone seen this book? I know the framework itself is older now, but I don’t think that is much relevant for this learning use case.
I only know of one student who completed this. Took him a few months. He is an absolute machine. -
Fucking Yeoman, guys.
For a school project I thought I'd try it out to scaffold out my folder structure etc. Ran a php generator (not having commits since 2013) through npm and sipped my coffee while one node deprecation warning after the other filled my terminal.
Now I just feel like I'm sitting with my dick in my hand while staring at what looks like the fucking source code of the Matrix itself.
Does anyone use Yeoman for PHP projects anymore?
Well, at least Grunt works flawlessly 😎 -
That moment when your fellow developer tells you in meeting with business "you should have followed my approach" without slightest idea of the underlying complexity - not cool 😠😠
-
The people who thought that providing customers with a template engine to build reports was a good idea - they made a mistake...
Users can't and won't understand a 500-line template file with 'content', 'columns', 'stack' and 'data:image' in it, and nesting levels reaching 10+
Now I have to build those reports with the added complexity of working around template engine limitations.
Can't blame the people who originally invented it. I can see how they might have thought their idea with those templates might have worked out. But it didn't work out, sorry -
"Her complexity is a glorious fire that consumes, while her simplicity goes unapproachable. But if one takes time to understand her, there is something beautiful to find, something simple to be loved. But she goes unloved, for being misunderstood." - Anthony Liccione
-
Do dev or engineer needs to know how the program works?. I mean that should they know about time and space complexity?
Till now my answer is yes, they should know. But i have met more than triple Dev's with absolutely no knowledge of complexity and they all are behind code quality.6 -
Hi.
I know python and javascript and I'm interested in solving algorithms. But I have a problem, that is I don't the algorithm that I have designed is optimum. I mean it has lower order complexity. I want to know if I want to improve my skills, I should solve programming challenges or, start to read data structures and algorithm design?
I should add my ultimate goal is machine learning.5 -
!rant
It's rather a question. I am thinking of changing my Linux distro from Lubuntu to Arch Linux or Gentoo.
My main reason is that I want to achieve customizability and the freedom that Linux offer and also build my distro from ground up.
Second reason is that I want to switch a little bit I am using Lubuntu for 2-3 years and is worked great for me. Especially because I have an older laptop (Asus K53E) and windows 7 worked really slow on it. But with this distro, everything works much faster and has all features and tools for programming that I need despite being minimalistic.
I have also used other distros before this one. These are some of them that I can remember Ubuntu, Xubuntu, Mint, Bodhi Linux.
I would say for myself that I am quite familiar with terminal and I also wrote some bash scripts on complexity level like these: https://github.com/RokKos/..., https://github.com/RokKos/...
But my main concern is that would fail to install any of this two distros or that I would damage my computer beyond repair...
So my main questions are:
What are you experience with this two distros?
Did you have any troubles installing and setting up distro?
What is overall experience with this two distros?
Was is worth to switch to any of these two?
And you could also share what distro you are using and maybe some rants that occur using them.14 -
I never tried a cigarette in my life. However the complexity of the project im working on ALL ALONE and im going all in on it and giving it my all, working alone on a project thats supposed to work at least 10 developers, is causing me excessive damage of stress. Cigarettes might be the solution. Not sure about alcohol cause usually it kills brain cells and id become even dumber as fuck. Plus i need full focus on this bullshit. Need Concentration. Cant concentrate if im under extreme levels of stress and pressure. I must be fast with this and finish the project this year 2023. I dont know what scares me the most: the level of complexity or the fact im not close to finishing it. What do you think is cigarette gonna solve my problem ?15
-
Who the duck thought of adding so much complexity over the file field?! Why do I need to go through thousands of pages to see how to simply save a disk file into the model db?! I have a sick sensation that i get in my stomach everytime i have to deal with the damn files. Duck you django files!!!
-
Visualize the entire complexity of the content within the project so that you know what data users will need to access, and compartmentalize those in to separate modules that you can build on over time. Think about any limitations with accessing that data (does the user have that role, what if the data is accessed simulateously, how to handle the same user accessing from different devices etc).
Think about the devices being used - is it going to be a website, an app, both? How best then to access the data? Direct access to a database, or an API system?
Then think about the front-end design and how to simplify the view right down as much as you can. Again, break it down in to modules.
Then decide on the technology you want to use, and what libraries would help simplify things.
These days I like to use JSON API's to access DB content because app and web technologies change quite often but the API will be accessible to whatever I use to build it.
For websites I love using Laravel, which simplifies the back-end tasks, and mdbootstrap which simplifies the front-end tasks and looks "appy". -
Time complexity doubt
How can you say T(n) ≤ 3T(floor(n/4)) + cn²
Given that T(n) =3T(floor(n/4)) +Θ(n²)
Won't it imply Θ(n²) ≤ cn², which seems incorrect (or am i wrong to think its incorrect?)4 -
At the end of a request I want to ensure that both 1) persisting to the DB and 2) dispatching to the message queue is successful.
If one of these side effects fails, I want both to fail: this can be done with a distributed transaction (eg. 2PC or something similar).
My question is, how much overhead/complexity/latency does this introduce into the system? And is this even needed in the first place or am I overthinking this? -
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
my stack is javascript MERN stack.1 -
"What I love about design is the artistic and scientific complexity that also becomes useful…" - Michelle Obama
-
Today I'm starting interviewcamp.io. I graduated from a 4-year university in California with a degree in computer engineering and have almost 3 years of work experience, but my god I am terrible at algorithms.
Big O (time and space complexity), recursion, Binary Search Trees, reversing a fucking linked list, etc. I need the boost and I hope the $250 a year for the material will help me get at least a $5k increase in salary when jumping to another company after the whole pandemic (or get a raise at my current job).
If anyone has any experience with them let me know. So far I'm 2 hours in and it is nice so far.3