1. Speedy Prototyping and Innovation
The modern definition of success is the ability to quickly adapt to ever-changing environments and make the right decisions based on this. It may mean integrating an existing technology or product into current systems or even daring to implement an innovative idea and bring it to market. Or it can mean the exact opposite.
The sooner we try and test, the sooner we have the feeling if an approach is the right move in the first place. It’s why we rely on hackathons and code sprints! They are the epitome of speedy prototyping and actively promote innovation. Through hackathons and code sprints, we have the chance to create a proof of concept and develop prototypes in just a few days. It’s one of the fastest – and most enjoyable – ways to find innovative solutions and ideas.
2. Micro Frontend, Microservices and Containerisation
Whether you want to send e-mails, work on creative boards or use social media, we see these browser uses shifting more and more to web-based applications. This shift towards multifunctional software systems requires a special approach to the information architecture to ensure reliability, scalability and growth potential.
Approaching these applications as “jigsaw puzzle” created with small, independent pieces has proven particularly effective and efficient in their development. With this approach, each complete function of an application is seen and extracted as a separate service that communicates with other similar services via standardised protocols. Similarly, the system’s user interface (UI) follows this same pattern and treats the frontend components like widgets on a dashboard. By applying this “puzzle” approach to the UI, it makes it possible to develop functions independently and in parallel without putting the entire system at risk of failure. This freedom of application development comes from setting up a server with Docker containers and Kubernetes clusters technology while also creating a frontend using web components.
And the best thing about this individual approach to each component? It not only produces better quality software and improved reliability, it also allows resources to be efficiently managed and ensures the overall growth of the whole system is effective and consistent.
3. Multi-platform Apps
Native apps are great! They perfectly integrate into their respective platforms, offer the best performance and a consistent user interface (UI), and use all the features available. The catch is, if you want to offer the app on multiple platforms, a separate native app must be created and implemented for each.
At the same time, there are many tools and providers following the “write once, run everywhere” approach, promising to serve multiple platforms with one code, which are becoming well established solutions on the market.
Beware! Not all tools deliver what they promise! In recent years, our observation of the market has identified two key tools – Flutter and Kotlin Multiplatform – for multi-platform development. We not only use these tools for ourselves but also recommend them to our customers.Georg Dresler, Senior Software Developer Mobile, Ray Sono
If you’re implementing apps that have a strong UI focus, we recommend Flutter. Its framework is optimised to deliver a consistent and well-performing UI as you build the app. Unlike other tools, Flutter generates native code for each platform your app should exist on, meaning there are no performance penalties. What’s more, thanks to Flutter’s “Hot Reload” feature, developers can see UI changes in real time while they’re coding, making it highly productive tool for prototyping.
Our next favourite tool is Kotlin Multiplatform (KMP). It’s ideal for apps that need to map complex business processes and logics. KMP’s framework implements data models, logic and services (such as persistence and network layer) once, tests them and then makes them available as a native library. This allows business processes to be shared with all platforms – even the backend. KMP also deploys the UI natively so that every platform feature can be used without the need to compromise.
4. Headless CMS
A headless CMS is a purely backend content management system (CMS) designed to make content accessible to third-party systems via relevant interfaces. These tools have the name “Headless CMS” because they separate backend and frontend. This means the system’s focus is the administration and delivery of structured content. The classic or traditional CMSs many of us are familiar with came from an era when editors managed content and created websites without HTML knowledge. Today, however, we expect editors to not only manage content for a website but for multiple applications as well.
A traditional CMS renders and delivers the HTML of a website from the backend – the server side. Now, as we shift to a central content control to allow for usage across multiple targets, sever-side rendering is no longer sufficient – not least because many systems are unable to handle HTML code. As a result, interfaces are provided in a headless CMS so that the content can be sourced in a lightweight, easy-to-read and structured format (most commonly JSON). The move towards eliminating server-side rendering also has a significant positive impact on page performance – meaning better load times and an improved user experience.
Using headless CMS also brings advantages to the design. By separating backend and frontend, it is much easier to replace the frontend without the need to adjust anything in the backend or general content.