Every project, professional or otherwise, can be a daunting task. Without a management strategy, you will feel like walking in circles, waste time and resources, to finish discouraged and unfulfilled.
Here’s how I manage complex software engineering issues.
First, I deconstruct the problem into very small, self-contained tasks as I can.
Second, I find the first task I can easily accomplish.
Third, I assess what I can do now that my first task is complete.
Rinse and repeat until my colossal project is done.
Detailed workflow below:
Step 1: decompose the problem
You can view any significant undertaking as a complex puzzle, with very tiny pieces. Your first job is to identify all the pieces.
Don’t be afraid to zoom in. It’s easier to reason about 5-minute tasks, than 1-hour or 1-day tasks. By drilling down, you will also identify hidden complexities and roadblocks that you might otherwise have missed.
Fight your instinct to dismiss a task as “trivial”, or “so easy it doesn’t need mention”. A seemingly simple problem might be hiding 3 hard ones.
Your decomposition process will probably raise questions: missing documentation, ambiguous or incomplete requirements, decisions not yet made by clients or third parties. Ask those questions now.
Write down everything. You need to have a bird’s eye view over your project. You also need to be able to forget the whole plan when focusing on one single task.
Step 2: find your entry point
It’s time to choose the first piece of the puzzle. Ask yourself those 4 questions, in order of importance:
- Is a task necessary to support all the others?
- Is a task related to a critical/urgent requirement?
- What am I best/most efficient at?
- What do I find more enjoyable?
Review your list of bite-size tasks, and pick the one that scores the highest for these four questions.
This is your sorting algorithm. Feel free to tweak it according to the nature of your project, the importance of requirements, or your own preferences. It only needs to make your decision process easy.
Step 3: complete your task
The task you have selected in step 2 is now your job. Forget distractions, don’t read emails or tweets, go from start to finish.
While working, you might stumble on another task that you may have forgotten during planning, or that could oh-so-easily be accomplished along your current one. It would be so tempting to do it right now. Don’t!
Add it to your plan for later consideration, and don’t think about it until the next time you pick a task. That “2 birds with one stone” mindset is what transforms 5-minute tasks into weeklong undertakings.
Once your task is completed, go back to your plan, and cross it from the list.
Step 4: find your next task
You’ve accomplished something. You are measurably one step further, and you have the luxury of knowing how many steps remain.
Pat yourself on the back, take a small break.
Then, go back to your sorting algorithm, and taking into account the new state of your project, pick the next task that scores the highest.
Careful, it might not be that nagging forgotten task you found while working. Stick to your process.
No project is set in stone, requirements will change frequently. When you examine the state of your project multiple times a day, you can react quickly to external changes.
When focusing on a small task, you can forget most of your project’s business knowledge, leaving more room for critical thinking and creativity.
The process of repeatedly crossing off todo’s off a list is addictive and rewarding. It’s more motivating to accumulate small victories over hours and days than to delay gratification over weeks.
Small, gradual changes make external review and validation more manageable. If you are working in a team, chunking tasks makes delegation and repartition of work easier, and reduces the chance of having two teammates unknowingly working on the same area of the project at the same time.