Details
-
AboutI have high expectations for my company for some reason
-
Skillsjava, js
-
LocationSeattle
Joined devRant on 2/7/2017
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
-
"You gave us bad code! We ran it and now production is DOWN! Join this bridgeline now and help us fix this!"
So, as the author of the code in question, I join the bridge... And what happens next, I will simply never forget.
First, a little backstory... Another team within our company needed some vendor client software installed and maintained across the enterprise. Multiple OSes (Linux, AIX, Solaris, HPUX, etc.), so packaging and consistent update methods were a a challenge. I wrote an entire set of utilities to install, update and generally maintain the software; intending all the time that this other team would eventually own the process and code. With this in mind, I wrote extensive documentation, and conducted a formal turnover / training season with the other team.
So, fast forward to when the other team now owns my code, has been trained on how to use it, including (perhaps most importantly) how to send out updates when the vendor released upgrades to the agent software.
Now, this other team had the responsibility of releasing their first update since I gave them the process. Very simple upgrade process, already fully automated. What could have gone so horribly wrong? Did something the vendor supplied break their client?
I asked for the log files from the upgrade process. They sent them, and they looked... wrong. Very, very wrong.
Did you run the code I gave you to do this update?
"Yes, your code is broken - fix it! Production is down! Rabble, rabble, rabble!"
So, I go into our code management tool and review the _actual_ script they ran. Sure enough, it is my code... But something is very wrong.
More than 2/3rds of my code... has been commented out. The code is "there"... but has been commented out so it is not being executed. WT-actual-F?!
I question this on the bridge line. Silence. I insist someone explain what is going on. Is this a joke? Is this some kind of work version of candid camera?
Finally someone breaks the silence and explains.
And this, my friends, is the part I will never forget.
"We wanted to look through your code before we ran the update. When we looked at it, there was some stuff we didn't understand, so we commented that stuff out."
You... you didn't... understand... my some of the code... so you... you didn't ask me about it... you didn't try to actually figure out what it did... you... commented it OUT?!
"Right, we figured it was better to only run the parts we understood... But now we ran it and everything is broken and you need to fix your code."
I cannot repeat the things I said next, even here on devRant. Let's just say that call did not go well.
So, lesson learned? If you don't know what some code does? Just comment that shit out. Then blame the original author when it doesn't work.
You just cannot make this kind of stuff up.105 -
"Programming is like writing a book... except if you miss a single comma on page 156 the whole thing makes no damn sense" - unknown15
-
This made my day (and is the 3rd freaking time I try to get this shared here. Definitely need more coffee)2
-
!rant. Sometimes, trolling your fam is a lot of fun.
Just today my sister asked me how to type the character ÷ on her keyboard. I told her to press : and the - key and then just move it like so.
: -
: -
: -
:-
÷
See? Ez pz. She actually tried it and just said 'i cant, it erases everything'. And then all of my other siblings kept ranting the same thing. I forgot we were in group chat. And now its full of : and - spams. And im just here laughing my ass out.11 -
Boss: I need to demo our product but it looks smaller on my laptop.
Me: That is because you have a 1920x1080 monitor and your laptop is 1280x800
Boss: Is that something you can fix?
Me: No you will need a new laptop, but the company has a sales laptop with that resolution.
Boss: No just get the company credit card and buy me one today!
*Bosses son hears*
Bosses Son: Here take the sales laptop
Boss: Will that be quick enough
Bosses Son: It has a 8 core i7 Processor, 16GB ram and a dedicated GPU
Boss: *looks at me confused*
Me: Your demoing a web browser, that will be more then ok. But were using chrome so 16GB of ram will be pushing it.
*me and bosses son laughs*
Boss: Can we upgrade it?17 -
My morning:
Me: Why did you just delete the failing unit tests?
Intern: I debugged it for a while and found one of the other developers broke it with his recent changes. I couldn't fix it.
Me: Did you let him know he broke it?
Intern: No.
Me: So you just deleted it and decided to pretend the feature isn't broken?
Intern: ... No ... I mean ... well you told us yesterday we needed to have all the tests passing.
(I NEED a stress ball people)30 -
FUCK MY BOSS WHEN HE SAYS HE DIDNT SEE ANY UI CHANGES AFTER NOT SLEEPING FOR 24HRS TO GET THE ENTIRE BACKEND REWRITE DONE. I WENT OVER THE ACTUAL CHANGES WITH HIM 100 FUCKING TIMES! I GET THIS MESSAGE AFTER FINALLY GRABBING SOME FOOD "What did you do, you said you were going to work on the site??" FUCKFUCKITYFUCKFUCK!!! FUCK YOUR MONEY AND YOUR JOB!!!! AND WHILE IM AT IT FUCK WEBDEV!!! 🖕FUCK YOU GUYS🖕 IM GOING HOME
/rant Thank God for devRant32 -
Developer (master's degree, -bleeping- smart guy, no kidding) was bragging on how he made a piece of code 3x faster (with the usual pinch that the original dev was incompetent) and spent nearly 6 weeks working on it (wrote his own parallel-foreach library because Microsoft's parallel library was "too slow").
I was the original dev and he didn't know I had my own performance counters where I broke down each stack (database access, network I/O, and the code logic).
Average time was around 5ms (yes milliseconds) and worst case was around 10 seconds. His '3x improvement' was based on the worst test case, which improved by about a second. Showed our boss my graph (laughed out loud, said 'WTF', other curse words) and the dev hasn't spoken to me in weeks (I say 'hi' in the hall and he keeps walking)
Take that master's degree and high IQ and shove it.17 -
Stupidest client ever:
I once had a client that requested me a new website, all went well and get paid.
After a month our two, he called and requested a change on basically all pages. I sent him a estimate of 2h, he approved, signed a contract and I've made the changes. He never paid me that changes. After 2 months ignoring my calls and emails I've rollback to the pre-changes website. He called me anything you can think off and that I would be sorry for done that... I was like... WTF??
- Pay me and I'll put the changes online.
He replied:
- you will be sorry. See you in court.
We went to court because of FUCKING 200€...
Court decision? The client was obligated to pay me the 200€ and all the court expenses...22 -
One day when I was about 8 years old my friend and I were in the library. We decided we wanted to try to make a baseball website because we both likes baseball (this was around 1998). We picked up a book on HTML and my dad took it out for us. My dad was also a programmer so he said he would help us learn. We went home that afternoon and made a little website!
I knew right then that I really enjoyed programming and creating things with code, but I realized I wanted to be a programmer in middle school and high school. One of my friends and I started building Flash games. To see if people were playing them, I added in a call to each game that hit a PHP script on our server. I'll never forget the days/weeks that one of our most popular games caused our sever to get hammered and our shared host said they were going to boot us.
It was an awesome feeling knowing people were enjoying these games that we worked really hard on, and that's one of the main reasons I always wanted to be coding/creating things that people enjoy using.22 -
How I've decided to answer the "can you hack" question from here on in...
"Can you show me how to hack this account please?"
"Sure, you'll need a hammer, a blow torch, chloroform, some pliers and couple of bottles of really pure vodka!"
"What the hell?!"
"Oh, it's so much quicker to just extract a password from a person, than it is to break into a system, I'm not exactly trained in inflicting pain on the human body, but I'm sure you'll be able to figure it out through trial and error, good luck!"15 -
Haven't slept in the last 72 hours, eaten in 24 and shaved or showered in 48+ .. but it is such a delight to move the project to production an hour before the deadline and two hours later to receive an angry phone call from the client because there is 'horrible bug' in the web system - the logo of his company wasn't showing, only the name ... the moron never sent us a logo to begin with, only a MS word document with the company's information and a compressed 200x80 logo in the bottom ...12
-
A few years ago when I was still an apple fan boy, friend of mine bragging me about how android is awesome, we were drinking some shots at our local pub and I was starting to get light headed. At one point he showed me so called "terminal emulator" app. I checked it out, and assumed it's an emulation, just like dosbox, so I decided to verify that "rm -rf *"... (the phone was rooted)
The phone shutdown within seconds, I couldn't stop laughing, while my friend was shock that his new phone was longer booting.
Luckily he managed to reflash the ROM. What can I learn from that experience?
1. Don't drink and sudo
2. Don't call your app an emulator if it's the real deal.34 -
Yesterday: Senior dev messages out a screenshot of someone using an extension method I wrote (he didn’t know I wrote it)..
SeniorDev: “OMG…that has to be the stupidest thing I ever saw.”
Me: “Stupid? Why?”
SeniorDev: “Why are they having to check the value from the database to see if it’s DBNull and if it is, return null. The database value is already null. So stupid.”
Me: “DBNull is not null, it has a value. When you call the .ToString, it returns an empty string.”
SeniorDev: ”No it doesn’t, it returns null.”
<oh no he didn’t….the smack down begins>
Me: “Really? Are you sure?”
SeniorDev: “Yes! And if the developer bothered to write any unit tests, he would have known.”
Me: “Unit tests? Why do you assume there aren’t any unit tests? Did you look?”
<at this moment, couple other devs take off their head phones and turn around>
SeniorDev:”Well…uh…I just assumed there aren’t because this is an obvious use case. If there was a test, it would have failed.”
Me: “Well, let’s take a look..”
<open up the test project…navigate to the specific use case>
Me: “Yep, there it is. DBNull.Value.ToString does not return a Null value.”
SeniorDev: “Huh? Must be a new feature of C#. Anyway, if the developers wrote their code correctly, they wouldn’t have to use those extension methods. It’s a mess.”
<trying really hard not drop the F-Bomb or two>
Me: “Couple of years ago the DBAs changed the data access standard so any nullable values would always default to null. So no empty strings, zeros, negative values to indicate a non-value. Downside was now the developers couldn’t assume the value returned the expected data type. What they ended up writing was a lot of code to check the value if it was DBNull. Lots of variations of ‘if …’ , ternary operators, some creative lamda expressions, which led to unexpected behavior in the user interface. Developers blamed the DBAs, DBAs blamed the developers. Remember, Tom and DBA-Sam almost got into a fist fight over it.”
SeniorDev: “Oh…yea…but that’s a management problem, not a programming problem.”
Me: “Probably, but since the developers starting using the extension methods, bug tickets related to mis-matched data has nearly disappeared. When was the last time you saw DBA-Sam complain about the developers?”
SeniorDev: “I guess not for a while, but it’s still no excuse.”
Me: “Excuse? Excuse for what?”
<couple of awkward seconds of silence>
SeniorDev: “Hey, did you guys see the video of the guy punching the kangaroo? It’s hilarious…here, check this out.. ”
Pin shoulders the mat…1 2 3….I win.6 -
I used to work with a guy who had 2 PH.Ds, in Computer Science and Electrical Engineering and over 600 patents but I kid you not the guy could not use the coffee machine. Now it's not like this coffee machine was as easy as a Keurig, it was some $20,000 espresso machine that took a while to figure out but I tried teaching him how to use it a few dozen times and still he couldn't get it right. It got to the point where I thought he was faking it so that others would make it for him so I offered him $500 if he could figure it out. Still nope. So for the remaining 2 years we worked together I made him coffee whenever he wanted, 2-4 times a day, and he bought me lunch everyday. Before I left the company I bought him a Keurig so that when I left he'd still have coffee.19
-
So I need to create a nice new web app. Let's look at some cool JS frameworks that I can work with.
*5 mins later* Hm, Angular sounds good, is there any good competitor?
*5 mins later* Wow, React sounds awesome as well. Let me learn it.
Google search result:
"Planning to use react? Check out Vue JS first"
*5 mins later* Ok so vue seems faster than React and much easier to learn. Let me see if Vue is the final choice.
Google search result:
"Angular VS Knockout VS Ember VS React VS Mithril VS Mercury VS Ractive VS Vue VS Riot"
Nope, fuck it63 -
I put an Easter egg into a product, that if you enter the string "final countdown" into the stock code search field, it plays a YouTube vid of Europe's "The Final Countdown", in a hidden div. It's an in-joke for a few people in the company.
A well meaning maintainer with no sense of humour or judgement takes over and goes on the warpath against any hardcoded strings. The secret code gets moved into a config file.
A third developer changes the deployment script so that it clears any configs that aren't explicitly set in the deployment settings.
So the secret code is now "".
Literally every PC in the stock buying department is now blaring out "The Final Countdown" at top volume.
...Except none of them have speakers, so it remains this way for over a year and two more changes of maintainer.
I just noticed this afternoon and quietly re-hardcoded the string. The buying dept.'s PCs will silently sing no more.31 -
I went to Paris for my first interview (that was 1989) for a job of Unix kernel developer. All dressed up. I step out of the elevator and see a young punk with scruffy hair and different colour shoes. I reckon he must be the pizza delivery guy. I ask him "dude, can you please point me to the CEO's office for interview". He said "sure, follow me man, I'll show you". We arrive at a desk, he sat down in the big chair and looks at me with a big smile and says "Ok dude, here we are. I am the CEO. Now let's see how good you are!"
I got the job. And 26 years latet, last week, amazing coincidence: I met him again at a trade show in Paris ... with the same coloured shoes. How cool is that!!!29 -
!rant
After over 20 years as a Software Engineer, Architect, and Manager, I want to pass along some unsolicited advice to junior developers either because I grew through it, or I've had to deal with developers who behaved poorly:
1) Your ego will hurt you FAR more than your junior coding skills. Nobody expects you to be the best early in your career, so don't act like you are.
2) Working independently is a must. It's okay to ask questions, but ask sparingly. Remember, mid and senior level guys need to focus just as much as you do, so before interrupting them, exhaust your resources (Google, Stack Overflow, books, etc..)
3) Working code != good code. You are an author. Write your code so that it can be read. Accept criticism that may seem trivial such as renaming a variable or method. If someone is suggesting it, it's because they didn't know what it did without further investigation.
4) Ask for peer reviews and LISTEN to the critique. Even after 20+ years, I send my code to more junior developers and often get good corrections sent back. (remember the ego thing from tip #1?) Even if they have no critiques for me, sometimes they will see a technique I used and learn from that. Peer reviews are win-win-win.
5) When in doubt, do NOT BS your way out. Refer to someone who knows, or offer to get back to them. Often times, persons other than engineers will take what you said as gospel. If that later turns out to be wrong, a bunch of people will have to get involved to clean up the expectations.
6) Slow down in order to speed up. Always start a task by thinking about the very high level use cases, then slowly work through your logic to achieve that. Rushing to complete, even for senior engineers, usually means less-than-ideal code that somebody will have to maintain.
7) Write documentation, always! Even if your company doesn't take documentation seriously, other engineers will remember how well documented your code is, and they will appreciate you for it/think of you next time that sweet job opens up.
8) Good code is important, but good impressions are better. I have code that is the most embarrassing crap ever still in production to this day. People don't think of me as "that shitty developer who wrote that ugly ass code that one time a decade ago," They think of me as "that developer who was fun to work with and busted his ass." Because of that, I've never been unemployed for more than a day. It's critical to have a good network and good references.
9) Don't shy away from the unknown. It's easy to hope somebody else picks up that task that you don't understand, but you wont learn it if they do. The daunting, unknown tasks are the most rewarding to complete (and trust me, other devs will notice.)
10) Learning is up to you. I can't tell you the number of engineers I passed on hiring because their answer to what they know about PHP7 was: "Nothing. I haven't learned it yet because my current company is still using PHP5." This is YOUR craft. It's not up to your employer to keep you relevant in the job market, it's up to YOU. You don't always need to be a pro at the latest and greatest, but at least read the changelog. Stay abreast of current technology, security threats, etc...
These are just a few quick tips from my experience. Others may chime in with theirs, and some may dispute mine. I wish you all fruitful careers!221