# Development project

The development project is where we specify all the components, bases and libraries that we want to work with:

<div align="left"><img src="https://3095132514-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAhrWK1psIWk5h5zNLV%2F-MLvr0aBnP0LO8jSq-lj%2F-MM-Ro-4oXj9cBv5zswX%2Fdevelopment.png?alt=media&#x26;token=903d437b-781c-4aff-83c7-5a2767e13e4c" alt="This development project has two libraries (grey), two components (green) and two bases (blue)."></div>

The development project gives us a delightful development experience that allows us to work with all our code from one place in a single [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) (if the language of choice has support for it).

The idea is to give us the fastest feedback loop possible and to keep things simple. We also separate development from production which allows us to optimize development for *productivity* while production can be optimized for *non-functional requirements*, like performance or scalability.

This gives an enormous flexibility and allows us to make decisions in production that don't affect development, and to postpone decision on how to execute the code in production.&#x20;

One of the main mistakes in the software industry today is that it conflates development with production in a way that if we add a service in production it will automatically "turn up" in development as one more project, because we use the production projects to work with our code.

This makes things more complex than they have to be and accelerates the explosion of complexity. In Polylith we avoid this problem by isolating development and production from each other.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://polylith.gitbook.io/polylith/architecture/2.4.-development.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
