CONTACT

How do we build
(great) software?

With the best tools,
workflows and standards
that the industry has to offer.
  • Efficient
    development
  • Secure code
  • Smooth transitions
  • Fewer bugs
    (and quick fixes)
Sleep well knowing
it’s all going to work
the way it’s supposed to.
  • Story Development
  • Security
  • Project Management
  • Performance
  • Planning & Prioritization
  • Accountability
  • Retrospectives
  • Testing
  • Code Quality & Style
  • Documentation
  • Source Code Management

Our software
engineering
practices

Every Atlantis Engineer delivers quality software using the best tools, workflows, and standards that our industry has to offer.
Every Atlantis Engineer delivers quality software using the best tools, workflows,
and standards that our industry has to offer.

Software
Development

In the course of developing software we focus on several critical areas: code quality and style, source code management, security, performance, and accountability.

Code Quality and Style

Our Integrated Development Environments use linters like Rubocop and eslint to ensure consistent code style and quality. We conduct human and automated code reviews via static analysis tools like sonarcloud and jshint.

Source Code
Management

Every commit is tied to a relevant ticket. We generate beautiful pull requests with screenshots and use semantic versioning and tagging for releases.

Security

We develop with security-first practices that comply with HIPAA, HITECH, HITRUST, and SOC2 standards.

Performance

We focus relentlessly on performance via N+1 hunts, caching, GZIP compression, and effective analysis.

DevOps & Infrastructure

Our team implements and regularly evaluates Cloud Infrastructure and supporting services to optimize performance and spend. We can help you implement Terraform, move from AWS to Azure, or containerize your application with Docker and stand up your first Kubernetes clusters... All in the name of stability and giving your teams more time to develop great features without worry.

Comprehensive
Testing

Accelerate development, build confidence,
and sleep better knowing that it's all going
to work the way it's supposed to.

We develop Unit and Functional tests using tools like rspec, TestNG, and jest, and strive for 100% coverage. We create user-centric integration tests with Cypress.

Continuous Integration runs our entire suite of tests on every PR and builds in security analysis from tools like brakeman and snyk.

Documentation

Eliminate confusion, accelerate developer
on-boarding, and stay on the same page
by effectively communicating requirements
and application processes.

Each project we work on has a profoundly awesome README, which always includes a setup and configuration guide, infrastructure and deployment details, and links to other important documentation.

For complex business processes we develop and maintain architectural diagrams to navigate all connected services. We generate Entity Resource Diagrams to navigate complex schemas and process diagrams to comprehend complex business logic.

All of our APIs are documented with OpenAPI and Swagger, which ensures that front-end developers, back-end developers, and stakeholders have access to a single source-of-truth for a given API. We love designing APIs in Stoplight.

We maintain a Changelog with details about what's been added, removed, or changed in each semantically versioned release.

We record and share valuable information using knowledge management systems like Confluence and Notion.

Product
Management
Practices

The goal of an Atlantis development team is to deliver high quality features and functionality as quickly as possible.
HOW

Key to an Atlantis Engineer’s ability to deliver is an understanding of the “How and Why” of a feature or story, as opposed to the “What and When.”

Atlantis Engineers are trained to be inquisitive and to ask questions about specific stories and the context around these stories, both business and technical in nature.

WHY

We measure story delivery
success at Atlantis through
a team’s “velocity.”

  • Velocity is a team concept, not a developer concept.
  • Velocity encompasses all activities from the moment a story is created to the time it is delivered, tested, and merged into the code base.
  • A team’s velocity hinges on everyone from the Product Manager to the QA Tester.
  • Velocity of a team is measured by the cumulative number of points associated with new features and functionality delivered to a project in a period of time.

Product Management
Tools

Engineers work best and increase a team’s
velocity when the challenges presented
to them are clear and concise.

We utilize industry standard tools and workflows in Project Management Software such as JIRA and Pivotal Tracker to help accomplish this. Using these tools, developers can quickly understand what they are working on, while managers have visibility and transparency into their efforts.

Jira Pivotal

Not only do tools like JIRA and Pivotal let us know what we’re building today, using these tools provides insight into the upcoming plans for a project.

This allows our developers and managers to architect features that anticipate future needs and eliminate technical debt.

These tools also provide a robust history of stories delivered in the past, key for knowledge transfer.

This allows teams of engineers to have key insights as to both the business and engineering thoughts behind past development decisions.

Jira Pivotal

Story
Development

Key to delivering great features, are concise and clear user stories.

Stories that are vague or unclear lead to lost development time or incorrect deliverables. Ideal user stories are clear about the user audience, the action, and the purpose of the feature.

GOOD STORY

As an Analyst, when viewing the home page dashboard, entries should be listed in the date of descending order so that I can see the most recent entries first.

BAD STORY

Sorting is not
in the correct order.

Discussion, comments, and - more importantly - decisions are communicated inside of the project management system so engineers and managers understand what is being done and why.

Stories are “pointed” out by level of challenge/difficulty by the team in the planning meeting. Stories that have a higher number of points are likely complex and should be broken into multiple smaller stories.

Bugs do not receive points because we are fixing something that was never working as intended. Stories that change existing functionality because a Product Manager was not clear or because we “changed our mind” receive points, because the developer successfully did what they were told. We are “spending additional points” because we made a change.

When stories are completed and approved by the team the team is awarded points towards their velocity. If a developer completes an item and it goes unreviewed, no points are awarded until it is approved.

It is critical that any developer actively contributing code to a product associates their pull requests with a feature or bug story. If one does not exist, it must be created. Most integration workflows are set up to not allow a developer to deploy without their PRs being associated with a story. This ensures every person involved in a product understands what is being contributed and what effect it should have on the product.

Planning, Prioritization
& Weekly Activity

Having a clear understanding of a project,
its goals, and its upcoming priorities is key
to our developers' success.

With this, they can rapidly execute long-term and short-term plans to achieve goals. Planning and prioritization is based on expected team velocity during a time period, not arbitrary deadlines.

Weekly meetings

Every week starts with a Planning Meeting to discuss open tickets from past sprints as well as tickets assigned for the coming week. Questions are asked and encouraged, detail is added to stories, and the manager is given a level of confidence as to what work can be accomplished.

Sprints

As our team reaches a consistent velocity it becomes clear how much we can accomplish week to week - and sometimes even months - in advance.

This allows us to build sprints with a high level of confidence that functionality can be delivered in a set period of time.

This also allows our Project Managers to add and shuffle stories with an understanding of how it will impact the deliverables currently in queue, allowing Business Owners to make the appropriate decisions best for their projects.

Sprints

As our team reaches a consistent velocity, it becomes clear how much we can accomplish week to week, and sometimes even months in advance.

This allows us to build sprints with a high level of confidence that functionality can be delivered in a set period of time.

This also allows our Project Managers to add and shuffle stories, with an understanding of how it will impact the deliverables currently in queue, allowing Business Owners to make the appropriate decisions best for their projects.

Weekly meetings

Every week starts with a Planning Meeting to discuss open tickets from past sprints and tickets assigned for the coming week. Questions are asked and encouraged, detail is added to stories, and the manager is given a level of confidence as to what work can be accomplished.

Daily Standup

Teams have a daily standup to discuss accomplishments, current efforts, and any blockers.

Project managers are responsible for ensuring blockers are cleared by allocating the appropriate resources.

Collaboration happens continually in Project Management Software and Slack.

Story Development

As issues, features, and bugs are identified throughout the week, stories are constantly generated in the Project Management system, regardless if they are being worked on immediately or in the coming weeks.
This ensures no knowledge is lost.

Retrospectives

At the end of every major sprint or release,
it’s key for the team to have a retrospective.

This allows the team to understand what worked well,
what was a challenge, and to identify ways to improve both process and engineering in the future, while celebrating their successes.