I have held multiple job titles tech writer, developer, information architect and currently UX designer. Underlying all the job titles and skill sets is general problem solving ability that was needed to succeed. Here are three techniques that I have personally found very useful in improving my problem solving abilities.
Essential and Accidental Complexity
In the famous No Silver Bullet essay, Fred Brooks discussed two types of complexity that impact software development productivity. (Brooks attributes the original idea to Aristotle)
Essential complexity is complexity that can’t be reduced further. These are the difficulties in the requirements that are unchanged by the implementation.
Accidental complexity is complexity introduced during implementation. These are side effects of solving a problem.
I find this very useful to understand software requirements. Essential complexities come from users, organizations or society at large. Consider tax filing software as an example. The tax codes are the essential complexity. They are laws set by the government. From a software’s perspective they can’t be simplified further. But the accidental complexity, like saving user input, is under the software team’s control. If a problem will be not be present in another implementation medium then it is an accidental complexity. In the case of tax filing software, another medium is using a real accountant to file taxes. Will an accountant ask if you want to save your information when you leave her office?
For designers, solving essential complexity is usually more valuable than solving accidental complexity. User’s feedback often points at implementation details like “I want a button that will do x”. A good designer should distill the feedback to its essential complexity and then solve it. The best interface is no interface.
Software projects are about reducing uncertainty. When a project starts there is a lot of uncertainty. By means of research, discussions, mockups, prototypes and software, information is uncovered and the uncertainty progressively decreases. A framework to track the information space around a software project will be helpful.
Donald Rumsfeld popularized the idea of partitioning our understanding of the world into four quadrants. When I started hearing references to “known unknowns”, I assumed they were sarcastic comments. It took me a while to realize its benefit. I find it especially useful for thinking about user research. The four quadrants are:
Known-knowns. Things I know that I know.
Known-Unknowns. Things I know that I don’t know. I know the identifier or label of the data point, but I don’t know the data point. This is a manageable information space. Once I know the label then I can take proper efforts to uncover the data. Quantitative research methods are the right methods for tackling this area since I know what I’m are measuring.
Unknown-unknowns. Things I don’t know that I don’t know. At the beginning of a projects, I’m starting from this quadrant. Qualitative methods are the right methods for tackling this area since they yield richer information.
Unknown-knows. Rumsfeld didn’t use this category, but it can be derived. Things I forget that I know. Sometimes I forget take into account something that I already know.
Stephen Covey – Urgent/Important
Like most people, I have a running to-do list. I found that how I structure and order the tasks in my list determines which task I will do next. A common trap for me was spending more time on easy but less valuable tasks. Or working on tasks at the top of the list and realizing that a more urgent task is at the bottom of the list.
After I read Stephen Covey’s Seven Habits of Highly Effective People book, I started following his recommendation of dividing tasks based on urgency and importance. This technique makes me vigilant by organizing tasks based on what I value as importance. Instead of using four quadrants as he prescribes, I use two categories – urgent and important. Most of the time the urgent tasks are not important and important tasks are not urgent.
My goal is to spend more time on important tasks, since they are more fulfilling. Urgent tasks can’t be eliminated completely. But having all tasks in the urgent bucket is a sign of reactive work mode. I consciously try to spend some time on important tasks, even if I have a lot of urgent tasks. When I have no more important tasks, it is a signal that I have to start some initiatives to solve problems that I’m passionate about.