Summary

Techniques for managing projects and designing applications.

Case Studies

Themes

Application Uninteroperability

The traditional view of a service provider is that it manages persistence and everything else must be handled in an application. This often includes business logic. 

The goal of service design is to ease the pain in swapping either the application or implementation. If too many assumptions such as business logic and configuration get intertwined in the application or implementation code, this becomes impossible.

The kinds of things that should be factored out of the application code to promote interoperability include:

A successful service provider is one that encapsulates as much as possible to keep applications focused on the user experience. Service providers are much more than persistence. However, our customer-focused development processes often has a product owner conversing directly with a user interface programmer who helpfully solves a customer's problem outside the service environment. Too much of this makes the application investment a one-off special case that cannot be adapted to the needs of others without branching the code.

Uninteroperable Pseudo Services

 Development of APIs above the service layer always seems like a good idea to mitigate the apparent complexity of the service environment, encapsulate business logic, improve overall performance, and to build "screens" quickly. This is a debated area but here are some observations: