loading...

What's your worst nightmare as a coder?

Ben Halpern on June 14, 2019

pic
Editor guide
Collapse
ddaly profile image
David Daly

Production releases on a Friday evening 😐

Collapse
arlopezg profile image
Alejandro López

Doing this today. Yeah...

Collapse
ddaly profile image
David Daly

Good luck 👍

Thread Thread
arlopezg profile image
Alejandro López

Thanks! We just happened to find a somewhat-critical error on Google Analytics and decided to pull the trigger ASAP to get it fixed. Shouldn't be too traumatic of a deploy :)

Collapse
crh3675 profile image
Hoovinator

Hope you have some good CI/CD for that :-)

Thread Thread
arlopezg profile image
Alejandro López

Yup! Jenkins rules :)

It didn't go as well as it could (some repo drama), but we managed to get stuff done. Yay!

Thread Thread
crh3675 profile image
Hoovinator

Awesome! Late night deploys suck, we have to in some cases to reduce user downtime. We had to recently migrate an entire AWS VPN - business team was "shipping their pants". It went fine with minimal downtime. Which leads to a question, when should Developers NOT tell business about some changes? I have found that sometimes they make things worse off than they should be.

Collapse
david_j_eddy profile image
David J Eddy

Been there, done that. Leave before they ask you to work weekends.

Collapse
kylefilegriffin profile image
Kyle Griffin

If they are asking, you don't need to say yes. If you need to get out the building before this, then they are not asking you, in which case you need to LEAVE THAT JOB!

Collapse
akulbe profile image
Aaron Kulbe

I think the goal should be to get to the place where this isn't a big deal. Testing in production should be a thing. That's not a trolling comment, and I'm dead serious.

Get to where you can deploy multiple times a day, every day, all day.

For reference, read stuff by Charity Majors about observability.

Collapse
ferricoxide profile image
Thomas H Jones II

Don't forget, "when a critical resource is starting two weeks' PTO the next day".

Collapse
ddaly profile image
David Daly

That's bringing it to a whole other level 😂

Collapse
ilvalerione profile image
Valerio

😆😆😆😆😆 great

Collapse
ziarv profile image
Zia

exactly :)

Collapse
chiefnoah profile image
Noah Pederson

I think this heavily depends on the risk and impact of the deploy

Collapse
ddaly profile image
David Daly

I definitely agree with you here, but on Friday evenings people can often get distracted with weekend plans. Then if something goes wrong with a deployment, asking people to stay late and resolve the issues can be hard (for everyone involved).

This can be challenging, and its why our team generally tries to avoid this (but it does happen sometimes).

Collapse
bengreenberg profile image
Ben Greenberg

A toxic unsupportive work environment.

Collapse
timkor profile image
Timkor

Internet Explorer

Collapse
thehanna profile image
Brian Hanna

I hate it so much.

Collapse
nshoes profile image
Nate Shoemaker

Hopping into an already existing project that has no tests.

Collapse
rhymes profile image
rhymes

I understand the dread and I've felt it. I know I'm weird but writing tests or reverse engineering something is a great way to learn how something works :D

You shouldn't have to but still...

See it as an exploration adventure :D

Collapse
david_j_eddy profile image
David J Eddy

110% this.

Collapse
brob profile image
Bryan Robinson

One Word: Databases :D

So important, yet so dangerous if you're not good at them.

Collapse
rhymes profile image
rhymes

You're the second person to mention this in a few days. We (as in devs who don't share this dread) need to be better at communicating how to use these DBs because they are so important as you said 😭

Collapse
brob profile image
Bryan Robinson

I’m ok at them after a couple years having to manage some, but with legacy DBs with bad tooling I get very nervous ;)

Collapse
andy profile image
Andy Zhao (he/him)

Pushing/releasing sensitive information/data 😰

Collapse
andrewbrown profile image
Andrew Brown 🇨🇦

I'm not sure if a CodeClimate plugin could check for this.
I do know that all Lambda Security products will scan for sensitive information but then you have to go serverless and pay for said service.

I like how Amazon Macie can detect (Personally identifiable information) PII and api credentials.
I guess if you're CI/CD is CodePipeline and CodeBuild which places artifacts (zip folders) of your codebase in S3 that maybe Macie could detect these issues. Uncertain if it can peak into zips.

Collapse
lcarbonaro profile image
Les Carbonaro

Maintaining legacy code that someone else wrote years ago.

Collapse
thehanna profile image
Brian Hanna

Especially if "someone" is a younger, less experienced version of yourself

Collapse
gsp_9 profile image
Gaurav Pandit

I can relate to that, on my first "actual" full-time job, I had to work on code that was more than a decade old, written by someone who didn't believe in commenting code.

Collapse
lukegarrigan profile image
Luke Garrigan
  1. Comments that add no value.
  2. Comments that could easily be expressed with meaningful variable/function names
  3. Comments that are out of date and are misleading
  4. Comments...
Collapse
shiling profile image
Shi Ling

Inheriting a frontend that was a spaghetti of jQuery, Angular, jQuery UI, Bootstrap 2 and Bootstrap 3. It was a some pages SPA and some pages not, and globals everywhere. CSS was a hot mess.

My biggest accomplishments in that project were refactoring out Bootstrap 2, and making the JavaScript code modular the old-school way (this was before ES6) using Addy Osmani's JavaScript Design Patterns.

Collapse
kristijanfistrek profile image
KristijanFištrek

Omg. This sounds like something FBI should use as a torturing interrogation tactics...😱

Collapse
bradtaniguchi profile image
Brad

walking into a code base with:

  • no test
  • no documentation
  • no types
  • no comments
  • no code quality
  • no automation
  • high complexity
  • high risk
  • no dev/test/stage environment

I hope no poor soul ever gets the check to all those boxes, but I'm sure there are people who have!

Collapse
thehanna profile image
Brian Hanna

I have a project that checks all but two of those boxes. Thankfully I have multiple environments and some build automation

Collapse
cjbrooks12 profile image
Casey Brooks
fun someUngodlyMess() {
    // DO NOT REFACTOR
}
Collapse
cathodion profile image
Dustin King

First refactoring would be to remove this comment.

Collapse
thehanna profile image
Brian Hanna

Same. You can't put that there and expect me not to touch it. I can't ignore a challenge like that.

Thread Thread
jake profile image
Jake Casto

The comment is a warning from someone who tried to refactor.

Collapse
guitarino profile image
Kirill Shestakov

I saw different variants of this, usually:

somethingNobodyCanUnderstand(); // DO NOT CHANGE THIS

I die a little inside when I see this shit

Collapse
niorad profile image
Antonio Radovcic

My own code from 24 months ago 😱

Collapse
frogthanos profile image
Thanos

That one gets me every time too! 😂

Collapse
cjbrooks12 profile image
Casey Brooks

Event-driven architectures.

It's basically no different from a goto statement, and we've known for a long time that gotos are considered harmful. Applications which use events to drive data flow and logic become impossible to navigate, which makes them impossible to maintain.

Collapse
guitarino profile image
Kirill Shestakov

I have a feeling there is a lot more to be said about this, and I think you maybe right and those architectures should be considered as anti-patterns. The biggest problem I find with event-driven stuff is how easy it is to lose track of what is happening, and how easy it is to introduce circular event triggering. I think the cleaner architecture would mean that it would be actually impossible to introduce a circular dependency. For example, it could be done similarly to the creation of objects. If you have classes:

class A {
    b: B;
    constructor(b: B) {
        this.b = b;
    }
}

class B {
    a: A;
    constructor(a: A) {
        this.a = a;
    }
}

It would be impossible to have a circular dependency such as above, because the creation of A's instance requires a B's instance, while the creation of B's instance requires an A's instance. So, you'll not be able to successfully run

let a = new A(); // Error - need an instance of B as the 1st argument
let b = new B(a);

I think a similar way of thinking should be applied to events.

Collapse
paramharrison profile image
Paramanantham Harrison

Wow. Want to hear more on this. I believe, not the architecture but the worst implementation which is harmful.
Event driven architecture works for many use cases.

Collapse
cjbrooks12 profile image
Casey Brooks

You're exactly right, events by themselves are not bad, and can be very useful in large, modular codebases. But a bad implementation will only get worse over time, and the nature of it makes it nearly impossible to recover from beyond a certain point.

The problem is when the app is driven by events. When one event triggers another event, which triggers another, etc. One of the most extreme examples of this is WordPress, where in it's internals methods are rarely called on their own. They mostly call each other through events, which, while they can be augmented and overridden, means tools like static analyzers can't help, you don't have good stack traces, exception handling gets confusing. As a result, you really can't refactor that code anymore, since you can't really figure out who's all listening for the event anymore. But I've personally worked with many other examples in Android, JS, and PHP.

The alternative is to only use events as a reaction. Keep the logical path in normal function calls, send events as "notifications" instead, to broadcast what you just did or what you're about to do, without altering the execution flow.

Thread Thread
paramharrison profile image
Paramanantham Harrison

Awesome point. Totally agree

Collapse
antjanus profile image
Antonin Januska
  • publishing secrets to the internet (which I did a few days ago...luckily NPM flagged it and disabled it)
  • losing production data 😱😱😱😱
  • shitty co-workers/work environment (I'm lucky to have worked at an awesome place for years!)
Collapse
codingmindfully profile image
Daragh Byrne

Making a mistake that costs a whole heap of money. I've done it twice in my career - it's never entirely my fault but I've played a part. I'd really prefer not to do it again!

Collapse
elmuerte profile image
Michiel Hendriks

Management that thinks developing software is not a difficult task.

Collapse
flrnd profile image
Florian Rand

I feel you, but if you think that's bad, work as a designer, where everyone thinks design is about moving pixels around the screen 😄. Or everybody thinks that "I don't like it or I like that more" is good design feedback. I could continue, but not today 😆

Collapse
elmuerte profile image
Thread Thread
flrnd profile image
Florian Rand

Hahaha that!

Collapse
fallenstedt profile image
Alex Fallenstedt

Taking a risk to improve some piece of code that has immense business value, and the thought of failing.

We have an Angular app that has been around for a long time. We are making plans to introduce ngrx to some of our core services so they cache data and improve our developer experience.

I'm the one person on our team with the most knowledge of ngrx, and its daunting.

Collapse
ben profile image
Ben Halpern Author

I know the feeling

Collapse
bassemmohamed profile image
Bassem Ibrahim👨‍💻🇪🇬

CONFLICTS, I just hate them. Especially if I can't reach the developer I am conflicting with.

Collapse
bosepchuk profile image
Blaine Osepchuk

Unrecoverable database corruption including all the backups. Bye-bye business.

Collapse
citizen428 profile image
Michael Kohl

Not being able to code anymore. I'm serious, there are very few things I enjoy more and people actually pay me to do it.

Collapse
erikaheidi profile image
Erika Heidi

Its used to be merge conflicts, but nowadays I'd say it's when I can't find the freaking logs. I get real mad. haha

Collapse
giladri profile image
Gilad Ri

Integration and its best friend: "It works on my computer!"

Collapse
chiangs profile image
Stephen E. Chiang

Upgrading framework versions...

Collapse
dmfay profile image
Dian Fay

The possibility of a bug I don't know about silently altering or losing data across weeks to months to years without obvious failures or corruption.

Collapse
sarahscode profile image
Sarah Katz

My imposter syndrome stopping me from trying new things

Collapse
sudiukil profile image
Quentin Sonrel

Loosing my passion for coding (and computing in general).

Coding is really a passion to me but since I started working as professional dev I almost never code at home and I don't enjoy my professional projects as much as I used to enjoy the personal ones.

I sometimes feel like I'm wasting away my passion by having turned it into a job.

Collapse
napicella profile image
Nicola Apicella

With the obvious proportion of the case, one of thing that makes me lose sleep is writing/reading code that does not express the intent, I call this: code which talks about code VS code which talks about business

Collapse
samithaf profile image
Samitha Fernando

When your engineering team doing such an amazing work and a non technical person calling out your team velocity isn't consistent!

Collapse
ballen2713 profile image
Bartholomew Allen

It happened to me not to long ago but using a Mongo function to clean a database and then wiping out all of the data luckily Mongo has an import function and we had a backup!

Collapse
kristijanfistrek profile image
Collapse
theredspy15 profile image
Hunter Drum

Having a language that you've invested a lot of time into, become obsolete

Collapse
gdotdesign profile image
Collapse
karlredman profile image
Karl N. Redman

I hate the following scenario (which I've been part of many times in the past):

them: Here's a new urgent project. How long will it take to build it?

me: 2 weeks for a hack, 3 weeks to get it right. When is it needed?

them: We've already sold it, billing has gone out and we promised to deliver it last Thursday.

me: So, what is my drop-dead delivery date?

them: Last Thursday.

Collapse
restroika profile image
restroika

changes of business processes on last minute.

Collapse
jwesorick profile image
Jake Wesorick

Unrealistic time expectations for work being done. Turns something I love into something I hate.

Collapse
kunde21 profile image
Chad Kunde

Hardware flaws that present as intermittent, inexplicable errors.

Basically, errors coming from below the lowest level I can inspect.

Collapse
carmatrocity profile image
Carmen H. Andoh

Upstream breakage {yells at cloud}

Collapse
tvanantwerp profile image
Tom VanAntwerp

Screwing up authentication and leaking data.

Collapse
djoleb profile image
Djordje Bajic

Deadlines and bad project spec.

Collapse
joelnet profile image
JavaScript Joel

Hmm. That's a tough one. How do I choose? Well, if I had to pick just one it would have to be bees. As a coder, bees are my worst nightmare. Bees. 🐝🐝🐝

Collapse
adam_cyclones profile image
Adam Crockett

That tomorrow I won't remember anything about code.

Collapse
scrabill profile image
Shannon Crabill

That I'm not as good of a coder as I think I am, but no one will tell me or point me in the right direction.

Collapse
fstopblues365 profile image
Cory Kelly

Scope Creep 💀

Collapse
bovermyer profile image
Ben Overmyer

Writing something that accidentally gets someone actually hurt, or worse.

Collapse
crh3675 profile image
Hoovinator

The SQL query to update user preferences for over 20,000 users in a production environment because you found a security flaw with something being saved in the database

Collapse
rhymes profile image
rhymes

...bad managment that decides to shift focus 10 times per day.

That's so exhausting :(

Collapse
full_stackgeek profile image
Full Stack Geek

Intermittent Bug, that's creepy shit

Collapse
heathershockney profile image
Heather Shockney

The interview process

Collapse
khalyomede profile image
Khalyomede

Critical, process-blocking bug that I cannot reproduce in local...

Collapse
fultonbrowne profile image
Fulton Browne

Spending 3 hours trying to find a bug only to find out (after checking stack overflow) that its like one line of code and super easy fix.

Collapse
sethusenthil profile image
Sethu Senthil

A light themed IDE

Collapse
dev_in_the_house profile image
Devin

Any day I wake up, I could wind up down a rabbit hole which could ruin the day.

Collapse
ryboflavin42 profile image
Ry

Having to build a strict XML data pipeline in Python or JavaScript.

Collapse
cheetah100 profile image
Peter Harrison

"Don't worry about the backup, it's only a minor release".

Collapse
tesh254 profile image
wachira_Dev

Trying to raise your test coverage by 0.6% so that your PR is merged

Collapse
tesh254 profile image
wachira_Dev

Also being a blocker to someone's task.

Collapse
rahulchowdhury profile image
Rahul Chowdhury 🕶

Having to work on a framework/language that I strictly dislike.

Collapse
ryboflavin42 profile image
Ry

This might show my age a bit, but the requirement:
“Application must support Firefox And IE6. “

Collapse
severusken profile image
kien

jQuery abuse ...

Collapse
mvoloskov profile image
Collapse
kendalmintcode profile image
Collapse
kayis profile image
K

When I was an employee my biggest nightmares were technology choices made by other people which I had to live with.

Collapse
sria91 profile image
Srikanth Anantharam

Not being allowed to code.

Collapse
rossdrew profile image
Ross

Code written for concision rather than readability/Coders writing "clever" code.

It is far more valuable to have readable code than concise code.

Collapse
vuild profile image
Collapse
georgecoldham profile image
George

Change.

Collapse
max profile image
Maxime Lafarie

Deploy in production the Friday at 4PM for 5PM.

stressed

Collapse
crh3675 profile image
Hoovinator

Even better, a memory leak in your code you deployed in AWS causes misconfigured auto-scaling to run up a bill of $10,000 in one day

Collapse
thomasxbanks profile image
Thomas Banks

Currently doing onsite tech support at an event on an app I didn't build in a language I'm not familiar with 😂

Collapse
lautarolobo profile image
Lautaro Lobo

Working with spaghetti legacy code, and with customers that don't know what they want, or how to express it, so you have to help them to build their business, not only their website :/

Collapse
mak12776 profile image
Mohammad Amin Khakzadan

writing codes.
doing worthless, time-consuming computer programming.

Collapse
steelwolf180 profile image
Max Ong Zong Bao

We have a product demo tomorrow please get XYZ out by then.

Collapse
benwtrent profile image
Benjamin Trent

Failing my customers. One of the worst feeling in the world is making a breaking change that hurts my customers' usability and their bottom-line.

Collapse
dougaws profile image
Doug

Back when I was a Java code jockey at a startup: my boss talking to a potential customer.

Collapse
raisaugat profile image
Saugat Rai

All the changes that are still yet to add and push but suddenly computer going haywire and boom start from scratch.

Collapse
wakwe profile image
Olisa Wakwe

Everything 😭

Collapse
mortoray profile image
edA‑qa mort‑ora‑y

That something is wrong with my eyes and I can't see the screen correctly, or my wrists/hands hurt too much to type.

Collapse
sm0ke profile image
Sm0ke

Patching C++ recursive functions with goto's inside.

Collapse
pavlosisaris profile image
Paul Isaris

A huge major bug in a project I am the only developer, happening while I am on vacations... :(

Collapse
cathodion profile image
Dustin King

If everything I've ever done gets hacked, even the stuff I haven't put online.

Collapse
ilvalerione profile image
Valerio

Customer complaint on a Friday evening :)

Collapse
lauragift21 profile image
Gift Egwuenu

Fixing production bugs on a weekend 😞

Collapse
andrewbrown profile image
Andrew Brown 🇨🇦

The DEV.to codebase is my worst nightmare.

I keep telling people if you really want to validate your skills and prove to employers you can handle a real-world codebase to:

  1. Complete a medium size feature ticket on the DEV.to codebase
  2. Get that pull request merged and deployed.

Anyone who can accomplish that deserves a job 💯.

I'll give you an example. on the left we have DEV.to, on the right is what I'd expect a Rails codebase to look like. Maybe you'd have one additional custom directory in your app's directory, not 10+ 😱. This is one of the many obstacles you'll face on this codebase.

The DEV.to codebase is the greatest gift to developers to sharpen their skills. I wish they would contribute.

Working on the DEV.to codebase has brought back some older processes which I had put to the wayside. One thing I adopted that DEV.to does is CodeClimate and Dependabot.