Outsourcing Development and Design

Outsourcing development and design can be a challenging process.

In order to achieve higher quality results, we have developed a list of best practices for estimates, project roles, tools, version control, code review, hosting, deploying and maintaining projects.

By following our guide you can improve your project success using your own team, or build one with us!

Overview

Outsourcing web, mobile and application development & design is easier when you have a technology partner with years of expertise in outsourcing, that guides you through the project with maximum efficiency.

At Buildateam we help companies create engaging software products, websites, mobile apps, eCommerce stores & portals.

We learn about business objectives, create a project strategy, develop requirements and then manage a dedicated team selected specifically for the project using our network of 800+ trained remote experts with specialized skills in design, development, DevOps, QA, AI & Machine Learning.

We also developed an internal scalable infrastructure for supporting projects and cross-functional teams using the latest tech available in Silicon Valley. A reactive Meteor.js based project management software that helps keep track of the project progress, team performance and cost. A private GitLab server hosted on Google Cloud for an easy code review and version control. GitLab has a Continuous Integration with our Managed Google Cloud Platform for a scalable cloud hosting for both staging and production.

Our goal is to help both the brightest experts around the world to effectively collaborate on interesting projects and for Product Owners to achieve their vision using the global workforce. We provide a comfortable, secure and managed environment where everyone can achieve their full potential working on tasks they are experts in.

Project Documentation

In order to prepare an estimate, our expert teams need proper documentation. If you have experience creating project documentation, it should be quite straightforward. If not, here is a sample ‘Project Overview’ breakdown that outlines business objectives, goals, user stories, page layout and admin features. You can follow the following example to create documentation for your own project. If you need help preparing documentation, please feel free to reach out to hello@buildateam.io with questions.

Project Title:

Company URL:

Business Objective: (Why are you working on this project? What problem are you trying to solve?)

User Personas: Who is going to use. I.e: moms that don’t work, students that need books etc..

User Stories: As a customer, I would like to be able to see all available locations to have a cheeseburger around me. As an admin user, I would like to be able to control what locations are visible to the users.

Any research documents or inspirational links:

Monetization Strategy:

Competitor Links:

Interface Inspiration:

Wireframes link :

Technologies / APIs to Use:

Main Sections of the Product and Requirements:

After the project documentation is ready and everyone is agreed on whats being built or accomplished, we can move on to estimating the effort required to deliver a solution.

Project / Task Estimates

Project Estimates

  • In order to provide an estimate we first discuss the project with the product owner to understand the objectives, scope, budget, timeline and preferences.
  • Depending on how detailed the provided documentation is we might request to start with an investigation / research to complete the missing parts of the requirements.
  • Depending on the budget and timeline we break tasks into sprints and decide on how big the team / teams should be.
  • Estimates for projects and tasks are given by either the expert assigned to the project or the team lead through project managers or Account Managers / Business Analysts.
  • The main goal of an estimate is to provide a solution to the business requirement that includes a breakdown with actionable tasks and hourly estimates.
  • Whenever reasonable, multiple estimates can be provided for the same project using different frameworks or approaches.
  • Estimates are best guesses given based on the available information. The more information is provided, the more accurate the estimates can be.
  • Estimates can include a pessimistic and optimistic columns, when the requirements are very ambiguous or have risks.
  • There can be different types of estimates:
    • ‘Enterprise-level’ projects require a lot of attention to detail and working out all possible scenarios, integration of many 3rd party APIs, TDD (Test Driven Development) and support of all popular and not very much browsers and platforms. Usually there is a robust, scalable infrastructure supporting the application, that includes monitoring, logging and disaster recovery. Solutions are 99.9% bullet-proof before deployment to production. Higher budgets are expected to cover the time required to work all these steps through with experts.
    • ‘Regular’ projects also require attention to detail and include compatibility with most popular browsers. There are usually less interactive and non-crucial features and no TDD included. These things cut out ~40% of time from the Enterprise-level estimates.
    • ‘Startup’ projects or MVPs (Minimum Viable Product) usually include the minimum set of features required to launch the feature or website / app. Things are done with great attention, but limited functionality is shipped or open source or ready solutions are used to cut costs down in immediate run. Distinctive elements of the approach: only crucial functionality is shipped, less testing of all possible scenarios is done leaving the feedback and bug reports to the ‘beta users’ or ‘early adopters’.
  • If the project includes both creative design and development phases, first the estimate will be given for the design phase. Development estimate would most likely change after the designs are delivered.
  • Ideal documentation for the development phase includes hand-drawn sketches, wireframes with style guides or ready designs accompanied with comments and user stories.
  • In addition to the breakdown of tasks, estimates may also include:
      • 15 % quality assurance time.
      • 10 % bug fixing time.
      • 20 % project management and communication time.
    • so 10 hrs of dev time might also include + 1.5 hrs QA + 1 hr bug fixing + 2 hrs PM = 14.5 hrs.
  • Like mostly with everything in this world the general rule is ‘Good. Cheap. Fast. But You Can Only Pick Two.’ Please be reasonable when trying to cut the time estimates. Certain things just take time. We can definitely cut corners to save some budget now, but it will most certainly become a so called ‘technical debt’ that will just make things difficult in the future.
  • We follow agile methodology and work only with experts. Usually the factual time tracked for the project or task is less than estimated, but there are also cases when work takes more time due to unexpected conflicts, bugs, issues in open-source frameworks that are being used etc. It is possible the time spent would be different for ~ +/- 20% from the original estimates.
  • If the tasks take more time we make our best effort to inform the product owner about it upfront.
  • Depending on the business objectives estimates can include:
    • Business Analysis
    • Wireframes and Design
    • Setup of Environments
    • Development
    • QA
    • Digital Marketing

Project Roles & Members

Project Roles & Responsibilities

Project teams consist of members with complementing skills that take care of tasks that they are experts in. Below are common project roles, responsibilities and tools used. When submitting new tasks, consider which specialists would be required to tackle the task. While some of the roles occasionally get combined by the same person on larger projects, everyone has things to take care of.

  • Product Owners: Have a vision and convey that vision to the team.
  • Business Analysts: Offer top-level technical solutions to business problems and objectives.
  • Project Managers: Manage delivery of multiple projects from receiving the requirements to successful release.
  • UX/UI Designers: Are primarily concerned with how the product feels and how the product is laid out.
  • Digital Marketers: Develop a strategy used in marketing a company’s product online.
  • Team Leads: Manage and lead a team of experts.
  • Database Administrators: Design and optimize performance, integrity and security of databases.
  • Backend Developers: Build and maintain server-side of an application, which includes the server-side of the application, and the database.
  • Frontend Developers: Build the frontend, or client-side of an application.
  • DevOps Engineers: Build and maintain tools for deployment, monitoring and operations. Troubleshoot and resolve hosting related issues on development, staging and production environments.
  • QA Engineers: Design and implement manual or automation tests that help debug the application.

Adding and Editing Project Members

In order to add/remove or edit member roles, click on the ‘Members’ tab under the project view.

Support

The work process for Support engineer

After taking a task from support desk engineer must:

  1. Investigate it.
  2. Ask Customer for needed information.
  3. Reproduce and describe behavior step-by-step.
  4. Create Task (new functionality) or Bug (broken functionality) in Youtrack using next template:
    • Name of shop
    • Name of product
    • Steps to reproduce
    • Expected result
    • Actual result

Google Drive

Each project has a Google Drive folder associated with it, shared with the team. Files are shared with the whole team. Please create a free Gmail account if you don’t have one.

  • Folder structure:
    • {Company Name} {Project Name} (folder)/
      • {Project Name} Overview (folder)
        • {Project Name} Overview (Google document)
        • Associated project files
      • {Project Name} Calls (folder)
        • Call recordings
      • {Project Name} Estimates (folder)
        • {Project Name} Estimate (Google spreadsheet)
      • {Project Name} Design(folder)
        • Design Assets (source files for designs)
      • {Project Name} Timesheets (folder)
        • {Project Name} Timesheets (Google spreadsheet)
      • {Project Name} Invoices (folder)
        • {Project Name} Invoices (optional)

Version Control

General Information About Version Control

  • We use a self-hosted open-source version of Gitlab.com for code review and version control.
  • URL for our private Gitlab server is at git.buildateam.io.
  • Gitlab is hosted on our Managed Google Cloud Platform.
  • Gitlab is integrated with app.buildateam.io for single sign-on.
  • All projects owned by the same company are located under the same group. Usually: git.buildateam.io/company-name.
  • Each project has its own git.buildateam.io repository link. Links are available in the project wiki.
  • Project overview, tasks, comments and wiki are located under app.buildateam.io/projects/your-project-name.

Buildateam GitFlow

At Buildateam we work very similarly to GitHub flow.

Branches

  • Master branch for production version. This is the version deployed for all the clients.
  • Development branch for development version. All features deployed at development should be QA-Ready.
  • Feature branches will be created for every ticket/new feature.

Commits

  • All commits should reference the ticket that belong to, e.g. If the feature tracker-id is 180, then the commit should be as follows:
git commit -m "180 Fixed component rendering"

Merging Your Branch. Pull Requests

  • Merge the new branch into develop branch after you have completed work. If no more work is required for that feature/bug – delete the branch related to the task.

New Releases

  • All new releases will be made every Wednesday at the end of the day.

How To Login To Git:

  • Go to git.buildateam.io.
  • Click ‘Signin with Buildateam’.

Git Dashboard

All projects available for you will be displayed on the main screen after you login.

Google Cloud Hosting

We are proud Google Cloud Partners and we offer Managed Google Cloud Hosting using Kubernetes, Docker, latest versions of MySQL, PHP, Node.js, Meteor.js, using Redis & Varnish for cache and framework optimized configurations for the most performance.

Continuous Integration with our private Gitlab server allows limiting access to production instance only for specialized DevOps engineers. When developers commit code to Gitlab it gets automatically pushed to the dedicated instance: staging or production.

Calls and Meetings

Currently, we use Skype or Google Hangouts for video calls.

There are 2 group chats for every project in app.buildateam.io:

  • {Project Name} – Support: for team meetings with the product owner.
  • {Project Name} – Scrum: for internal scrum team meetings without the product owner.

Create an Account

We use an internally developed project management platform that is located at app.buildateam.io

Please follow the following steps to create a new product owner account:

  • Create an account at app.buildateam.io/productowner
  • Remember your username and password

Please follow the following steps to create a new freelancer account:

  • Create an account at app.buildateam.io/freelancer
  • Remember your username and password

Please follow the following steps to create a new Agency / Team account:

  • Create an account at app.buildateam.io/agency
  • Remember your username and password

Create / Join a Project

Active projects available for you to work on will appear under the Projects tab.

Individual project overview tab contains a project description, project members and a total number of tasks grouped by type.

Create / Update Tasks

All existing project issues are available under Tasks / Issues tab. Use filters in order to adjust the displayed tasks.

Track Time / Timesheets

Tracking Time

  • In order to track time, enter the spent time into the appropriate (hour and minutes) fields in the comment view.
  • Update the %, Done bar to reflect the overall status of the task.
  • In the comment itself please enter:
    • Description of work completed for the time tracked as well as add links to:
      • Git commits from git.buildateam.io if its a development task.
      • Invisionapp / Google Drive link if it’s design.