Want to Solve Problems More Efficiently? Do This.
From Mark Zuckerberg to will.i.am, it seems that everyone has championed the importance of learning code. This is a great thing. Learning how to code, however, isn’t just about knowing C++, Java and Ruby, but rather changing the way you think.
At Stanford, a young Marissa Mayer ended up tossing her pre-med flashcards and chose computer science instead because she wanted to study something that would make her "think critically and become a great problem-solver."
It’s a concept called computational thinking, popularized by Jeannette Wing of Carnegie Mellon in 2006. Wing argues computational thinking is just as important as reading, writing and arithmetic. Problem-solving skills, such as abstraction, pattern recognition and sorting can make your daily life more efficient. Bill Gates agrees, saying that “learning to write programs stretches your mind and helps you think better.”
Wing cites the example of a professional musician and computer scientist who used sorting to find the charts he needed for a performance. Instead of going through the stack of 200 one by one as the rest of his colleagues did, he sorted the charts alphabetically before pulling out the titles. He finished long before his bandmates.
Computational thinking goes beyond algorithms and recursion. It includes skills that may seem obvious at first but that give programmers the right mindset to be stronger problem solvers:
Asking the right questions. Programmers ask questions to ensure that they fully understand the problem. A study in 2006 revealed 44 different types of questions that programmers ask during software evolution.
As a teenager, Mayer attended a science summer camp where she was bowled over by a guest lecturer's ability to solve puzzles and brainteasers. She came to realize that the reason why he was so remarkable was because no matter what situation or problem you presented to him, he would end up "asking the right questions and making the right observations."
Learn from Mayer and don’t be afraid to ask questions. The right questions will help you determine the steps you need to take to tackle a major project. Clarifying the requirements from stakeholders helps you identify a solution.
Looking for inefficiencies. Programmers tend to say they’re the laziest people on the planet. They’re always looking for an easier, more efficient way to do things. When you give a non-programmer and a programmer the same 10-hour task, the non-programmer will spend 10 hours doing the task manually. The programmer will spend 10 hours writing code to do the task with just the click of a button.
When Gates sat down to write Microsoft BASIC in 1975, he was on edge the entire time, trying to make it faster and faster. He constantly looked for inefficiencies, maintaining that he wasn’t “going to let that stuff creep in.”
Similarly, you should always think critically about your business. There’s always something that can be improved in terms of efficiency. The moment you stop searching for improvements is the moment your business becomes inefficient.
Abstract thinking and compartmentalization. Programmers always see the big picture and have to think abstractly. In an interview, Gates said that the most difficult thing about programming was “[simulating] in your mind how the program is going to work” and “[having] a complete grasp of how the various pieces of the program work together.”
In a way, you need to think as a computer. Identify the input (requirements) and the output (problem). Then find a way to compute (connect) the two. This computation is broken down even further into smaller iterations, getting you closer to the output.
As programmers do, you can break down projects into smaller, digestible chunks. Even if you’re not dealing with thousands of lines of code, compartmentalizing the process makes it easier to manage.
How to start thinking. Even if you're not a programmer, just learning the basics can make a world of difference in how you approach problems. The best way to get started is simply to start programming. There are plenty of online resources available such as Codecademy and Khan Academy. Take some time -- even 20 minutes each day -- and start diving into code.
Just remember, it's not important to have language after language under your belt. It's about changing the way you think.