At the end of the day, the whole reason that we are at work is to Get Shit Done. "GSD" is a great motto, but what does it mean in practice?
The biggest lie of "Get Shit Done" is that software is never truely "Done". There are always tradeoffs between the time spent working on a project and the quality and future maintainability of the codebase. Our philosophy is that we need to continuously invest in quality in the preset to avoid getting bogged down in excessive maintenance in the future.
If we never put our software in a box, wrap it up, and call it "Done", how can we ever GSD? Resolving this paradox requires redefining our basic unit of work. Instead of measuring how well and how quickly we can "complete" an entire application, we need to scope our units of work into smaller tasks.
Figuring out how to scope work is an art that requires a fair amount of trial and error to learn. Some good rules for scoping are:
There will always be more work that we could be doing than time we have available. Figuring out which work to do is just as important as doing the work correctly. As an academic example, choosing to build a system that provides half as much value as another is equivalent to working half as quickly on the more valuable system. Therefore, maximizing how much we GSD requires discipline to determine the best way that we can add value to the company and to not get distracted by less valuable tasks.
Balancing all of the requirements of GSD falls under the umbrella of "Project Management". This section describes how we organize ourselves to best GSD. Like all of our processes, these should be followed in spirit, not necessarily to the letter. Don't be afraid to break rules and change things if they're not working!
At a company level, the executive team breaks our work down according to several strategic goals. These provide long-term (multiple quarters if not years) direction to product focused tasks. Additionally, some tasks will be engineering driven based around creating efficiencies in maintaining our current systems and building new ones.
As of mid 2014, we are in the early stages of rolling out Objectives and Key Results for the engineering team and, eventually, the rest of the company.
OKRs operate in a medium (quarterly) time frame. They provide focus to our efforts and a shared understanding of our goals.
An OKR starts with a single broad objective that serves as a guiding principle. It also contains several key results, each of which consists of a measurable goal that we can use to determine if we are fulfilling our objective. Key results should be aggressive but not impossible; we expect that most key results will be mostly but not completely achieved.
OKRs are organized hierarchically according to our team structure. Generally, the contents of each OKR are driven by individuals and teams figuring out how best to fulfill higher level OKRs. While all OKRs are mutually agreed upon by all stakeholders, they should not be imposed from above on subordinate teams and individuals. So, the company will have certain overall OKRs, which inform but do not dictate the OKRs of each department, team, and individual.
As OKRs are still very new at Bizo, this section will likely be in flux as we learn and gain more experience with OKRs in practice.
On a day-to-day basis, the engineering team organizes tasks according to a lightweight form of Kanban. A full discussion about Kanban is beyond the scope of this document; however, here are what we see as some of the key principles:
If you are interested in a good book about Kanban, we recommend this one by David Anderson.
Our tasks are tracked in Asana. Typically, each team will have their own project. We use priority headers in the project to represent the stages in our Kanban flow. Tasks start at the bottom and move to the top.
We also use Asana for other types of communication that are best organized as lists. For example, we keep meeting agendas, conference topics, and lists of ideas for blog posts in various Asana projects. Don't hesitate to open a new Asana project if you think it will help you organize and communicate!