---
title: Bitovi Academy - Efficient Development
description: Learn the tools and technology commonly used within a project.
---

- ![AI implementation](https://www.bitovi.com/hubfs/AIConsultingIcon.svg)
  
  [AI implementation](https://www.bitovi.com/services/ai-consulting?hsLang=en-us)
- ![Systems engineering](https://www.bitovi.com/hubfs/icon%20-%20backend.svg)
  
  [Systems engineering](https://www.bitovi.com/services/systems-engineering-consulting?hsLang=en-us)
- ![Project management](https://www.bitovi.com/hubfs/icon%20-%20PM.svg)
  
  [Project management](https://www.bitovi.com/services/agile-project-management-consulting?hsLang=en-us)
- ![Product design](https://www.bitovi.com/hubfs/icon%20-%20design.svg)
  
  [Product design](https://www.bitovi.com/services/product-design-consulting?hsLang=en-us)
- ![Frontend development](https://www.bitovi.com/hubfs/icon%20-%20frontend.svg)
  
  [Frontend development](https://www.bitovi.com/services/frontend-development-consulting?hsLang=en-us)
- [View more
  
  →
  
  ](https://www.bitovi.com/digital-consulting-services?hsLang=en-us)

We're Experts in...

- [JavaScript](https://www.bitovi.com/services/frontend/javascript-consulting?hsLang=en-us)
- [AI training](https://www.bitovi.com/ai-training-for-software-engineers?hsLang=en-us)
- [Angular](https://www.bitovi.com/services/frontend/angular-consulting?hsLang=en-us)
- [Design Systems](https://www.bitovi.com/services/axure-figma-migration?hsLang=en-us)
- [React](https://www.bitovi.com/services/frontend/react-consulting?hsLang=en-us)
- [Temporal](https://www.bitovi.com/services/backend/temporal-consulting?hsLang=en-us)
- [React Native](https://www.bitovi.com/services/frontend/react-consulting/react-native?hsLang=en-us)
- [Node.js](https://www.bitovi.com/services/backend/nodejs-consulting-1?hsLang=en-us)

Showcase

![Yum! Brands](https://www.bitovi.com/hubfs/yum-showcase-link-1.png)

[View case study](https://www.bitovi.com/en/bitovi-yum-case-study?hsLang=en-us)

More Projects

- [![Levi's](https://www.bitovi.com/hubfs/levis.svg)](https://www.bitovi.com/web-application-consulting-work/levis-ecommerce-responsive-redesign?hsLang=en-us)
- [![Christie's International Real Estate](https://www.bitovi.com/hubfs/christies.svg)](https://design.bitovi.com/christies)
- [![BAFS](https://www.bitovi.com/hubfs/bafs.svg)](https://www.bitovi.com/ux-design-consulting/ux-case-studies/bafs-ppp?hsLang=en-us)
- [View more
  
  →
  
  ](https://www.bitovi.com/our-software-consulting-work?hsLang=en-us)

Open Source Tools

We build powerful tools and open source them to support the community.

[See what we've built →](https://www.bitovi.com/open-source?hsLang=en-us)

- [![Blog](https://www.bitovi.com/hubfs/icon%20-%20blog.svg)
  
  BlogWe post about perfecting software delivery
  
  ](https://bitovi.com/blog)
- [![Partnerships](https://www.bitovi.com/hubfs/Handshake-1.svg)
  
  PartnershipsLearn about Bitovi's technology partners
  
  ](https://www.bitovi.com/partnerships?hsLang=en-us)
- [![Academy](https://www.bitovi.com/hubfs/limbo/icons/icon-academy.svg)
  
  AcademyFree courses to build delivery skills
  
  ](https://www.bitovi.com/academy/?hsLang=en-us)
- [![Open source tools](https://www.bitovi.com/hubfs/icon%20-%20open%20source.svg)
  
  Open source toolsUse our tools or contribute to our open source mission.
  
  ](https://www.bitovi.com/open-source?hsLang=en-us)

Let's Connect

- [![Discord](https://www.bitovi.com/hubfs/DiscordLogo.svg)
  
  Discord
  
  ](https://discord.gg/J7ejFsZnJ4)
- [![LinkedIn](https://www.bitovi.com/hubfs/LinkedinLogo.svg)
  
  LinkedIn
  
  ](https://www.linkedin.com/company/bitovi/)
- [![GitHub](https://www.bitovi.com/hubfs/GithubLogo.svg)
  
  GitHub
  
  ](https://github.com/bitovi/)

![Eggbot](https://www.bitovi.com/hubfs/build_assets/bitovi-limbo-cms-react/338/js_client_assets/assets/eggbot-LTGhdSGL.png)

Name *

Work Email *

Phone

What's your project?

Send

### Contact Us

(312) 620-0386contact@bitovi.com

- [ Advanced JavaScript ](https://www.bitovi.com/academy/learn-advanced-javascript.html?hsLang=en-us)
- [ DOM and jQuery ](https://www.bitovi.com/academy/learn-dom-jquery.html?hsLang=en-us)
- [ Debug JavaScript ](https://www.bitovi.com/academy/learn-to-debug-javascript.html?hsLang=en-us)
- [ Learn TypeScript ](https://www.bitovi.com/academy/learn-typescript.html?hsLang=en-us)
- [ Learn React Native ](https://www.bitovi.com/academy/learn-react-native.html?hsLang=en-us)
- [ Learn Web Components ](https://www.bitovi.com/academy/learn-web-components.html?hsLang=en-us)
- [ Agile Program Management With Jira ](https://www.bitovi.com/academy/learn-agile-program-management-with-jira.html?hsLang=en-us)
- [ Learn RxJS ](https://www.bitovi.com/academy/learn-rxjs.html?hsLang=en-us)
- [ Giving a Training ](https://www.bitovi.com/academy/training.html?hsLang=en-us)
- [ Learn Technology Consulting ](https://www.bitovi.com/academy/learn-technology-consulting.html?hsLang=en-us) 
    - [ Outcome Focused Effort ](https://www.bitovi.com/academy/learn-technology-consulting/values.html?hsLang=en-us)
    - [ Specific Goals ](https://www.bitovi.com/academy/learn-technology-consulting/goals.html?hsLang=en-us)
    - [ Informed Prioritization ](https://www.bitovi.com/academy/learn-technology-consulting/prioritization.html?hsLang=en-us)
    - [ Efficient Development ](https://www.bitovi.com/academy/learn-technology-consulting/development.html?hsLang=en-us)
    - [ Transitioning to Delivery ](https://www.bitovi.com/academy/learn-technology-consulting/transitioning-to-delivery.html?hsLang=en-us)
    - [ Ending a Project ](https://www.bitovi.com/academy/learn-technology-consulting/ending-a-project.html?hsLang=en-us)
- [ Learn React ](https://www.bitovi.com/academy/learn-react.html?hsLang=en-us)
- [ Learn NgRx ](https://www.bitovi.com/academy/learn-ngrx.html?hsLang=en-us)
- [ Learn Graphql ](https://www.bitovi.com/academy/learn-graphql.html?hsLang=en-us)
- [ Learn Docker ](https://www.bitovi.com/academy/learn-docker.html?hsLang=en-us)
- [ Learn CanJS ](https://www.bitovi.com/academy/learn-canjs.html?hsLang=en-us)
- [ Learn Angular ](https://www.bitovi.com/academy/learn-angular.html?hsLang=en-us)
- [ Advanced TypeScript ](https://www.bitovi.com/academy/advanced-typescript.html?hsLang=en-us)

[View More Courses](https://www.bitovi.com/academy/#courses) [ ]

# Efficient Development `page`

Learn the tools and technology commonly used within a project.

## Overview

After creating [goals](https://www.bitovi.com/academy/learn-technology-consulting/goals.html?hsLang=en-us), and [prioritizing](https://www.bitovi.com/academy/learn-technology-consulting/prioritization.html?hsLang=en-us) the features that add the most value to your users, you *might* be ready to actually build something.

The *goal* of development is to support a **product’s** development. Limited to a technical perspective (given the right features), a good product is **error free** and **high-performance**.

Time and budget are always constraints on achieving this *goal*. So a good development process **quickly** and **sustainably** adds features. This is what we mean by **efficient development**.

The key/secret to efficient development is **maintainability**. Maintainability is how easily a codebase can respond to change. A highly maintainable app enables the most efficient development, which allows you to quickly improve the application, resulting in something that is error free, fast, has a better user experience, and adds more customer value.

This page is a list of characteristics of a maintainable application and team.

## Checklist

### Tools and environment (ops)

Required

**Source control is:**

 Used

 Git

 Used with a branch and merge strategy.

**An issue tracker is:**

 Used

 Integrated with source control.

 Used by non developers.

**The following environments exist**

 Development

 Test

 Staging

 Production

**A 1-3 step process for the following exist:**

 Setting up a development environment

 Testing the application.

 Building the application into a production distributable.

 Deploy to test and staging.

**Continuous Integration:**

 Exists

 Runs on all commits / pushes

Recommended

**Portability:**

 Containerized microservices

- The application self-documents the environment in which it runs. That documentation is widely known (Example: docker files)

**Cloud Deployment:**

 The application is able to be started and stopped on new machines easily.

 New machines are able to be created easily.

 New machines are able to be created across multiple platforms.

**Monitoring:**

 Vital app performance characteristics are measured (errors, CPU, Memory)

 Errors (client and server side) are automatically emailed to team

**Reporting:**

 Vital app performance characteristics are reported and analyzed every 1-6 weeks

### Code quality

Required

**Is the high level architecture documented and followed?**

 Yes  No

**Are there unit tests?**

 Yes  No

**Is there documentation for the code?**

 Yes  No

**All modules include:**

 High level documentation.

 Tests

 Inline documentation

 A demo

**Are there performance tests?**

 Yes  No

**The service layer is:**

 RESTful

 Documented

 Tested

 Built / working

Recommended

**Is technical debt measured?** *Is some value (often in days / weeks) of technical debt calculated?*

 Yes  No

**Is technical debt factored into estimates?** *Do estimations of time, or points, or effort include discussions of technical debt?*

 Yes  No

### Team

Recommended **Is there a QA team or resource?**

 Yes  No

**Are teams grouped by specialty?** *Example: client vs. server*

 Yes  No

**Do you work alongside the client’s developers?**

 Yes  No

**Is every piece of code known to at least two people?** *No piece of code should be "workable" by only one person.*

 Yes  No

**There are code reviews:**

 Every commit

 Every week

 Every month

 Of new people’s code

 Never

## Methodologies

The following are some common project management methodologies.

### Scrum

Summary:

- Work organized in sprints (~2-6 weeks)

Guides:

- [Atlassian - What is Scrum?](https://www.atlassian.com/agile/scrum)
- [The Scrum Guide](https://www.scrumguides.org/scrum-guide.html)

### Kanban

Summary:

- Task board where any engineer can take a job and complete it.
- Continuous delivery

Guides:

- [Atlassian - What is Kanban?](https://www.atlassian.com/agile/kanban)

### Extreme Programming

- [Extreme Programming](http://www.extremeprogramming.org/)

[Compared to Scrum](https://www.mountaingoatsoftware.com/blog/differences-between-scrum-and-extreme-programming):

- Allows changes in sprints.
- Work in strict priority order.
- Prescribes engineering practices (TDD, automation, pair programming)

## Versioning and Environment Workflows

This document describes the process of development workflows with respect to versioning software and application environments (dev, test, staging, prod). The specifics on your project should be documented in the [Engagement Summary Document](https://www.bitovi.com/academy/learn-technology-consulting/transitioning-to-delivery.html#engagement-summary-document)

- Versioning Software: GitHub
- Continuous Integration: TravisCI
- Environments 
    - Production - The production servers and databases users interact with.
    - Staging - An environment that matches production as closely as possible that is able to verify the next release is going to work as expected.
    - Development - An environment that allows developers to quickly show off new features or test their code in a near production environment.
- Branches 
    - master - Represents the features that will go onto staging.
    - `{ISSUE_NUM}_FEATURE` - A feature branch that is forked from `master`. When ready, it is merged into `master`
    - `RELEASE-pre.X` - A tagged version of master that will be pushed to *Staging* for testing. If successful, it will be tagged without `-pre.X` for released.
    - `RELEASE` - A release that will be pushed to *Production*.

###### On this page...

###### Get help

If you need [help](https://discord.gg/J7ejFsZnJ4) with an exercise, please reach out to us on [Discord](https://discord.gg/J7ejFsZnJ4)

If you find a bug, please [create an issue](https://github.com/bitovi/academy/issues/new) or email [contact@bitovi.com](mailto:contact@bitovi.com?Subject=Training%20Suggestion)

## Join the Bitovi Newsletter

 Do you want to receive updates about new Bitovi Academy courses, Bitovi open source projects, and dev community news? If so, please provide your email. We won’t spam you or give it away for any reason!  
*By providing your email you agree to receive communications from Bitovi*

![](https://bitovi.github.io/academy/static/img/close.svg)

```json
{
     "@context": "http://schema.org",
     "@type": "Organization",
     "mainEntityOfPage":{
          "@type":"WebPage",
          "@id":"https://www.bitovi.com/academy/learn-technology-consulting/development.html",
          "description": "Learn the tools and technology commonly used within a project. 
"
     },
     "url": "http://bitovi.com",
     "logo": "https://www.bitovi.com/hubfs/bitovi-logo-23-1.svg",
     "image": "https://www.bitovi.com/hubfs/bitovi-logo-x2.png",
     "name": "Bitovi Web App Consulting",
     "alternateName": "Bitovi",
      "naics": "541511",
      "description": "Bitovi is a UX, UI design and front-end JavaScript development consulting company",
     "address": {
          "@type": "PostalAddress",
          "streetAddress": "1134 Pine Tree Lane ",
          "addressLocality": "Libertyville",
          "addressRegion": "IL",
          "addressCountry": "United States",
          "postalCode": "60048"
     },
     "areaServed": {
          "@type": "GeoCircle",
          "geoMidpoint": {
               "@type": "GeoCoordinates",
               "latitude": "41.8781",
               "longitude": "87.6298"
          },
          "geoRadius": "5000 km"
     },
     "telephone": "312-620-0386",
     "email": "contact@bitovi.com",
     "sameAs": [
          "https://www.facebook.com/BitoviLLC/",
          "https://twitter.com/bitovi",
          "https://www.linkedin.com/company/bitovi"
     ]
}
```