Software engineering working agreement

Conduct

Engineers on the Digital team will treat each other with kindness and respect. We will support each other in learning new things, honing our craft, and building great software for the people of Boston. We do not look down on each other for any reason, including background, area of expertise, or identity.

Values

We value iterative development and continuous deployment. We recognize that delivering changes in small batches means that we go faster with a lower risk of breaking something.

We value communication and shared knowledge. While we may work on separate areas of Digital’s portfolio, we develop and document so that others can step into our shoes as needed. We visualize work to better communicate and hold ourselves accountable. We celebrate each other’s wins.

We value transparency. We are part of a public institution working for the people of Boston, and we are accountable to that. We make our roadmap, work in progress, and results public to all.

We value continuous improvement. We hold retrospectives and experiment with our process in order to learn and work together more effectively.

We value consistency in user experience, and in code.

We value automation and defaults. Out-of-the-box solutions are easier to maintain and teach than custom ones.

We value security and privacy. We are stewards of the public’s data and take that responsibility seriously. We will not build software that can be used for abuse or harassment.

We value maintainability. Because projects move in and out of active development, we need good test coverage to guard against accidental breakages and easy development setup so that others can work on the code.

We value monitoring. We use services to report on exceptions and add alerts so that we know when our services are down. We record analytics for insight into how constituents use our products.

We value diversity of background, experience, and identity. Bringing people with different perspectives together to solve a problem leads to a stronger, more inclusive solution.

Process

We run fairly process-lite, not because we reject process in general, we just only want to adopt what’s useful for doing the best work. The practices we have adopted are described in Best practices.

Prioritization

The overall prioritization of projects is the responsibility of the Chief Digital Officer, and should be the overall guide for deciding which new work to “pull.” (Glossary: What is a Pull System?) Engineers have some leeway in this area to try and minimize switching cost between projects.

Prioritization of a project’s features is the responsibility of the product manager for that project. Work for a project should generally be pulled in priority order. Use good judgement to pull other work in exceptional cases (for example, someone you need to work with has free cycles).

It is the responsibility of engineering to provide honest information and be a good collaborator in the prioritization process. “Responsibility” for the CDO and PM is not “sole responsibility.” Engineering is expected to be a participant in the prioritization process.

Learn more about using a Kanban board to track prioritization within a project.

Browsers We Support

These are browsers we support for development and quality assurance testing. Note: These are based on the City's top browser versions tracked via City's analytics traffic. These will be revisited quarterly by the product development team and quality assurance lead.

  • Google Chrome 68 and higher

  • Safari 11 and higher

  • Internet Explorer 11 and higher

  • Firefox 61 and higher

  • Edge 17 and higher

Testing Breakpoints

  • 320

  • 840

  • 1280

Last updated