In the first installment of this post titled “5 Ways to Apply Software Engineering Practices to Life”, I highlighted some common engineering practices and how they could be applied to virtually any task you do in your life. Examples cited included improving your level of physical fitness, saving money for investing, or planning an exotic trip. In this post I’m going to give you five more engineering practices and how they can also be used for self improvement and lifestyle design. These principles are based on sound, proven practices within the technical community and can benefit you, the “customer” in whatever goals in life you may have.
So without further ado, here are the remaining five principles to round out our 10 ways.
6. Use Lots of Debug Statements to See Your Expected Output
7. Test… Test… Test…
8. Have Someone Quality Check Your Work
9. Automate Whenever Possible
10. Use a Variety of Tools to Do the Job
6) USE LOTS OF DEBUG STATEMENTS TO SEE YOUR EXPECTED OUTPUT
One of the most difficult things about software development is making sure that the values you are expecting to be passed through your code are actually what they should be. To test for this, developers often insert debug statements throughout the code at various points to show the value of their variables. This way you can actually see that what you think is occurring is actually occurring.
That being said, what do debug statements have to do with anything in my life you’re probably asking? Obviously it’s not possible to insert a bunch of “print” statements in your life. But the idea behind the principle is to know what your personal variables are. Want to lose weight? Well you need to know what your starting point is such as your bodyweight, your body fat percentage or body mass index (BMI). Maybe you’re looking to improve some other measure of your health such as lowering your cholesterol or blood pressure. Well you need to know where you’re starting from so go get a test and show your current output level, so your expectations match reality.
Want to improve your financial situation? Perhaps lower your current level of debt or increase your investments? Again you need to insert some “debug” statements and know where you’re starting from and how you’re doing along the way. Obtain a free credit report from one of the three credit bureaus. Look at what credit card and consumer debt you have. Get copies of your banking statements and retirement account statements out and look at where you currently are. You need to know what values you are starting from in order to improve them.
7) TEST… TEST… TEST…
“I haven’t failed. I’ve found 10,000 ways that don’t work.” – Thomas Edison
The quote above is what Thomas Edison said when asked how he felt during his quest to invent the incandescent light bulb. I think it highlights exactly the intent of this step as it relates to lifestyle design. Whether designing software, inventing a new product, or coming up with a new workout, it is imperative that you incorporate testing in your process!
In the software development world, testing usually takes part in 2-3 stages. The lowest level of testing is what is known as Unit Testing. At this stage, the developer tests his small portion of code in his own development environment. All of the variables and the environment are configured to make sure the new and/or modified functionality works as it is supposed to. The next stage of testing is typically Integration Testing in which the developer integrates their code into the working baseline as it exists at that moment in time. The point of this is to ensure that what you’re developing will fit into the current product or current system environment. The final level of testing is typically System or Regression Testing. At this level, once you’re new or modified features have been integrated and tested to ensure they work, you need to backward test the system to make sure none of the previous functionality has been accidentally broken or removed, and still works as designed.
So when it comes to how to incorporate this principle into your life, it is very simple. Whenever you are looking to make a change in your life, whether physically, financially, or career wise, you need to carefully test the changes you are making. First off, unit test the change on a micro level on yourself. Change your diet for a couple of weeks and see how it makes you feel, whether more energetic or less. Change up your workouts by reversing the order of exercises you do in the gym, or adding in an extra workout per week. Try saving money automatically by having it automatically deducted from your paycheck into a separate savings account that you ignore. Try reading a new book on a career skill you’ve always wanted to learn.
Second, once you’ve tested a small change on yourself, perform the integration testing by seeing how this change affects your life for the better or worse as a whole. If adding an extra workout takes time away from your spouse or children, maybe you need to go back and include them in your physical fitness plans as a whole, rather than just working out alone. If saving $50 per week automatically means you can’t pay your bills, go back and adjust the amount to $35 per week, and evaluate your finances. If you’re not saving enough, increase the amount and reevaluate. Perhaps you have difficulty learning new skills for your job from a book, but would benefit from signing up for a class at a community college. Integration testing new changes and how they improve or worsen your lifestyle is very important!
Finally, you need to regression test. With all the changes you are making, do you still have enough time to spend with family and friends, enough money to pay all your bills and yet have a social life? Are the skills you are learning for your job truly relevant and beneficial to your working environment? If the answer to any of these questions is “NO”, you need to go back and retest accordingly your change(s).
8) HAVE SOMEONE QUALITY CHECK YOUR WORK
In software development typically the last person to sign off on anything, whether that is an official test, a formal document or a code deliverable, is the Quality Assurance (QA) representative. QA’s responsibility is to be an independent final check on all work. They have the responsibility of ensuring no steps in a test procedure are short changed or skipped, all the “i’s” are dotted and “t’s” are crossed in your documentation, and you don’t miss any requirements in your software deliverable.
With that being said, sometimes the best way to quality check what you are doing is to have someone else act as a “QA” person for you. This person could be a friend, a family member, a spouse, a coach, or a co-worker. Ideally though, it should be an independent person who can evaluate your progress honestly and unemotionally on a given task, whether that be losing weight, learning a new sport or skill, performing a job function, or investing in something, and provide you with feedback in regards to your performance. Have this person write down for you what they observed you doing or not doing. Have them take pictures or video of your performance of a task. Have them provide suggestions for improvement, or if applicable, provide positive feedback and encouragement about your performance! The job of a coach or a “QA” person is to minimize or eliminate errors, and to recommend process improvements so you can do a particular task better the next time!
9) AUTOMATE WHENEVER POSSIBLE
In an engineering environment, automation of processes is a critical part of improving productivity and enabling repeatability of tasks in a consistent manner. Automation can encompass any aspect of the engineering process, whether that is setting up software environments, performing a software build, running test cases, etc. Automation streamlines operations, reduces errors, reduces the need for “tribal knowledge”, makes forgetting to do certain tasks less likely, and ensures people are not pigeon holed into doing specific tasks indefinitely because they are the only ones who know how!
The benefits of applying automation to your personal life should be immediately clear! Anything you can automate which will eliminate the risk of error, forgetting to do something or simply ease the process of doing it is a good thing. Simple examples of this include setting up automatic deposit of funds from your paycheck at work into a retirement account, or even depositing your check itself into your bank so you don’t have to. Hire someone to do chores around your house such as a lawn service, pool cleaner, cleaning lady, etc. so you don’t have to do them on the weekend and are free to pursue other things you enjoy! Set up online or automatic bill paying with your monthly expenses like your mortgage or rent, electric, water, cable, phone, credit cards and anything else you may have so you don’t forget or have to take time to do them each month. Sign up for Netflix, Nutrisystem, or other home delivery services of products you regularly use so you can avoid the hassle of going to the video store, cooking for yourself, shopping, etc. In this online world the list of products and services you can setup from a computer and automate for yourself is nearly endless!!! Use a little creativity and ask yourself the following:
“How often do I do this particular task?”
“How long does it take me each time?”
“Would I benefit from automating it and/or having someone else do it for me?”
“Can it be eliminated?”
10) USE A VARIETY OF TOOLS TO DO THE JOB
An engineer is like a good carpenter. They’re familiar with a wide variety of tools that enable them to do their job. If one tool can’t get it done, an engineer will find another one that will. Software engineers are familiar with a variety of programming languages, operating systems and more importantly techniques and strategies for developing the product they want to create or getting done the task they need to complete.
Similarly a person trying to reach their goals, better their performance in a skill, or improve their life in some way should have a toolbox full of tools to enable them to get a job done. You don’t want to be a one-trick pony! For example, when beginning to start an investment program, you’ll often hear the expression “Diversify! Diversify! Diversify!” What this means is you need to use multiple investment tools such as having a 401K or IRA as your retirement vehicles. Invest in stocks, bonds, mutual funds, options, real estate, etc. Get your investment advice research from a variety of sources before investing in a particular investment.
When trying to improve your level of fitness, you should use multiple physical fitness tools such as cardiovascular training, weight training, isometrics, etc. Train your body with dumbbells and barbells, circuit equipment, kettle bells or whatever other weight equipment is available. Perform a variety of cardio exercises such as jogging, bike riding, swimming, jumping rope, walking or whatever combination of activities get you moving and keep you interested. Mix up your training into high and low intensity activities. Try dancing, boxing, martial arts, adventure racing or whatever else gets you excited to get out and move! By using a variety of fitness tools and not doing the same thing over and over again, you will avoid boredom, benefit from muscle confusion, keep your training intensity level up and maximize your training performance!
There you have it! Ten ways to apply some of the most critical engineering practices to various aspects of your life. Use a little creativity and apply these principles to any goals you may have or areas of lifestyle design you desire. Each principle and the examples included with them are just tools and should be used accordingly to help you build a better you!!! Now go out there and make it happen and do me a favor… let me know how you’re doing.