31 ms·
Accidentally destroyed production database on first day of a job
- runnr_az 9y agoHilarious. I wonder if it's true.
- solarengineer 9y agoThis happened to a friend at a new job a few weeks ago. He wasn't fired, though.
- Jare 9y agoIf the bit about no working backups is also true, he's likely to need a new job anyway. :)
- cynicalbastard 9y agoalmost certainly not.
- codersbrew 9y agosmall shops aren't always perfect. The engineering team should not allow junior devs to hit DB. If you are that vulnerable to coding mistakes you shouldn't be hiring junior devs.
- gonzo41 9y agoUnderstandable that hey got fired. I image there would have been a quite emotional response from the business when this happened, but that doesn't mean it was necessarily the most appropriate response. --Unfortunately apparently those values were actually for the production database (why they are documented in the dev setup guide i have no idea).-- Someone else should have been fired if this is true.
- jacquesm 9y agoNo, it's inappropriate. When the process fails you don't fire the junior employee that showed you just how incompetent the organization is. You fix the problem. Firing this guy does nothing, fixing the problem does, but requires those higher up to admit the mistake was theirs to begin with.
- gonzo41 9y agoI should clarify, I don't think its appropriate, But I see why it happened. The business was panicking. His firing was kinda on the cards. Probably a blessing in disguise for this guy.
- ice109 9y agoLots of people in the thread are commenting how surprised they are that a junior dev has access to production db. Both jobs I've had since graduating gave me more or less complete access to production systems from day one. I think in startup land - where devops takes a back seat to product - it's probably very common.
- abuani 9y agoWhich doesn't abdicate responsibility from the CTO of the company to have practices in place that could have prevented this. While I'm going to hold my breath on being threatened with legal claims, to be fired for something that any person in the building could have done doesn't sound like a conducive environment to work in.
- ice109 9y agoabsolve not abdicate. you abdicate a throne, you are absolved of responsibility
- amsilprotag 9y agoI think people are trying to say abrogate. I've seen this usage a few times lately.
- throwanem 9y agoThat connotes a degree of misfeasance, though - to say one has abrogated a responsibility is to say he has failed to uphold it, where the sense intended here is more one of absolution or relief.
- deleted 9y ago[deleted]
- pbhjpbhj 9y agoYou also abdicate responsibilities; ie you leave them, as a king leaves a throne. You can abdicate a philosophical position, just means you reject it. Eg https://en.m.wiktionary.org/wiki/abdicate https://en.m.wiktionary.org/wiki/abdicate
- Grazester 9y agoIt was their fault, plain and simple.
- madaxe_again 9y agoHow is it the FNGs fault that they have no backups, no DR plan, and production DB details freely available and in the setup guide? The company is entirely at fault.
- Tharkun 9y agoI think the "their" was a plural referencing the company, not the dev.
- gramstrong 9y agoDid you read the details? I disagree. The dev is probably better off not working in such a volitile environment. They'll be better off working somewhere where they can learn some best practices, possibly somewhere that doesn't have the possibility of wiping a production DB because you ran some tests from a developer's machine. That's incorrigible.
- yongjik 9y ago> It was their fault, plain and simple. <off-topic>A wonderful example of the shortcoming of the singular "they"... :P
- roadbeats 9y agoThe ending with taking the laptop to home though... He is a modern time Dostoevsky.
- Rezo 9y agoSorry, but if a junior dev can blow away your prod database by running a script on his _local_ dev environment while following your documentation, you have no one to blame but yourself. Why is your prod database even reachable from his local env? What does the rest of your security look like? Swiss cheese I bet. The CTO further demonstrates his ineptitude by firing the junior dev. Apparently he never heard the famous IBM story, and will surely live to repeat his mistakes: After an employee made a mistake that cost the company $10 million, he walked into the office of Tom Watson, the C.E.O., expecting to get fired. “Fire you?” Mr. Watson asked. “I just spent $10 million educating you.”
- jdietrich 9y agoIf someone on their first day of work can do this much damage, what could a disgruntled veteran do? If Snowden has taught us anything, it's that internal threats are just as dangerous as external threats. This shop sounds like a raging tire fire of negligence.
- hashkb 9y agoHe didn't follow the docs exactly. That doesn't matter, though, your first day should be bulletproof and if it's not, it's on the CTO. The buck does not stop with junior engineers on their first day.
- austenallred 9y ago> He didn't follow the docs exactly Sure, but having the plaintext credentials for a readily-deletable prod db as an example before you instruct someone to wipe the db doesn't salvage competence very much.
- macns 9y agoI wouldn't be surprised if the actual production db was never properly named and was left with an example name.
- FLUX-YOU 9y agoDon't tell Etsy that
- matwood 9y agoPeople will screw up, so you have to do simple things to make screwing up hard. The production credentials should never have been in the document. Letting a junior have prod level access is not that far out of the normal in a small startup environment, but don't make them part of the setup guide. Sounds like they also have backup issues, which points to overall poor devops knowledge. Not part of this story, but another pet peeve of mine is when I see scripts checking strings like "if env = 'test' else <runs against prod>". This sets up another WTF situation if someone typos 'test' now the script hits prod.
- samstave 9y agoHeh, or take a Netflix Chaos Monkey approach and have a new employee attempt to take down the whole system on their first day and fire any engineers who built whatever the new employee is actually able to break!
- karlkatzke 9y agoWhy fire them? It's valuable experience that you are paying a lot for them to gain. Better: hold a postmortem, figure out what broke, and make the people who screwed it up originally fix it. Keep people who screw things up, as long as they also fix it.
- samstave 9y agoI wasnt serious about "firing" -- but was just maintaining the spirit of what happened to the OP on reddit... but yeah - I agree with you...
- CodeWriter23 9y agoSounds like a technique taught at The Pirate School of Management.
- falsedan 9y ago> so you have to do simple things to make screwing up hard No one goes out of their way to screw up; I'd recommend making it easier to recognize when you've made a mistake, and recover from it. Except for critical business stuff, that needs severe "you cannot fuck this up" safeguards.
- Etheryte 9y agoThe author should get their own legal in line - does the contract even allow termination on the spot. If not, the employer is just adding to their own pile of ridiculous mistakes.
- FLUX-YOU 9y agoProbably. At will employment is pretty common in the US.
- gcb0 9y agoland of the uninsured, non unionized free
- coldtea 9y agoWhen America was more deservingly called the "land of the free" in the 40s and 50s, they were also heavily unionized. (Well, then it was "land of the free, blacks excepted")
- Macha 9y agoEven in Europe it's pretty lenient for the first period. Different countries obviously have different maximum probation periods but day 1 would fall into it in most (all?) of them
- walshemj 9y agoAre we sure its the USA some of the language used in the poor guy's post on redit implies a non native speaker I am guessing India which is known for treating employees "horrifically".
- danmaz74 9y ago> The CTO told me to leave and never come back. He also informed me that apparently legal would need to get involved due to severity of the data loss. I don't know if I should laugh or cry here.
- draw_down 9y agoI worked with someone who did this, early in my career. His bacon was saved by the fact that a backup had happened very soon before his mistake. His was worse though, because he had specifically written a script to nuke all the data in the DB, intending it for test DBs of course. But after all that work, he was careless and ran it against the live DB. It was actually kind of enlightening to watch, because he was considered the "genius" or whatever of my cohort. To wit, there are different kinds of intelligence.
- xoa 9y ago>"i instead for whatever reason used the values the document had." >They put full access plaintext credentials for their production database in their tutorial documentation WHAT THE HELL. Wow. I'd be shocked at that sort of thing being written out in a non-secure setting, like, anywhere, at all, never mind in freaking documentation. Making sure examples in documentation are never real and will hard fail if anyone tries to use them directly is not some new idea, heck there's an entire IETF RFC (#2606) devoted to reserving TLDs specifically for testing and example usage. Just mind blowing, and yeah there are plenty of WTFs there that have already been commented on in terms of backups, general authentication, etc. But even above all that, if those credentials had full access then "merely" having their entire db deleted might even have been a good case scenario vs having the entire thing stolen which seems quite likely if their auth is nothing more then a name/pass and they're letting credentials float around like that. It's a real bummer this guy had such an utterly awful first day on a first job, particularly since he said he engaged in a huge move and sunk quite a bit of personal capital from the sound of it in taking that job. At the same time that sounds like a pretty shocking place to work and it might have taught a ton of bad habits. I don't think it's salvageable but I'm not even sure he should try, they likely had every right to fire him but threatening him at all with "legal" for that is very unprofessional and dickish. I hope he'll be able to bounce back and actually end up in a much better position a decade down the line, having some unusually strong caution and extra care baked into him at a very junior level.
- ncantelmo 9y agoThere's also a high chance that document was shared on Slack. In which case, they were one Slack breach away from the entire world having write access to their prod database. It's depressing how many companies blindly throw unencrypted credentials around like this.
- kefka 9y agoTell me about it. Fortunately where I work is sane and reasonable about it. We have a password sheet. You have to be on the VPN(login/password). Then you can log in. Login/Password(diff from above)/2nd password+OTP. Then a password sheet password. I'm still rooting out passwords from our repo with goobers putting creds in sourcecode (yeah, not config files....grrrrr). But I attack them as I find them. Ive only found 1 root password for a DB in there... and thankfully changed!
- jacquesm 9y agoThis company has a completely different problem: no separation of duties. Start with talking to the CTO how this could have happened in the first place, re-hire the junior dev. After all, if the junior dev could do it, so can everybody else (and whoever manages to get their account credentials).
- ajarmst 9y agoAssuming the details are correct, this should be considered a win by the junior dev. It only took a day to realize that this is a company he really, really doesn't want to try to learn his profession at.
- ajarmst 9y agoHe should get that laptop back to them IMMEDIATELY. These sound like exactly the sort of douches would try to charge him with theft. (Edit: Why is it not surprising they don't have a protocol in place for managing dismissing staff and, like, getting their stuff back?)
- watwut 9y agoWell, the customers database with important data just got nuked, so even if there is protocol, people who would normally do the steps have different things in mind. Laptop and such is least of their concerns.
- nashashmi 9y agoNobody hires you if things are perfect. They hire you because there's a problem. It might be a startup or a company just starting a tech sector. Either way they are in their infancy.
- ajarmst 9y agoThis isn't imperfection. This is beyond incompetence into some sort of Dunning-Kruger zen state. The story describes failures so egregious that the principals have no business taking money from customers.
- gcb0 9y agoplot twist: dev will learn Monday this is a initialization joke and the whole company is laughing of all the threads he or she starts here and on reddit.
- coldtea 9y agoplot twist: the dev attempts to off himself, and the company stops "laughing off".
- user5994461 9y agoplot twist: the dev is restored from backups
- holydude 9y agoPeople are designed to make mistakes. We should learn from them and try to be more understanding.
- pier25 9y agoEither the CTO and his dev team are ridiculously stupid, or this was on purpose.
- watwut 9y agoHe needs to return the laptop asap, like now. They are in full emotional mode and can overreact to what they might perceive as another bad act too.
- kilroy123 9y agoHe's / she's better off not working at this place. So many things wrong. Not having a backup is the number 1 thing. I could see having a backup that is hours old, and losing many hours of data, but not everything.
- sandGorgon 9y agoWe were paying for RDS right from when we were a 2 man startup. Zero reasons to not have a dB service that is backed frequently by a competent team.
- tacostakohashi 9y agoEverybody agrees that the instructions shouldn't have even had credentials for the production database, and the lion's share of the blame goes to whoever was responsible for that. There is still a valuable lesson for the developer here though - double check everything, and don't screw up. Over the course of a programming career, there will be times when you're operating directly on a production environment, and one misstep can spell disaster - meaning you need to follow plans and instructions precisely. Setting up your development environment on your first day shouldn't be one of those times, but those times do exist. Over the course of a job or career at a stable company, it's generally not the "rockstar" developers and risk-takers that ahead, it's the slow and steady people that take the extra time and never mess up. Although firing this guy seems really harsh, especially as he had just moved and everything, the thought process of the company was probably not so much that he messed up the database that day, but that they'd never be able to trust him with actual production work down the line.
- wdewind 9y agoNo, sorry, and it's important to address this line of thinking because it goes strongly against what our top engineering cultures have learned about building robust systems. > Over the course of a programming career, there will be times when you're operating directly on a production environment, and one misstep can spell disaster These times should be extremely rare, and even in this case, they should've had backups that worked. The idea is to reduce the ability of anyone to destroy the system, not to "just be extra careful when doing something that could destroy the system." > Although firing this guy seems really harsh, especially as he had just moved and everything, the thought process of the company was probably not so much that he messed up the database that day, but that they'd never be able to trust him with actual production work down the line. Which tells me that this company will have issues again. Look at any high functioning high risk environment and look at the way they handle accidents, especially in manufacturing. You need to look at the overarching system than enabled this behavior, not isolate it down to the single person who happened to be the guy to make the mistake today. If someone has a long track record of constantly fucking up, yeah sure, maybe it's time for them to move on, but it's very easy to see how anyone could make this mistake and so the solution needs to be to fix the system not the individual. In fact I'd even thank the individual in this case for pointing out a disastrous flaw in the processes today rather than tomorrow, when it's one more day's worth of expensiveness to fix. Take a look at this: https://codeascraft.com/2012/05/22/blameless-postmortems/ https://codeascraft.com/2012/05/22/blameless-postmortems/
- Jare 9y agoSomething tells me their production password was nothing like a 20-char random string...
- albertini_89 9y agoUnfortunately, software companies like that are everywhere, the guy is learning and screws up a terribly designed system, the blame is on the "senior" engineers that set up that enviroment.
- quizotic 9y agoYeah, another case of "blame the person" instead of "blame the lack of systems". A while back, there was a thread here on how Amazon handled their s3 outage, caused by a devops typo. They didn't blame the DevOp guy, and instead beefed up their tooling. I wonder whether that single difference - blame the person vs fix the system/tools predicts the failure or success of an enterprise?
- dsr_ 9y agoI think it's a major predictor for how pleasant it is for anyone to work at the company, and thus a long term morale and hiring issue. This is the sort of situation that makes for a great conference talk on how companies react to disaster, and how the lessons learned can either set the company up for robust dependable systems or a series of cascading failures. Unfortunately, the original junior dev was living the failure case. Fortunately, he has learned early in his career that he doesn't want to work for a company that blames the messenger.
- throw20170603 9y agoThe Amazon DevOp guy was fired for that mistake, just FYI.
- ummonk 9y agoHave any proof of this?
- tinix 9y agoWhy do you all act like one party needs proof, but only because they are refuting what was said originally, also, without proof. Neither is providing proof, so asking one party for proof and not the other is obviously absurd.
- benchaney 9y agoIn the absence of proof one way or the other, people believe what seems more reasonable to them. Not particularly absurd at all.
- Spooky23 9y agoFiring the guy seems drastic but understandable. Implying that they are going to take legal action against him is ridiculous!
- icedchai 9y agoObviously not the new engineer's fault. Unfortunately, aspects of this are incredibly common. On three jobs I've had, I've had full production access on day one. By that, I mean everyone had it...
- scarface74 9y agoOne of the questions I asked my manager during the interview process was how did he feel about mistakes? I knew I was being brought in to rearchitect the entire development process for an IT department and that I would make architectural mistakes no matter how careful I was and that I would probably make mistakes that would have to be explained to CxOs. Whatever the answer he gave me, I remember being satisfied with it.
- plesiv 9y agoPlot twist: CTO or senior staff needed to cover something up (maybe a previous loss of critical business data) and arranged for this travesty to likely happen permitted sufficient number of junior devs went through "local db setup guide" mockery of a doc. Either that or this is a "Worst fuckup on the first day on job" fantasy piece - I refuse to acknowledge living in the world where alternatives have any meaningful non-zero probability of occurring.
- perlgeek 9y agoThere are no upper bounds on incompetence. I've seen enough WTFs even in companies that didn't seem particularly dysfunctional, and that had some very competent people. And then it takes only one shitty manager, or manager in a bad mood, to get the innocent junior dev fired.
- linkmotif 9y agoYeah I also kind of thought this was fake. Could be real but...
- anorsich 9y agoLucky junior dev! He has figured out a bad company to work for in his first work day. Good luck finding a new job!
- falsedan 9y agoAlso, this is going to look great on their resumé, and be the perfect response to the "tell us a time when you made a mistake" interview question.
- daxfohl 9y agoSide question, as a dev with zero previous ops experience, now the solo techie for a small company and learning ops on the fly, we're obviously in the situation where "all devs have direct, easy access to prod", since I'm the only dev. What steps should I take before bringing on a junior dev?
- toomuchtodo 9y ago* Local env setup docs should have no production creds in it (EDIT: production creds should always be encrypted at rest) * new dev should only have full access to local and dev envs, no write access to prod * you're backing up all of your databases, right? Nightly is mandatory, hourly is better * if you don't have a DBA, use RDS That'll prevent the majority of weapons grade mistakes. Source: 15 years in ops
- kefka 9y agoDo as best as you can to "find compute room" (laptop, desktop, spare servers on rack that arent being used, .. cloud) , and make a Stage. Make changes to Stage after doing a "Change Management" process (effectively, document every change you plan to do, so that a average person typing them out would succeed). Test these changes. It's nicer if you have a test suite, but you won't at first. Once testing is done and considered good, then make changes in accordance to the CM on prod. Make sure everything has a back-out procedure, even if it is "Drive to get backups, and restore". But most of these should be, "Copy config to /root/configs/$service/$date , then proceed to edit the live config". Backing out would entail in restoring the backed-up config. ________________________ Edit: As an addendum, many places too small usually have insufficient, non-existent, or schrodinger-backups. Having a healthy living stage environment does 2 things: 1. You can stage changes so you don't get caught with your pants down on prod, and 2. It is a hot-swap for prod in the case Prod catches fire. In all likelihood, "All" of prod wouldn't DIAF, but maybe a machine that houses the DB has power issues with their PSU's and fries the motherboard. You at least have a hot machine, even if it's stale data from yesterday's imported snapshot.
- nocha 9y agoYou missed one of the really nice points of having a stage there. You use it to test your backups by restoring from live every night/week. By doing that, you discourage developing on staging and you know for sure you have working backups!
- orliesaurus 9y agoI stopped believing reddit posts a long time ago
- Myrmornis 9y agoExactly, the post is very clichéd. I have about 75% belief that it's fictional. I guess it could be sort of entertaining to see how easy it is to get a few hundred software engineers on reddit and hacker news worked up into a sympathetic and self-righteous frenzy with a simple and entirely fictional paragraph posted for free from a throwaway account.
- ifdefdebug 9y agoI am about 101% it's fake. "Unfortunately apparently those values were actually for the production database (why they are documented in the dev setup guide i have no idea)" - yeah, no. Had you told me you were able to screw the production db up because it had no su password set, you might have got me. But this is bullshit.
- camus2 9y agothis, it looks like an hoax.
- sethammons 9y agoMy comment I left there: Lots of folks here are saying they should have fired the CTO or the DBA or the person who wrote the doc instead of the new dev. Let me offer a counter point. Not that it will happen here ;) They should have run a post mortem. The idea behind it should be to understand the processes that led to a situation where this incident could happen. Gather stories, understand how things came to be. With this information, folks can then address the issues. Maybe it shows that there is a serially incompetent individual who needs to be let go. Or maybe it shows a house of cards with each card placement making sense at the time and it is time for new, better processes and an audit of other systems. The point being is that this is a massive learning opportunity for all those involved. The dev should not have been fired. The CTO should not have lost his shit. The DB should have regularly tested back ups. Permissions and access needs to be updated. Docs should be updated to not have sensitive information. The dev does need to contact the company to arrange surrender of the laptop. The dev should document everything just in case. The dev should have a beer with friends and relax for the weekend and get back on the job hunt next week. Later, laugh and tell of the time you destroyed prod on your first day (and what you learned from it).
- chmike 9y agoYou are right that this is an opportunity to learn because it is a demonstration of incompetence at many levels. However, this incompetence has consequences that might be fatal for the company. How much time and effort will be required to level up ? As a CEO I would request an independent audit ASAP on this incident and see the real extend of the problem. As my mother said, if you put a good apple with bad apples, it's not the bad apples that become good.
- justicezyx 9y agoThe firing order, in theoretical order for preventing future problems: 1. CTO As the one in charge of the tech, allows loss of critical data. If anyone should be fired, it's the cto. And firing this guy apparently will have the greatest positive impact to the company. Assuming they can hire a better one. I think given how stupid this cto is, that should be straightforward. 2. The executives who hired the cto. People hire people similar to themselves, it seems the executives team are clueless about what kind of skills a cto should have. These people will continue fail the dev team by hiring incompetent people, or force them to work in a way that causes problem. 3. Senior devs in the team. Obviously these people did not test what they wrote. If anyone had ever dryrun the training doc, they should prevent the catastrophe. It's a must do in today's dev environment. The normal standard is to write automatic tests for every thing though. This junior dev is the only one who should not be fired...
- pjdemers 9y agoEven startups have contracts with their customers about protecting the customer's data. If it is consumer data, there are even stricter privacy laws. Leaving the production database password lying around in plain text is probably explicitly prohibited by the contracts, and certainly by privacy laws. The CTO should pay him for the rest of the year and give him a great reference for his next job, in return for him to never, ever, ever, tell anyone where he found the production password.
- alexfi 9y agoI always wonder, why IT companies don't test their backups? Even if it's the prod db, it should be tested on a regular base. No blame to the dev.
- ww520 9y agoWhen it comes to backup, there are two types of people, ones who do backup and ones who will do backup.
- knodi123 9y agoI was on a production DB once, and ran SHOW FULL PROCESSLIST, and saw "delete from events" had been running for 4 seconds. I killed the query, and set up that processlist command to run ever 2 seconds. Sure enough, the delete kept reappearing shortly after I killed it. I wasn't on a laptop, but I knew the culprit was somewhere on my floor of the building, so I grabbed our HR woman who was walking by and told her to watch the query window, and if she saw delete, I showed her how to kill the process. Then I ran out and searched office to office until I found the culprit - Our CTO thought he was on his local dev box, and was frustrated that "something" was keeping him from clearing out his testing DB. Did I get a medal for that? No. Nobody wanted to talk about it ever again.
- Demiurge 9y agoSometimes I get reminded about how awesome some of the tech we use is, in this case, transactions :)
- justicezyx 9y agoAnother stupid cto... You did a great job!
- blablabla123 9y agoOh god, this is the worst... People make errors, you help them and they don't give you any credit. Hope you are working somewhere else now.
- lostlogin 9y agoA use for HR!
- S4M 9y agoActually, the CTO should have mailed the dev team saying: Hi, Yesterday, I thought I was on my local machine and clear the database, while I was in fact on the production server. Luckily knodi123 caught it and killed the delete process. This is a reminder that *anybody* can make mistakes, so I want to set up some process to make sure this can't happen, but meanwhile I would like to thank knodil123. Best, CTO
- chmike 9y agoIt is really unfair to have fired him. The OP is not the one that sould have been fired. The guy in charge of the db should be fired and the manager who fired the OP should be fired too. And, by the way, the guy in charge of the backups too.
- knodi123 9y agoI was only granted read-only access to the Prod DB last week, after achieving 6 months of seniority.
- vinceguidry 9y agoTechnical infrastructure is often the ultimate in hostile work environments. Every edge is sharp, and great fire-breathing dragons hide in the most innocuous of places. If it's your shop, then you are going to have a basic understanding of the safety pitfalls, but you're going to have no clue as to the true severity of the situation. If you introduce a junior dev into this environment, then it's him that is going to discover those pitfalls, in the most catastrophic ways possible. But even experienced developers can blunder into pitfalls. At least twice I've accidentally deployed to production, or otherwise ran a powerful command intended to be used in a development environment on production. Each time, I carefully analyze the steps that led up to running that command and implemented safety checks to keep that from happening again. I put all of my configuration into a single environment file so I see with a glance the state of my shop. I make little tweaks to the project all the time to maintain this, which can be difficult because the three devs on the project work in slightly different ways and the codebase has to be able to accommodate all of us. While this is all well and good, my project has a positively decadent level of funding. I can lavish all the time I want in making my shop nice and pretty and safe. A growing business concern can not afford to hire junior devs fresh out of code school / college. That's the real problem here. Not the CTO's incompetence, any new-ish CTO in a startup is going to be incompetent. The startup simply hired too fast.
- watwut 9y agoThe same thing could happen to senior. In particular, to tired overworked senior. It is more likely to happen to junior, because junior is likely to be overwhelmed. However, mistakes like this happen to prole of all ages and experience levels. Seniority is what makes you not put the damm password into set up document. That was the inexperienced level of mistake. Forgotting to replace it while you are seting up day one machine is mistake that can happen to anyone.
- vinceguidry 9y agoTrue, but a senior engineer, even if he is never able to make architecture decisions, can still be held accountable for knowing better. That is precisely why they are paying him the big bucks. If a shop is being held together with duct tape and elbow grease, then you should have known that going in, and developed personal habits to avoid this sort of thing. Being overworked and tired isn't an excuse. Sure, the company and investors have to bear the real consequences, but you as an IC can't disclaim responsibility.
- markbnj 9y agoGuaranteed the CTO is busily rewriting the developer quide and excising all production DB credentials from the docs so that he can pretend they were never there. While the new guy's mistake was unfortunate in a very small way, the errors made by the CTO and his team were unfortunate in a very big way. The vague threat of legal action is laughable, and the reaction of firing the junior dev who stumbled into their swamp of incompetency on his first day speaks volumes about the quality or the organization and the people who run it. My advice... learn something from the mistake, but otherwise walk away from that joint and never look back. It was a lucky thing that you found out what a mess they are on day 1.
- rsc-dev 9y agohttps://github.com/search?utf8=%E2%9C%93&q=database+password&type=Commits https://github.com/search?utf8=%E2%9C%93&q=database+password...
- sitepodmatt 9y agoName and shame.. The CTO stinks of incompetence, and surprised he/she has managed to retain any competent staff (perhaps he/she actually hasn't). What a douchebag. You are not to blame.
- robert2017 9y agoThis story can't be true. If it is, obviously the junior dev is much better off working elsewhere. Why is this company in business and hiring people?
- Myrmornis 9y agoStory sounds fictional to me.
- jjm 9y agoThis is purely the fault of the entire leadership stack. From Sr dev/lead dev, dev manager, architect, ops stack, all the directors, A/S/VPs, and finally the CTO. You could even blame the CEO for not knowing how to manage or qualify a CTO. Even more embarrassing is if your company is a tech company. I think a proper due diligence would find the fault in the existing company. It is not secure to give production access and passwords to a junior dev. And if you do, you put controls in place. I think if there is insurance in place some of the requirements would have to be reasonable access controls. This company might find itself sued by customers for their prior and obviously premeditated negligence from lack of access controls (the doc, the fact they told you 'how' to handle the doc).
- scarmig 9y agoThe Junior dev does bear a small amount of blame, if you really want to go the blameful route. But figuring out who to blame is toxic. You've got to go for a blameless culture and instead focus on post mortems and following new and better processes. Things can absolutely always go to shit no matter where you work or how stupidly they went to shit. What differentiates good companies from bad ones is whether they try to maximize the learning from the incident or not.
- andreasgonewild 9y agoI did the same thing early on in my career. Shut down several major ski-resorts in Sweden for an entire day during booking season by doing what we always did, running untested code in production to put out fires. Luckily, my company and our customers took that as a cue to tighten up the procedures instead of finding someone to blame. I hear this is how it works in aviation as well, no one gets blamed for mistakes since that only prevents them from being dealt with properly. Most of us are humans, humans make mistakes. The goal is to minimize the risk for mistakes.
- user5994461 9y agoI am the only one who is surprised that he can get the keys to the kingdom on day 1? Day 1 is when you setup your desk and get your login. Then go back to HR to do the last hiring paperwork. It should take a good week before a new employee is able to fuck up anything. Really.
- anotheryou 9y agoHow long do you want to adjust the height of your chair? Setting up the dev enviroment often takes ages. Why wouldn't it be the first thing to do? There will be enough progress bars while updating something like visual studio to finde time to re-adjust the chair.
- jlebrech 9y agoI fucked up a table once by setting the column of every record to true, but I had asked about changing the code to require a manual sql query a few weeks prior so it could have been prevented.
- justicezyx 9y agoIsn't this new person deserve a peer bonus by discovering a production risk?
- jksmith 9y agoObviously not a ssae 16 environment.
- siliconc0w 9y agoYeah this infra/config management sounds like land-mine / time bomb incompetence territory. You just were the unlucky one to trigger it. Luckily this gives you an opportunity to work elsewhere and hopefully be in a better place to learn some good practices - which is really what you're after as a junior dev anyway.
- spudlyo 9y agoSeveral years back I worked as a DBA at a managed database services company, and something very similar happened to one of our customers who ran a fairly successful startup. When we first onboarded them I strongly recommended that the first thing we do is get their DB backups happening on a fixed schedule, rather than an ad-hoc basis, as their last backup was several months old. The CEO shuts me down, and instead insists that we focus on finding a subtle bug (you can't nest transactions in MySQL) in one of their massive stored procedures. It turns out their production and QA database instances shared the same credentials, and one day somebody pointed a script that initializes the QA instances (truncate all tables, insert some dummy data) at the production master. Those TRUNCATE TABLE statements replicated to all their DB replicas, and within a few minutes their entire production DB cluster was completely hosed. Their data thankfully still existed inside the InnoDB files on disk, but all the organizational metadata data was gone. I spent a week of 12 hour days working with folks from Percona to recover the data from the ibdata files. The old backup was of no use to us since it was several months old, but it was helpful in that it provided us a mapping of the old table names to their InnoDB tablespace ids, a mapping destroyed by the TRUNCATE TABLE statements.
- seattle_spring 9y agoI have a feeling the CTO was actually one of those "I just graduated bootcamp and started a website, so I can inflate my title 10x" types.
- nstj 9y agoNo disrespect to the OP but this sounds pretty fake. If the database in question was important enough to fire someone immediately over then there wouldn't have been the creds floating around on an onboarding pdf. And involving legal? Has anyone here heard of anything similar? I'm just 1 datapoint but I know I haven't.
- jupiter90000 9y agoYeah, I thought it sounded fake as well. I mean things like this happen, but something about the story just doesn't ring true to me.
- Macha 9y agoRealised the user account is 3 weeks old, which is a red flag for me since it has no posts and the events allegedly happened friday
- blackflame7000 9y agoAfter adding up the number of egerious errors made by the company, I'd almost be inclined to say the employee has grounds for wrongful termination or at least fraudulent representation to recoup moving expenses.
- codezero 9y agoHere's why I think this is fake: A company with 40 devs and over 100 employees that lost an entire production db would have surfaced here from the downtime. Other devs would corroborate the story.
- CodeWriter23 9y agoAssuming the CTO was honest about what happened.
- deleted 9y ago[deleted]
- Analemma_ 9y agoI'm also skeptical, but this isn't necessarily true. There's plenty of software being written outside the HN bubble that's totally invisible to us. What if this was some shipping logistics company in Texas City? We'd never know about it; they wouldn't have a trendy dev blog on Medium.
- codezero 9y agoGood point.
- dennisgorelik 9y agoObviously this is mostly CTO's screw up. But the junior dev is not fully innocent either: he should have been careful about following instructions. For extra points (to prove that he is a good developer) - he should have caught that screw up with username/passwords in the instruction. Here's approximate line of reasoning: --- What is that username in the instruction responsible for? For production environment? Then what would happen if I actually run my setup script in production environment? Production database would be wiped? Shouldn't we update setup instruction and some other practices in order to make sure it would not happen by accident?). --- But he it is very unlikely that this junior dev would be legally responsible for the screw up.
- cbanek 9y agoIt's not the CTO's fault. It's the document's fault! We should never have documentation again, this is what it has done to us! We need to revert to tribal knowledge to protect ourselves. If we didn't document these values, people wouldn't be pasting them in places they shouldn't be! /s
- femto113 9y agoFor some years now I've stopped bothering with database passwords. If technically required I just make them the same as the username (or the database name, or all three the same if possible). Why? Because the security offered by such passwords is invariably a fiction in practice, I've never seen an org where they couldn't be dug out of docs or a wiki or test code. Instead database access should be enforced by network architecture: the production database can only be accessed by the production applications, running in the production LAN/VPC. With this setup no amount of accidental (or malicious) commands run by anyone from their local machine (or any other non production environment) could possibly damage the production data.
- aidos 9y agoAhhhhh haaaa yeah.....I've done that. It was the second day, and I only wiped out a column from a table, but it was enough to bring business for several hundred people down for a few hours. It was embarrassing all round really. Live and learn though - at least I didn't get fired!
- askz 9y agoI really suggest that OP sends this thread to HR & others. And this isn't sarcasm
- consultSKI 9y agoRepeat after me, while clicking your heels together three times, "It is not my fault. It is not my fault. It is not my fault." It was obvious as I read your account that you would be fired. A company that allowed this scenario to unfold would not understand that is was their fault.
- nojvek 9y agoWhat company is this? CTO deserves some internet slapping.
- jaunkst 9y agoSo a script practically set up the machine with the nuclear football by default, and then you where expected to diffuse it before using it. That is not your fault.
- posterboy 9y agoI would assume this was mocked to test if the intern could follow simple instructions, to provide a lecture for the huge consequences of small mistakes and to have a viable reason to fire consequently; but I'm wearing my tin foil hat right now, too.
- thomastjeffery 9y agoReminds me of my first dev job, when I got a call during lunch: "The server has been down all day, and you are the only one who hasn't noticed. What did you break?" "Well, I saw that all the files were moved to `/var/www/`, and figured it was on purpose." Suffice it to say, I got that business to go from Filezilla as root to BitBucket with git and some update scripts.
- stevesun21 9y agoThe CTO should be fired immediately! If I didn't read wrong, they write poduction db credential in first day local dev env instruction! WTF. This CTO sounds to me even worse than this junior developer.
- learntofly 9y agoI don't work in tech but I'm an avid HN reader. I'm surprised a junior dev on his first day isn't buddied up with an existing team member. In my line of work, an existing employee who Transferred from another location would probably be thrown in at the deep end but someone who is new would spend some time working alongside someone who is friendly and knowledgable. This seems the decent thing to do as humans.
- b33pr 9y agoSo the company's fault. Embarrassing they tried to blame the new guy. So many things wrong with this.
- gregopet 9y agoI destroyed an accounting database at a company during a high school summer job. A mentor was supervising me and continually told me to work slower but I was doing great performing some minor maintenance on a Clipper application and didn't even need his "stupid" help ... until I typed 'del .db' instead of 'del .bak'. Oooops! Luckily the woman whose computer we were working on clicked 'Backup my data' every single day before going home, bless her heart, and we could copy the database back from a backup folder. A 16 year old me was left utterly embarrassed and cured of flaunting his 1337 skillz.
- laithshadeed 9y agoI would suggest you, once this sorted out, to publicly mention the company name so no other Engineer will fail in this trap again. This will be lesson for them to properly follow basic practices for data storage.
- feinstruktur 9y agoShould have job title changed to Junior Penetration Tester and be rewarded for exposing an outfit of highly questionable competence.
- OOPMan 9y agoWow. What a train wreck. This is why the documentation I write contains database URIs like: USER@HOST:PORT/SCHEMA
- dk8996 9y agoCool story but I think this is fake. Since there are 40 people in the company, it seems like at least a few people before him followed the onboarding instruction. I just don't believe that there would be that many people that a) didn't do the same thing he did or b) change the document.
- brittonrs26 9y agoMy question is, why in the world did they publish someone's production credentials in an onboarding document? That has to be a SOX compliance violation at the very least.