Return to site

Platform Rethinking

Stop reinventing wheels in digital innovation.

 

Ian H Smith 

The technology platforms that represent the foundation for digital innovation are rarely understood by business people, and it is usually up to tech people to decide what the 'stack' looks like, as underlying code and architecture for Web, mobile or Software-as-a-Service (SaaS) apps.

Given the confusing, overlapping classifications of what underlies a technology platform in the cloud, it is very difficult to present a single, unbiased view of what represents optimal architecture or best practices, when considering digital innovation.

Why Platform Rethinking?

I have called this blog post 'Platform Rethinking' to emphasise a need to rethink tech infrastructure: to challenge some of the assumptions made on all sides of the fragmented business and tech communities who invest in, produce or consume Web, mobile or SaaS apps. This is an argument for applying a 'Platform Architecture' as the starting point for digital innovation - versus reinventing the wheel by coding everything ground-up.

So, ground-up development of new Web, mobile and SaaS apps continues in the belief that it is necessary. This is outdated thinking. We now need to think of Platform Architecture in terms of being either Code, Low-Code or No-Code - and often, a combination of two or three of these Platform Architecture types.

Platform Architecture Types

Code is where the majority of tech ventures and IT operations are today: applying ground-up coding to everything in the business logic and presentation layers of mobile and Web apps, and more recently, making optimal use of the latest architecture for 'Microservices' (a collection of loosely-coupled services). In ground-up Code approaches, there is endless debate about what languages are best for 'serverside' and 'clientside' and increasingly, we see 'JavaScript Everywhere' (Node.js, React, et al).

Low-Code is the term applied to platforms that offer software developers and tech-savvy IT analysts the opportunity to create new mobile and Web apps through an optimal mix of visual development and use of prebuilt models ( or 'objects'), limiting Code to elements that cannot be created in this way. There are many Low-Code Platforms available today, such as Simplicité or through using Design Languages and reusable components, such as SAP Fiori, Salesforce Lightning Design System or Microsoft Fluent Design System.

No-Code is the term applied to platforms that enable business users and consumers to create and publish mobile and Web apps, without recourse to any form of syntax-level programming of Code. For very simple apps, the Salesforce Lightning Platform was an early pioneer of No-Code. This is the most challenging Platform Architecture of all: how to create a meaningful set of reusable components and modules that completely removes syntax-level programming of Code. In many new developments, spreadsheet-like components may be built as No-Code, and then cut-and-paste as Code 'script' into No-Code, Low-Code or Code Platforms.

Traditional IT services firms, who have built their businesses on billable people hours, view prebuilt technologies as competitive. Other, more enlightened IT services firms embrace such reusable components and prebuilt business logic wherever they can. Why? Because business becomes progressively less exposed to the volatile billable people hours model, and clients enjoy the cost savings that comes with the use of predictable reusable components or prebuilt business logic.

What constitutes Code, Low-Code or No-Code is expanded upon blow and also in another of my blog posts: Outsourcing Works. There are many technologies that enable better guidance and productivity in pursuit of optimising User Experience (UX) with digital innovations.

The ultimate goal is to see Code, Low-Code and No-Code as truly interoperable: selected by different users, according to their needs and skills, in a highly-collaborative approach to digital innovation. What we know for sure is that no single organisation can create all three approaches to building the User Interface (UI) and related reusable components for the prebuilt business logic layer. This evolves into 'Radical Collaboration' beyond the boundaries of a single organisation: it becomes key to achieving more for less in the pursuit of digital innovation.

Defeating Complex Thinking

In digital innovation there is a need strike an optimal use of a Low-Code or No-Code Platform with Code - underpinned by Design Thinking as the method of execution. This is simply an extension of creating the right balance between packaged and custom software, as in the past. What enterprises and government agencies should be wary of today is 'Complex Thinking': the tendency of traditional IT services firms, who need to maximise billable people hours, and apply excessive ground-up Code, where prebuilt Low-Code or No-Code Platforms are a better choice.

In my view, billable people hours for Code should be subjected to 'Lean Thinking'. This means taking a critical view of what truly represents value-added versus non-value-added in a Value Stream related to a particular process, or service ripe for re-engineering through digital innovation. This is where a set of reusable components (built with a Low-Code or No-Code Platform) should always displace ground-up, syntax-level Code, wherever possible.

To defeat Complex Thinking, Design Thinking may be blended with Lean Thinking. If we take this approach further, you will find that Lean, in the form Hoshin Kanri, is a solid way to translate ideas into timely, measurable value outcomes. Hoshin Kanri is two Japanese words which translate as 'direction' and 'administration'. It is practised extensively in the automotive manufacturing industry, and defined as:

"A method for ensuring that the strategic goals of a company drive progress and action at every level within that company. This eliminates the waste that comes from inconsistent direction and poor communication."

Platform Rethinking, Applied

Armed with a team of strategists, designers and developers, immersed in the real world of creating Web, mobile or SaaS apps you can deliver a world-class Platform Architecture for digital innovation based on:

1. Code, Low-Code or No-Code

2. Design Method

3. Design Guidelines

4. Continuous Integration

5. Business Logic

6. Studio

7. Smart DevOps

#1. Code, Low-Code or No-Code

The concept of a Low-Code Platform is more mature than a No-Code Platform, as a complete automation enabler for digital innovation. The pure No-Code Platform is some way from being available as an enterprise-grade solution, without some Low-Code support. Since the real world suggests that we will be moving to a blend of Code, Low-Code and eventually, No-Code, I argue for a tech architecture built on a solid prebuilt business logic: effectively, a No-Code and Low-Code Platform combination, such as Salesforce Lightning Platform or with more Code, using a Design Language and User Interface (UI) Framework, such as SAP Fiori, Salesforce Lightning Design System or Microsoft Fluent Design System.

On top of the prebuilt business logic is a 'Studio': tools that allow any combination of Code and Low-Code to apply, and designed for different types of users. This enables a broad community of users to collaborate: from 'hard core' programmers (Code) through tech-savvy IT analysts and developers (Low-Code), and to what is now emerging as so-called 'citizen developers' (No-Code).

The interplay between the prebuilt business logic and Studio layers is where a packaged solution in the cloud is categorised by IT industry analysts Forrester as a 'Digital eXperience Development Platform (DXDP)'. This combination of prebuilt business logic and Studio provides the rapid, visual assembly of reusable components, templates and sample apps. What follows is an optimum blend of Code, Low-Code and No-Code blended approaches to digital innovation.

#2. Design Method

A Design Method is essential as a foundation for capturing ideas and uncovering the truth about problems, challenges and opportunities related to digital innovation today. Design Thinking is key to this approach: simply meaning that you can solve problems in a people-oriented way.

 

What matters most here is truth. And truth only comes when all stakeholders in the tech venture, digital agency or IT organisation in question have achieved sufficient levels of receptivity and rapport with the collaborating IT services provider.

This Design Method is based on the five steps advocated by the Hasso Plattner Institute of Design at Stanford University (d.school), and underpins everything you can accomplish with selecting and using an optimised combination of Code, Low-Code and No-Code for digital innovation.

#3. Design Guidelines

The maturing of Design Guidelines work well for Code-based Web, mobile or SaaS app design, where you can embrace best practices for User Experience (UX) Design.

This also relates to three Design Principles, comprising:

I. Meaningful Journey

II. Fierce Reduction

III. Progressive Disclosure

All of these Design Guidelines and Design Principles serve a foundation beyond traditional, Code-only approaches to Web, mobile or SaaS app design. This is pragmatic Design Thinking for the ongoing development of the blended No-Code and Low-Code Platform options too.

I. Meaningful Journey

When designing a next generation app, the first thing to create is its journey: the path, steps or tasks that users will complete in providing a service, undertaking work or solving a problem. With Lean Thinking at the heart of the design, this means removing steps or tasks that are wasteful or unnecessary. Therefore, this journey must be a Meaningful Journey: from the moment a user goes to the login page, to the moment they logout, when the task(s) or work is done.

II. Fierce Reduction

When users get confused with Web, mobile or SaaS apps, it's usually because what they are confronted with on a page view offers too many choices of what to do next. Often, there is no obvious place to go or action to take from a particular stage in what should be a Meaningful Journey. What's needed is a fiercely reductive mindset: a way to eliminate everything on each screen that distracts from any action at each stage.

III. Progressive Disclosure

When designing a Meaningful Journey and applying Fierce Reduction, it is better to have more clicks or swipes through pages of an app, than add too many options in any given page or screen view. This means that with a fiercely reductive mindset, you will have to engage in a trade-off between simplicity of page or screen view, versus the number of pages on a Meaningful Journey. This is ensuring that Progressive Disclosure is applied to Web, mobile or SaaS app design.

#4. Continuous Integration

I define Continuous Integration as regularly integrating code changes into the main Source Code Repository of say, a Low-Code Platform and its specific reusable components. This means testing the changes, as early and often as possible - e.g. multiple updates, daily.

The inherent advantages here are:

Continuous Builds: Building the latest release as soon as a change is made. Ideally, the delta between each build is a single change-set - granular, and therefore faster.

Automated Testing: The programatic validation of the software code maximise quality. Tests initiate corrective actions in a truly Agile manner.

This also relates to a Scrumban method: the combination of the Scrum approach to Agile software development - underpinned by Kanban Boards, as left-to-right progression through all tasks attributed to creating and enhancing a new app.

Here you can achieve clarity for Deliverables and Acceptance in each time-boxed iteration throughout an Engagement, when tailoring or extending any combination of Code, Low-Code and No-Code. Each iteration is typically of two weeks duration, and, for those readers not familiar with the jargon, this is commonly known as a Sprint. All of this relates to Continuous Integration.

#5. Business Logic

State-of-the-art software architectures has led to the creation of 'containerised' Microservices. This is where reusable components built with say, a Low-Code Platform are packaged as 'Containers', making them easier to manage inside the prebuilt business logic. Docker is a leader in this area.

Running Microservices as Docker Containers enables Web, mobile and SaaS apps to become portable across many 'Trusted Cloud' environments, including extensions to packaged 'Cloud Fabric', as described above. This also helps to reduce bugs through the Continuous Integration process applied in structured Quality Assurance (QA) and production instances. In a taking a pure Code approach, reusable components built in say, React and Golang (Go) or Node JavaScript (.JS) - containerised on Docker - is a well-established and straightforward approach. The same level of transparency is needed when using a Low-Code Platform to automate much of the work here.

Underpinning the development of prebuilt business logic is 'Process Optimisation'. This is where IDEF0 is applied: a method designed to model the decisions, actions, and activities of a complex organisation or system, and as originally created by the US Air Force. This is an integral part of a comprehensive method that over time, has been extended to:

  • IDEF0: Function Modelling 
  • IDEF1: Information Modelling
  • IDEF1x: Data Modelling
  • IDEF3: Process Description Capture
  • IDEF4: Object-Oriented Design
  • IDEF5: Ontology Description Capture 

What matters here is a seamless integration between Process Optimisation, Studio and prebuilt business logic. There is no point to achieving a perfect visual notation of a Process (or set of Processes) if it is abstracted from the Studio-based design and development of the prebuilt business logic. This integration is key, regardless of how the ratio of Code versus a Low-Code or No-Code Platform applies to a given, blended digital innovation.

#6. Studio

The Studio for a Low-Code Platform should include building blocks - widgets - ranging from simple buttons or input fields, to complex 3D images, featuring rotation and transform animations. Here is where you generate reusable components. As noted above, this must be seamlessly integrated with the Process Optimisation method (e.g. IDEF0).

The Studio can also include a comprehensive Design Language and User Interface (UI) Framework, such as SAP Fiori, Salesforce Lightning Design System or Microsoft Fluent Design System. This better guides User Experience (UX) Design and introduces a set of reusable prebuilt components into the overall mix.

As you build new reusable components for a Low-Code Platform offering, you will increasingly see the commonality among many objects (e.g. Orders, Payments, Coupons, Feedback, and Catalogue developed for say, a 'Restaurant Platform Blueprint') may also apply to say, a 'Fashion Platform Blueprint'. Many other objects, such as Login, Contacts and Accounts are universal to almost all Blueprints for Web, mobile or SaaS apps.

A team of strategists, designers and developers often decide that the core technologies selected for the reusable components and 'Object Library' should be based on a Microservices architecture and a combination of say, React or Angular ('frontend') and Go (Golang) and/or Node ("backend') JavaScript (.JS) technologies. These elements may be defined as:

Microservices

In simple business language, Microservices are an approach to Web and mobile app development, where a larger app is built from a suite of modular, reusable components as services.

React

React is a JavaScript (.JS) library for building user interfaces (UIs) and is maintained by Facebook. React is well-suited to Web apps that require intense user interaction and changing data.

Angular

Angular is a TypeScript-based 'Open Source' frontend application development framework, led by the Angular Team at Google and enhanced by a community of individuals and corporations.

Golang (Go)

Go is programming language from an Open Source project, designed to make programmers more productive. Go is expressive, concise, clean, and efficient - with power compared to C, C++.

Node

Node is an 'Open Source, cross-platform, run-time environment that executes code on the 'serverside' (backend) including everything needed to execute a program written in JavaScript (.JS).

SAP Fiori

SAP Fiori 3.0 is a comprehensive Design Language and User Interface (UI) Framework, offering clean and consistent layouts throughout the user interface convey the content with clarity.

#7. Smart DevOps

As tech professionals reading this blog post know, DevOps is short for 'Development Operations': meaning the combination of mindset, method, competencies and tools that 'operationalise' services related to mobile, Web and SaaS apps in the cloud.

Done right, this is delivering the services at high velocity to shorten time-to-market; optimising a Platform performance, whilst minimising costs; and, ensuring that user on-boarding and related app reviews are positive experiences.

Smart DevOps brings together many things: the ability to define and create a digital innovations with a Platform Architecture that achieves an optimal path to timely go-live releases; an app built for scale, yet minimises costs of underlying prebuilt business logic and Studio.

Conclusion

This blog post is work-in-progress and I welcome feedback on any of the seven elements set-out here in this Platform Rethinking, and as I have experienced in creating a Platform Architecture. The key points here (so far) are:

#1 Code, Low-Code and No-Code all have their place in digital innovation, but what matters everywhere is the underlying tech architecture: open, standardised, modular, any cloud.

#2 Design Method provides a solid foundation for turning ideas into tangible innovations, where a people-oriented approach generates sufficient trust to truly understand challenges.

#3 Design Guidelines ensure that best practices in user experience (UX) and user interface (UI) design inform combined Code, Low-Code and No-Code approaches to digital innovation.

#4 Continuous Integration results in higher quality code and a more responsive approach to applying rigorous cyber security and fixing Web, mobile or SaaS apps - early and often.

#5 Business Logic significantly reduces effort, time and costs in executing digital innovation, leveraging prebuilt business logic and reusable components.

#6 Studio enables less duplication of code, through maximising deployment of reusable components and a state-of-the-art Microservices architecture.

#7 Smart DevOps shortens time-to-market and optimises app performance, whilst minimising costs; ensuring that user on-boarding and related app reviews are positive experiences.

All Posts
×

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OK