I enjoy working with talented individuals to architect and build enterprise-class, high traffic, disruptive Internet businesses.
Shared musings, insights, and experiences - and occasionally, some code.
Many startups follow a similar cycle: one or more entrepreneurs will start a business to solve a pain point they perceive in some customer base. They'll launch a product, gain some traction in their target market, and begin to see growth in adoption. They reach "product-market fit", get financing, and continue to see the business grow.
Around this time in the growth of the business, as operating expenses of the company grow, customers grow - the cost of mistakes also grows, including the cost of poor decision making that results from not having an indepth understanding of the business and knowledge around how various decisions impact business sales and operations. With professional investors on the board, it starts to become important to manage investor expectations when talking about evolving the company strategy, and managing the growth of the business.
To better understand and manage the business, startups look to introduce data-driven decision making into their management practices. This is great, it takes subjectivity out of discussions, and focuses conversations around the data.
Adopt the Right Process First - Then Measure and Continuously Improve
While data is important in helping to evolve and optimize the business - having the right process in place for your operations through adopting industry best practices is a precursor to measuring performance and managing in a data-driven way.
Why is this the case? Why not start measuring effacy of our existing process to make the business case for why change is needed?
If you're operating using a dated or proprietary process rather than known current industry best-practices for which ample supporting data is available, you should check your assumptions and ensure that the business data supports the decision to deviate from such industry best practices.
This is especially important in managing technology functions. Best practices in software engineering and operations have evolved constantly over the last two decades. Agile development and test driven development methodologies have changed how software is developed and software teams are managed. Virtualization, cloud computing, and the DevOps discipline has changed how Website Operations functions.
These are disruptive changes in how technology teams are build and managed, and effective technology executives must understand current best practices in process or risk being disrupted by a competitor who does and leverages it for a competitive advantage.
Once you have adopted industry best practices as a baseline process, and are collecting the right metrics to measure the efficacy of the process and optimize - the organization can begin the cycle of continuous, data-driven process improvement.
Tooling to support development teams has advanced tremendously over the past 10 years. Picking the right set of tools to support your development team's process can result in significant productivity gains. Here are a few of my favorite tools, and some high level ideas on how to integrate them together.
AgileZen - Kanban/Lean Project Management
There are a host of Agile tools available, and the selection largely depends on the type of process you're interested in implementing. If you're implementing SCRUM, then Jira/GreenHopper is probably a better option, but if you're a Lean agilist like me, you care more about Cycle Time than burn down charts. Engineers love AgileZen because of its intuitive interface and ease of use, business partners enjoy the pretty white board view to easily track progress of their stories, and Lean engineering managers will appreciate the statistics available that can be pulled via the AgileZen REST API.
ReviewBoard - Peer Code Reviews
One of the best ways to enforce coding standards, improve product quality, and foster knowledge sharing amongst your team is to introduce mandatory peer code reviews into your development process. ReviewBoard is a web based tool that allows engineers to publish requests for code reviews, view diffs, and make comments - all from an easy to use web GUI. The tool makes it very easy for a group of engineers to communicate and collaborate around a commit. ReviewBoard integrates via a pre-commit or post-commit hook into source control systems such as SVN or Git, and stores review information in a mysql datastore.
HipChat - Group Chat and Collaboration
First of all, I'm a big fan of communication tools such as IRC and Skype. HipChat provides both capabilities, and adds to it a number of other slick features that ensure that your team members are always connected to the team dialog. This tool is especially critical if you're working with distributed teams, but even collocated teams will benefit tremendously from having a convenient means of transcribed communication. By using jabber to publish messages to HipChat when AgileZen stories are updated, when new code reviews are published - and also CI build status messages - you have a single place where all project communications are made.
In a future post, I'll talk about tooling used to support development operations.
So I finally got some free time this week to relaunch my blog, after a two year hiatus from the blogosphere. This time I'm using posterous - I like the interface and easy integration with numerous social features - and I'm interested in the concept that wordpress could be disrupted.
Look forward to posts about what I'm currently reading, projects I'm working on, and my thoughts on managing engineering teams, technology, and the tech industry. Exciting stuff!
Until the next post...