I know you’ve been through this, we’ve all been. Minding your own business, peacefully, things going on smoothly and then, out of nothing, something incredibly bad happens. The shit hits the fan. Of course, I’m not talking about the physical phenomenon (nor do I advise you to try to replicate that exact setup). I’m talking about “unpredictable” crisis. Situations that turns really bad without any perceivable warning. We’ll see later on that the “unpredictable” factor is not so unpredictable.
Well, since I’ve been through something that may qualify as a shit storm during the last week, I thought it would be useful to share some of my experiences, as well as some of the ways in which I eventually coped with the disaster.
One of things I really enjoy doing is writing iPhone apps. And lately, writing iPad apps. During the last 3 months I developed an iPad version of one of my iPhone apps, iAdd. I will skip the details about what iAdd does, just follow the link if you want to know more. I will just let you know that iAdd is a universal app, which means you download it only once but it will work on both your iPhone and your iPad (with a different interface, of course).
It was a really slow and daunting process. I think I changed the workflow at least 5 or 6 times. Writing a few days., then realizing it’s not going to work and starting over. Writing user interfaces is kinda difficult, you know. To make a long story short, after countless hours of getting my fingers dirty in the hidden intricacies of Objective C and iPad user interface elements, I finally came up with something I liked.
In this process, the iPhone app had to be touched a few times. A few navigation patterns had to be modified. And adding a little bit of this here and taking out a little bit of that from there. Fact is that after 100 days of development, the initial app, the one that was currently on sale on AppStore, was completely modified.
Feeling under the pressure of making it happen, without proper testing and with an incredible feeling of faith that everything is going to be just fine, I finally submitted the app. Version 1.3, which was supposed to be most glorious one to date. I really like the iPad interface I came up with, seriously.
The review process took about 4-5 days. I finally received the email stating that my app “is in review” and then, about 10 hours later, the email stating that my app is live on the AppStore. I think it was 3:30 AM last Friday. I felt a fantastic relief that my app was finally live and went to sleep as usual. Only half an hour later, I heard another email (I keep my iPhone close when I sleep, to hear the morning alarm, and when I get an email from certain important sources, the iPhone rings). Sleepy but relaxed, I looked at the email.
The next second, my relaxation went away. And also my sleep. It was an email from an unhappy customer, who just bought my app and who was experiencing a crash. A crash means the app is just going away when it is not supposed to. A crash is a bad thing. Scratch that. A crash is the worst thing that may happen to your app. In just a few minutes I received another email from another customer, who was experiencing a similar problem.
In just a few hours I was about to find out that my app was practically unusable.
Well, a mix of bad luck, tiredness and just plain strange stuff. The app submitted was simply not working and it took me a few hours to find out why. Some parts were not properly tested, while others were just left away, not included in the latest build, because… Well, I don’t know why. I simply can’t explain how the app was submitted in that form, but that was the blunt reality.
In other words, I was having a “the shit hits the fan” experience.
To make things really sad, you gotta know that you can’t fix things in the AppStore the moment you realize something is wrong. It takes days for your app to be reviewed again.
What About Now?
As I already told you, that happened last Friday, in the morning. It’s Wednesday now and for the last 4-5 days, I was under an incredible amount of pressure. As of today, the first fix of iAdd was approved and it’s live on the AppStore, iAdd version 1.3.1. But meanwhile I discovered another round of crashes which are fixed in the next version, namely 1.3.2. Which was just submitted to the AppStore, a couple of hours ago.
Hopefully, iAdd 1.3.2 will be the last version to see crashes. But, based on my recent experience, anything can happen. 😉 Seriously, I do hope there won’t be any more crashes starting from 1.3.2.
What follows is an attempt to formalize my experience in fighting an “unpredictable” situation of crisis, just like the one I just left behind.
1. Assess, Don’t Stress
It’s very easy to give in to panic when something goes wrong. Instead, I focused on what exactly happened. And what happened proved to be a little less worrying than I thought. For starters, there were a few additions that were still working, That was a good thing. Next, I already knew how to fix the crashes. Yes, I had a number of unhappy customers. And they were perfectly right.
But as I immersed myself into the analysis process, something very interesting happened. The adrenaline rush was not directed to a “fight or flight” situation anymore. When you’re facing a crisis, your reactions are following only two patterns: fight (or try to prove that my customers were wrong, in my case) or flight (leave things as they were, cutting out the iPhone business for ever from my business stream).
Either way, we’re talking about stress. And stress, as dangerous as it may be, it does have this incredible feature: it gives you access to a lot of energy. It can literally release (or block) tons of energy. Well, this stress energy, this adrenaline rush was transformed into working energy. In just a few hours I was able to fix the most annoying crashes and do a resubmit. And, luckily for me, it took only 3 days for Apple to approve it.
2. Decide So It Won’t Collide
Moments after I realized what went wrong, I started to plan. What needs to be done ASAP? What can I do now? What is the time frame available? After I gathered all the data, I started to play with decisions. Some of the things I knew I have to fix weren’t so visible (they weren’t producing crashes, anyway). I decided to leave them for the next version and focus on what I could do to fix the crashes.
Our ability to identify and follow up decisions during a crisis is drastically affected. But despite that, it’s vital to step back and choose. Even in a very dangerous situation we have many more options than the “fight or flight”. There is this urge to run away from the place of the crisis, hoping that a change in context will also change the facts. Unless a building is crashing on you, running away is never the best option.
Avoidance won’t work either. It takes a while to turn your face to the fan and take all the shit upfront. But it’s the only viable solution. Only if you identify the direction you can start to prepare the escape. If you don’t stay there, if you don’t face the crisis and its causes, you won’t be able to stop it. You may get away for a while if you run away, but each time you’ll get back to that place, there may be a different day, but you’ll be facing the same old shit.
Nothing is happening just by itself. And there isn’t such a thing like a “black box” of our life events, something completely unaccessible. Information is there, reach to it. Each time you face a crisis, try to communicate. The moment I got the first emails from my unhappy customers, I started to answer. Acknowledging the situation, apologizing, but… at the same time trying to get as much intel as I could.
As I following up to the angry emails I realized something very interesting. Yes, the app was behaving badly. Yes, there were a lot of frustration. But at the same time I realized that… my customers were actually relaying on my app for their daily activity (iAdd is time and task planner, to put it mildly). So, my app was important. Not to mention that my immediate answers were gaining big time on the “support” size of the whole experience. People were actually appreciating the fact that I was answering instantly and that was somehow lowering their frustration. Or so they said to me :-).
Every crisis can reveal something about you (or the others) that you weren’t aware of. As long as you stay on track and communicate. Don’t isolate in a “I know better” pattern. If there are other persons involved in your crisis, try to understand their point of view too.
4. Rebuild Carefully
After I finished the first 3 steps, I started to write code. This time, in a completely different manner than before. The worse had already happened. So why worry now? I just sat carefully, testing each feature 3-4 times with different data, until somehow, the whole app started to get a different consistence.
The emphasis here is on “carefully” not so much on “rebuild”. You gotta rebuild anyway, but just do it very carefully. It’s very important to realize that you did as much harm as you could already. No need to augment on that. Just pay close attention to what you’re doing and things will start to straighten up.
Again, when we’re under pressure, we have this huge urge to speed up. Well, speed up, if you have to, but do it carefully. You don’t want to make another mistake and then another one and then another one. Accept the current disaster and focus on avoiding the next potential one.
After I realized I’m facing a real customer crisis, I started to look around. I started to manage the process. And I’m not talking about assessing, deciding and writing code. I also started to write blog posts on the iAdd official blog, explaining what’s going on. It wasn’t only about fixing some bugs. It was also about informing other people.
After I wrote the blog posts, the number of messages decreased. People were visiting the blog, were reading the posts and apparently they were getting the answers they were looking for. They were not into bullying me, the author, they were just trying to understand what’s going on.
Using as many tools as you can get a hold of is incredibly useful in time of crisis. If a wheel on the car explodes, try to stay on track with the remaining three, don’t stop. Leveraging means reaching out to whatever you have, own or can use in order to smooth the crisis. And that stands true for any type of crisis.
6. Keep Your Fingers Crossed
I bet you didn’t see that coming. 🙂 Well, neither do I. But after I did everything that was to be done, after I submitted the app, responded to customers and wrote blog posts, I realized that’s it. I did all I could do. Everything more would have been a waste of energy.
So I just sat back and tried to relax. And kept my fingers crossed. Fact is you never know if something is going to work or not. You can only hope. Keeping your fingers crossed is a way of “giving yourself in”. I did everything, now let’s see what happens.
In any crisis, there is only so much you can do. Anything over that level simply won’t matter.
Write down what happened. Well, not necessarily in the form of 7 items list blog post, like I did, but do write it down. See where was the glitch. And then repeat it. Rewind in your mind all the phases of this unfortunate crisis. That’s how you can prevent it later on. That’s where the “unpredictable” I was talking about in the beginning of this post is turning into “obvious”.
We learn from mistakes, not from successes. We remember the dangerous and hurtful events much better than the happy events. I guess it’s wired into our survivals patterns. We do this in order to avoid a similarly dangerous situation.
Or at least that’s how you can cope better with it next time the shit hits the fan again.