There are two main modes of physical exercise, aerobic and anaerobic. Aerobics train the body to maintain output throughout distributed muscles. Its goal is to preserve oxygen levels along a strenuous distance. Anaerobic exercises target muscle groups under resistance repetitions until the muscles cannot perform further. The goal is to improve the energy output of the muscle target by tearing and rebuilding. Both modes have benefits associated with peak performance.
Dealing With Software
Software engineers perform their craft in a similar matter. If one squints, the resemblance of aerobic exercise is to solve problems, such as taking on an unformed concern and unraveling it. However, engineers cannot complete the activity because they need specific "muscles" to command, which lack the strength to achieve the required endurance.
Engineers perform targeted "anaerobic" workouts to improve problem-solving endurance to achieve better aerobic results. But why perform exercises and spend time doing what seems trivial? The answer is simple, freedom to solve problems. As a benefit, career options will expand when we gracefully perform various computer science skills. We choose where to spend time motivated by solving interesting problems.
Targets
The core engineering workout is a process of concentration and effort. It requires about one hour of practice daily. If every day is too rigorous, exercise this workout every other day to let the mind rest. Rotate a reduced set throughout the week. Either way, working to solve known problems builds muscles in the brain, particularly the neocortex. Like code katas, these exercises target building muscle memory.
- Temporal - relating to temporary space. Holding items in mind is a skill that practice improves.
- Spacial - relating to visualizing how these exercises interrelate with data.
- Oral - rubber ducking through the problems challenges better communication. Think: how can I teach this to someone?
- Recollection - these workouts target a wide range of muscles, memorizing essential patterns. Repeating them leads to working efficiently within an integrated development environment.
- Abstract - Learning something new. Discovering a new workout, we add new computer science fundamentals to expand our knowledge.
The Workout
Like a physical exercise regime, these exercises require a warm-up to get the mind thinking clearly in the space. More profound activities ensue. After a certain amount of rotations, results include solving complex problems in less time. Craving to perform will follow, such as desiring spicy food from our TRPV1 pain receptors.
Warm Up (5 minutes)
Create an array, fill it with random integers, and print it to the screen. Or execute the Fibonacci sequence recursive and iteratively.
Sorts (10 minutes)
Exercise integer sorting in progressive order of difficulty. Bubble, Selection, Insertion, Shell, Merge, Quick, Heap. Finalize with binary search iteratively and recursively. Describe the Big O-notation as well.
Maps / Hashes Or Stacks / Queues (10 Minutes)
Create a naive hash table and basic hashing to avoid collisions. Or build stack/queues with challenges of finding the minimum on a stack, etc.
Trees Or Double Linked List (10 Minutes)
Create a binary search tree by inserting nodes, printing traversals, and deleting a node. As an alternative, create a doubly linked list. Insert, delete, and print in both directions.
Graphs (15 Minutes)
Create and traverse graphs using breath-first and depth-first search, or experiment with the Dijkstra and A* algorithm.
Alternative (15 Minutes)
Solve a question from the cracking the coding interview problem openly. Adding these random questions to the workout will inspire you to think differently and amend the repetitive nature of the previous exercises. If solving canned problems is not attractive, build something variable that utilizes these skill sets.
Conclusion
A disciplined workout is key to a healthy engineer, whether a leader or an individual contributor. The goal is discipline, first to remedy the repetitions by gradually improving the time to solve. Once achieving results, "aerobic" problem-solving exercises will come naturally because conditioned muscles are present to execute well.
There is a certain satisfaction to these exercises. Why not strive to be a well-rounded engineer? If one hour seems lengthy, reduce the set, building toward a new goal. Most importantly, push hard at the end of the exercise to finish well. Add a few more counts at its conclusion to improve the results!
Top comments (2)
I'm still in the very early steps of programming and coding, but been a physical education teacher for almost 15 years your article spoke directly with me and I'll definitely put in practice in my journey of learning.
Thanks for sharing! Indeed, a workout structure and rest in between provide gains. Software is a creative process with tension points too, and to gain requires a comparable rhythm.