When you slow down and start troubleshooting mobile apps in a logical fashion you usually uncover that the issue was a lot more obvious than you originally expected. Computers are logical and follow specific steps so even if you don’t know the reason yet you will uncover this by following these steps to troubleshoot your mobile app. The problem is as humans we are emotional beings who love overcomplicating simple problems. A key I’ve found for myself is to step away from the computer and think about the entire project from a high level. Then I usually explain what the issue is to myself and I start theorizing what could be causing the issues. Once I have a good understanding of the issue I come up with individual theories of what could be causing the problem. I then take an individual theory and come up with a simple test that can prove/disprove this theory. This enables us to spend enough time thinking high level to avoid getting lost in the details. It’s very common that when trying to debug you can’t see the forest through the trees. Hopefully these 6 steps can help you identify issues quicker with less frustration.
Step 1: Check the Basics
So many times our developers end up pushing back on the project managers just to ensure we haven’t missed something obvious. It seems funny but this helps us prevent wasting time looking into non-issues. It’s not uncommon to hear these phrases out of our developers “Please make sure you have cleared your cache or are in an incognito window,” “Are you sure you are on the latest version of the app?” As a project manager or client you always want to double check the basics to make sure you didn’t overlook something.
Step 2: Take Account of the Situation
This is a step that is too often skipped by developers and project managers alike. If you immediately jump directly into an assumption of what the issue is you could end up changing perfectly good code which will break something else in your application. This is never fun and sends you down a rabbit hole chasing multiple issues. Taking just a few moments to think about the project architecture helps you see the problem from a higher level. Questions I always ask myself.
- What is the structure of this project?
- Where is my database?
- Where is the app hosted?
- Are there any third-party tools we are connected to?
- Whats the past history of this project?
These questions help you approach the problem with a solid foundation and grasp of where the project is at.
Step 3: Check Your Monitors
This goes hand-in-hand with the previous step but it’s worth separating to make sure you have the tools implemented from the start. As developers and project managers we love using third-party tools to make our lives easier and monitoring is no different. Usually backend issues can be harder to identify solely b/c they are usually less obvious but sometimes the issue smacks you in the face (when you have the right tools implemented). Whenever you are in the early steps of identifying the issue don’t forget to check your server monitors to see if anything strange is happening in the API or the Database. We’ve found a large amount of issues simply by seeing something strange in the reporting. Here are some real-life examples
- Why did CPU usage spike to 100% then drop immediately off? Maybe an API was poorly written thats causing this spike
- Why did the system go offline exactly at 12:00am? Maybe the Cron Job to a backup of your database has officially maxed out your space.
- Why are your database connections steadily growing? Maybe you aren’t successfully disconnecting old user connections
These are all questions we’ve asked ourselves after viewing something weird in our reporting. These statistics help point you in the right direction to figure out exactly where the issue is. This step has helped save a ton of time on our projects so hopefully it helps you as well!
Step 4: Get More Data
One of the worst things you can do on a complex web or mobile application is to dive immediately into trying to resolve the issue when you don’t have enough information. Complex projects have many moving pieces that are all interconnected so in your attempt to solve the one issue you may inadvertently create a new problem if you don’t stop to gather data first. Remember guessing at the issues is a great way to ruin a complex app and cause yourself a lot of headaches and wasted time. The first thing you want to do is recreate the bug on your own environment and devices. Remember to…
- Run multiple tests trying to follow the exact steps the user followed
- Get additional information from the client. Never be afraid to ask for information like Device Type, Internet Speed, OS version. If you do this from the start of the project the client will get in the habit of always sending this so you don’t have to constantly ask.
- Get data through the system that you can cross-reference against the issues
- Always ask yourself “Why would the mobile app do [insert bug]”.
Step 5: Remember Software is Always Logically…There will always be an answer looking backward
No matter how confusing and strange the issue appears once you find the bug you will see why the system was acting that way. Knowing that the problem has an answer helps keep me motivated to find the issue. To me these problems are all puzzles looking to be solved. This is why we always tell our Project Managers to ask the developers exactly what was the issue. When we hear the developer’s explanation it usually either clicks in our brain (which is great!) or it doesn’t (which means we ask more questions and double-check that the issue is resolved or not). Remember during this step
- Always speak in 100% truths. Ex. “Every time I clicked Logout on my iPhone XS running Operating System 10 my user would not get logged out”
- Over-describe EVERYTHING. Ex. “The user email@example.com, who first purchased the product on November 1st 2020, has missed their monthly renewal of $5.00 which should have processed on January 1st. We know she used a VISA card and I have tested the subscription myself successfully on my user firstname.lastname@example.org”
- Never use pronouns This is a bad habit that leads to confusion on projects
- Whenever you say “It” you really mean …. “The Login Page”
- Whenever you say “They” you really mean ….. “The user email@example.com”
- Whenever you say “The app doesn’t work” you really mean … “When I load the iPhone app I see the splash screen and then the loading icon but the homescreen never loads”
- Remember to just explain the problem to your rubber ducky 🐤. More on this comical concept here
and finally one of the most important steps…
Step 6: When You Are Stressed Just Step Away
It’s extremely common in this job/industry to feel like every issue needs to be solved immediately but this is rarely true. Usually time crunches only add unnecessary stress onto the team members involved in the project. As long as the team is aware of how immediate the issue is don’t continue to harp on this (I’m very guilty of this myself). This unnecessary pressure usually results in your team member getting exasperated which typically makes the issue harder to solve. Usually this just makes everyone emotional and emotions are the enemy of problem-solving. When you are emotional your brain is literally functioning differently and the part of the brain you are activating is not the same part that is used to problem-solve.
One term we speak about at Founders Approach is when someone is going “On-Tilt”. This is a phrase I’ve borrowed from the Poker world. It means when a player has gotten emotionally shook (usually because of a bad beat or losing an important hand). Their emotions creep into how they play and they start acting irrationally. Its impossible not to get emotional but getting a handle on how you are feeling needs to be done first before you get back into solving the problem.
We’ve all been there before…. long day, with fires everywhere and you get a final call from a client of a major issue that needs attention. If you’ve already exhausted your willpower it can be really difficult to mentally get the energy to resolve the problem and if you get mad about this situation I’m sure you will struggle to solve the issue.
Some steps to walk through when you find yourself going “On-Tilt”
- Walk away from your computer/devices immediately (notifications are built to make us feel urgency)
- Close your eyes and take calming breathes
- Find what works for you: For me I love music and I have a few relaxing songs that help me reset before I come back to my work
I can not tell you how many times I will be struggling with an issue for 3 hours (being emotional the entire time) and then I step away for a bite to eat and as I’m sitting there the answer pops into my head, clear as day.
So don’t let your emotions get in the way and never be afraid to step away. You got this! Over the last few years our team has used these steps to help overcome many challenges with projects and that’s why we are so proud to show them off on our Mobile and Web Portfolio pages.
I sincerely hope this article helps you better troubleshoot your own projects so we can all get more great mobile apps and websites into the world