Imagine you’re an artist, and I paid you for a drawing. You want to make sure the drawing comes out great, so you draw a few sketches to plan it all out before you go ahead with the “real” drawing. When you’re done with the whole project, those sketches are now useless, so you throw them out. Except you make a mistake, and throw out my drawing instead of the sketches.
You just deleted prod.
Or, if you prefer: imagine you meant to send a sexy message to your girlfriend Monica but “Mom” comes just before “Monica” on your phonebook, so you sent it to your mom instead.
One of the best features of working with software, from an engineering point of view, is that computers are cheap, and making copies of your work is basically free. I can turn one program into ten programs in a way a civil engineer can’t turn one building into ten. So it’s more or less standard practice in software engineering to have multiple copies of your software running in parallel, each for a different purpose. The exact collection of such copies (“environments”) varies, but it’s more or less universal that one is the “production” environment that your customers actually use, and then you have a “test” environment where your developers can test how pieces fit together, you might also have a “QA” environment that is as close to production as possible so your quality assurance people can validate it, and a few others.
(A common joke is that every company has a test environment, but some are fortunate enough to also have a separate production environment)
Obviously, when you have multiple nearly-identical copies of the same thing, one of the most common mistakes you can make is that you’ll issue commands to wrong copy. You can reliably tell how competent a company is at software development by how hard they make it for their employees to make such mistakes.
Latest Answers