Andrew Johnston: Rapid Application Development Services

Development Services

In addition to my work as a consultant and agile architect, I also offer the ability to act as a high-productivity software developer.

While I am happy to take on a variety of assignments, my strengths are in being able to very quickly create a prototype which proves the viability of one or more solutions, or indeed to rapidly create and deliver a working solution which solves a specific business problem.

If required, I can undertake the complete development of a solution, or I have a strong track record of handing over my initial developments for further elaboration and exploitation by other teams.

Prototypes and Proofs of Concept

I can readily take a solution concept, a rough idea or simply a business challenge and quickly turn it into working software which demonstrates at least one possible solution. I actively embrace problems where the solution is not evident, or believed to be problematic. A number of my most successful developments have started with a statement like "It doesn't appear to be possible to..."

While I am a great believer in the value of analysis and modelling, words and diagrams have their limits in many complicated problem domains. In such cases even a low-functionality prototype is a powerful tool to elicit an understanding of complex requirements. The challenge is to strike a balance, but I if required I can then deploy my skills as an architect to generate genuine models and documentation off the back of any such prototype.

Part of the value I bring to professional engagements is the willingness to invoke unusual approaches if I think they are a good fit to a challenge. However it’s not unusual to find that other architects or developers are resistant to less traditional approaches, or those outside their comfort zones. Models and PowerPoint can go only so far in such situations, and a working proof of concept can be a very persuasive tool. Even if the proposed solution isn’t as easy or as effective as hoped, then “prove” takes on its older meaning of “test” and we have at least narrowed down the solution options. Similarly as vendors consistently overstate the capabilities of their products, a quick proof of concept can be very powerful in confirming or refuting a proposed solution, or establishing its limitations.

It's important to understand that my prototypes always work, providing real and usable functionality, even if constrained to a limited dataset or use cases. A viable prototype must allow its consumers to see things happening, not just imagine them behind a static user interface mock-up.

A prototype does not have to be expensive. Many of those described in the case studies below were developed in a week or two, some in a few working days. An investment in my services to help identify a solution is likely to repay itself several times over.

Automation and Utilities

It's much better to get a computer to automate repetitive actions, rather than relying on slow and error-prone human repetition.

I am happy to either develop a solution myself, or create the “scaffolding” to integrate available tools into a smooth process. If a partial solution exists I will progressively identify the limitations and find ways to work around and automate them.

My automation solutions can be simple macros, more complex scripts written in VB.Net or Python, or in some cases full-blown small applications, whatever is appropriate to the problem.

Test Tools

Software testing is another repetitive process better automated. Established commercial test suites may be a good option, but these often have a high price, and may be unable for technical reasons to fully execute more complex scenarios. I have experience developing both stand-alone test utilities, and add-ins or scripts to implement complex scenarios using commercial tools.

Integration Development

Some integration developers have a tendency to do half a job - link up the main elements of a solution, but leave some part of it dependent on painstaking manual mapping, or manual review of the results by end users. I have a low tolerance for such bodges, and will try to find a solution which fully automates the integration development and flow. Components I have developed form part of enduring integration solutions for several large organisations.

Another keen artisan at work!

Details

Commercial models

I can work under a number of different commercial models:

  • Commercial contract development. You pay fees for my work, you own all rights in the developed software. I will normally follow an agile development method to control costs and ensure there is a visible output from each agreed period of work.
  • Fixed price development. Similar to the above, but we agree a fixed price and scope. Some initial work may be required to agree the scope, and the delivery may be split into multiple fixed-price segments.
  • Shared risk/reward. I undertake the development at a reduced (or my own) cost, and I own all rights in the software. You pay through licensing the software, potentially related to the benefits you achieve from the software.
  • I also undertake my own developments for commercial sale. I'm very happy to receive ideas for such developments.

Technologies

I can develop desktop, web-based or mobile solutions using a variety of technologies including .Net (VB and C#), Java and Python/Django. I am also happy to consider alternatives if there's a case for them.

Technology selection depends on a number of factors including the commercial arrangement, expected life of the product, and how quickly a working result is required.

For a full list of technologies with which I have experience, see my IT knowledge page.

Consultancy Services

This page is focused on my work as a software developer. Please see here for more information about my work as a consultant and agile architect.

Background

If you're interested in what drives me to undertake so much development work, as well as my architecture and consultancy roles, please see "Why I Still Do Programming".

Development Case Studies

TechRadar: EA Technology Visualisation

Commercial development

Summary: Provides the ability to generate multiple high-quality visualisations of the enterprise technology landscape from a single underlying source

TechRadar enables Enterprise Architects to maintain a single, simple, version-controlled spreadsheet (or simple database) with a very "flat" presentation of the data, and TechRadar can then generate a multi-page PDF with visualisations of the data, in both "Radar" and tabular formats.

Yodel Identity Management

Development for Yodel Ltd.

Summary: Complete, working design for a federated identity management system integrating Active Directory and OpenLDAP

A federated solution for identity management combining Active Directory and OpenLDAP, supporting a complex role structure, and fully integrated with existing on-boarding and off-boarding processes. I created a fully worked-up design with a test system and documented code required to perform key actions. 

Insurance Premium Breakdown

Concept for Aviva Plc.

The Challenge: Explain in simple graphical form the various factors affecting a year on year insurance premium change, with the objective of reducing call centre complaints.

I originated the concept of a simple graphical web page showing an analysis of the premium change, and in a few days created a working prototype website with two different graphical representations plus drill-down to more detailed information.

Network Automation and Orchestration

UBS Plc.

Summary: Development of network orchestration and automation solutions

UBS' New Generation Networks programme aims to simplify management of their highly complex internal network using extensive automation and orchestration. Early work consisted of fragmented point solutions. I created a cohesive solution architecture, with unified request handling, standardised data structures, and adapters to multiple endpoint interactions. I then developed this architecture’s first use for DNS management, using Python/Django, REST APIs and Cisco NSO (Tail-F), among others.

Knowledge Base Development

ID-Workshop Ltd.

Summary: Development of a prototype knowledge base supporting automotive fault-finding

The ID Workshop solution provides comprehensive vehicle diagnostics, but provides little or no guidance on how to efficiently identify and rectify the underlying causes of a problem. I developed a companion system which bridges that gap, synthesising information from a number of external sources to help mechanics identify parts recommendations which can then become queries in a parts catalogue.

Agile Shelf-Edge Ticketing Platform

Marks and Spencer Plc.

The Challenge: Meet a regulatory deadline for a change in shelf-edge ticketing, against considerable, potentially incompatible constraints

The requirement was to deliver a new capability for in-store shelf-edge ticketing, at the time of a major change freeze. Despite timescale, platform and team capability challenges I quickly delivered a new solution to meet the deadline. The solution evolved progressively over several years, delivering significant business benefit for a very low investment.

Rule-based message transformation

Development for National Grid Plc.

The Challenge: Replace a large number of complex, hand-coded transformations between two core message models with a single generic rule-based solution.

I developed a rule-based "transformation engine" which transforms between the two models, doing away with a very large number of complex hand-coded transformations.

Integration Message Comparison

Development for National Grid Plc.

The Challenge: Identify the nature of changes to key assets from messages providing just the latest information for each asset

I developed a component for National Grid’s EAI architecture which compares and enriches related XML messages as they flow through the system, enabling better downstream routing depending on what has changed.

TestIDMS - DMS Load Testing

Development for National Grid Plc.

The Challenge: Demonstrate performance and reliability of a problematic complex application, without investment in a high-end test toolset

TestIDMS was a simple performance test tool built using .NET and Internet explorer able to drive complex workflows through to completion, able to simulate multiple sessions from a single low-specification user PC.

Android Private File Manager

Commercial development

The Challenge: Manage related content securely within a single Android app

Stash-It! is an "all in one" private file manager, tabbed browser and downloader for Android, designed to keep content safe from prying eyes, but with multiple content types co-located, e.g. for a client or project.

ConQuest: Graphical Container Yard

Prototype Development

The Challenge: Demonstrate, in the mid 1990s, how graphical user interfaces could make a real difference to the management of container shipping

ConQuest is a prototype visual container control and planning system for Microsoft Windows. It enables all users, from the gate operators to the planners, to do their work in real time, using intuitive visual displays, which give a clear picture of the yard.

RelQuest: Fault Tree Modelling

Commercial Development

The Challenge: Enable simple qualitative and quantitative modelling of complex system failure probabilities with a simple toolset based on Visio.

RelQuest is a tool to support Fault Tree Analysis of hardware and software system reliability. It is based on a simplified modelling approach, which allows analytical (and therefore almost instantaneous) evaluation of the model. It supports base events, AND, OR and VOTE gates.
See More: All case studies

Latest Coding and Development Articles

Agile & Architecture: Code & Development:

Random? That's a Coincidence...

My programming project of the last few weeks has been to build my own “rolling portfolio”, which shows random images from my photographic portfolio as either a screensaver or a rolling display on a second monitor. I’ve implemented a number … Continue reading

That Was Too easy...

There is an old plot device, which goes back to at least Homer, although the version which popped into my head this evening was Genesis of the Daleks, a 1970s Dr Who story. A group of warriors fight a short … Continue reading

Inferring Algorithms: How Random is Your Music Player?

“You’re Inferring that I’m stupid.” “No, I’m implying that you’re stupid. You’re inferring it.” – Wilt, by Tom Sharpe My latest contract means spending some time on a bus at each end of the day. The movement of the bus … Continue reading

Why REST Doesn't Make Life More Rest-full

As I have observed before, IT as a field is highly driven by both fashion and received wisdom, and it can be difficult to challenge the commonly accepted position. In the current world it is barely more politically acceptable to … Continue reading

An Odd Omission

Let’s start with a common use case… "I have a television / hi-fi / home cinema system which has several components from different manufacturers. I would like to control all of them with a single remote control. I would like … Continue reading

How Strong Is Your Programming Language?

I write this with slight trepidation as I don’t want to provoke a "religious" discussion. I would appreciate comments focused on the engineering issues I have highlighted. I’m in the middle of learning some new programming tools and languages, and … Continue reading

Why I (Still) Do Programming

It’s an oddity that although I sell most of my time as a senior software architect, and can also afford to purchase software I need, I still spend a lot of time programming, writing code. Twenty-five years ago people a … Continue reading

Dozy Android

I’ve just spent a good couple of hours sorting out a problem with my new phone, which has no good reason to exist. In fairness to Sony, it’s nothing to do with them: the issue sits squarely with Google and … Continue reading

Conversion Challenges

I have an interesting challenge, as one of the projects I am working on want to stop their environments to save costs, but I need ongoing access to the data. I have a dump from an Oracle database, but I … Continue reading

Platform Flexibility - It's Alive!

The last post, written largely back in November and published just before Christmas suggested that camera manufacturers should focus on opening up their products as development platforms, much as has happened with mobile phones. While I can’t yet report on … Continue reading

Do We Want Product Development, or Platform Flexibility?

There’s been a bit of noise recently in the photography blogosphere relating to how easy it is to make changes to camera software, and why, as a result, it feels like camera manufacturers are flat out not interested in the … Continue reading

SharePoint: Simply C%@p, or Really Complicated C%@p?

There’s a common requirement for professional users of online document management systems. Sometimes you want to have access to a subset of files offline, with the ability to upload changes when you have finished work and are connected again. Genuine … Continue reading