Jurassic Park & Software Development: Project vs. Mission
Tags: programming, testing, webdev
Published: 2023-08-27 14:19:02

The novel Jurassic Park can serve as a cautionary tale. Not about the dangers of cloning dinosaurs, but about software development and the difference between a project and a mission. Warning: spoilers ahead if you haven't read the book.

## Project vs. Mission

Completing a project and accomplishing its mission are very different concepts. A project has a goal and deliverables like a product or service which are built according to specifications, timeline, and budget. However, the mission of a project goes beyond delivery. It is the reason why the project exists and the value it brings or creates. It is the broader purpose the project aims to achieve.

## Getting it Wrong: Jurassic Park Edition

In the novel, the park has many systems to manage the dinosaurs but none so critical as the image recognition software to count the dinosaur population in the park.

Because the system was designed to track a specific number of animals, the system stopped counting when it reached the expected number. This improved the efficiency of the software. When the dinosaurs started multiplying, the tracking system didn't report additional animals.

The _project_ was to count an expected number. The _mission_ was to track the population size.

## Compartmentalization

When working on large, complex, or sensitive projects you may not always consider – or even be told – the mission. This is true across many different types of concerns. Perhaps there is a security clearance involved. Perhaps the features are broken into separate projects and distributed to different contractors, like in Jurassic Park.

## Staying on Target

Completing development is not always enough to accomplish the mission of a project. While it is important to focus on the smaller details of the effort, we can lose sight of the big picture and the ultimate goals.

A few ways we can keep this misalignment from happening are communication and contemplation.

### Communication

Staying "on mission" often requires ongoing efforts to ensure that the final product or service delivers the intended value. Details – especially negative ones – can be lost as status reports bubble up through layers of management or administration, so clear and direct communication about the project status can keep a misalignment from becoming a mistake. Checking in regularly with the stakeholders about what is and, more importantly, what _isn't_ being delivered helps catch misunderstandings early.

Even with the secrecy and compartmentalization of Jurassic Park, if the development team had communicated the efficiency improvement they added, it might have been caught by someone who knew the mission.

### Contemplation

The mission represents the ultimate goal that the project aims to achieve. When more people know the mission, there are more chances for someone to recognize a decision might conflict with the mission. 

There are many reasons why the mission might not be shared with the whole team. Also, many team members need to spend time focused on the details. But when fewer people understand the goal, fewer people can identify problems.

If you are in the know, remember to take time to reflect on the mission and whether the project is still on track to support it. That bit of contemplation can prevent the senseless deaths of park employees.

## Integration Testing

While it often can't be distributed across the team, _integration testing_ can be another powerful tool for maintaining focus on the mission. If individual projects might be missing features or built to the wrong specification, an integration team should have a solid understanding of the mission and how to validate it.

Testing shouldn't _replace_ communication or consideration, but is positioned to understand how the parts fit together and how they should work.

This doesn't have to be a massive automation effort, but is hopefully a _documentation_ effort, closely coordinated with a Business Analyst or Subject Matter Expert if available.

Also, if ~~Nedry~~ the person responsible for your integration testing is constantly complaining about being underpaid, that might be a red flag for the mission as well.

## Summation

The challenges which affect a project's scope and direction can unintentionally put it at odds with the larger mission. Sharing that mission as broadly as possible, checking in regularly, and reflecting on what is changing improves your odds of completing both the project and the mission.

Don't be surprised by wild velociraptors because you missed out on the mission. If you have a chance to ask about or share the mission of a project, take it.