How We Do It

Domain Driven Design, Agile Development Methodology, Service Orientated Architectures, Test Driven Development & Continuous Integration - this is how we work.

Domain Driven Design

What is domain driven design? When you enter a complex domain, something like fund management, securities trading or insurance and you have to build a platform that represents the clients business you need techniques to ‘crunch the knowledge’ of the clients domain. Further to this, you need techniques to take that knowledge and design a software platform around what the client’s business requirements are. Domain Driven Design is our preferred knowledge crunching and software design methodology. The key to DDD is that the software architects and developers start speaking the same language; we call this the ubiquitous language. From there we start to represent the clients business and requirements as models. The key entities of DDD that we almost always adopt are Entity, Value Object, Aggregate, Service, Repository, Factory you can come and visit us to find out more. Or read more about DDD here domaindrivendesign.org/

Scrum - Agile Software Development Lifecycle

Agile development and SCRUM in particular is very contemporary, but how many companies are doing agile well? Thankfully, Google have an on-going list here

SCRUM is an iterative process for completing complex software development tasks. It breaks the envisioned product down into bite size chunks for developers to build and takes the approach that on-going modification and specification cleansing is the best way to deliver the complete final product.

This ensures we involve the client in the process of defining the product backlog. We also involve the client (product owner) in the process of Sprint Planning, backlog grooming and feature prioritisation. This leaves an open channel of communication and means that the client gets the most important functionality built first, should his/her budgets or priorities change as the project runs its course. Our clients do business in fast-moving industries, and their needs change, based on market conditions. Agile is the best way for them to stay ahead of the curve.

At the end of a sprint (we usually work in two week sprints) the client has a potentially shippable piece of code. The task is to make sure the pieces of code fit together, and that the most important pieces get built first.

NML have three qualified SCRUM Masters, whose priorities are to remove impediments and ensure the software developers stay focused on the goal of completing all tasks, rather than sitting in meetings and discussing features. By the time a developer has a piece of work to code, its signed off, wanted by the client and the specification is clear to the developer.

All sprints end with a sprint review and a retrospective. Here we work on the evolving project “thermometer”. Scum Masters clear impediments for the developers and make sure the Product Owner is clear on what the priorities are for the next Sprint. As the next Sprint begins, the team (with guidance from the PO) chooses another chunk of the product backlog and begins working again.

We are emphatic about the need for a Product Owner – we have only seen SCRUM fail on occasions where the Product Owner is not entirely engaged with the project.

The NML Process

We believe in using the best people and the best tools for the job at hand. This applies to all stages of a project: from the analysis, the visual design and the user experience (UX) design. In cases where the business domain is complex enough, or the UX specialised enough, we will work with partners who are experts in their fields to ensure we maintain our high standard.

The visual design and the quality of the user experience are central to our development processes: they are every bit as important as the underlying business logic and infrastructure. At NML we take time to make sure that our clients understand that the content of their sites and the behaviour are critical to the success of their project.

The development process starts with business analysis to gain a complete understanding of the problem domain and what is needed. Once the domain is understood, we create a visual design that illustrates the behaviour and functionality of the site. At this point our Agile development process begins and the client is kept on-board throughout to ensure that what is being developed is what was expected.

Supporting our products is also something NML takes pride in. Should anything go wrong, we strive to find the cause of the issue, correct it and deploy the fix in the shortest possible time.

Our process revolves around 5 distinct steps:

Project initiation

Planning

Development

Release

Support

During the project initiation phase we gather what information is available at the start of the project and create an estimate based on this. We also begin to educate the client on our way of working as we feel that all software projects are partnerships, not simple client/vendor relationships.

Once the client accepts our estimate and high level project plan, we kick into gear and the project begins in earnest. The planning phase is where the entire system is picked apart under a fine-toothed comb and any hidden dependencies are identified. The result of this is not a detailed Gantt chart with milestones and dates but rather a complete functional specification, wireframes and potentially a complete visual design. Based on these functional requirements we can create high-level estimations which are then used to drive our sprint planning. At this point nothing is set in stone as the Agile approach requires that we remain flexible and able to adapt to changing requirements. However, the time and effort required is now known and delivery dates can be tentatively estimated.

The visual products of the planning process – including wireframes, final designs and visualisation of scope – help to ensure that all role players on the project clearly understand what the outcome of the project will be.

In the Development phase, the Agile process kicks in and it is crucial that clients remain involved during this phase of the project. The focus is on building functionality on a regular schedule, rather than trying to adhere to a set of milestones.

Throughout the development process Continuous Integration principles are applied with all code being unit tested, subjected to integration tests where possible and all work is reviewed by other developers before being committed. This, along with sprint-end demonstrations of work done ensures that our code is of the highest quality.

When an acceptable minimum level of functionality has been developed, the project is ready for the release phase. Testers evaluate the system to ensure it is working correctly and all UI elements are matching the designs. Business Acceptance Testing (BAT) is performed by the client to ensure that all aspects of the system match their needs and that the correct business rules are being applied. Where possible, User Acceptance Testing (UAT) is performed by end-users of the system to detect any potential usability issues and to ensure that the system matches the users’ workflow. Any issues identified by the client during this phase are resolved as quickly as possible using the same Agile approach as for the development phase. The end product is a system ready for deployment to the live environment.

Once Live, the system enters the Support Phase – this covers on-going maintenance, minor alterations that may be needed due to evolving business rules, any system failures and the resolution of bugs that may arise. NML has on offer 24/7 support with a goal of resolving issues as quickly and efficiently as possible.

Service Oriented Architectures

Service Oriented Architectures (SOA) is the architecture by which we get modern systems to communicate with one another and thus interoperate with one another. In the modern software development world almost all systems are disconnected in the sense that they don’t reside on the same infrastructure or even in the same process.

We connect these systems through protocols and techniques that make up the basis of SOA. Almost all systems now have a visual interace and a software based interace we call this the API or Application Programming Interface. Designing a good API is an art. Choosing the right SOA approach is also an art. Services can be exposed through SOAP, RPC, REST, Java RMI to name just a few messaging and remote invocation technologies.

Other aspects of managing SOA are SOA governance in as much as managing multiple versions of services, managing the uptime of services and managing the descriptions of services so that services with similar functionality aren’t created.

Test Driven Development & Continuous Integration

Test Driven Development

At New Media Labs we strive to deliver the highest quality product possible. We believe a way to achieve a high level of maintainability and accuracy in our code is through the use of Test Driven Development (TDD). TDD requires that developers write an automated failing test first before writing the actual feature. An automated test is code that can be run that will test the system. It interacts with the system and confirms that the system behaves as expected.

Typically a project has hundreds or even thousands of automated unit tests. Each unit test tests a tiny feature in isolation, so it is very specific and fast.

There are many advantages to following the TDD approach:

The entire system gets tested several times a day because all the automated tests get run every time, even tests that developers have written months before. The system remains stable and bugs are hard to introduce.Writing tests first (before the feature) leads to code that is more loosely coupled from other code, thus making it easier (and cheaper) to maintain.Having a test suite of hundreds of tests give developers confidence to make big changes to the code, because they know they have not broken anything if all the automated tests still pass.

Continuous Integration

A software system is essentially a very sophisticated machine (even though it is not something physical that can be touched). It is easy to make a small change to the system while adding a new feature or fixing a problem, and unknowingly influence (and potentially break) another part of the system. This is just the nature of having many people work on the same complicated machine.

At New Media Labs we use Continuous Integration (CI) to police 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.

Balance & Knowledge

Balance

Balance at New Media Labs is so much more than work hard, play hard. That old moniker excludes the fact that we care about each other here. It excludes that Project Managers care about the health of their developers – not just their fatigue, but their overall happiness. This is where geek-knowledge-sharing Fridays are balanced with lunch runs and Strava discussions, and where recycling is treated with as much respect as new equipment to help us work faster for our clients.

Happy developers require the freedom and space to fail. New Media Labs is the place where it’s ok to ask questions when you are stuck in a corner, or where you can push the limits, break something, and get the help to build it back up. We work incredibly hard, but we are given the space to, dare we say it, be all you can be.

This is a space where kindness rules, where we are not scared to learn, even if it means falling over a few times. Balance in our office means open discussions around items as sensitive as quarterly bonuses, balanced with celebrating the launch of every project with the entire company. We push the limits here, but that’s because we work in an environment where it’s rewarded, where hard, smart work is the norm and where we celebrate existing outside the comfort zone, where the magic happens.

Deep Knowledge and Love of Software Development

We’ve been pedantic about who we hire. We encounter thousands of CVs a year and we’re still a small team, a natural aptitude for software development is a must but passion for software development is the key to being hired at New Media Labs. Passion for solving complex problems with elegant solutions is our goal. No matter how clever a developer is, if they aren’t passionate about developing software the will not be able to find the elegant robust software solution.

Contact Details

Careers

A pessimist looks at the world and sees problems, we look at the world and see opportunity. Where complexity exists we see a chance to decipher, to collaborate, understand and solve. Each incremental puzzle solved a step toward a broader knowledge and wider understanding of the rapidly evolving landscape that is technology. Each step a part of a journey towards creating something remarkable, a step towards building something great.

At New Media Labs, we believe in mastering our craft

By trade, we build software. And we love it.

We focus mostly on financial services software, which offers our developers exposure to the most complex, and most lucrative, area of software development. We’re committed to designing elegant software, writing creative code and developing in line with best practices.

But we’re in the business of building great people, too. And we love this part of the job, more.

All newbies at New Media Labs learn the industry-bests in Object-Oriented and Service-Oriented design patterns from a team of dedicated, and accomplished, senior developers. Each developer new to NML is mentored by one of these seniors, a relationship that is usually forged over the in-house foosball and pool tables.

So we’ve built a relaxed workspace.

Because relaxed minds, are robust minds. We believe in meaningful work in an environment that means something more than a nine-to-five. So, we’ve built a place with great coffee, free food for lunches and munchies, flexible working hours, and the best equipment. This allows great minds to get serious work done and still take on Table Mountain for a lunch-break run, because we have all kinds of adventurers working here. It’s all in a day for the team at New Media Labs. And when that day is done, there is a microbrewery (and still more mountain) around the corner for after-work adventures.

How we hire...

We don’t have strict job specifications, because no one at NML could fit into a box. We want people who want to learn to code properly, professionally, and possibly go on to programme the next big thing. Many of our interns have left to join Facebook, Amazon and Google and while we’re sad to see them go, we’re proud of what they’ve learnt at New Media Labs.

We look at the world and see challenges.

If this sounds like a place you’d like to work, please fill in your details below and we’ll get in touch with you.

Your name:

Your email:

Your message:

Clients

You came looking for a client list, but we call them partners in software development.

Investec

Royal Bank of Scotland

Primedia Broadcasting

Nedgroup Investments

Nedgroup Life

Nedgroup Beneficiary Solutions

NatWest Personal Banking

WeLove

Aurecon International Engineering

Associated Energy Services

Brandhouse

Wetu Travel and Tourism

Content Management Systems

Content is the super-type of the web, which makes content management systems the engines of the web. Digital natives often up in religious wars when they start discussing their CMS preferences. At NML we respect all of the leading content management systems – from Wordpress which is beautifully simple and powering 10% of the internet through to Sitecore which is a Gartner leading quadrant CMS and powers some of the highest profile sites globally. Almost all of these products have unique features and fill very specific needs.

NML has invested heavily in our own CMS (or rather CMS code base) for bespoke content management systems, Lenticular which is our own Social CMS for building reputational systems and Sitecore for enterprise clients. We are a Sitecore certified partner, and recently won the partner award for 2012 International Media Site of the Year for Primedia Broadcasting’s Eye Witness News.

Click on the CMS, Sitecore and Lenticular badges to find out more about when and why we use each product.

Sitecore

New Media Labs Custom CMS

New Media Labs Lenticular

Secure Software/Enterprise 2.0

If content is the super type of the web, users are the drivers of the web. New Media Labs was founded by Paul after reading the Cluetrain Manifesto. The key premise of The Cluetrain Manifesto is that if you’re lucky your market is having a conversation about you, you can either engage with it or ignore it. Engage and you’ll probably succeed, ignore and you’ll probably fail. Our goal is to build platforms that allow a business owner to intimately engage with his/her clients, on digital platforms, and to facilitate the conversation rather than ignore it.

New Media Labs expertise is not chasing up facebook likes, getting twitter followers or trying to “make something go viral” – we work with partners who are far cooler than us to achieve that. We build social platforms that bring a community to old and traditional business models. This requires a deep understanding of the security, membership, community and how and why people engage with social platforms. Also, and this is the part we love, bringing social to existing business models usually requires complex integration and software development.

The following illustrate how we have built complex systems that bring social to existing business models by example.

New Media Labs built the platform designed by Stonewall+ (now Native) to bring social to Securities Trading. read more

New Media Labs built the Nedgroup Investments fund management system which has a secure login and allows users to enter at different roles [MANCO, Fund Manager, Financial Planning Business Owner, Financial Planner, Back Office Administrator] and interact with their community (investors). read more

New Media Labs have built the platform for a wellness program that can be found at become.co.za . The theory being true wellness can only be achieved by taking an integrative approach to one’s health, by recognising that total wellbeing is the product of every choice we make in our daily lives. With this in mind the become programme rewards members for healthy activities in each of our five major health categories:

exercise and nutrition

mental health, self-development, personal balance

relationships and community

environmentally conscious living

financial health

The platform is social and actuarial in that it calculates the rebate you should receive for becoming healthy, inspired, connected, green and well invested. read more

WeLove is NML’s community platform around locations in South Africa. We are building communities around specific interest groups. The platform is build ontop of our cloud base social platform Lenticular. read more

Mobile Development

We’ve taken a hard-line stance on developing native applications for the past three years. We believe web applications should apply responsive design and that there really is no need for specific mobi web application.

We develop applications in languages and platforms we enjoy. For this reason we have focused on iOS, Android and Windows Phone.

We have only included our WeLove mobile application into the showcase. It covers a wide cross section of the iOS application blocks.