420: Enhance Your Calm

If you've worked with the Twitter API, especially in the early days, you're probably very familiar with the HTTP error code 420: Enhance Your Calm. It's not an official HTTP error code, but being in the 4xx level it does make it a valid client error, and it has some perfect illusions to what you should do to fix the problem.

Relax.



Stressing out a system to it's absolute max isn't good. In fact, a DDoS attack is exactly that, issuing too many requests for the server to handle that it has no other viable option then to block legitimate traffic. Stressing out a car by redlining it for hours would have the same very negative effect. It's not good for technology, and it's not good for us.

It's well documented that stress, or our reactions to stressful situations, has very negative reactions on us. Stressing out over a situation does no good, and often leads to bad decisions as well as the physical and mental effects it has on you.

But I strive well under stress.


No, you may think you do well when stressed out, but what really happens is you produce more. The quality of code produced while under a strict deadline is always worse. Remember the early issues of Healthcare.gov? It wasn't just because of a lot of incompetent people, it was also because those people were put under such strict deadlines the only reasonable way to accomplish all that was required of them was to work long, hard hours. That leads to stress, which produces shitty work product.

I've had a lot of personal experience with this in my professional life too. When I first came to Newstex, we had to switch off of an antiquated system that was falling apart at the seams. It wasn't designed to handle the massive volume of content we were processing, and it was dropping content already. I was fresh out of college with a lot of debt and needed to prove myself to the company. I put some undo pressure on myself as well because I wanted to make the system perfect. I was getting requirements thrown at me from every direction and would scatter to try to get things done as they came in since there was no way to keep up with it if I didn't. Every day was like fighting a fire, except there was almost no way to gain ground, the backlog kept on burning up and I just couldn't get ahead of it all.

I took shortcuts, but I got the job done. The system scaled very quickly from only taking in about 50k stories a week to over 200k a week without any issues. Since switching onto that new system we've had no significant downtime, we've always been able to recover quickly and build on top of it as we needed to. I produce a lot of code in a very short period of time all because I was put in a very stressful situation and the only way out of that situation was to do so.

5 years later, I realized there is a better way

Back when I first started, I produced a lot of code, and answered every feature request with either implementing it within a few days, or not doing it because it would take too long. The problem with that is you end up with a house made of duct-tape instead of a solid infrastructure. Sure the system works and it's incredibly flexible, but it could have been built a lot better, and made a lot more adaptable and easy to manage. I recently started a brand new and very large project for my company (now re-branded as ACI). I looked at all the old code I had written and though "Wow, how does this even work?". Yes it worked, but it was ugly and not very maintainable.

Stressful situations get you to build code quickly, but approaching a problem in a much more calm manor, when you don't have tight deadlines or lots of features you need to do right now leads to a lot more stable code. It makes you re-think processes and instead of taking the easy way out, do the right thing. Sometimes the easiest way is the right way, but it's almost never the first way you think about it.


When my boss calls me in a panic, I just say "Ok, no problem"

Early on I would get upset when I got a call the day of a deployment telling me I needed to change everything. I've learned the simple solution to not being stressed out about problems is to just not let them stress you out.... don't react in a way that won't get anything done. What good does getting upset about the changes do? When he does that sort of thing now I simply say "Ok, no problem, but then we have to delay this release and push off these features to get it done". It's a trade-off; if you want new things done something else gets pushed off. 

Take time off, and go off-grid

Another thing that I've discovered that really helps when the stressful situations start to build up is to take a break whenever you can. When there aren't fires to be put out, take a week and go completely off-grid. Make sure there are people in-place to manage things while you're gone, but don't take any calls, texts, or even emails while you're away. (I wasn't quite able to not answer any emails, but I didn't answer any from clients at least). At least once a year, your body needs to completely de-compress and forget about everything. When you come back you should be much more focused and able to think more clearly about the issues that you need to solve. Don't look at that never-ending task list and think "it will never be all done", that's not the point of it.

Inbox zero is a pipe dream for most of us. Take what you can tackle, delegate what you can, and just push off what you can't. Some things will just sit at the bottom of the pile forever. That's just the way things go. Don't expect to always get every task completed. Get what's important done.

Take time for lunch, every day.


This can be one of the hardest things to do as a remote employee. Take time off for lunch, if you aren't heading out of your home-office, at least go away from your computer for a while. You should already be standing about once an hour anyway, so this time just go to the kitchen, make something more then just a sandwich, and then sit down at the table and eat it. Don't just scarf it down and go back to work either, enjoy it, take some time away. 

The bottom line is don't get angry.

Just be realistic. When new requests come in be honest, if you don't think you can get them done let them know. If your boss tells you what he needs you to get done, tell him when you can get that done. If he tells you when the deadline is, give him a list of features to prioritize and tell him how far down the list you can get done. And remember it's always best to under-estimate how much you can get done and how quickly you can get it done, if you end up getting more done or get things done quicker it's way better then getting less done or taking longer.

Just don't get angry when new things happen. Explain what you need to get it done, if it's time or another person. That's easier said then done, but the more you work on it the better you'll get.

And remember the next time that angry customer calls, they aren't angry at you personally. They are angry at the situation. It does no good to fuel their anger.

0