I picked up this book from Amazon: 5 elements of effective thinking. It goes through, not surprisingly, the 5 elements of effective thinking. Even though many people who program or has done a science degree will find the elements elementary it is always good to have it in a framework. The authors are Edward B. Burger and Michael Starbird. Both acclaimed scientist in the field of mathematics. This is not a quick and cheap self-help book.
The 5 elements are:
- Understand deeply
- Make mistakes
- Raise questions
- Follow the flow of ideas
- Engaging change
The element of understanding deeply describes how you should ground your thinking. There are several ways to do this. Understanding simple things deeply, clearing the clutter, see what's there and seeing whats missing. The authors give several clear examples in the different methods. One story is about how Michael Jordan where doing basic passing exercises in each practice. Always practicing on the basics and grounding the technique for the more advanced part of the game. The authors said that by going back to the basics again and again you gain deeper knowledge and understanding of the more advanced parts that you may be working on now. So I started thinking, what are the basics in Computer Science? Well one of the basics in mathematics.
I read the book in January, and started on my biggest recap ever: to go through all the match from elementary school to where I am now. Khan Academy is an excellent tool for doing just that. https://www.khanacademy.org/ It breaks all the curriculum of math into bite size chunks of 5-10min video lectures. There are also exercises for the different parts, e.g., number line, solving quadratic equations, converting from one unit to another and so on. 5 exercises done right in a row earns you a star and you can move on with clear conscience. The site is free for anyone.
By now I have closed many of the gaps I had in my basic understand. It has led to a great appreciation of mathematics. I often find myself getting memories from the first time I learnt the subjects. How I really did not understand the basics and reason for why a particular formula worked. Solving math problems became more of an exercise in pattern matching. Also the problem at school was way to sterile. I have yet to meet a similar set of problems in my day-to-day job.
Next up will probably be programming in C with the Emacs as a text editor. Again to understand the basics. During my day-to-day job I often program in the .NET framework. With a sophisticated IDE as Visual Studio which helps me with debugging and building. I am sure that by going back to the basic of understanding the steps in building a program and by working closer to the hardware with C I will gain a better insight to the high level code of F# and C# .
Making mistakes is a naturally part of becoming better. The authors urge the reader to make mistakes and investigate the subject or skill by analyzing those mistakes. One part which I especially found interesting is expecting to be wrong at least 5 times before getting something right. It challenges the reaction to being wrong. Being wrong just means you are one step closer to the last solution.
Sal Khan at khan academy has several videos about how the brain actually grows by making mistakes and struggle. And by grow he means that by taking scans you can actually see the brain form new neuron connections. This relates to the term: growth mindset: Carol Dweck, a Stanford professor, coined the term. The growth mindset has been a great influence to the work at Khan Academy. See an interview here:
Raise questions is the third element. I should never stop asking questions. Challenging the established. Asking why something fundamental is the way it is. Is it possible to do it in another way? The authors asked the questions what would happen if everyone started naming it the first world war before the second came. Would some of the policies or politics been conducted differently. Raising questions and challenging the very basics is also important in software development. That is why new team members are so important for a team. Someone with a fresh perspective that has not yet been exposed to the culture and way of doing it. Hopefully she will raise questions and challenge the very "basics". Elan Musk talks about something similar in his interviews, reasoning from first principles instead of by analogy. It is a principle in physics that looks at the basics building blocks and start reasoning from there. He mentions an example of the price of batteries. People usually says that the price of batteries are high and that is the way it will always be. Instead you should look at the basic components of a battery and see how the price can be reduced on each separate part. By contrast reasoning by analogy means that the basic building blocks are the status quo, and the challenges is to make something with a slight variation. A slightly faster phone, instead of creating the first iPhone is an example.
Follow the flow of ideas
Follow the flow of ideas is the fourth element. Lets take a piece of work that you should do. Here the authors recommend that you just do it. Perhaps easy for them to say but their point is that you will most likely create something that is sub par the first time anyway. So why not create something quick to start the iteration. Or to put it differently start the flow of ideas. This also sits nicely with the other elements like making mistakes. It is easier to see what can be improved than to stare at a blank piece of paper or screen. I remember when i started as my master thesis and had an introduction course on writing. The instructor told a similar story. He said that you should separate the analytic part of writing from the flow. By this he meant that you should just write, even if you see and feel that this is not good writing. After you have finished writing for an hour, for example, you can start the analytic part. See over, correct mistakes and note new ideas. The authors take this one step further in the "follow the flow of ideas" part. Here they want you to see the ideas and progress that les to the status quo to see how that maybe give you a clue on how the progress will proceed.
The fifth element is more of a meta element. Whereas the four preceding elements is about how to think better the fifth element is about change itself. By following the four elements described you will think more effective but the fifth element is that you should do it. No point in having the tools and the knowledge without exercising it.
Definition of insanity: Doing the same thing and expecting a different outcome.
I remember a long time ago when i was a kid and was at a soccer practice. The couch at the time said something to the entire team that still resonates: when you train to become a better soccer player you must do it with quality. At the exercises and drills that you go through during an exercise keep your mind focused and concentrate on the task. Be present and respond to input. The authors tell a story about hitting a tennis ball. The story reminded me about the soccer practice. They said that not engaging change and focusing is to try to hit the tennis ball with your eyes closed. The contrary is to be fully present and focusing all your concentration on the ball as it comes towards you. How is it spinning? How are my legs? Is my grip right? Etc.
The authors mean with the fifth and last element that to get anything out the 4 preceding elements you must actually do them. And do them with "your eyes open".