I recently started a new hobby - weightlifting. I am having so much fun and seeing progress in my physical abilities as well as technical capabilities. Something I enjoy doing is finding connections between things that may or may not be related to one another. During this journey I’ve noticed a few things in common between software development and weightlifting. πŸ’ͺ🏾πŸ–₯️

Embracing failure is key to success

Trying to pursue perfection in both the fitness and software world can be paralyzing. When designing distributed systems, failure is inevitable. These systems need to embrace failures using techniques like redundancy and fault isolation. When encountering a setback at the gym this is an opportunity to adjust your training, tweak nutrition, and come up with a better strategy.

Plateaus

A plateau is a period of slow progression that can be discouraging. Plateaus are a result of staying in your comfort zone too long. Shaking things up is a good way to regain momentum. When lifting weights it is important to keep your routine challenging by increasing the weight and intensity. In software development this can be overcome by learning new languages and frameworks.

Consistency over intensity

Consistency is the key to sustainable weight gain, muscle growth, and overall health. Staying consistent when leveling up programming abilities can ensure you build your skills and knowledge over time. To become consistent in both strength training and programming, set realistic goals, keep yourself accountable and create a routine.

Easy to get started but can get deep

It is fairly easy to get up and running when first learning to program. However it can take years to truly master a language or domain. Weightlifting is also accessible and easy to start. Similarly, there is an entire world of knowledge to explore; anatomy, physiology, chemistry, psychology, and physics of muscle development.

More than one way to do something

Software development is a series of tradeoffs. When developing software there are multiple ways to arrive at the same solution which will depend on the architectural characteristics and requirements of the project. When weightlifting there are many different exercises, variations and techniques to achieve the same goals.

Use it or lose it

Maintenance is important for both lifting and programming to sustain gains. After periods of strength training, it is important to continue to eat clean and stay active to prevent atrophy of muscles. When learning programming concepts continuously review relevant material and don’t stop coding in order to retain information.

The importance of sleep

This is obvious but crucial - Sleep is important for muscle recovery as it is for memory and learning.