The start of your project, that new cool feature that solves a new or existing problem you or your market face. You contact us because you need help to turn your idea into a custom software reality. Let’s get together and see how we can help.
We’ll discuss how your idea will integrate with your existing project, or how we can make your new project come to life! We are experts in our field, as you are in yours. This stage will identify any technical challenges that may be faced, on an abstract level, and the technologies that will be required.
After a discussion between our team and you, you will need to decide the worth of continuing. Evaluating the business costs and benefits versus any of the issues that were brought up in the previous discussion.
So you have decided to move ahead, your new feature is beneficial to your business or your new product is viable. Now we need to discuss the finer details, cover the edge cases and ask all the “what if”, “what about when”, “how about” questions. This will give us a deeper understanding how to perfectly achieve the goal you wish to achieve with as little discrepancy as possible. As we said before, we are experts in our domain, we are now trying to apply our knowledge with your expertise in yours; communication is crucial here.
After our more detailed discussion, we will get to quote the feature. This consists of breaking your feature down into the smallest of parts and then working out estimates for doing each part. We will consult with past experience and make estimates on the difficulty of the task.
The feature has been approved, now we need to design each aspect of it. This includes user interface and back-end design. This saves parts overlapping and more work being done than needed, or even parts being missed. The importance of designing before working cannot be expressed enough. Without proper design, work is repeated, changed and becomes an unmaintainable mess quickly. The design will make sure all the broken down tasks can interact with each other correctly to make the full feature while making sure it is well set up for future change and other developers coming to work on the code.
The fingers hit the keyboard now; the magic that makes your idea much closer to becoming a reality.
Testing riddles out, hard to detect, logic errors and prevents changes in one area of your project affecting the rest. Tests also improve development speed, as we don’t need to constantly check each part of the system when we make changes each step of the way. We can run the test framework and then do one final sweep at the end. Another great aspect of tests is TDD (Test driven development). If we know the result of something before we start programming, we write a test that tests for the expected result; we then write code and run the test, repeating until the test passes. See our article on insuring your code for more information about testing.
The code is committed to a central code repository constantly, as developments are made. Generally, the tasks are broken down so that each task is a single commit; however sometimes a task can be multiple commits. This gives us a history of how all the code came together to quickly identify how everything is tracking.
The benefits of committing the code in chunks allow for another programmer to check over the code before it goes into the central repository of your project. Each commit is reviewed, adjusted by the original coder if any changes have been discussed; then merged. This step quickly picks out spelling errors, simple syntax errors and any logic improvements that two sets of eyes can spot. Picking up mistakes or improvements earlier in the project will benefit magnitudes later.
The code is now merged into a feature branch or your main project’s repository. Now a CI system takes the code and runs a heavier set of tests against your whole project making sure everything passes. It starts an exact copy of your app and goes through it like a real person would, alerting any errors it finds.
It is now ready for a final test from a senior in the project. They use a testing server of your product to test the task with the requirements described by you; picking up any misunderstanding by the developer. This ensures the quality of the product and is a good final glance over.
The code is now pushed to a test server, which you can inspect. This server will be constantly updated as each task is completed, showing your features being built as we finish them. This will be invaluable to you so you can quickly identify we are both on the same page still and achieving your end goal. It also allows you to visualise it all better now and consult changes if you see a way to improve the end result.
Feedback is important to us so that we can give you the product you want. We strive to be the best and uphold the highest quality in what we do, so this feedback is a very important stage to assess how everything went.
Success, your code is now finished and ready to deploy. We have worked well together. We, the team at MindVision, look forward to building your next product!