Clean Architecture (Backend)

A microservice-architecture is not pursued (yet); as of now, modular monoliths will be implemented to start the new project. In each service a layered architecture will be applied.

  • The main GraphQL entrypoint is defined on service level.
  • Each service is structured into submodules (“features”). A submodule is a self-contained unit of
    • GraphQL-API-Endpoints: Queries and Mutations. They call the use cases to provide the response.
    • Use Cases are implementing the actual business logic by calling the services/repositories. Use cases orchestrate the services/repositories. The also serve as public interface to other submodules. Thus submodules could call use cases from other use cases, although it should be avoided.
    • Services are concrete operations and calculations upon models, which are not CRUD.
    • Repositories CRUD functionalities for models.
    • Models are the database entities.
    • see also: https://proandroiddev.com/why-you-need-use-cases-interactors-142e8a6fe576

Developer Performance Reviews and Improvements – Look into the PRs of your Team

I recently read this article (“Managers — Look at Your Engineers’ PRs“) and absolutely agree. In fact, I have done this for a couple of years now and I agree that is a valid and valueable source for feedback – besides the 180 degree feedback from colleagues.

However, I wouldnt just use the PRs for individual performance review but also to track the team performance. PRs reveal a lot of team dynamic (how is the communication between team members) and product/software quality. In a more junior team I would also attend a more active role in PRs to support or fill the role of a senior developer.