TL;DR; Human emotions don’t belong in software development. Code doesn’t care about your feelings so neither do senior devs. If you want someone to listen about your feelings, talk to your manager, not other devs while proposing a solution based on feelings. If you can’t handle critical criticism of your code/designs/etc, you simply don’t belong. If you are pumping shit out that takes down prod at 3am on Sunday, it is exactly that… shit.
It’s a problem if you’re a junior dev. Junior dev acting like they know everything straight out of college will often just get ignored and pushed sideways in the company (rather than promoting upward).
Junior devs should be properly mentored by a senior dev. Junior devs should never be placed in a position where their code could “cause an outage at 3am on Sunday”. If that happens from a junior devs code, that is mentor’s fault all the way.
Intermediate devs have more leeway since they have seen some shit and often decide and design based on real industry experience rather than a couple of college courses. However, intermediate devs are often deeply passionate about their projects, especially when they are doing something like “designing specifically so we won’t have downtime at 3am on Sunday again because that sucked”.
Most humans have an extreme difficult time separating emotion and logic. When intermediate dev above “knows this is right”, and passionately debates the topic to no end, even when there is an obvious flaw in the logic, they are often debating based on their feelings and not based on matters of fact. This is a problem, and will come off as arrogance, but most likely is not actual arrogance and they are just caught up in their feelings about how hard they worked on the code/solution and they “feel” (not know) that the solution is correct/best/etc. This is easier than saying “damn, I’m wrong” for most people.
Senior+ devs often have seen shit across multiple softwares and companies allowing for more generic context surrounding issues. Senior+ devs also often depend on who they are conversing with, and often change tact to the situation. Ignore junior devs unless it’s their actual job (mentorship). Be a contrarian to intermediate devs, to ensure they are doing real due diligence with their solutions. Heavily debate senior+ devs, as this is often where emergent architecture and design comes from, and all parties come out more knowledgeable. Caveat being: debates must be about the data and facts, with no ad hominem.
There is a major difference in the following statements:
This code is dumb
You are dumb
The former has nothing to do with you, even if you wrote the code. The code would still be dumb if someone else, even me, wrote it. Too many people take criticism of code as personal attacks – human emotions do not belong in software development, facts and logic do.
I think Twitter is dumb so I never had an “oh shit I also think Elon is dumb and need to leave” moment.
I now definitely relate to what people went through, as Reddit was my single online “social” presence, and I can’t in good conscience continue to support them in any way, shape, or form because of the blatant shady attacks against developers.
All that aside, I am super impressed with lemmy (and the fediverse) and kind of bummed it took me until “the big migration” to look into it. I already prefer lemmy 1000% to Reddit after only a couple of days.
I would also MUCH RATHER donate to random cool folk keeping uptime on lemmy instances than, something like, pay reddit monthly for no ads.
I deleted my Reddit account on 6/12 and they just simply didn’t process it. Losers
My most niche hobby is writing ungodly bash scripts, and sourcing them to one of my bash profiles – mingw64 (windows), zshell (OSx), or normal (debian based).
I write in such a way that scripts are separated by concepts which overwhelmingly align with a certain technology or tool (e.g. git) and source whichever functionality I want into the proper profile.
The pain is separating corporate vs personal scripts, which I don’t have a great solution for outside of actually separating the scripts and sourcing in the proper order so that corporate functionality can override personal functionality (i.e. my git commands in corporate environment are still the same but with properly overridden config, etc)
For example, I bought a steam deck and mainly use it as a laptop instead of a gaming device. I created a new bash script steamos
and source to my (new) steamos profile. All my setup is repeatable through scripts to the point I could factory reset, clone my profile repo, run a couple commands, and everything is back where it should be. I am not quite to that state with other environments, but that is my goal.
Imagine starting a new job, being handed a laptop you don’t get to choose (probably a Crapbook), and then simply clone and run config command to setup the OS for your personal prefs so you can hit the ground running on week one. This doesn’t mean you clue people in on the fact you are running not walking, however, ESPECIALLY at a new job.
inb4 have you heard of Ansible
“I’m savvy with programming!!”
Sees Rust – “NO NOT LIKE THAT!!”
Guess I should start getting familiar with Rust
I am currently playing Red Dead Redemption 2 on my deck, performs well enough (the major concern is the affect to the battery if playing handheld). Keyboard required for first time set-up (virtual keeb didn’t work).
Others:
No Man’s Sky - endless playability imo and was my go to when I purchased
Planet Zoo - I haven’t actually played on deck yet, but I got my desktop setup where I only need to use the mouse, and plan to try the strategy on my deck.
Dofromantik - this is a relaxed puzzle game that is very good on deck
Podman - containerization is a game, and the deck is a Linux computer after all :)
Damn, I was wrong… ;)
I guess I should also clarify (if it wasn’t obvious), I am speaking about enterprise software development at large scale, and probably none of this properly applies to single OSS with 4 devs (or similar).
My intent was not “senior devs ok to be arrogant”, but more so give my understanding of why a lot of senior devs come off as arrogant (if code is dumb, it is okay to say it is dumb, and is not a personal attack).
Simply saying “this code is dumb” and walking away is arrogant – agreed.
Commenting in code review “this code is dumb” and nothing else is arrogant – agreed.
Saying “this code is dumb” and debating the concepts at play in code, is not arrogance, but is often perceived as ad hominem (“well [dev] invested tons of time and energy on writing that code you just called dumb and is offended” – why is [dev] working in a silo to the point that the code is trashed in code review on pull request?).
Correct, I was trying to give a why, directly from someone often perceived as an arrogant asshole senior dev.
Maybe it is better to say “feelings belong in process, not code”. I consider everything I discussed process. Code taking down prod at 3am is not, but more of an indicator of bad process (in whatever form).
This is interesting. My comment doesn’t reflect my actual feelings on this topic, but rather my current understanding of this phenomenon I (clearly) struggle with, based on my experience in industry.
My actual feelings align more with “I am blunt and don’t care about your feelings. This is a business not a personal project, get over it.” and acknowledge that is arrogant, shitty, and not helpful (probably the other fancy words you used too) but saves ME hours upon hours weekly, which I then get to work on my code/tickets during, which is what my job actually is, and is the ACTUAL metric by which success is tracked.
If you are looking for design review, ask an architect (not through PR to main, which most often indicates “ready”), that is their job, not developers. If you ask for my review I will give it, and that is the “to be nice part”. If I look and want to comment “this code is dumb – rant”, and I am the proper reviewer, I ask my manager to help me navigate the best way to express myself without coming off as an asshole.
I also acknowledge I do not write the checks, and have many times over written “dumb code” when that is what the business wants. Although I do make sure and be clear that it is dumb code (business people dgaf until the downtime happens tho).