Over the years of training and assisting various technicians, I’ve formed a set of guidelines that I’ve been known to drill constantly. The other day while talking to a newer technician and working with them I realized that I now have the time I didn’t have before to actually write down what I’ve been ranting about for 14 years. I’ve dubbed them as the Laws for the Practical Technician.
- Keep an open mind when approaching the problem and avoid falling back into the “End User” mindset
- Read and explore everything on the screen! Pay attention to what’s being done and what its telling you
- Understand the problem at least as well as the person asking you for help
- Be intentional in your troubleshooting, closing your eyes and throwing darts at the wall is not helpful
- Question everything you think you know and are being told.
- Always have a way out, make sure you can undo anything you do
There’s a lot of nuance in each “law” so now that we got the TLDR version out of the way let’s dive into the specifics. Note for the purposes of this post, each law has been given a title.
1. The “Technician” Mindset
Keep an open mind when approaching the problem and avoid falling back into the “End User” mindset
If you run around with your eyes closed expecting nothing to get in your way, you’re bound to smack into a wall (or something) and fall down. If you keep your eyes open and aware of your surroundings you can navigate the obstacles and overcome them.
End users typically expect systems to work seamlessly and view issues as problems needing external help. Technicians, on the other hand, approach systems with the expectation that things might not work and are prepared to “figure it out” each time.
Key Points:
- Expect Issues: Approach every situation with the mindset that things might not work as expected. This keeps it fresh in your mind, and allows you to figure out what should or should not be happening each time, and usually during that process you’ll identify the disconnect that’s causing the issue.
- Problem-Solving Approach: View issues as challenges to be solved rather than insurmountable problems. This proactive mindset helps in finding creative solutions.
- Context Matters: The difference in mindset is less about the person and more about the context! Everyone (for the most part) handles their own problems for their personal lives daily. The moment it becomes a work or tech issue suddenly its hands-off. Be aware of the context you’re in, this affects Clients escalating to IT and IT escalating to a higher tier! Don’t fall into the trap.
Example: When dealing with a software bug, an end user might see it as “broken” and wait for a fix. A technician, however, will explore various angles—checking logs, considering recent changes, and testing different scenarios to identify the root cause, or find a viable workaround
2. Read the Entire Screen
Read and explore everything on the screen! Pay attention to what’s being done and what its telling you
Computers and software are designed to be used, (it’s actually the only way they make money!). Therefore the information needed to operate or troubleshoot them is generally available on the screen or in logs, (although the language can be context-specific for the industry). To effectively identify and solve issues, it’s crucial to explore the interface and ask questions. Thoroughly reading on-screen messages and prompts can provide insights into what might be wrong and how to address it.
When encountering an error message or unexpected behavior, don’t rush to conclusions, AND DO NOT SKIP IT!
Instead, read all the details provided. Error codes, system messages, and even seemingly minor details can offer significant clues. For instance, a message that seems obscure at first glance might make sense when considered within the context of the application or system you’re working on. Even comparing against a computer that is working, looking for differences in behavior, or order of operations, screen activity, and so on, can provide clues (for example an error that takes a while to appear is likely caused by a timeout, vs an error that appears immediately is likely caused by an immediate rejection).
Example: If a user reports an issue with a software application crashing, instead of just noting “application crashes,” you should read any error messages, logs, or system prompts that appear when the crash occurs. These details can guide you towards understanding the root cause and potential fixes.
3. Understand the Problem
Understand the problem at least as well as the person asking you for help
To effectively troubleshoot, ensure you can recreate the problem and understand its significance. Start by asking the person reporting the issue why it’s a problem and why it’s important to solve it. Gather as much information as possible to understand all sides of the issue. You should be able to understand the problem at least as well as the person reporting it to you, otherwise how do you expect to fix it? Or even explain it to the next escalation point if you have to reach out for help?
Here are some ways you can work to understand the problem.
- Recreate the Problem: Attempt to replicate the issue in your environment. This step is the best option because it allows you to see the problem firsthand and understand its nuances, at the same time as testing to see if its a problem with their computer only or a wider issue. You can also choose to recreate the problem on a different system, if it requires specific applications or files you don’t have on your computer directly.
- Understand the Impact: Determine why the issue is significant. Is it causing data loss, preventing critical operations, or just a minor inconvenience? Understanding the impact helps prioritize the issue and communicate its importance to others.
- Gather Detailed Information: Ask the user detailed questions about the problem. When did it start? What were they doing when it occurred? Has anything changed recently (e.g., new software, updates, hardware changes)? What’s normally supposed to happen?
- Prepare for Escalation: If you cannot resolve the issue, you might need to escalate it to a vendor or higher-level support. Having detailed information and a clear understanding of the problem will make this process smoother and more effective.
Example: If a user cannot access a shared network drive, ask them about any recent changes to their system, any specific error messages they receive, and how critical this access is to their work. Look at what the shared drive is mapped to, and if other people have access to it that are working. Identify the network the user who is complainign about is on and if it has connectivity to the shared drive host. This comprehensive understanding allows you to troubleshoot more effectively and escalate if needed.
4. Be Intentional
Be intentional in your troubleshooting, closing your eyes and throwing darts at the wall is not helpful
Being intentional in your actions means making deliberate, thoughtful decisions rather than taking random stabs at fixing an issue. This approach prevents exacerbating the problem and leads to more efficient troubleshooting. Most technicians below Tier 3 will perform troubleshooting by way of “trying different thing to see what works”, this is essentially closing your eyes and trying to pin the tail on the donkey, make sure you understand what is going on, and the logical reason why what you’re attempting will affect (either negatively or positively) the current outcome so that you can make progress with every step.
Expand on This:
- Map out the “Attack” Chain: Before diving into fixing an issue, outline the Chain that exists to allow the system you’re troubleshooting to work during normal behavior. What are the potential areas for disconnect? What steps will you take to test that the chain is working throughout?
- Progress is Progress (both good and bad): Any change in outcome is desired, as it’ll help provide information about the underlying behavior that we don’t have visibility into. Look for error messages, success messages, timers, lags and so on. No detail is too small.
- Evaluate and Adjust: After each step, evaluate whether it has brought you closer to resolving the issue. Adjust your approach based on these evaluations.
Example: If a printer isn’t working, don’t randomly try different fixes like restarting the printer, reinstalling drivers, or changing settings. Instead, follow a logical sequence—check for error messages to help point you towards a connection issue or a driver issue.
5. Question Assumptions
Question everything you think you know and are being told.
Always be prepared to reassess what you know. Technology and systems evolve, and what was true yesterday might not hold today. Keeping an open mind and questioning assumptions can lead to discovering the true cause of an issue.
Expand on This:
- Expect to be wrong all the time: When you’re right about something there’s no reason to go back and check because you know you’re right. If you’re wrong about something then you’ll be looking to validate that you are wrong, or what the right answer is. This mindset helps keep your knowledge fresh and reminds you to double check everything you think you know or are being told.
- Seek Out Information: Be proactive in seeking out new information and learning from others. Forums, user groups, and official documentation can offer insights you might not have considered. Often times all it takes to help find the answer is asking the question, not to the person next to you, but even to yourself! Use the Rubber Duck method if you need to.
Example: If a network issue arises, don’t assume it’s due to the same cause as last time. Reevaluate the situation – start the troubleshooting process from scratch everytime until you’ve identified the root cause to the be the same as last time.
6. Never Do Something You Can’t Undo
Always have a way out, make sure you can undo anything you do
Always have a contingency plan before making changes. Ensure that any action you take can be reversed if it doesn’t resolve the issue or causes new problems.
Expand on This:
- Backup First: Before making destructive changes, find a way to keep a good copy of what you’re changing. This ensures that you can revert back if needed.
- Test Changes: Where possible, test changes in a controlled environment before applying them to the live system.
- Document Reversible Steps: Ensure that every action you take can be undone. Document the steps if necessary so you can revert configurations and settings.
Example: Before modifying a system registry, backup the registry or export the key in question. Rename something instead of deleting it, or cut/paste it somewhere else. This way, if the change has unintended consequences, you can easily revert to the previous state.