Often, when a junior technician, consultant, developer, or engineer is left on their own to solve a problem, they will dig in and show tenacity with determination to solve it. In some cases, it is fine that they sink huge amounts of time into trying to solve the problem, it is a learning exercise. But one skill that they need to learn is asking for help. This is also a valuable tool for people in senior positions, and it is super simple to use.
Timeboxing is a method used to manage time and tasks more effectively. It involves allocating a fixed, maximum unit of time for an activity. The goal of timeboxing is to create a clear boundary or “box” of time within which a task must be completed, or progress must be assessed. This approach helps maintain focus and ensures that tasks do not drag on indefinitely, thereby improving productivity and efficiency.
By setting these time limits, both juniors and seniors can ensure they are making the best use of their time and resources while also knowing when to seek help or escalate issues. Timeboxing can be particularly useful in troubleshooting and problem-solving scenarios, where it’s easy to become bogged down in details and lose track of time.
From the junior perspective
For the junior position, it is a key system that works along the lines of:
- Look at the problem that has been described and evaluate the possible ways to solve or troubleshoot.
- Determine how long would be reasonable to start to troubleshoot in a particular direction. This is the first timer.
- Determine how long would be reasonable to keep trying to troubleshoot before asking for help. This is the second timer.
- Once the first timer has elapsed, re-evaluate if you are making progress by evaluating:
- Changes in error messages
- Changes in state
- Improvements to the overall situation
- Evaluate if you should continue the same direction (because progress is being made) or change to a different troubleshooting direction.
- Once the second timer has elapsed, look to who you can raise the problem to.
- Before raising it to them, ensure that you have it clear (write it out) about what you have done.
- Explain the problem that you need to solve, what you have undertaken, and why you are seeking help.
It’s as simple as setting a time limit for troubleshooting and then escalating it once that limit is reached.
From the senior perspective
The senior position is interesting in this case. It may be assumed that you should be able to determine the way to troubleshoot based on intuition of the situation. Or, that you can do things faster. However, some problems handed to you may need a time boundary for the sake of the literal cost of problem-solving.
- Look at the problem that has been described and evaluate the possible ways to solve or troubleshoot.
- Determine how long would be reasonable to start to troubleshoot in a particular direction. This is the first timer.
- Determine how long would be reasonable to keep trying to troubleshoot before asking for advice, or passing to a junior for further exploration. This is the second timer.
- Once the first timer has elapsed, re-evaluate if you are making progress.
- Set progress gates to know that you are progressing.
- Evaluate if you should continue the same direction (because progress is being made) or change to a different troubleshooting direction.
- Once the second timer has elapsed, look to whom you can raise the problem.
- Before asking someone else about it, ensure that you have it clear (write it out) about what you have done.
- Explain the problem that you need to solve, what you have undertaken, and where possible, what indicators show it does not match your intuition.
Example – Troubleshooting printers
Problem: A user has sent in a support request that they are having issues with a printer that they were able to print to a few days prior.
Juniors Troubleshooting
- Validate with the user the issue they have.
- Set a time limit of 20 minutes for initial troubleshooting based on the description, and a further 20 minutes to try a different approach.
Troubleshooting – First timer:
- Check the connection between the printer and the computer.
- Ensure the printer is powered on and there are no error lights.
- Restart the printer and the computer.
- Check the printer settings in the computer’s control panel.
First timer elapsed.
Troubleshooting – Second timer:
- Verify if other users are experiencing the same issue.
- If the problem persists, escalate to a senior technician with a summary of steps taken.
This structured approach ensures that junior technicians have a clear plan of action and know when to escalate issues, thereby efficiently managing their time and resources.
Seniors Troubleshooting
- Validate the problem with the user and review the junior technician’s notes.
- Set a time limit of 30 minutes for initial troubleshooting based on the complexity of the issue, and another 30 minutes for deeper diagnostics if needed.
Troubleshooting – First timer:
- Verify the network connection and check for any changes in the network that might affect the printer.
- Investigate the printer’s error logs for any recent issues.
- Perform a deeper dive into network diagnostics to rule out connectivity problems.
- Check for recent updates or changes that might affect the printer’s functionality.
First timer elapsed.
Troubleshooting – Second timer:
- Conduct advanced diagnostics to identify any hardware or software issues.
- If the problem persists, consult with other senior team members or escalate to vendor support with detailed documentation of all troubleshooting steps.
Example – Implementing an Algorithm
Problem: You are required to implement a non-trivial algorithm from a different programming language. It does not need to be performant, but it does need to be correct and produce both the same results, and the same side effects.
Junior Implementation
- Understand the problem and validate the requirements.
- Set a time limit of 40 minutes for understanding the algorithm and another 40 minutes for initial implementation.
Implementation – First timer:
- Begin by understanding the algorithm in its original language.
- Write pseudocode to capture the logic and flow.
- Start implementing the algorithm in the target language.
- Test each step to ensure correctness.
First timer elapsed.
Implementation – Second timer:
- Run test cases to verify correctness and side effects.
- If encountering difficulties, escalate to a senior developer with a clear explanation of the issues faced.
Senior Implementation
- Understand the problem and validate the requirements.
- Set a time limit of 30 minutes for initial implementation and another 30 minutes for optimization and additional testing.
Implementation – First timer:
- Implement the algorithm in the target language with a focus on accuracy.
- Conduct thorough testing, including edge cases, to ensure the algorithm behaves as expected.
First timer elapsed.
Implementation – Second timer:
- Optimize parts of the code that might improve performance without altering correctness.
- If unresolved issues arise, collaborate with other senior developers or refer to subject matter experts for advanced troubleshooting.
Review
By following these structured approaches, both junior and senior team members can effectively tackle complex problems and ensure their work meets the stakeholders’ requirements, expectations, and goals.
