Obviously, if an application needs to be written then there’s a specific need that can’t be met by off-the-shelf software – and that means you do have to be creative about designing the new application to best meet that specific need, at least cost to the organisation, writes Cornelius Swartz, head of software development for Red Man Technologies Cape Town.
So, yes, innovation is a key component of application development – in addition to helping to drive the customer’s competitive edge.
It’s equally important, though, that the developers deliver the application on time, within budget, and with least disruption to the customer’s business.
And that’s a whole different ball of wax because delivery always comes down to the less glamorous side of application development: discipline, management, tools, and methodology. It means doing things in a repeatable and predictable way.
Repeatable so that you can reuse code from one project to another – saving customers money and time. Repeatable also so that you can ensure a consistency of development methodology and, accordingly, quality.
Development processes need to be predictable so that the outcomes become predictable. Predictability also enables better management of the development team itself, because each developer knows what’s expected of him personally, by when, and at what level of quality.
Achieving effective delivery capability also means doing as much as possible with as few resources as possible, so that you can reduce costs, be agile and get the application out and working as fast as possible, and be continuously adaptable to the customer’s requirements.
Of course, you do have to manage customer requirements. That comes down to understanding his particular needs right upfront. (If you don’t understand what he wants, clearly, you can’t deliver what he wants.) It also entails staying in a feedback loop with the customer, so that he knows what’s being achieved at any time in the development cycle and gets no surprises at the end of it.
We also find that if we deliver a stream of small parts of the development, so that the customer gets up and running sooner than he would otherwise and begins to see the business benefits of what he’s committed himself to early in the development cycle, the project is much more likely to deliver the desired results.
In the end, successful application development is a question of intelligent balance between innovation and delivery. You can get all the creative satisfaction you crave in the initial phases, when you’re getting an understanding of what the customer wants. That’s when you can differentiate yourself from the development herd – by creating a clever architecture that gives your customer the competitive edge for which he wants the new application in the first place.
And then you set about delivering more functionality and value with fewer resources. We use what we call the a-team, b-team concept. We send our experienced specialists in to understand and manage the customer’s requirements. They then architect the solution, and the b-team steps up to the plate to do the nuts and bolts of the development.
We box clever on the development practicalities, too. We use standards, frameworks, modelling capabilities, and rules engines to automate the generation of code as far as possible. We use services orientated architecture (SOA) coupled with a rules engine to facilitate integration of our developed applications with other applications and systems and ensure reusability of code – and innovation.
And, we test as we go. That takes a little more time up front, but it saves a great deal of time over the full period of the project.
In other words, without ever having to reinvent the wheel, we are always able to bring to a customer’s environment something that not only works superbly but is fresh enough to give them a significant edge. That’s what application development is all about – delivering innovation.