Design

Zero CRUD* with Domain Models and Patterns

Many organisations still have armies of developers grinding away writing Create, Read, Update, Delete (*CRUD), enquire and report user interfaces and business logic - even in “Agile” projects! With a complex domain model, it can easily consume more than 60% of project effort. Indeed, some administrative systems are nearly 100% CRUD!

One solution is to resort to low-code or no-code tools, but organisations resist them for a variety of reasons, including lack of standards, limited skill availability, strategic risk and the fact that many of these only work well in narrow use cases.

It is really important in stakeholder facing applications and websites to have really good user interfaces, so what to do? One solution we have practiced for over two decades, and adapted for the web and mobile, is to have a domain driven user interface which exploits patterns for the commonly required functions.

Patterns consist of UI code templates which provide layout, controls and common business logic. They have placeholders where the specifics of the entity / concept to be captured, edited, updated or deleted etc. are plugged in. The domain specifics (Concepts, Relationships, Properties) are provided to the application as models which are accessible at generation or run time.

For statically bound environments (e.g. C++, Java, C# etc.) the customisation of a pattern with domain specifics can be done at compile time. In effect many interfaces conforming to the pattern are generated into the production application. For dynamically bound environments (e.g. Smalltalk, Python, JavaScript) the generation can even be done at runtime, effectively serving the code to the client where it will execute through interpretation.

This approach has numerous advantages, including:

  • Major reductions in code base size and hence effort in development and maintenance

  • Consistency of user interface and logic produced across developers and applications

  • Higher quality since the patterns can be developed by expert developers and thoroughly tested

  • Reduced time to market and greater agility. In the case of late bound environments it is even possible to extend the domain model at runtime and have the interface adapt immediately without any deployment

  • Massive reductions in effort when user interface refreshes are required (e.g. the latest / greatest JavaScript framework makes a new style “required”)

If you would like to see a talk and demonstration of this in action, you can watch the video here.

If you would like to skill up on the latest in Application and Solution Architecture thinking, take a look at our upcoming course: Techniques and Deliverables of Application and Solution Architecture.

#agile #SolutionArchitecture #DomainDriven #SoftwareDesign #Patterns

Product Generator (3 of 3)

In the earlier posts we covered what a product/service/business model innovation might look like and how to generate ideas. Here we summarise general guidelines we can leverage when contemplating product and service options:

  • Does it provide a recognisable and desired transformation?

  • Does it offer exceptional client value?

  • Is it easy and convenient to find, evaluate, acquire, migrate to, use, integrate, upgrade?

  • Does it generate an emotional response in the client?

  • Is it a blue ocean play that will encounter minimum competition and still attract a premium price?

  • Can it be sustainably and profitably offered at scale?

  • Have we used all options to reduce capital dependency, to minimise physical components, increase intelligence/utility and to streamline production, duplication, delivery and servicing?

  • Is it a win for the customer, us, suppliers and society at large?

  • Have we contemplated constraints and risks and ameliorated these as much as possible?

  • Have we created unique benefits which will be difficult to replicate?

  • Is there a “unique selling proposition” / “purple cow” - i.e. will it stand out as something different and worth consideration?

  • Have we formulated metrics to track performance and improve benefits through the lifecycle?

Getting there may not be a linear path. We may have to ideate, evaluate, prototype, iterate, pivot, etc. until we get it right.

Summary: Provide more value to customers, more conveniently, quickly, cheaply, sustainably and repeatedly (while ensuring we can sustain delivery, margin and ameliorate risks). The associated canvas may help to consider all the dimensions.

#Product #Service #Strategy #Innovation #BusinessArchitecture #EnterpriseArchitecture #Canvas

Product Generator (2 of 3)

So how do we find great product and service ideas? By thinking in the box, at the boundaries, out of the box and beyond!

Explore the idea of the “adjacent possible”, looking for opportunities enabled by emerging technologies, services, social and other changes, that are now just possible and satisfy an existing need in a new way. Examples were the miniaturisation of disk drives facilitating the idea of mobile digital music players and of pervasive internet and mobile technology facilitating music streaming. Also Software as a Service (SaaS) offerings exploiting the availability of networks, cloud platforms and subscription models. Machine Learning is opening up opportunities in medical analysis. Speech assistants are enabling new kinds of interfaces to electronic products.

Seek “blue ocean” opportunities. Instead of competing fiercely in saturated, highly competitive spaces (the “red ocean”), we look for opportunities which satisfy a need in a new and novel way, where there is currently no or very little competition. An example would be early products delivering voice telephony over digital channels (voice over IP or VOIP). Tesla has famously exploited this kind of approach in bringing fully electric cars to consumers.

Exploit digital. Make products “softer”, replacing expensive hardware with software or data: replacing atoms with bits. Make copies electronically rather than through manufacturing. Hold inventory as patterns of bits which can be duplicated and distributed with almost zero cost. Automate processes, so they can scale without extra staff or effort.

Consider the portfolio view of products and services and where they are in their lifecycle and adoption. Ensure balance across the stages.

Try to launch and get feedback as quickly as possible. Build prototypes and get rapid feedback. Explore Design Thinking to really understand the customer requirements. Build a Minimum Viable Product (MVP) and get customer feedback. Pivot where necessary.

Look for platform plays or intermediary roles. Own the customer and transaction and make a margin, without needing to own the assets or physically deliver the service. Most of the exponential businesses that have exploded in the last decade exploited these ideas. Consider Facebook which facilitates messaging, but produces no content; Youtube which is a major entertainment provider, but owns and creates no content. Amazon is a platform and an aggregator, selling millions of products from thousands of suppliers.

Consider innovative business models that satisfy the same need in a different and better way. A customer may really want personal mobility, not necessarily a car, or ambient music delivered on demand, rather than a sound system. Here it is often useful to “abstract up” asking the questions: What does this achieve for the customer? Why does the customer buy this product/service?

#Strategy #Product #EnterpriseArchitecture #BusinessArchitecture #Innovation

Product Generator (1 of 3)

What does a great product look like in 2022? Actually, it’s not a product, but a service or a platform or a model! Or maybe even a feeling...

Whaaat? Yep.

The truth is that people don’t buy products. They buy some transformation that they want. I want my feet to stop hurting, I buy shoes. I want my children to have a better life, I buy an education annuity. I want to satisfy my craving, I buy chocolate. I want to impress my partner, I buy a great outfit.

Transformations are as easily satisfied by a service, platform, model, algorithm or design as by an actual product. My desire might be to enjoy a particular genre of music. This could be satisfied by (a) buying a CD (b) buying a track on iTunes (c) streaming audio from Spotify. If I need holiday accommodation, I can use a hotel, Booking.com or AirBnB. Interestingly, iTunes, Spotify, Booking.com and AirBnB are all platforms. They do not own the assets or services on sale, but they facilitate the client’s access to them while also acting as channels for the sellers. In the case of iTunes and Spotify, notice too that the product has also become digital - morphing from physical media to digital streams. These models allow taking advantage of the “long tail” phenomenon whereby the cost of inventory and distribution becomes near zero and the platform can offer essentially infinite variety and choice.

Client experience and emotion also play a large role. When you buy a property (a major financial, long term commitment), you will probably make a very logical checklist of requirements before going to view any properties. But you will buy one which doesn’t meet the requirements, because it “felt right” or “smelt right” or “had great light”. We will then go back to the list and adjust and reprioritise until it fits our choice… Brands like Apple and Nike know this all too well. They invest huge effort in building the lifestyle image, client experience and emotional highs their clients will experience from using their products and services.

New value today is potentially delivered “out of thin air” - think of a virtual product such as Bitcoin, which is essentially an algorithm for calculating a number. Yet it has become a major asset class with serious investment houses putting 5% of their assets into it and similar offerings in 2022. Other examples are an algorithm that improves fuel consumption in transportation, or a model for how to organise components on a semiconductor die.

Modern consumers are also used to instant gratification, based on experience of mobile technology, apps and streaming. We need to ensure that our product/service is very easy to find, evaluate, try out, purchase and use. This should be as friction- and noiseless as possible.

In the second part of this post, we will explore how to come up with and evaluate product/service ideas.

#Product #Innovation #Strategy #BusinessArchitecture #Service

The (Enduring) Value of Great Design

1623746975644.jpeg

Prepping for my upcoming Techniques and Deliverables of Application and Solution Architecture course, I watched a video by the UX guru Jakob Nielsen talking about UX 2050. The future predictions were interesting, but what was more interesting to me was the information about the empirical work and iteration that went into the design of the humble telephone touch keypad by Bell Labs, way back when. They researched many models of keypad with different layouts, sizes, shapes, etc. They surveyed potential users, but they also empirically tested many models before settling on the final design. Nielsen estimates that the design has been employed 40 trillion times and has saved the world some 1 million person years of time! Would that some of our current web designers would take note!

On a related theme, Apple hired a Masters graduate in physics and computer science to work on the scrolling of lists, their acceleration and “bounce” at the bottom and top for IOS. This was an effort of some three plus months for a very qualified individual. Sounds crazy, but the lists behave beautifully, intuitively and feel natural. Just think how many times somebody, somewhere scrolls a list on an IOS device and you get a sense for how much this design attention has paid off. 

Staying with the Apple theme, after watching the World Wide Developer Conference (WWDC) for 2021 last week, I again came away with the conviction of how much good design contributes and pays off downstream. Consider Unix (also, originally, from Bell Labs), which was taken up in academia and evolved into the Mach kernel paired with the Berkeley Distribution (BSD) OS, which Steve Jobs and Next used as the platform for Next Step, which later evolved into Apple’s System X, now MacOS, but is also the foundation for iOS (on the iPhone), iPadOS (on the iPad) and even watchOS on the Apple Watch and tvOS on the Apple TV.

WWDC showed a variety of examples of how the unified concepts underlying these systems facilitate advanced features, such as seamlessly controlling apps across multiple devices in proximity with a single keyboard and mouse (Universal Control); The Notes App which is available across the family and supports quick note taking, handwritten notes, capture of images, task management, cloud syncing, attachments, maps integration, tagging and more; the Live Text feature allows recognising text in photos and images from various sources, including device cameras, websites and image files. By the way, it is 20 years ago that Steve Jobs returned to Apple and the company bought Next Step to form the basis for the next generation of Apple operating systems. 

Bottom line: It’s worth the effort to create great design, which is functional, human centric, efficient, durable and elegant. It pays off handsomely in the long term.