As your business expanding and your roster of clients grows (and grows and grows), one of the biggest challenges you’ll face is managing multiple projects. You’ll have so many balls in the air that you’ll run the risk of dropping one of them, which would be a disaster for your company.
So how do you stay on top of everything? How do you make sure that deadlines are hit? How do you ensure that you’re producing quality work? How do you avoid burnout? As with so many things in software development, it really comes down to three key factors: project management, time management, and resource management.
One of the key factors to managing multiple projects is having a solid project management methodology with good tools and procedures.
Foremost in having a good project management system is having regularly scheduled reviews of the current development landscape. We encourage folks to do this once a week. During the weekly review, you talk about what got accomplished in the previous week, what’s going to get accomplished in the upcoming week, and what (if any) blockers you have. Each one-week period is called an “iteration” (a term from Agile).
Assigning work for the upcoming iteration is more of an art than a science. A lot of it comes down to estimation and figuring out how long various tasks are actually going to take. It’s generally better to undercommit than overcommit because if you finish early, you can always pull something else from the backlog. (The backlog, by the way, is where all future tasks are stored.)
Once work is assigned out, all you have to do at that point is track progress to make sure that everything is on track to be launched on time. At Gunner Technology, we base a lot of our project management around a web-based piece of software called Redmine, which is a tool that provides the ability to track and manage tasks. You can add all of the users from your organizations, create one-week iterations, and assign tasks to those iterations.
Once all of the work is assigned, then comes the hard part: actually doing the work.
Another key factor in managing multiple projects at the same time is managing your time well. Improving your time management skills is largely the result of practical experience. Most people have to figure out what works for them. (And it doesn’t really matter how you manage your time so long as what you do allows you to get your work done on time with the necessary level of quality.)
That being said, there are certain things we’ve found to be highly successful for optimal time management. One great thing to do is to batch up your work. We often talk about getting in the zone (which is akin to Mihaly Csikszentmihalyi’s idea of “flow”) where you’re working on a piece of software and your mind is fully focused on the task at hand and the code is flying out of your fingers.
What often makes getting in the zone tough is being interrupted by constant distractions, which you have to try and control as much as you can. But another mistake we see people make is switching tasks too frequently. If you’re working on five projects, Monday-to-Friday, it’s better to spend 10 hours a day on an individual project than 2 hours per day on each one, each day. You need to focus on one task wholeheartedly (or wholemindedly).
Even better, however, is to split days, working on two projects a day for five hours, which often have the added benefit of finishing your work for the iteration early. This has two noticeable benefits: first, when you inevitably come up against something that is going to take way longer than you imagined, you’ll have extra time to handle that; and second, if you have a bunch of free hours at the end of the iteration, you can always pull something out of the backlog and get ahead.
One other trick that helps you get in the zone is somewhat counterintuitive, but it’s actually something that creative types have used for ages. (Hemingway, for instance, would use this trick and stop writing right when he knew what would happen next so the next day he could dive write in with the next chunk of writing.) But at the end of the day, while you’re still in the zone, force yourself to stop working. When you pick it up the next day, you’ll know exactly where you were going next and you can hit the ground running.
In addition to having a project management philosophy as a company and a time management philosophy as an individual, you also need a resource management philosophy as a team to ensure that people are comfortable hopping in wherever they’re needed.
And, again, this all comes down to standards.
One key step is to document and automate as much of the process as you can. When we build React Native applications, for example, we have a new project script that generates the scaffolding for the project in the exact same way every time. And then we organize the React Native directories the same way for every single project.
(As an aside, in contrast to frameworks like Ruby on Rails or even Angular, which are called “opinionated”, React Native is an unopinionated framework, which means that it’s up to the developer how they want to structure it. Anything can go anywhere – it’s entirely up to the dev. But we’re suckers for opinionated programming at Gunner Technology, so we’ve standardized React Native development as much as we can.)
And there are numerous other standardized processes you can implement. Standardized naming schemes help a ton. Trying to use what are called immutable functions also helps anyone jump into a codebase. (Immutable functions are functions that return the same thing every time given a particular input. There are no surprises!) Even just standardizing tools used can help the process. At Gunner Technology, we use the same devices, the same editors, the AWS tools, everything. And what that accomplishes is that all of our amazing employees can move wherever they’re needed.
So at the weekly planning meeting, using our project management methodologies, we assign work to individuals, who use their own time management systems to estimate their availability. We assign work based on that availability and based what needs to get built that week. And anyone can work on anything thanks to our huge (and ever-growing) suite of standards and practices.
And that is how you balance working on multiple projects at the same time.