I want to learn new skills, be a part of a talented and healthy team, and work on great things in the games industry. But as I realized a year ago, a huge priority for me is also to have a happy home life along with my professional life.
Work Life Balance
There are horror stories in the industry about people working themselves to the bone, crunching for months and sometimes towards an ever receding horizon of a project ship date, destroying their families in the process. This was viewed as acceptable by big publishers because the title would ship, everybody would crash, take a few months to recover, and sometimes be laid off or move on to the next project and start the cycle all over again.
I think everyone agrees at this point that it's a terrible model for development. As companies are starting to switch to a service model, they can't release a product and then have the development staff crash. You can't have people burn out and leave the project, because it's when the title ships that the work really begins.
So what continues to drive the desire for overtime? From a high level management perspective, the hours an employee works are the only knob they have to turn to increase production output. And for short periods, this really works. Need to get 6 weeks of work done to meet a deadline in a month? Have everybody work 12-14 hours a day. Production is increased, the deadline is met, success!
The problem of course is that this is not sustainable, and there is always a drop off in efficiency over time and a recovery period necessary. Different people have different levels of productivity increase from overtime, and the productivity drop and recovery time vary significantly based on age, stress and other life factors, but the general pattern is the same:
Reference: Rules of Productivity
In the world of game development engineering, the productivity drop off can be much steeper, because tired people tend to take longer to solve problems, solve them in non-optimal ways, and often introduce bugs that cause wasted time in the Q/A and bug fixing process.
Quality of Work
The first part of good work life balance is having a healthy work environment without extended overtime. But in today's world of rapid iteration and/or constantly increasing game features and scope, how do we achieve this?
- Good planning and scoping
- Good time estimations
- Good communication
- Improving efficiency
- Stop working
Good planning and scoping is the first step, and something all teams try to improve. As a team gets experienced, it gets better at defining goals and scoping a project. Many teams plan rapid iteration and gradual expansion of scope after core elements are in place.
Good time estimation and frequent review of progress are crucial to good planning and scoping. It's important to factor in time for iteration on customer experience and bug fixing into the overall schedule. When I'm estimating time, I usually estimate how long I think a feature or task will take to implement, then I triple it. This usually gets pretty close to the actual total time cost, including handling unforeseen issues, making required improvements and bug fixing.
Good communication with management leads to trust on both sides (hopefully!) and helps reduce stress in the workplace. Good communication with production staff helps tighten the planning feedback loop and makes sure that re-scoping happens early enough so that teams can account for it and minimize wasted work. Good communication among engineering staff is really helpful to share key information or smart ideas to accelerate work, or even make it unnecessary.
For example, when I was leading the social systems Battle.net team, I noticed that some people new to the team (including me) were spending a lot of time digging through code, or struggling finding the right way to solve problems in the codebase. So one of the things I implemented was a rule that before starting a task or trying to fix a bug, the person should stand up in our area and mention they were working on it and ask if anyone had any advice. This didn't affect the old hands much, since they held most of the knowledge already, but new people achieved about a threefold improvement in efficiency and very quickly ramped up on the systems and history of design decisions. We also caught some cases where new designers were making requests that conflicted with previous design decisions and saved ourselves work that would have been thrown away.
Improving efficiency so a team can get more work done more effectively is always a good idea. Work done improving Q/A processes means better morale, better bug flow, and better interaction between Q/A and engineering. Work done to reduce iteration times, build times, export times, game startup time, etc. repays itself in spades. Experienced engineers multi-task so while waiting for things they're thinking about the next problem, or reviewing the code for correctness, etc., but there's always some time wasted in context switching, so reducing waiting time is almost always good.
The flip side of course, is that if everything is too efficient, it's easy to forget to take breaks and slowly become fatigued, which leads me to my next point...
If I am sitting there trying to figure out a problem and it's taking a while, the best thing for me to do is to get up, walk around and do something else. I'll often come up with the solution while away, or when I come back to the code I'll have a fresh perspective and get the solution quickly.
Solving more challenging problems are always easier for me if I go home, spend time with my family, and have a good long shower in the morning.
Both at Blizzard and 38 Studios I was a part of a hack circle that met mid afternoon, and invariably I would be much more productive after I got up and got the blood flowing, and the adrenaline pumping.
A friend of mine who led a team at Sony once told me that when his engineers came to him with a problem, he would tell them to go talk to a tree. He wasn't being flippant - getting out and talking through the problem in the sunshine near a convenient source of elevated oxygen actually improves brain activity and helps solve problems.
Quality of Life
The second part of good work life balance is of course, life. We are social animals and we need friends and good relationships, good food, fun and exercise to be at our best.
For me, having a happy home life is extremely important to how well I do at work. If my wife isn't happy, ain't nobody happy, and I can't really concentrate and be effective on the job. If I get smiles and hugs from my kids in the morning I have smiles for the rest of the day.
Coping with Crunch
So the planning failed, you have to work overtime to get the product ready for a milestone and production and management are willing to accept the costs. What do you do to stay healthy, happy, and efficient?
The first thing to do is know your priorities. Make sure that you're reaching for specific goals instead of just adding more time to the stack. Find ways to work smarter so that you're doing exactly what needs to be done to achieve those goals. Don't need that afternoon meeting? Ditch it! Wasting time context switching with various tasks? Mark off blocks of time that are devoted to certain types of work. Some of these kinds of things are good to do anyway to improve your work processes, and some are temporary measures to let you stay super focused. You might find that getting hyper-focused is all you need to get the work done without any overtime at all.
The second thing is to stay flexible and know your limits. Don't just work exactly 12 hours because someone mandated it. Some days you'll be more tired and need to stop early. Other days you'll be on a roll and want to finish something up for another few hours. Remember to take your breaks to stay working efficiently and able to focus. If you need to stop, be honest with yourself and your team. It doesn't do anyone any good to make tired decisions and write poor code that will cost everyone later.
Be creative and find ways to make things work best for you. Don't neglect the important things in life even if it feels like work is temporarily more urgent. If you only have one evening available, maybe make it a date night. If you're missing meals with the family, maybe they can join you for lunch, or maybe you can swing your hours early or late so you get breakfast or dinner with them. You might want to get out of the office on breaks for a change of scenery and a chance to decompress. Take some friends and go running to blow off steam...
Be patient. Extended overtime is hard on you, your family and your team, and a good attitude goes a long way to making it easier for everyone.
Having a healthy balanced life is a big priority for me, and luckily a lot of companies know the importance of work life balance and are working to create a good sustainable environment for their employees. I'm excited to meet more of them over the next few weeks.