Learning any new skill can be a very intimidating prospect, to begin with, we’re likely to clumsily fumble around like a baby learning to walk, often falling on our asses, but over time, with enough perseverance, we’re all capable of metaphorically rising elegantly to our feet and not just walking, but running, dancing and jumping, and some people, with practice, can somersault and land back on their feet with great style.
In these modern times, with technology driving the business landscape to change so rapidly, there is a greater requirement for individuals to also be able to change rapidly, to be able to learn and develop new skills, and be open to new challenges and demands.
The ability to learn rapidly is going to be increasingly necessary if individuals are going to thrive.
So learning quickly is going to be a must, moving forwards. So the question is, how can we learn and master new skills fast?
Tim Ferriss has developed a learning framework he calls DiSSS, which is an acronym for Deconstruction, Selection, Sequencing and Stakes.
1. Deconstruction: What are the minimal learnable units we should be starting with?
2. Selection: Which 20% of the blocks should we focus on for 80% or more of the outcome we want?
3. Sequencing: In what order should we learn the blocks?
4. Stakes: How do we set up stakes to create real consequences and guarantee we follow the program?
We’re looking to break a skill down to it’s most important components.
I find it easier to imagine starting a new project from scratch, and walk through it, step by step, noting down each requirement as I go.
I have recently put some of the teachings, found on this website, into practice for myself, while learning Python programming. Things like, finding reliable sources of accurate information by using role models, mentors and mastermind teams, and finding out the methods, relationships, systems and habits they use for success. You can find more about these things on other articles on the site, so I won’t go into depth here, but as part of the learning process I also looked to deconstruct the skill of programming into it’s essential ingredients. This is what I came up with..
Essential elements of programming
- Understand the syntax for Python code, so that it does what I need it to do.
- Develop the ability to break a problem down, so that I can use Python code to address or solve it. After all code is written to solve problems, some of which are complex and some of which are more straight forward.
- Following on from number 2, being able to spot problems to begin with is also a skill that can be developed, not everyone has enough empathy for others to be able to stand in their shoes and see how they see any given situation. Good coders either solve problems they, themselves experience and need fixing or they empathise for other people.
These were my major findings when it came to DECONSTRUCTING Python, these being the top level concepts that I needed to learn about and develop. They constitute the 20% that needs learning to achieve 80% of the results, in my opinion, as Tim Ferriss advocates in his DiSSS framework.
In terms of number 1, understanding the syntax of Python, there were/is countless websites and YouTube videos devoted to the subject. The most time consuming part of it was finding reliable ones that made it easy for a newbie like me to understand.
Some of the tutorials mixed mathematical principles and coding together, which for me, made it rather confusing, as I needed to brush up on maths I hadn’t used for years, such as Algebra. I eventually found the tutorials that linked the new concepts I needed to learn about Python programming to things I already understood, and this made the learning process much easier.
The list of important syntax included:
- Commenting on your code
- Variables
- Mathematical operations
- Logical Operations
- Conditionals such as if, elif and else statements which effect a programs flow
- Loops – for, while loops particularly
- Built in library
- External library and use of modules
- Data types – strings/ integers/ floats/ booleans/ lists/ tuples/ dictionaries
- Dealing with errors and exceptions
- Functions
- Classes
I practiced code examples, repeating time and time again, until I could recall the code without any prompting and completely from memory.
I practiced the code, broke it apart, removed some of it to see what happened, moved the order around to see what difference it made. I changed it so that I knew what each part did and why.
I progressed by making a few small apps for myself, such as one that just did a simple “to do list”, another that converted currencies, sizes, weights. I did one that helped in the decision making process, another that evaluated moods and so on. Through this practicing and the subsequent trial and error, I gained a better appreciation for what could be done using Python.
I went on forums and groups and tried to spot the problems in other people’s code and solve them. Some forums and groups had challenges that I tried.
Through this I not only improved my coding skills, I developed my problem solving skills and ability to use code effectively to provide real solutions, this also realised number 3 in Tim’s framework criteria, SEQUENCING. I didn’t set out to learn code before sharpening my problem-solving skills, it just intuitively happened that way.
My programming skills are still a work-in-progress but I’m getting better all the time, through purposeful practice, and challenging myself.
I’m 50 years old, and coding with Python is a completely new experience for me, but I’m enjoying the learning process which means I don’t really have to bother with the final criteria of Tim’s framework, STAKES, the shear joy of doing it is enough to keep me going, mixed in with the fact that it’s giving me new skills and a greater knowledge of the new technical world we are facing. With knowledge comes power as they say, but equally with knowledge comes less fear, fear of the unknown.