DEV Community

Cover image for When code meets Metcon: Top 4 rules for becoming a great developer

Posted on


When code meets Metcon: Top 4 rules for becoming a great developer

Hi 👋 , my name is Koby Damari. I’m currently working at and I’ve been doing Crossfit for the last 3 years.
Through the years I’ve found some similarities between the principles that I think every developer should embrace in order to improve oneself and the principals that a good Crossfitter should have in order to succeed.
Every time I notice a common principle, it makes me smile. I’d like to share my favorites with you in this post.

1. Have a plan before going to action
Before you begin a “metcon” workout (the backbone of CrossFit), you make sure you have a plan to do it the most efficient way possible, and so you know how to manage your time correctly throughout the workout.
Similarly, to be a good developer you need to verify that your solution is scalable and that it really does provide enough value to the end-user relative to the time you expect to invest in developing it. Otherwise, the results can be too poor to overcome.
I’ve come across more than one project that wasn’t well-designed. Most often the cost and the suffering of the engineering team in order to fix the issues or to add new features way too high.

2. Be ready to learn new things
A good CrossFitter is always willing to learn a new skill or another approach in order to lift heavier weights, or to run faster. At the same time, successful CrossFitters know some things take more time to understand and achieve and you need to put the effort into the process in order to achieve your goals.
Likewise, every good developer needs to have a thirst to learn new things. The tech world is constantly changing, and as a developer, you need to learn new things, get a deeper understanding of your existing stack and tech environment and you should always try to be on the lookout for a better solution than the one you’ve already planned..

3. Scale down and iterate through time as necessary
When you do CrossFit you need to know how to scale your workout in order to improve your skills or to increase your power and stamina. Trying to jump too high too soon might cause injuries.
Developing software is no different. Before sprinting forward, and putting in a huge effort in the development of an expensive system, it’s best to evaluate the feature, or the entire system, in respect to its expected ROI (return on investment), prioritizing value for the user.
To make sure you’re on the right track, you’ll be more successful if you first start with something small or simple, measure its value, and run user tests. After you analyze your results, you can then decide whether you want to make the feature more sophisticated, how, and what the delivery plan is to be..

4. Manage your time
A good Crossfitter knows how to manage time, avoiding getting “burned out” too quickly on the one hand, and making sure to achieve the highest score possible on the other.
Developers best succeed by following suit. A good software engineer knows how to separate the trees from the forest, understanding what things are worth spending time on and what things will ultimately be a waste of time. Additionally, it’s important to manage your own ‘sprint’ tasks in a way that avoids blocking other team members as best as possible and to identify risks that might postpone deliverable due dates as far in advance as possible.

Wrapping it up
So - basically, whether you’re a CossFitter or a developer 👨🏼‍💻/🏋🏻‍♂️, make sure you have a plan before getting started, be ready to learn new things, scale down and iterate over and over again to continue improving as you go, and manage your time. Before you know it, you’ll be on the road to success.

Top comments (2)

dk1100 profile image
Dan Kopeikin

Awesome post!
What should you advise for people that don't find time to train and exercise due to work overload?

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.