How managing software development prepared me for raising children
Software development is a game of inches. Ok, that may be more apt for football or horseshoes. Much like child rearing, it’s the little things in software that make a big difference. It may not seem obvious, but there are a lot of lessons to learn from development that can make you a better parent.
Software engineering is often about trying things, forming a hypothesis, testing it out, and learning from the data. This occurs while designing a solution, coding, and building software. This approach mirrors the scientific method you learned in science class and also works with children. Research, plan, design, build, deploy, test, verify, repeat. These steps work for both a large software project and trying new things with kids. Each step is just as important as the previous and next. Without a hypothesis well defined to test you are just shooting in the dark. Without collecting data and verifying your theories and assumptions, you have no idea if you accomplished anything. But many other similarities apply as well.
The right experts make a huge difference. You may identify your Java virtual machine expert and your system engineer who is the only one who knows how to diagnose networking issues. Just like finding the right OB, pediatrician, and especially nurses for your hospital stay can mean the difference between a quiet experience and one fraught with issues.
Knowing when to listen to experts and when to trust your gut also works for both. With software, not every piece of code or advice you find on the Internet is right. With kids, the Internet tends to make advice look like rules you are a failure for not following. There are also no shortage of experts to tell you exactly what you should be doing as truth. Yet you will find that often your instincts lead you to better results. You will find the solutions that work better for your situation than any so-called expert could know.
Perfect is the enemy of good. In software, searching for perfection leads to constant pivoting and delays from confusion. With children, striving for perfection or what a book lays out as the right way is often harmful to both your psyche and your children’s well being. Instead, find a minimal set of requirements, ship, and learn from data. Then make small incremental improvements to yield the best result.
Test always, fail often. Be willing to fail but fail fast. Don’t be afraid to try something new and observe the effects before committing to it. Facebook is famous for testing hundreds of shades of blue to see which worked best. Don’t be afraid to try different amounts for feedings or longer breaks between. Try a new song. Maybe John Jacob Jingleheimer Schmidt calms your children down during a diaper change more than Party in the USA. Or if they are mine, both work well. You’ll only learn by trying new things.
There is always more than one way to reach a goal. The programming language Perl is famous for having at least three ways to solve any task. Learn from Perl — just not the syntax — and be flexible. What worked for others may not fit your lifestyle or values so try other methods to get the same results. There is no perfect formula for feeding or sleep — pun intended. Be Perl, not Python which often only gives you one choice.
Experts aren’t always experts. For every one helpful solution on Stackoverflow, there are six wrong ones. While the wisdom of crowds is a great enabler, sometimes it will lead you down the wrong path. Trust, but verify to make sure you aren’t making bad assumptions. Not every book or parent blog actually knows what they are talking about.
Stop, collaborate and listen. Vanilla Ice actually is an expert on many things. His advice is as true today as the day in which he penned these immortal words. People around you do actually want to help and will know things you do not. It is impossible to be an expert on everything, no matter how many books or blogs you read. Others who have actually gone through similar experiences have much to offer. Especially those in the same line of work as they have likely balanced the same priorities you now need to. Let them help. You can always learn more from others. If you are lucky and have a strong team, you will learn constantly. Build that team ahead of time and you’ll realize success. A good team has diverse knowledge and experience and so can rise to meet any challenge. Much like the powers of the Planeteers combining to power Captain Planet, a well assembled team or supporters is more powerful than the individual members thanks to complimenting each other’s strengths and weaknesses.
Set milestones and goals. No project will ever go out on time if it isn’t broken up into small pieces with checkins, or milestones. Just like you might set a milestone to complete a module for spell checking, make a milestone to get your baby to eight pounds. Or a milestone to get three hours of sleep. Having these little achievable goals will help make it feel like you are making progress. This is especially important early on when it is a struggle to make it day by day. When you feel overwhelmed, having little hits of dopamine from achieving one of these goals will go a long way.
Raising children may not be exactly like software development. After all there are no Java upgrades or OS deprecations that derails your plans. But staying flexible and adapting to the situation is the best way forward in both situations. With children, it may be an unexpected fever, or a crying child that just won’t respond to any of the normal distractions. By channeling your inner Mark Zuckerberg, you may not build the next Facebook, but you might raise a pretty decent kid.