In 2010, Mark Zuckerberg famously said that the key to success is to “move fast and break things.” From an external perspective, “moving fast” means shipping new features and products at a healthy cadence. Internally, an engineering organization moves fast when its engineers work on problems of value as efficiently as they’re able.
Solving meaningful problems
Engineers have different ideas of what makes a problem meaningful – the company’s bottom line, the end-user experience, the reliability of the codebase, or something else entirely. When an engineer works on something that she’s passionate about, she produces high-quality output. Engineering can be a slog, and working on an important problem makes the hours spent fixing complex, involved bugs worthwhile.
Having lots of important, high-impact problems at the company is an easy way to have engineers feel that they’re doing something of value. But even if an engineering organization isn’t lucky enough to have more important problems than engineers, knowing what individual engineers value should inform staffing decisions. Of course, communicating a clear vision and product roadmap is another way to garner excitement about projects that are important to the organization.
Working efficiently
Once an engineer is tasked on a problem, moving fast means being able to make progress whenever she’s able. Any perceived impediments to progress are frustrating and have a significantly negative impact on quality and speed. Two major sources of such roadblocks are tooling and process.
The typical engineering workflow is to write code, test it, and repeat as necessary. The tighter this loop, the faster progress can be made. If testing code requires a minute to build and deploy, that’s a minute of potential development wasted. In certain cases, engineers can spend more time waiting for the code to compile than working on it! Anything an organization can do to invest in the build or development tools such that an engineer can interact with the software she creates as quickly as she can think about it is time well spent.
Development process can sometimes get in the way of moving fast, too. Project planning, code reviews, and QA are all necessary pieces of the product lifecycle, but it’s important not to let them block day-to-day development. Unnecessary discussion or process that blocks development can be as frustrating as waiting for a long build process and should be minimized whenever possible.
A group of efficient, excited engineers moves fast, which is good for an organization’s productivity, morale, and recruiting. And, it’s a lot of fun!