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 - "coding rules"
-
This code review gave me eye cancer.
So, first of all, let me apologize to anyone impacted by eye cancer, if that really is a thing... because that sounds absolutely horrible. But, believe me, this code was absolutely horrible, too.
I was asked to code review another team's script. I don't like reviewing code from other teams, as I'm pretty "intense" and a nit-picker -- my own team knows and expects this, but I tend to really piss off other people who don't expect my level of input on "what I really think" about their code...
So, I get this script to review. It's over 200 lines of bash (so right away, it's fair game for a boilerplate "this should be re-written in python" or similar reply)... but I dive in to see what they sent.
My eyes.
My eyes.
MY EYES.
So, I certainly cannot violate IP rules and post any of the actual code here (be thankful - be very thankful), but let me just say, I think it may be the worst code I've ever seen. And I've been coding and code-reviewing for upwards of 30 years now. And I've seen a LOT of bad code...
I imagine the author of this script was a rebellious teenager who found the google shell scripting style guide and screamed "YOU'RE NOT MY REAL DAD!" at it and then set out to flagrantly violate every single rule and suggestion in the most dramatic ways possible.
Then they found every other style guide they could, and violated all THOSE rules, too. Just because they were there.
Within the same script... within the SAME CODE BLOCK... 2-space indentation... 4-space indentation... 8-space indentation... TAB indentation... and (just to be complete) NO indentation (entire blocks of code within another function of conditional block, all left-justified, no indentation at all).
lowercase variable/function names, UPPERCASE names, underscore_separated_names, CamelCase names, and every permutation of those as well.
Comments? Not a single one to be found, aside from a 4-line stanza at the top, containing a brief description of that the script did and (to their shame), the name of the author. There were, however, ENTIRE BLOCKS of code commented out.
[ In the examples below, I've replaced indentation spacing with '-', as I couldn't get devrant to format the indentation in a way to suitably share my pain otherwise... ]
Within just a few lines of one another, functions defined as...
function somefunction {
----stuff
}
Another_Function() {
------------stuff
}
There were conditionals blocks in various forms, indentation be damned...
if [ ... ]; then
--stuff
fi
if [ ... ]
--then
----some_stuff
fi
if [ ... ]
then
----something
something_else
--another_thing
fi
And brilliantly un-reachable code blocks, like:
if [ -z "$SOME_VAR" ]; then
--SOME_VAR="blah"
fi
if [ -z "$SOME_VAR" ]
----then
----SOME_VAR="foo"
fi
if [ -z "$SOME_VAR" ]
--then
--echo "SOME_VAR must be set"
fi
Do you remember the classic "demo" programs people used to distribute (like back in the 90s) -- where the program had no real purpose other than to demonstrate various graphics, just for the sake of demonstrating graphics techniques? Or some of those really bad photo slideshows, were the person making the slideshow used EVERY transition possible (slide, wipe, cross-fade, shapes, spins, on and on)? All just for the sake of "showing off" what they could do with the software? I honestly felt like I was looking at some kind of perverse shell-script demo, where the author was trying to use every possible style or obscure syntax possible, just to do it.
But this was PRODUCTION CODE.
There was absolutely no consistency, even within 1-2 adjacent lines. There is no way to maintain this. It's nearly impossible even understand what it's trying to do. It was just pure insanity. Lines and lines of insanity.
I picture the author of this code as some sort of hybrid hipster-artist-goth-mental-patient, chain-smoking clove cigarettes in their office, flinging their own poo at their monitor, frothing at the mouth and screaming "I CODE MY TRUTH! THIS CODE IS MY ART! IT WILL NOT CONFORM TO YOUR WORLDLY STANDARDS!"
I gave up after the first 100 lines.
Gave up.
I washed my eyes out with bleach.
Then I contacted my HR hotline to see if our medical insurance covers eye cancer.32 -
Me: "Hey, I see you've started your class name with a lowercase letter, It's common practice to start it with a capital letter"
Co-worker that started two weeks ago with almost no experience in c++: "Oh, right. You women and your rules, you must know it then"
Me: *Awkward laugh* *Thinking as long as he changes it i'll let that one slip* *Sends him coding standard guide just in case he doesn't believe me*
-- Two days later --
He still didn't fucking change it. It pains my eyes to look at it each time he asks me for help. Oh and stop calling me "miss", I have a name.46 -
I absolutely HATE "web developers" who call you in to fix their FooBar'd mess, yet can't stop themselves from dictating what you should and shouldn't do, especially when they have no idea what they're doing.
So I get called in to a job improving the performance of a Magento site (and let's just say I have no love for Magento for a number of reasons) because this "developer" enabled Redis and expected everything to be lightning fast. Maybe he thought "Redis" was the name of a magical sorcerer living in the server. A master conjurer capable of weaving mystical time-altering spells to inexplicably improve the performance. Who knows?
This guy claims he spent "months" trying to figure out why the website couldn't load faster than 7 seconds at best, and his employer is demanding a resolution so he stops losing conversions. I usually try to avoid Magento because of all the headaches that come with it, but I figured "sure, why not?" I mean, he built the website less than a year ago, so how bad can it really be? Well...let's see how fast you all can facepalm:
1.) The website was built brand new on Magento 1.9.2.4...what? I mean, if this were built a few years back, that would be a different story, but building a fresh Magento website in 2017 in 1.x? I asked him why he did that...his answer absolutely floored me: "because PHP 5.5 was the best choice at the time for speed and performance..." What?!
2.) The ONLY optimization done on the website was Redis cache being enabled. No merged CSS/JS, no use of a CDN, no image optimization, no gzip, no expires rules. Just Redis...
3.) Now to say the website was poorly coded was an understatement. This wasn't the worst coding I've seen, but it was far from acceptable. There was no organization whatsoever. Templates and skin assets are being called from across 12 different locations on the server, making tracking down and finding a snippet to fix downright annoying.
But not only that, the home page itself had 83 custom database queries to load the products on the page. He said this was so he could load products from several different categories and custom tables to show on the page. I asked him why he didn't just call a few join queries, and he had no idea what I was talking about.
4.) Almost every image on the website was a .PNG file, 2000x2000 px and lossless. The home page alone was 22MB just from images.
There were several other issues, but those 4 should be enough to paint a good picture. The client wanted this all done in a week for less than $500. We laughed. But we agreed on the price only because of a long relationship and because they have some referrals they got us in the door with. But we told them it would get done on our time, not theirs. So I copied the website to our server as a test bed and got to work.
After numerous hours of bug fixes, recoding queries, disabling Redis and opting for higher innodb cache (more on that later), image optimization, js/css/html combining, render-unblocking and minification, lazyloading images tweaking Magento to work with PHP7, installing OpCache and setting up basic htaccess optimizations, we smash the loading time down to 1.2 seconds total, and most of that time was for external JavaScript plugins deemed "necessary". Time to First Byte went from a staggering 2.2 seconds to about 45ms. Needless to say, we kicked its ass.
So I show their developer the changes and he's stunned. He says he'll tell the hosting provider create a new server set up to migrate the optimized site over and cut over to, because taking the live website down for maintenance for even an hour or two in the middle of the night is "unacceptable".
So trying to be cool about it, I tell him I'd be happy to configure the server to the exact specifications needed. He says "we can't do that". I look at him confused. "What do you mean we 'can't'?" He tells me that even though this is a dedicated server, the provider doesn't allow any access other than a jailed shell account and cPanel access. What?! This is a company averaging 3 million+ per year in revenue. Why don't they have an IT manager overseeing everything? Apparently for them, they're too cheap for that, so they went with a "managed dedicated server", "managed" apparently meaning "you only get to use it like a shared host".
So after countless phone calls arguing with the hosting provider, they agree to make our changes. Then the client's developer starts getting nasty out of nowhere. He says my optimizations are not acceptable because I'm not using Redis cache, and now the client is threatening to walk away without paying us.
So I guess the overall message from this rant is not so much about the situation, but the developer and countless others like him that are clueless, but try to speak from a position of authority.
If we as developers don't stop challenging each other in a measuring contest and learn to let go when we need help, we can get a lot more done and prevent losing clients. </rant>14 -
#3 Worst thing I've seen a co-worker do?
A 20-something dev, 'A', back in the early days of twitter+facebook would post all his extracurricular activities (drinking, partying, normal young-buck stuff). The dev mgr, 'J', at the time took offense because he felt 'A' was making the company look bad, so 'A' had a target on his back. Nothing 'A' did was good enough and, for example, 'J' had the source control czars review 'A's code to 'review' (aka = find anything wrong). Not sorting the 'using' statements, and extra line after the closing }, petty things like that. For those curious, orders followed+carried out by+led by 'T' in my previous rant.
As time went on and 'T' finding more and more 'wrong' with A's code, 'J' put A on disciplinary probation. 'A' had 90 days to turn himself around, or else.
A bright spot was 'A' was working on a Delphi -> C# conversion, so a lot of the code would be green-field development and by simply following the "standards", 'A' would be fine...so he thought.
About 2 weeks into the probation, 'A' was called into the J's office and berated because the conversion project was behind schedule, and if he didn't get the project back on track, 'A' wouldn't make it 30 days. I sat behind 'A' and he unloaded on me.
<'A' slams his phone on his desk>
Me: "Whoa...whats up?"
A: "Dude, I fucking hate this place, did you hear what they did?"
<I said no, then I think we spent an hour talking about it>
Me: "That all sucks. Don't worry about the code. Nobody cares what T thinks. Its not even your fault the project is behind, the DBAs are tasked with upgrades and it's not like anyone is waiting on you. It'll get done when it's done. Sounds like a witch hunt, what did you do? Be honest."
A: "Well, um...I kinda called out J, T, and those other assholes on facebook. I was drunk, pissed, and ...well...here we are."
Me: "Geez, what a bunch of whiney snowflakes. Keep your head down and you'll get thru it, or don't. Its not like you couldn't find another job tomorrow."
A: "This is my first job out of college and I don't want to disappoint my dad by quitting. I don't even know what I'm supposed to be doing. All J told me was to get better. What the fuk does that even mean?"
Me: "He didn't give you any goals? Crap, for someone who is a stickler for the rules, that's low, even for J."
Fast forward 2 weeks, I was attending MS TechEd and I was with another dev mgr, R.
R: "Did you hear? We had to let 'A' go today."
Me: "What the hell? Why?"
R: "He couldn't cut it, so we had to let him go."
Me: "Cut what? What did he do, specifically?"
R: "I don't know, 'A' was on probation, I guess he didn't meet the goals."
Me: "You guess? We fire a developer working on a major upgrade and you guess? What were these so-called goals?"
R: "Whoa...you're getting a little fire up. I don't know, maybe not adhering to coding standards, not meeting deadlines?"
Me: "OMG...we fire people for not forming code? Are you serious!?"
R: "Oh...yea...that does sound odd when you put it that way. I wish I'd talk to you before we left on this trip"
Me: "What?! You knew they were firing him *before* we left? How long did you know this was happening?"
R: "Honestly, for a while. 'A' really wasn't a team player."
Me: "That's dirty, the whole thing is dirty. We've done some shitty things to people, but this is low, even for J. The probation process is meant to improve, not be used as a witch hunt. I don't like that you stood around and let it happen. You know better."
R: "Yea, you're right, but doesn't change anything. J wanted to do it while most of us were at the conference in case 'A' caused a scene."
Me: "THAT MAKES IT WORSE! 'A' was blindsided and you knew it. He had no one there that could defend him or anything."
R: "Crap, crap, crap...oh crap...jeez...J had this planned all along...crap....there is nothing I can do no...its too late."
Me: "Yes there is. If 'A' comes to you for a letter of recommendation, you write one. If someone calls for reference, you give him a good one."
R: "Yea..yea...crap...I feel like shit...I need to go back to the room and lie down."
As the sun sets, it rises again. Within a couple of weeks, 'A' had another job at a local university. Within a year, he was the department manager, and now he is a vice president (last time I checked) of a college in Kansas City, MO.10 -
This codebase reminds me of a large, rotting, barely-alive dromedary. Parts of it function quite well, but large swaths of it are necrotic, foul-smelling, and even rotted away. Were it healthy, it would still exude a terrible stench, and its temperament would easily match: If you managed to get near enough, it would spit and try to bite you.
Swaths of code are commented out -- entire classes simply don't exist anymore, and the ghosts of several-year-old methods still linger. Despite this, large and deprecated (yet uncommented) sections of the application depend on those undefined classes/methods. Navigating the codebase is akin to walking through a minefield: if you reference the wrong method on the wrong object... fatal exception. And being very new to this project, I have no idea what's live and what isn't.
The naming scheme doesn't help, either: it's impossible to know what's still functional without asking because nothing's marked. Instead, I've been working backwards from multiple points to try to find code paths between objects/events. I'm rarely successful.
Not only can I not tell what's live code and what's interactive death, the code itself is messy and awful. Don't get me wrong: it's solid. There's virtually no way to break it. But trying to understand it ... I feel like I'm looking at a huge, sprawling MC Escher landscape through a microscope. (No exaggeration: a magnifying glass would show a larger view that included paradoxes / dubious structures, and these are not readily apparent to me.)
It's also rife with bad practices. Terrible naming choices consisting of arbitrarily-placed acronyms, bad word choices, and simply inconsistent naming (hash vs hsh vs hs vs h). The indentation is a mix of spaces and tabs. There's magic numbers galore, and variable re-use -- not just local scope, but public methods on objects as well. I've also seen countless assignments within conditionals, and these are apparently intentional! The reasoning: to ensure the code only runs with non-falsey values. While that would indeed work, an early return/next is much clearer, and reduces indentation. It's just. reading through this makes me cringe or literally throw my hands up in frustration and exasperation.
Honestly though, I know why the code is so terrible, and I understand:
The architect/sole dev was new to coding -- I have 5-7 times his current experience -- and the project scope expanded significantly and extremely quickly, and also broke all of its foundation rules. Non-developers also dictated architecture, creating further mess. It's the stuff of nightmares. Looking at what he was able to accomplish, though, I'm impressed. Horrified at the details, but impressed with the whole.
This project is the epitome of "I wrote it quickly and just made it work."
Fortunately, he and I both agree that a rewrite is in order. but at 76k lines (without styling or configuration), it's quite the undertaking.
------
Amusing: after running the codebase through `wc`, it apparently sums to half the word count of "War and Peace"15 -
I love group projects.
There is no greater feeling than, after you set up the repository with the first code files, your team mate changes the indentation and commenting style in every file to his own style without even discussing the general coding style rules in the group first.
Fucking awesome start.
Go eat a sack of unwashed hobo balls you filthy cunt.3 -
I've seen several rants about dumb/useless teachers, college and the CS degree studies; today is a good day to vent out some "old" memories.
Around two semesters ago I enrolled in a Database seminar with this guy, a tall geek from the 80's with a squeaky voice, so squeaky mice could had an aneurysm if they listened to him.
Either way this guy was a mess, he said he was an awesome coder, that we were still "peasants" when it came to coding, that relational databases had nothing on him since he was an awesome freelancer and did databases every day, that we had to redo the programming course with him and with his shitty, pulled out of the ass own C++ style guide with over 64 different redacted rules.
He gave us sample code of "how it should be done" in Java...it ain't my favorite language but fuck me a fucking donkey could have written better code with his ass!! He even rewrote Java's standard input function and made it highly inefficient. He still wrote in a structural paradigm in OOP languages! And he dared to make this code reviews were he would proyect someone's code and mock it in front of the class as he took off points, sometimes going to the negative realm (3,2,1,0,-1...)
But you know what's shittier? That he actually didn't even attend, 90% of the time, it was literally this:
> Good morning class
> Checks attendance. . .
> I'll be back, I'm going to check in...
> 1 hour 45 minutes later (class was 2 hrs long) - comes back
> do you have any doubts?
> O.o no...? I'm ok.
> We're done
Not only that, he scheduled from 4 to 17 homeworks throughout the week, I did the math, that was around 354 files from everyone; of course he didn't check them, other students from higher semesters did and they gained each point taken from students making students from lower semesters get the short end of the stick.
How did I pass? He didn't understood my code or database schema and he knew he couldn't fail me as he had no ground to stand on.
Thanks for listening, if you got to the end of this long ass post and had a similar experience I'd love to read it.13 -
To become a programmer, you must at least once
1) sacrifice your weekend
2) sacrifice your sleep on the weekend
3) have an experience with non stop coding at least 3 days, working at home is an exception
this rule applies when you get a job working as a wageslave, rushing on a tight deadline
its almost 2 am here, and im at the office pushing and fixing bug codes for beta launch for tomorrow. this is all because of this one outsourcing company my boss hired that does the backend api keeps on changing and delaying stuff.
i guess im just fine with this, knowing that i have fulfilled all 3 rules before.6 -
Let's invent a new coding paradigm. Its goal is to make code as it naturally really should be: Ugly af
See the current list of rules in the description14 -
Recently i had a small talk with someone working in the banking sector . When that person acknowledged what i do for a living , she started to be a little bit passive-agressive .
Her:"You know someday , sooner than later , a guy like you is going to create something like artificial intelligence to replace all the devs in the world . Ha ha ha ! And your golden age is going to end . "
Me:"So you think this guy is going to create a smart program , software or platform , that will create software from what ? "
Her:" We will write the specs directly in the program and we will get the software after !"
Me:"And what if the specs are impossible, from logical point of view. "
Her:" Well there will be some rules and you will need to respect them !"
Me: "And people need to learn the logic of these rules?"
Her: " Yes a little bit of training!"
Me:" We already have that !"
Her: " We have ?! "
Me: " Is called .... CODING !"
Her: **silence **
(I remembered the burn from a comic -- forgot the name-- but GOD it felt good !)
Why some people hate us ?4 -
The ground rules for developers: ABC
Always
Be
Coding
// stole this line from my friend Tim -> credits to him! ;p -
Who thought Lua was a good idea for extending gameplay functionality??
It's weakly typed, has no OOP functionality and no namespace rules. It has no interesting data structures and tables are a goddamn mystery. Somebody made the simplest language they could and now everybody who touches it is given the broadest possible tools to shoot themselves in the foot.
Lua's ease of embedding into C++ code is a fool's paradise. Warcraft 3's JASS scripting language had way more structure and produced much better games, whilst being much simpler to work with than Lua.
All the academics describing metatables as 'powerful extensionality' and a fill-in for OOP are digging the hole deeper. Using tables to implement classes doesn't work easily outside school. Hiding a self:reference to a function inside of syntactic sugar is just insanity.
Nobody expects to write a triple-A game in lua, but they are happy to fob it off to kids learning to program. WoW made the right choice limiting it to UI extensions.
Fighting the language so you can try and understand a poorly documented game engine and implement gameplay features as the dev's intend for 'modders', is just beyond the pale. It's very difficult to figure out what the standard for extending functionality is, when everybody is making it up as they go along and you don't have a strongly-typed and structured language to make it obvious what the devs intended.
If you want to give your players a coding sandbox, make the scripting language yourself like JASS. It will be way better fit for purpose, way easier to limit for security and to guarantee reasonable performance. Your players get a sane environment to work in and you just might get the next DOTA.
Repeatedly shooting yourself in the foot on invisible syntax errors and an incredibly broad language is wasted suffering for kids that could be learning the programming concepts that cross all languages way quicker and with way more satisfying results.
Lua is hot garbage for it's most popular application, I really don't get it. Just stop!24 -
In a meeting yesterday working through our WebAPI coding standards, starting from File -> New project..etc..etc.. and ironing out some of the left-or-right decisions so we can have a consistent coding style, working in a meeting room with an overhead projector and sharing keyboard around with one another.
Then we hit the routing 'rules' in the WebApiConfig, "api/{controller}/{id}"…
DevMgr: "Do we need the 'api' prefix? It seems redundant."
Ralph: "Yes it's needed. Prefixing the controllers with 'api' is industry best practice. Otherwise, how is anyone to know it's a web api"
Prancer: "Yea, it's part of the REST standard."
Me: "I don't think so. That is only part of the Asp.Net routing rule. We can put anything we want or take anything out."
DevMgr: "Yea, it looks silly. All the new services are going to be business process specific."
Ralph: "That's how everyone does it. It's kind of the point of why REST services are called WebApi"
Prancer: "What's the point of doing any of this work if we're not going to follow industry standards."
Me: "I understand if the service is part of larger web site, but we're developing standalone services. Prefixing routes with 'api' is redundant. I mean who are these 'everyone' you're talking about?"
<ralph rolls his eyes>
Ralph: "Lets see …uhhh… Netflix?. They're kinda a big deal."
Me: "Like I said, it's an integral part of their site and the services they provide. That's fine. I'm talking about the 12 other 3rd party services we integrate with. None of them have 'api' on any of their routes."
Prancer: "We're talking about serious web services."
Me: "Last time I checked, UPS is a big and serious service."
Ralph: "Their services are a fracking joke" – he didn't say fracking.
Me: "Our payroll system, our billing system, billion dollar companies, didn't have '/api' prefix anywhere. Heck, even that free faxing service we used for a while was a dead-simple routing path."
<I take the keyboard away from Ralph, remove the 'api' from the route.>
Me: "There. Done. Now, lets talk about error handling.."
Rest of the meeting Ralph and Prancer don't say much of anything, arms crossed…I swear Ralph looked like he was going to cry.
This morning I catch my boss…
Me: "What did you think of the meeting? I thought Ralph was going to take a swing at me when I took the keyboard away from him."
DevMgr: "Oh yes…I almost laughed out loud….blows my freaking mind how worked up people get about crap that doesn't matter. Api..or not…who the frack cares. Just make it consistent"
Me: "Exactly…I didn't care either way, but I enjoyed calling out that nonsense."
DevMgr: "Yes..waaay too much."
If I didn't call them on their BS and the 'standard' allowed to continue, I can bet my paycheck when the subject comes up in a few months (another mgr asks 'isn't this api prefix redundant?') Ralph and Prancer will be the first to say "Yea, its stupid. We fought really hard to remove it from the standard...its not our fault...its <insert scapegoat> fault." -
The more I'm on here the more I remember all the shit I have had to deal with in the past.
Anyway, lets rant! I just moved cities after college to be closer to my family, I didnt have any work lined up at that stage but started job hunting the moment I was settled in, I did some freelance for smaller companies to stay afloat.
Eventually I got a job at this agency startup where "SEO" was there main focus, still very inexperienced they put me on frontend and data capturing but will teach me how to code using their systems in due time. At this stage I was getting paid minimum wage, but I was doing minimum work and it wasnt that bad.
A new investor bought 49% of the company and immediately moved into the office space to focus more on marketing (He was one of those scaly marketing guys that will sell you babies if he could get his hands on enough to make a profit).
This is where everything starts going to shit. He hires a bunch of "SEO Gurus", fills up the small office with people like sardines squished together. Development was still our main money maker at this stage, so there where 3 new more senior developers at this stage and I started learning a lot really fast.
Here are some of the issues we had to deal with:
1. Incentives - Great more money, haha! No, No, you where 5 minutes late so you only get half of the promised amount.
2. For every minute you are late we will deduct it from you paycheck (Did I mention I was getting paid minimum wage).
3. If you take a smoke break we will dock it from your pay.
4. Free gym membership to the gym downstairs, but you can only go once a week during your lunch.
5. No pay raises if you cant prove your worth on paper.
He on purposely made up shitty rules and regulations to keep us down and make as much profit as he could.
Here are some shitty stuff he has done:
1. We arent getting a 13th check this year because the company didnt make a big profit - while standing next to his brand new BMW.
2. Made changes over FTP on clients work because we where too slow to get to it, than blames me for it because its broken the next day and wants to give me a written warning for not resolving the issue Immediately. They went as far as wanting to fire me for this, gave me 1 day notice for meeting and that I can bring a lawyer to represent me (1 day notice is illegal, you need 5 days where I am from), so I brought a lawyer since my mom was a lawyer. They freaked the fuck out and started harassing me about this a week later.
3. Would have meetings all the time about how much money the company is making, but wont be raising our pay since no one has proven they are worth it yet.
4. Would full on yell at employees infront of the entire office if they accidentally made an mistake on a clients project.
One one occasion I took a week off for holiday, my coworker contacted me to ask a question and I answered that I will handle it when I am back the following week. Withing 2 hours my other boss phones me in a rage, "he is coming to fetch the company laptop from my house in 5 minutes, he will let me know when he arrives. Gives me no time to talk at all and hangs up - I have figured out what has happened by now so when he showed up he has this long speech about abandonment, and trust and loyalty to the company. So I pass him my laptop once he shut up and said: "You do know I am on holiday leave which you approved, right?", he goes even more silent and passes me back my laptop without saying anything, and drives off.
While the above was happening Douche manager back at the office has a rage as well and calls the whole office (25 people) to a meeting talking about how I abandoned the company and how disgraceful that is.
Those are the shitty experiences I can remember, there where many more like this. All of the above eventually led to me going into a deep depression and having panic attacks weekly, from being overworked or scared to step out of line. Its also the reason I almost stopped coding forever at that stage. I worked there for 2.5 years with the abuse.
I left 2 weeks after the last shit show, I am ok now and have my anxiety and depression well under control if not almost gone completely.
Ran into Douche Manager a few months ago after 9 years, the company got bought out and the first person they fired was him. LOL! He now has his own agency and is looking for Developers (They are hard to find he says), little does he know I spread his name far and wide to all and every Dev I knew and didnt know to avoid working for him at all costs. Seems like word of mouth still works in this digital age.
Thanks for reading this far!5 -
I've been sort of lost after New Year's...
Last few years, my main goal was just to learn stuff to pass technical interviews. I also did a lot of personal dev in C#... and played with the js, python, and when a bit of c++.
But this year I kinda feel sorta of "ah screw it". Interviews never work out, haven't for years, what's the point in even trying... I get paid enough though the work is sort boring and team sort of feels like the Wild West, no rules, code reviews, processes...
But ¯\_(ツ)_/¯
Feels like coding has lost its place at the top now. The future is all cloud, machine learning, big data/real time analytics but feels like these are out of reach for just 1 guy...
And well doesn't seem like anyone is going to give me a job because I'm not a good fit or have enough experience in these areas...
Sorta lost now but guess this is what a sudden thought leads to...
Oh and maybe just with tech in general. It feels this year I'm just not as interested as I was before... Spent a lot of time binge watching movies and stuff instead....4 -
Observation rather than a rant.
Some of the best, most experienced devs I've ever had the pleasure of meeting and working with have invariably all been the most humble and least opinionated. Mention (x language that might commonly draw disdain) and you don't hear boos and hisses and jokes being thrown around, you hear considered, succinct observations about how, if they were to work with this language, there'd be various coding styles and rules that they'd suggest working to in order to avoid some common pitfalls and frustrations.
Mention a language or framework that they know little about, or heck, they know quite a *lot* about but in which they wouldn't consider themselves an expert, and they're the first to suggest drafting in help. They're more than happy to listen to bring themselves up to speed, even if that "outside help" comes from someone considerably younger and less experienced than them.
This has particularly come to mind as of late as I've found myself working with both ends of the spectrum, but it's been my experience for many years now. Have many others had the same experience?2 -
<> Rant
An interesting perspective considering how much of their code could literally mean life or death.
http://fossbytes.com/nasa-coding-pr...2 -
Around 6 years ago I started at this company. I was really excited, I read all their docs then I started coding. At every code review, I noticed something was a little off. I seemed to get lots of weird nitpicking about code styling. It was strange, I was using a linter, I read their rules but basically every review was filled with random comments. About 3 months in I noticed, "oh! there aren't actually any rules, people are debating them in my code reviews!" A few more reviews went by and then I commented, "ya I'm not doing any of this, code review isn't a place to have philosophical debates." All hell broke loose! I got a few pissed off developers, and I said, listen I don't care what the rules are, you just need to clearly fucking articulate them and if you want to introduce one, I don't care about that either just don't do it in the middle of my review. I pissed off 1 dev real bad. Me and this dev were working together, the QA person on the team stood up and said "hey! you know what I love about your code reviews?!" The other dev and myself looked at each other kind of nervously, "I love that you're both right, these are all problems!"... 1 year later (and until now) me and the other dev are still friends. Leave it to QA to properly identify the bug.
-
The worst part of being a dev? Working in teams.
And I don't mean that in the "I'm the best ninja code wizard in the whole world and you're all holding me back" kinda way. I'm thinking more in the lines of someone who has to deal with that kind of attitude on a daily basis. As someone who recently was put in a leading position in a dev team, this is by far one of the worst experiences that came with it.
Some examples?
- One dev completely changed the naming scheme for variables in a class he worked on for one. single. bug fix. His reason? He just didn't like it!
- Another one noticed that data he was supplied with was not in the specified format. Instead of flagging this with the project leads, he just rewrote his parser to fit the data. A couple of weeks later the supplier noticed the error, fixed the format and suddenly everyone wondered why the software failed processing the data.
- Or that one senior dev, that just refuses to accept changes because "it was always done like this and it worked" No, it didn't. That's why it was changed!
Once a dev team reaches a certain size, people need to realize that stuff like coding rules and process guidelines are not there to annoy them but to help the whole team work as efficient as possible. I don't care how good a programmer you are, if you can't check your ego you don't belong in any kind of team-oriented development project! -
I have made a decision that I really want to document for myself on DevRant, under the comment section of this post.
I'm turning off all social media access after 7 PM for 2 weeks, just to experiment on how this pans out. This includes any online shopping apps and other apps like 9GAG, YouTube, Insta, Facebook, WhatsApp, Discord and DevRant.
Why am I doing this? Because I feel like I'm wasting too much of my time on these apps and enforcing rules on myself would make me bored AF and come up with creative ways to spend my time. Maybe I'll pick up the guitar again, maybe I'll learn new coding topics and create tutorial videos about them idk. Also boredom can also lead to proper sleeping times, I think.
My hands are already shaking thinking about tomorrow when my mind will take the impact for the first time. Wish me luck.4 -
Would I be going too far out of my role as a developer if I write a coding standards/development practices/procedures guideline for the whole team dictating a set of rules everyone needs to follow? Basically telling people how they should be doing everything.
I'm senior developer but not the only one and also the youngest. No one has to follow it but I would plan to present it to my boss and his boss. I feel like I would come across (if not already) like "I'm better/more experienced than all of you, so you should do what I say because the way things are now isn't working and will only get worse".5 -
I have been coding for 2 years, 1 month at a company
Teammate1 has been coding for a year, a genius, learns everything in a week, knows all major js frameworks, refuses to adhere to any rules except no rebase on pushed (luckily)
Teammate2 has been coding for a year, learns slowly, very reliable, has no common sense at all
Teammate3 the designer, really has the skills but always busy, never has time for a meeting, gets very mad if it looks different from her original plan.
We're all college students short of money so they all want to work for clients. I don't have the leadership skills / charisma for this.1 -
!rant Scary Stuff...
Not sure what are the rules on sharing external content, but this story freaked me out and I wanted to share with you.
Pretty scary stuff, maybe something like this is already in the wild? Especially with the NSA and other power groups trying to exploit vulnerabilities and infiltrate everything...
Found it originally on the rational subreddit. Here is the link:
https://teamten.com/lawrence/...
Spoiler alert:
It's about the The Ken Thompson Hack:
"Ken describes how he injected a virus into a compiler. Not only did his compiler know it was compiling the login function and inject a backdoor, but it also knew when it was compiling itself and injected the backdoor generator into the compiler it was creating. The source code for the compiler thereafter contains no evidence of either virus."
How to detect/deal with something like this? better no to think too much about this. -
I actually do have something to rant about!
The people I've decided to work with... are complete and utter fools. They don't want to keep updated with new practices and merely talk about awesome stuff... Let me elaborate.
The first person is someone I spent really many hours just writing with, I've helped him build on his personal project, which has now become our project (which I've done most of the work on now). He keeps writing about things that aren't fucking relevant for the current task - furthermore, he completely refuses to use any type of collaboration software in order to keep an eye on tasks we want to, and already have completed. He likes Git but doesn't provide helpful git messages, sometimes even stuff like 'forgot this'.. never any freaking description of what's actually been done! Not even after agreeing it should be done, he just doesn't understand what a helpful message is apparently.
I might be a bit special regarding wanting to follow practices, but how the fuck do you make any amount of money by being so ignorant!? He was a WP 'developer' a while ago, and has since changed to JS and are using a framework which he doesn't understand - he can't even remember what the documentation states.
So why do I 'work' with him? He knows a lot of phrases he's read in books, blogs, and the likes. That makes him really inspirational and positive and he really wants to become successful(like me!). But over the last few months, I've realized how bad he is at programming - he doesn't know basic programming concepts and have a hard time applying any sort of knowledge to his programming. If it's not pre-built, he can't use it, not even if the documentation has specific examples. He barely grasps the concept of binding data to a variable. He wouldn't know how to access it again though, it's just for the sake of binding it to some existing functionality.
The other guy really likes his old style. He hired me to maintain some application. Which has turned out to be a hell of several small tasks he needs to be finished or reworked - with no clear definition of the task. Most of the time, he'll do some initial changes, show the changes to me, vaguely explain what they do (not what he's trying to achieve) and first THEN ask me to do these changes, most often in some files that don't exist (he uses the wrong filenames so I have to guess/ask where the changes need to be made).
To top it all off, old syntax is used and don't get me started on the spaces+tabs for indenting lines... Because I've already added a great ESLint+Prettier conf and everything should be nicely formatted according to pre-defined rules.
But he won't take the time to install some plugins in his editor and I'm left with sometimes buggy, badly formatted code (the code I have to make changes with!) - that's while he several times have agreed that I can do what I want and that he even questions his own ways when looking at my changes which he calls by-the-book.
So why the motherfucking fuck do I keep working with him?
Well, he keeps paying so that's really nice - I haven't been able to properly execute the bigger tasks(which pays more) though, due to a lack of information or some badly written code I couldn't quite figure out how works (at a glance).
He also keeps talking about these new projects he wants to make.. he even has these freaking papers with descriptions and data-structures and we converse really good about these new awesome projects. He also likes cryptocurrencies(which is an interest of mine he has inflamed quite a bit) and lastly, he seems like a genuinely nice guy who I'd like to spend some time with even besides coding and work.
So now I stand here - stuck with people that make me feel like a demi-god or something because I use a git style-guide and ESLint+Prettier with the Airbnb style-guide.
What should I do? I'd really like some remote work and have a desperate need for money... So much so, that I might even have to pick up a fulltime job, in order to save my sorry ass - all because I like speaking with people who just like the thought of programming...
I'm actually quite lonely with my thoughts and they are the two only people I've had some sort of relationship with - who has an invested interest in programming/dev... I really like that, despite having to follow their thoughts as they surely can't follow mine.
Please be my friend or give me some paid work lol.
Also, I've been moving the last couple weeks - those weeks has been the most stressful of my life and have not contributed to my overall wellbeing and relations with people... It's good to be back at the computer again and be reading some devRant though!1 -
TL;DR - Coding standards are a shit practice IMO.
What we don't talk about enough among software engineers, is the artistic aspect of the craft of writing code.
For example, consider your client saying this to you.
"Build me a web app where a user will login. They will have a wallet to purchase subscriptions of 3 products of different prices."
Give these two statements to say, 10 devs and see how each of them will come up with their own vision of the problem and how they would implement it in their own ways.
So now you are working on a big team with say 30 people and you have a big project to work on. Different members of the team bring different styles of code to you to review and if, the Team Leader is as incompetent as mine is, they would find it troubling to understand the pull requests.
So what do you do in these scenarios? Implement Coding standards !!! They take away the artistic vision of the devs and tries to force them to follow rules like sheep.
Also the company doesn't give two shits about the code standards cuz, as long as they have working code that makes them money, they wouldn't care how the code is written.
Thoughts ?8 -
Good code is a lie imho.
When you see a project as code, there are 3 variables in most cases:
- time
- people / human resources
- rules
Every variable plays a certain role in how the code (project) evolves.
Time - two different forms: when certain parts of code are either changed in a high frequency or a very low frequency, it's a bad omen.
Too high - somehow this area seems to be relentless. Be it features, regressions or bugs - it takes usually in larger code bases 3 - 4 weeks till all code pathes were triggered.
Too low - it can be a good sign. But it should be on the radar imho. Code that never changes should be reviewed at an - depending on size of codebase - max. yearly audit. Git / VCS is very helpful here.
Why? Mostly because the chances are very high that the code was once written for a completely different requirement set. Hence the audit - check if this code still is doing the right job or if you have a ticking time bomb that needs to be defused.
People
If a project has only person working on it, it most certainly isn't verified by another person. Meaning that only one person worked on it - I'd say it's pretty bad to bad, as no discussion / review / verification was done. The author did the best he / she could do, but maybe another person would have had an better idea?
Too many people working on one thing is only bad when there are no rules ;)
Rules. There are two different kind of rules.
Styling / Organisation / Dokumentation - everything that has not much to do with coding itself. These should be enforced at a certain point, otherwise the code will become a hot glued mess noone wants to work on.
Coding itself. This is a very critical thing.
Do: Forbid things that are known to be problematic in the programming language itself. Eg. usage of variables in variables, reflection, deprecated features.
Do: Define a feature set for each language. Feature set not meaning every feature you want to use! Rather a fixed minimum version every developer must use and - in case of library / module / plugin support - which additional extras are supported.
Every extra costs. Most developers don't want to realize this... And a code base that evolves over time should have minimal dependencies. Every new version of an extra can have bugs, breakages, incompabilties and so on.
Don't: don't specify a way of coding. Most coding guidelines are horrific copy pastures from some books some smart people wrote who have no fucking clue what you're doing and why.
If you don't know how to operate on people, standing in an OR and doing what a book told you to do would end in dead person pretty sure. Same for code.
Learn from mistakes and experience, respect knowledge from other persons, but always reflect on wether this makes sense at this specific area of code.
There are very few things which are applicable to a large codebase on a global level. Even DRY / SOLID and what ever you can come up with can be at a certain point completely wrong.
Good code is a lie - because it can only exist at a certain point of time.
A codebase should be a living thing - when certain parts rot, other parts will be affected too.
The reason for the length of the comment was to give some hints on what my principles are that code stays in an "okayish" state, but good is a very rare state -
#Story time.
Been working on a project for 2 months with Colleague "Jim" doing the code reviews. Project is finished in a stable form and can be extended if needed. Then my other colleague/boss "Mo" decided that we need to do a refactor. Fast forward a bit and the conclusion is "Mo" and "Jim" are going to discuss every step with me. And we started a new project that should do the same as the project I just finished
Here some facts:
Every day a meeting/ code review / discussion.
Decisions they make I do not agree with.
I need to redo my work multiple times.
Now this does make me look like a toddler that needs supervision which is not the case.
They want something future proof and something that fits his new coding standard "Mo". and certain things I do agree with and is clearly the better architecture. however somethings are just stupid, time wasting, making it worse. I'm getting so frustrated by the fact that billion dollar companies have clear coding standards that work. and are correct. and this company decided to do their own thing of stupid rules!
- shorten variables
- Keep lines under 90char
- put multiple things in 1 file
- Keep function names short
and many more of removing stuff and let you guess stuff..
I just... *sigh* get so tired of this shit.
*names are randomly chosen2 -
People who use automatic code beautifiers and standards fixing scripts. 😠
Agreeing on a coding style with your team is important. But I really don't feel like reviewing the new guy's PRs if it's a thousand style adjustments and a tiny bugfix.
If you disagree with the current style, communicate about it so everyone can discuss and adopt new rules, and fucking fix the whole codebase in a separate PR.1 -
Once upon a time I spent a week writing down a "Coding Conventions" document, setting up linters for JavaScript & CSS based on those rules and put the call to the linter in our gulp build task, only to figure out the next day it was commented out by some guy because "the build task was throwing errors" due to his shitty coding style...3
-
Rant and opinions wanted. Its a long one.
I have been working on a project for a month and a half. For the first week I was requesting designs that I got about 2 of out of 15. For the next week and a half the designer was on holiday so I couldn't do anything but delivered a few more designs once he got back.
This takes us 2 weeks in already. I have other things to do as well so at the same time I work on support tickets and some bespoke development coming in.
I get given 2 or 3 more designs and can't get anything else out of the designer after waiting a week so I have to design everything myself as I go and build it. Something I have never done before.
We are now 3 and a half weeks in. My boss randomly tells my pm it needs to be demo ready the next day. I work furiously to hack something together. It works but key functionality is missing.
I move house and work from home for a week and a half. I do my best but the project is full of bugs and the CSS is horrible because I didn't know what I was making at any stage. It is therefore CSS rules repeated in IDs everywhere.
My colleagues join me on the project because my boss has decided to try and sell it tomorrow.
They run through it and find all the bugs left from me working furiously to get things done quickly. Things like no search pagination and missing validation.
My boss is now pisses at me because the project is not finished, my colleagues are now all working on it. Throughout it all he knew the designer was not delivering me anything and that I was struggling.
Am I in the wrong for writing shit code that came about because I was coding with no idea of what the finished project should look like? Is he in the wrong for dumping this on me and just letting me get on with it even though he knew there were no designs?
Btw I am just finishing a 1 year internship and before this have never done web dev before.
Discuss.7 -
So I am in a computer science class and we had a project. I was in a group of 3 people and since majority rules we were to make a game. However they have never ever done any ui work ever. So I was in charge of coding the entire game. And since they did not know how to use git we had to use Google drive to transfer code. But ling sorry short I switched on them and got an A and they had to redo it on their own.
-
I've got a question about PHP arrays as I try to update my coding skills.
The problem I'm trying to solve is converting one vendor's CSV format to another vendor's format for a daily processing job.
I have a multi-row CSV file (number of rows changes daily but fields (15) do not). My PHP converts it to an array with fgetcsv so I can then copy its rows and data to a different blank target array with the same number of rows as the source array, but a different field order and number of fields (55) than the source array.
From here I will apply certain conditional business rules to copy data, field-by-field, from the source array fields to the target array fields, then output the target array to a CSV.
I'm stuck trying to figure out how to create (initialize) that target array so that it exists when I loop through the source array and copy values over to the target array.
Can anyone nudge me in the right direction on how to dynamically (loop?) create that multi-dimensional target array of n rows and 55 columns? I looked at http://w3schools.com/php/... for guidance but can't figure out how to structure the loop to make just one array of n rows and 55 columns, and not "n" arrays of n rows and 55 columns.5 -
just feeling satisfied being able to program. even if it is just a small vba script again. but it accomplishes a feature in urgent need. best point is doing it within paid time.
-
So I have to mimic some codes that I was not given any explanation because it's from a team that is, like, the only one that does not like the others and we have to work with them.
All the teams do codes with similar coding rules
and then there is this team. Weirdly enough, they are the most strict on their rules. -
ok I think a lot of my frustrations in rust stemmed from assuming struts are like objects and therefore can contain conceptually similar things in them that in your head would seem like the same "object", and that methods should be derived therefore and such
but in reality in rust struts are for conforming to borrowing rules and it doesn't care about your conceptual organization I guess. if you try to organize things like the structs as objects then you get borrowing issues on some occasions and then I would get stuck trying to figure out how to put a method on a struct when I need to drop borrowing to do some task and whatever
the solution is to throw out your human notions of organization
so I guess it's more bare-bones to how the machine thinks about stuff (well how the borrowing is coded in the language) and doesn't care how a human does (like notions like object orientated design)
this is odd to me in a modern language but at least I've crawled out of my brain damage with enough drug-use now that I can have such epiphanies I guess. I feel so slow. I swear this should've been massively obvious and easy to grasp in like a few days before for me. rip
instead it was 2-3 years of ~5 months of actually deep coding 😒
also I can blame people saying rust can do everything, like that you can do object orientated design in it. they're being dishonest and it's harmful to the learning process if you're acting like that 😩. stop being a cult, you'll literally be more popular4 -
So it's a little bit annoying when your team cant follow simple rules and conventions to enhance the work, I mean, in a reunion we discuss what will be our coding conventions and have and agreement, but now nobody follows it and Ive to keep writing and pushing them to follow rules they created. The best thing is the leader agrees with him saying "we don't have time for following code conventions" but when the code has no comments, no docs at all, the names are absolutely unpredictable and stupid bugs start happening he calls a meeting "to discuss our problems" I mean, for good, the last time we did the same thing
-
I'm have an English test this week, and I need help! What are some important norms, rules or standards when it comes to software development/coding/programming/whatever? The task is to write about such norms and social construct of your future profession, and how important they are.
-
Rules of lazyness
1) legacy code is a creative way of coding
2) when something doesnt appear on the first google page, it doesnt exist
3) Nout you are the Problem, ur boss is -
Why on earth would anyone agree to work in a company that sends your code to some other team to check it then you get stupid comments like yes it works great but make the code look like the code in that system we made 10 years ago so everything can look the same. Easier for maintenance.
That is not how programming works ...
Code has an essence to it...
You cant just make me break the ...
Honestly id rather work for less money and never have my code questioned on the bases that “it should look like...”1 -
Yo, DevRat! Python is basically the rockstar of programming languages. Here's why it's so dope:
1. **Readability Rules**: Python's code is like super neat handwriting; you don't need a decoder ring. Forget those curly braces and semicolons – Python uses indents to keep things tidy.
2. **Zen Vibes**: Python has its own philosophy called "The Zen of Python." It's like Python's personal horoscope, telling you to keep it simple and readable. Can't argue with cosmic coding wisdom, right?
3. **Tools Galore**: Python's got this massive toolbox with tools for everything – web scraping, AI, web development, you name it. It's like a programming Swiss Army knife.
4. **Party with the Community**: Python peeps are like the coolest party crew. Stuck on a problem? Hit up Stack Overflow. Wanna hang out? GitHub's where it's at. PyCon? It's like the Woodstock of coding, man!
5. **All-in-One Language**: Python isn't a one-trick pony. You can code websites, automate stuff, do data science, make games, and even boss around robots. Talk about versatility!
6. **Learn It in Your Sleep**: Python's like that subject in school that's just a breeze. It's beginner-friendly, but it also scales up for the big stuff.
So, DevRat, Python's the way to go – it's like the coolest buddy in the coding world. Time to rock and code! 🚀🐍💻rant pythonbugs pythonwoes pythonlife python pythonprogramming codinginpython pythonfrustration pythoncode pythonrant pythoncommunity pythondev4