NML

Services

Custom software development, Content Management Systems, UX & Design

At NML we believe in using the best people and the best tools for the job at hand, so each project we take on has its own unique flavor. We do have a few methodologies and frameworks that have delivered the best results for us and our clients in the past, which form the basis of our development process.

Custom Software Development

Since inception NML has been building custom software solutions. We build secure, robust, scalable software that always delivers significant business value to our clients and their customers.

Software Architecture – understanding the desired outcomes and implementing the most appropriate architecture that delivers both in the short and long term.

Investment Transaction Processing – our background in the Asset Management industry means we have significant experience in transaction processing, applying relevant institutional and regulatory requirements and securely delivering messages to back end systems.

3rd Party Integration – we have a deep understanding on Enterprise Application Integration (EAI) Patterns. The base integration layer for most of our platforms is a messaging or services bus layer. The core systems we integrate into are banking backends, asset management administration software, financial services data and CRM systems.

Digital Client Onboarding - reduce friction in your client acquisition process by digitising client validation and onboarding.

Cloud Infrastructure - we help our clients modernise their technical infrastructure to scalable, cost-effective, cloud-based infrastructure.

UX, Design & Front-end Development

NML is committed to deeply understanding the intricacies of the modern web and its emerging technologies, platforms and standards. We place our user-centered UX, design and front-end development processes at the forefront of this commitment.

Processes

Analysis - At this stage the focus is on users and tasks. Information is gathered in a structured and systematic fashion to specify the context of use. We identify people who will use the product, what their aims are, and under what circumstances they will use it.

Personas and user stories - Personas describe who our users are. User Stories investigate what they do. These allow us to determine user needs on a component basis and to map interactions and UX requirements.

Style guide driven design solutions - At this stage we identify common tasks and functions that can be abstracted in the overall design and development to form reusable components. A living style guide is built as a repository for all design patterns, elements and components.

Design evaluation - occurs through user testing on an iterative basis. This could be in the form of lo-fidelity prototypes, UX tools such as Invision and final completed design patterns, components and screens.

Front-end development - is the foundation of the user experience in the actual browser. NML produces standards compliant and accessible HTML, CSS and JavaScript, utilising the latest available technologies, from CSS preprocessors to build tools. We place a primacy on system-based development, using a modular approach tightly tied to UI needs, that results in layouts ideally suited to a range of devices (from large desktops to phones), and suitable for integration with complex back-ends and content management systems. All front-end development is style guide driven in order to separate, UX design & front-end from backend concerns and for ease of maintainability.

Content Management Systems

Enterprise Web Content Management Systems - have the ability to transform a business. At the heart of the solution is content management, but these tools offer so much more than simple content creation and delivery. NML are partners for Gartner Magic Quadrant platforms Sitecore, Adobe Experience Manager and Episerver, each of which deliver a unique set of capabilities out-of-the-box.

Template-based Content Creation – simple, efficient process across multiple sites in multiple languages. Drag & drop interfaces allow quick reuse of components and accelerated building, sharing and creation of content.

Search & Metadata Management – spend less time looking for assets. Define and manage which metadata attributes are used, and apply these consistently throughout your site.

Optimised for Mobile – content is rendered optimally based on the device and screen size being used. You can tailor content for specific devices as well as preview how each piece will display on various devices before publishing.

Analytics – extensive insight into customer interaction with your application. Gather and analyse real-time data so you can make the best decisions possible.

Content Personalisation – leverage your understanding of clients’ previous interactions by displaying content that is relevant to each user for maximum engagement. Create personas and targeted content based on personalisation rules.

A/B and Multivariate Testing – perform controlled tests to gauge content and channel effectiveness.

Engagement Tracking – measure the value of each engagement against goals to assess which interactions are underperforming and which are successful.

Multi-channel Delivery – fully integrated email, social and mobile campaigns, as well as offline marketing channels.

Scrum - Agile Software Development

Scrum is an iterative process for completing complex software development tasks. It breaks the product down into bite-sized chunks for developers to build and takes the approach that ongoing specification modification and continuous learning is the best way to deliver the complete final product.

The process begins with our client product owner who, in conjunction with the development team, creates a prioritised feature wishlist called a product backlog. During sprint planning, the team commits to building a portion of this backlog in the upcoming sprint, which usually takes two weeks.

The team then completes the development tasks over the course of the sprint, but it meets each day to assess its progress (daily Standup). We have certified Scrum Masters to keep the teams focused on their goal, remove any impediments to progress and give feedback to clients. At the end of the sprint, the work should be potentially shippable.

The sprint ends with a sprint review and retrospective. Here we work on the evolving project “barometer”. Lessons learnt from the previous sprint are taken on board as the planning process begins again with the input of the client product owner.

Domain Driven Design

When designing software, some of the greatest complexity isn’t technical. The complexity is in the domain itself, understanding how a business works and how information flows within a business. If this isn’t dealt with during the design then no amount of technology will deliver what is needed. When we start any project we use Domain Driven Design to ‘crunch the knowledge’ of our client’s domain, starting with getting our software architects and developers to start speaking the same language. We call this the ubiquitous language. From there we start to represent the client’s business and requirements as models. The key entities of DDD that we almost always adopt are Entity, Value Object, Aggregate, Service, Repository and Factory.

Test Driven Development & Continuous Integration

At NML we are nothing without quality. One way we ensure that our code is of the highest standard is by using Test Driven Development. In TDD each new feature begins with a test before any code is written. This means the developer must fully understand the feature before they write the code. This test is written to fail, to ensure the validity of the test and whether it fails for the expected reason. Only then do they start to write code. As the code base grows so does the number of tests, which are automated to ensure that any additional feature does not break what has already been built.

We use Continuous Integration to manage changes and ensure that a developer does not break another part of the system by accident. CI is the process whereby work from different developers is frequently merged into one Master version of the system. When this is done, the CI server (a physical machine) builds the latest version of the system, then executes the hundreds of fast unit tests and finally executes the slower integration tests where the CI server actually opens a web browser and physically interacts with the system under test to try and detect any problems. The most important part of this process is that when a test fails, the CI server notifies everyone on the team. The team has to then immediately fix the problem. Fixing problems immediately means a more stable system and speeds up the problem analysis.