Code Monkey want a better body. Code Monkey way too fat.
As I mentioned last week, it only took a few key changes to drastically change the way I approached and, more importantly, conquered my fitness goals. These changes had nothing to do with learning about the the latest fitness and diet trends — I already knew all of those. The changes had nothing to do with joining a gym or buying fancy equipment — I had tried both. No, my problem was all mental, and mostly due to a lack of confidence and a lack of hope. I didn’t believe that I could tackle the monstrous project called “health” because I didn’t have the skills or experience.
Image courtesy of juco on Flickr
Well, all of that changed when I took a new approach to how I thought about fitness and diet and health. Small mental changes, little fitness mind hacks, that helped me relate my fitness journey to other aspects of my life that I was successful at. I would have to say the biggest of these mind-hacks was when I realized that I could treat my fitness related goals like I treat my software development projects.
It amazed me how closely aligned the processes I use every day when I write code or plan my software development project were to the process for losing weight and setting goals. I’ll admit it wasn’t a huge leap to make this correlation, it seems obvious in hindsight, but it was this minor mental mapping — software development to fitness — that kick started my weight loss and kept me delivering on my fitness goals.
Here is exactly how programming and software development helped me lose weight and meet my goals:
1. You need a good development environment
Image courtesy of John Wiseman on Flickr
As every programmer knows, you need a good development environment to get things done. Without the proper environment, you’ll often find yourself limited in your capability to move forward or spinning your wheels trying to get started because of too many options.
Finding the perfect environment is a can be a little bit of a task in itself. Take the time to look at your options. The environment you choose should easily mold with your personal style, taste, and experience. Like choosing a software development environment, you don’t want limit yourself to the status-quo or what the “pros” say you should use when choosing your fitness development environment.
Explore, experiment, and like Goldilocks, find one that is “just right”.
Here is my mini guide for fitness development environments:
- The minimalist environment (This is the style for all of you vi and gcc’ers): You don’t need a fancy gym membership or exercise equipment to get you where you need to go. You understand that you only need two things in this world to get into shape: you and gravity – and those things are always available.
- The DIY environment (This is for the “best tool for the job” coders): You realize that there are some great tools that exist to help you meet your goals, so you buy a few weights and some resistance bands and you maybe even splurge on an exercise bike. But with this method, you are not limited or constrained on what you do. You build your own environment based around only the things you need.
- The virtual environment (This is for you… virtual environmentalists?): Like the DIY environment, you have a hodge-podge of tools at your disposal, but you have an specific environment you are aiming for as a part of your end goals, so you really try to set up your training environment to match. If you want to be a fighter, you enroll in a martial arts class where you learn critical skills you need or buy a punching bag to hang up in your garage. If you want to be a rock climber, you build find or a training wall.
- The fully integrated environment (This is for you Eclipse and Visual Studio users): With this method, you commit to a place that offers the kitchen sink when it comes to fitness. I’m talking about a good, ol’ fashion, all-purpose gym. You need weights – you got ‘em. You want aerobic classes – they offer those too. You want tanning beds – most of them surprisingly have those as well. Even though you may have to pay a premium for it, you have just about everything you need in one nice, consolidated package.
For me, it was a combination of the all of these environments that got me where I needed to be. The fully integrated environment helped me figure out what was available and mold my training path. The DIY environment helped me supplement the areas that the fully integrated environment lacked. And the DIY environment allowed me to workout wherever I happened to be sitting or standing at the moment. One, none, or all of these environments might work for you. Take time to try them all and see which gives you the best results.
2. Just get Started
The most important thing I have learned in software development is that, sometimes, you just have to get started. You can spend hours researching the “perfect” ab workout or developing a detailed 48-month fitness plan, and never move a muscle. The unfortunate thing is that there is no perfect plan. Like in software development, you can spend all your time trying to figure out the perfect framework, or the best libraries for the job, but sometimes the best way to figure it out is by diving straight in.
Start moving. Do anything. Run. Walk. Pop, lock it, drop it. It doesn’t matter – just do it. If you need to refine you workout routine later, as you read about optimal methods for your specific goals, you can. But just get moving today.
3. Always be agile
Photo courtesy of Garrettc on Flickr
A while back, I wrote about how to Agile development practices applied to health and fitness. The concept of Agile Development comes with a host of methodologies that keep your development paths clean, quick, and versatile. Here are a few of those methods that I used to drop pounds.
- Use short iterations for your goals: Of course you have a long term goal (40 pounds, run a marathon, etc.), but the best way to meet your long term goals is to set many short term goals that build up to your long term goal. The time frames should be short and and the goals attainable. For example: If you want to lose 50 pounds in 6 months, set a goal of 8-10 pounds a month and then forget about the big goal. Each month, put all of your focus on the short term goal. Sprint towards that goal as fast as you can.
- Do daily scrums – Each morning, ask yourself the following questions: What have you done since yesterday? What are you planning to do today? Do you have any problems preventing you from accomplishing your goal?
- Allow time for reflection: At the end of each sprint, take some time to reflect on the previous month. Did you meet your goal? If you didn’t, why not? Reassess your next month’s goals. Maybe something has changed – a new long term goal or a new long term deadline – that might change your short term goals.
There are so many support groups that have this model built in already. Use them. My favorite is the 28 day challenge on the Nerd Fitness message boards. Each month, you set 3 goals that you are pushed to meet within 28 days. Each day (or week, or never, your choice), you post your progress — what you did the day before, what you plan on doing the following day, how you feel, etc. At the end of each challenge, you have a week to share and celebrate your results. If you didn’t meet your goal, there is a whole community of people ready to help you work through what you need to change and motivate you for the next challenge.
4. Use Design Patterns
Photo courtesy of Grant MacDonald
As in any field, there are problems common to all software development projects. For these problems, people have built general, reusable design patterns that can be adapted to your specific goals. Keeping a good working knowledge of some of the most common design patterns can save you time during your development. Instead of focusing on a secondary problem, you can just focus on the core business logic.
The same is true for fitness. If you have a specific goal in mind, chances are, someone has had that goal to and met it. If you are lucky, they wrote the method they used down and put it out into the public domain so you can just adapt their plan to you. You might know these as training plans. Here are a few of the fitness design patterns that I have used:
These patterns can give you a big head start towards meeting your goals, but don’t feel you have to follow these plans word for word. Remember we are all different. Use them as a guide, but you will know when it is time to start building your own custom pattern. Remember to write it down and maybe you will have your own pattern that will act as a guide for others.
A few more quick mind hacks
There are a dozen more little hacks I use, most of which are too small to give a deep discussion on, but I thought I would quicklymention a few of them.
- Always refactor your code - You should frequently reassess your workout routines and try to remove inefficiencies and isolate the things that are working. We are all busy people, if you can get your workouts down to the most efficient components, then you will save time and get more results for your effort.
- You’ll always benefit from better debug logging – Always keep a record of what you do. When you get to the end of your sprints, you might need to look back to remember what you have done. You need to write down all of your core stats (weight, mileage, pounds lifted, etc.) each day as well as your emotional and physical state. Did you lift more during the week you got more sleep?
- Set up good regression tests – As you meet goals and set new goals, do forget you go back and test your overall fitness levels. If you successfully ran a 10k and set a then new goal to be a backup dancer for Usher, make sure you don’t lose your ability to run a 10k. At the end of every fitness sprint, you should pick a few things that will test your overall fitness ability. Use your old goals as your regression tests.
Applying good software development practices to my fitness life really helped me feel like I had control over my destiny. I knew all of these processes worked. They have taken me from a white screen to a complex application many times before. Thinking about my fitness goals as just another software project gave me the confidence in myself to complete it. I hope this will help some of you too.
I’m interested in what my fellow software developers think.
- What processes in your daily life as a code monkey have you applied to your fitness life?
- What processes can you apply?
Let me know!