Upon meeting you for the first time, we will start to gather as much detail as possible concerning your requirements, your business, and what you currently envisage the solution to your current challenges might be.
Our consultants will then spend time researching potential solutions and technologies that they feel might be well suited to your particular business or set of challenges. From this we then submit a draft solution proposal, complete with estimated costs and schedules, for you to review.
If you’re happy with the approach we’ve taken and the solutions we have suggested, we will then engage with you on a more formal basis. Our aim to to make it so that before you've ever signed any paperwork you know our team is the right fit for your business.
Following on from a successful proposal review, through a series of consultation sessions both on-site and remotely we will then map out each and every core requirement and key deliverable in detail. We will take time to understand your business in detail, how it operates on a day-to-day basis, and how the software we develop can improve and transform your business.
Progressing from rough notes and design ideas, a formal set of requirements will be drawn up, high-level design or architecture decisions will be made, and all made available to you via our documentation portal.
The amount of sessions it takes to conduct this initial knowledge discovery phase depends entirely on your business, its current challenges, and how involved you or other stakeholders want to be in the project. We do find that working closely together at this early stage is key. The feedback we receive from you and the ideas and suggestions we can introduce at this early stage tends to lead to a much richer final product.
Once you are happy that all of your requirements have been identified and mapped out, our team then sets to work designing the solution.
This typically involves mapping out the high-level view of the system and its core functionality in greater detail using techniques such as UML diagrams and functional flow charts, putting together rough concepts and mock ups for the user interface, writing functional tests for code that will be developed in the next stage, and so on.
This stage of the development process is among the most important as it cements both ours and your own understanding of the project, resulting in a much more refined solution that meets all of your requirements.
It’s important to note that we do however try and avoid wasting time and effort mapping out every aspect of the system in fine, granular detail. Our experience tells us that no matter how detailed the specifications, and how sure everyone is that they accurately describe the desired end result, they are always subject to change and obsolete almost from the day they are written.
We understand that a project will evolve as you get to see the product or solution taking shape on a daily basis, and in order to allow that extremely beneficial evolution to take place we need to be wary of unwavering commitment to highly detailed specifications that were written prior to the first line of code.
It’s for this reason that we employ agile methodologies during the development phase: the solution will constantly adapt and evolve as development progresses, and your feedback can influence the design of each small component and be fed back into the development process immediately.
Once everyone is satisfied with the high-level design and that the core requirements and key deliverables have been identified, we then present it to the key decision makers within your business and incorporate any feedback before moving on to the next stage.
The fun part! Following on from a successful design stage the project is now in the hands of our developers and engineers, and we go to work turning your idea into a rich, tangible reality.
Our team use a blend of agile methodologies 1 that split the development process up into small distinct units of work known as ‘sprints’, typically lasting 1-2 weeks each. Each sprint consists of a number of distinct issues to be tackled, and generally has a clear over-arching purpose or goal such as ‘develop the user login and authentication system’. Each member of the team then works collaboratively towards achieving these clearly defined goals.
The purpose and benefit of splitting development into distinct segments is that each piece of functionality catered for by a sprint is fully developed, tested, documented and integrated into the overall solution in a modular fashion.
This holistic approach eliminates any notions of ‘we’ll get round to documenting that later’ or ‘we’ll test that properly another time’ that often come back to haunt projects further on in the development lifecycle. Any issues or improvements can be identified in the review that takes place at the end of each sprint, and incorporated into the next and resolved.
Furthermore, this approach means you can see real progress as it is being made via our live test environment and give feedback on each aspect of the system as and when it is developed. This avoids the common mistake of trying to launch a product with a ‘big bang’ come the deadline day and the subsequent deluge of bug reports and unsatisfied end-users.
1 (Scrum Methodology – https://goo.gl/WjFAmM)
Testing is integral to each and every one of our projects in order to ensure that all code developed satisfies the requirements it was developed for, and continues to do so throughout the life of the project. Unlike projects of old where there was a distinct testing phase, testing is a key part of the development process from day one.
Our developers employ Test Driven Development (TDD) techniques that means before writing any code, they first develop automated tests that prove or evaluate that the desired functionality or business logic is provided for by that code. Once a test has been developed, the developer will check that it fails, and then develop code or business logic that makes the test pass.
Over the course of a project thousands of these tests will be developed, and the whole suite of tests can be run with a single command, and will be dozens of times per day. This means that as the development progresses, the developer can check with a single command whether the code they have just developed has had any unintended consequences on logic that already exists.
By employing TDD, the amount of bugs introduced into the system is vastly reduced, the software remains stable and maintainable throughout its entire lifecycle, and as a result saves your business immeasurable time and cost.
This stage is where we start to transition the product or solution over to its production environment and begin some larger scale end-user testing and training. Servers are provisioned, infrastructure is installed, and finally through a series of training sessions and ‘soft launches’ we progressively put the project into use across your entire organisation or release it to the general public (again, avoiding that ‘big bang’ launch day!).
As the project nears completion and the period of user testing draws to a close, we conduct a full project review and make a final presentation to the client where we hand over all formal documentation and discuss any follow up actions or enhancements to be potentially made.