Pseudocode is a great method for uncovering unclear decisions, hidden side effects, and for defining all inputs, outputs and interactions needed to effectively solve a problem.
The art of successfully executing great ideas involves becoming better at problem solving, listening & communicating. Pseudo-coding is often used by programmers. Writing a program in pseudocode is a program language-agnostic technique that involves describing the function to be written in a high level, plain language (natural language). Pseudocode is not just for novice programmers, It is an excellent problem solving tool, particularly for writing complex algorithms. It also works well as a follow-up to creating well thought-out user scenarios and user stories. It is a great method for uncovering unclear decisions, hidden side effects, and for defining all inputs, outputs and interactions needed to effectively solve a problem.
- Describe the problem to be solved/function to be implemented. Break large problems into sub groups of problems.
- Determine the root cause of the problem or the reason for the function. What is the expected outcome for solving the problem? What is the impact of not solving this problem? Understanding “why” will keep you rooted in the bigger picture.
- Indicate what you need to know to solve the problem.
- Describe the environment where the solution will exist. Describe the people, places and things that are impacted? How does the environment interact with your solution? How is it impacted by your solution? This will help you to evaluate the larger impact and to also uncover any assumptions or pre-conditions that you’re assuming will be present or active.
- Document the high-level solution. Writing it out is the next best thing to talking (or walking) it out. This is an excellent way to communicate your intent.
- Detail the steps for executing the solution. “When <the problem> occurs, First <an actor will> do this, then <an actor will> do that, then <this solution will> do this other thing”
- For each step, evaluate & indicate the outcomes. What do you need to know to perform the step? What are the results of performing the step? This is how you communicate the expected outputs & post-conditions.
- Now how many steps did that take? How can you make it faster, better, smarter? (similar process to editing a story). You may uncover some unnecessary steps, redundant procedures or methods for more efficiently solving the problem.
- Rinse & repeat.