Remote engagements are hard by their very nature. In a set up where people involved in the project are separated by time and distance, having a well worked out process is the only way to ensure smooth engagement and steady progress. However, process implementation requires a fine balance - There should be enough of it to drive frictionless communication but not so much that adhering to it is in itself hindering progress.
In this post, we will describe the barest minimum of a process you need to put in place to be able to effectively carry out long term engagements with offshore teams.
Identifying Roles
As a product owner, you play an important role in the development effort. Since you are the best person to present the customer perspective for your product, your continuous engagement is highly recommended. The communication process can be streamlined by identifying a single point of contact for you in the development team. Deciding roles, expectations, frequency of communication and points of contact right at the beginning of the project will help in making sure there are no ugly surprises later on.
Process For Design
Once you have had calls to discuss about product and features, the next important step is to mock up those ideas. It is not a good practice to start development right after discussions. Though this point is stressed enough in several blogs and books, programmers sometimes dive straight into development in their enthusiasm to get their hands dirty. Translating feature discussions to product development by skipping the intermediate mocking up stage may look like a time saver initially. But if expectations are not met, iterating on the actual product will end up being much more expensive than iterating on a mockup.
There is a definite advantage in adhering to the processes and best practices we are outlining here even if your interaction is limited to an Elance developer and not a full-fledged development firm.
Mockups and Discussions
Since whiteboard discussions are not an option in a remote setup, you will have to necessarily employ tools that aid your design discussions. There are several online mockup tools which you and the team can use to sketch your ideas.
As for feature implementations, either you can provide the development team with the necessary mockups or get the UX person from the development team to come up with the mockups to be validated from you. Once a few key pages and features are mocked up, the team can get on with the development efforts while you and the UX person from the team continue with the discussions for the next set of features.
Iterative Model
Following an iterative and an incremental approach to development substantially reduces the risk of ending up with an unusable product. In this model, you will implement a small set of meaningful features which is finetuned iteratively with actual usage. Each set of features is then added incrementally to the existing product and finetuned further after usage. This approach even offers the ability to change the feature set based on your feel for the product from initial usage.
Development cycles & Product demos
Your development discussion with the team should focus on deciding the duration of development cycles and what can be achieved in those cycles. As a product owner, your contribution is valuable in deciding the right set of features for implementation in each development cycle and also in providing feedback after usage. Most companies offer a weekly cycle with a demo at the end of it to help you measure progress.
Continuous Integration & Continuous Deployment
Continuous integration and deployment are software development best practices which, if employed, will considerably reduce the amount of time spent in testing and fixing bugs. A company with this set up will be able to discover bugs as and when they are introduced which inturn will help in easy isolation and fixing. Compare this to a scenario where you encounter a whole set of bugs and broken features after deploying your product. The time spent on fixing it this way is so huge that it is smarter to set up an environment for continuous deployment and integration. We recommend this irrespective of how complex or simple your product is.
click here for a detailed reading on this subject.
Project Management tools
Project management tools play a key role in helping you set expectations and deliverables; track progress; and reasonably estimate development time for features. Thus it is important to choose a tool which you are comfortable with. The process should be managed in such a way that at any point during the project, you should be able to assess progress without having to actually communicate with any of the team members.
Code Quality Metrics
If you are not a developer, you may not be fully equipped to check the quality of code the team produces. You can solve this to some extent by using tools like Codeclimate which will give you a broad idea about the health of the code.If there are any red flags, you can take it up with the team for a discussion.
Rinse Repeat
Once you have figured out the process and communication for the first set of features, it is all about going through various cycles of the same procedure. Rinse repeat till you get to the launchable version of your product.
The idea of this post was to bring out the importance of having a process and the role of management tools in achieving effective communication. In the next post, we will discuss some of the specific tools that we use internally for our design and development process; and our interaction with clients.