The software development process aims to accomplish two goals: Firstly, it allows us to accurately predict the delivery of high quality code throughout the development process. In addition, it creates tangible milestones along the way that helps us both gauge progress as well as have a minimal viable product early along in the process. Employing good project management skills and using a phased approach to deliver milestones with incremental functionality along the way improves our ability to create a product that is exactly in line with our client’s expectations – both from a functionality as well as an aesthetic point of view.
The two most popular development methodologies in use today are the waterfall methodology and the agile methodology. The waterfall methodology takes a great deal of time planning and specifying all aspects of the application upfront. By comparison, the agile methodology does minimal planning upfront and instead focuses on iterative and incremental development, evolving requirements along the way through collaboration. In most cases, we combine both models together so that we do core planning upfront, but then iterate and refine as we delve into the specific functional areas. This allows us to successfully deliver time-boxed milestones along the way, while not being constrained by decisions that need to evolve as aspects of the product change throughout the process. Projects that are based on a fixed costs tend to be most suitable for waterfall development. Projects that are based on a time and materials basis work really well using agile development. We are able to support all types of development methodologies and typically look to employ the best methodology based on each project.
The best way to successfully deploy a project is to break down the features into a number of tangible development milestones. Each milestone may then be tested early along in the process – ensuring that QA’s time is utilized throughout project and bugs are both identified and fixed along the way. A typical project may have anywhere from 2 to 8 milestones – some of which may coincide with agile sprint releases, where appropriate. The use of development milestones also helps businesses visualize the application coming together and allows them to make necessary changes along the way.
There are many cases where we don’t know how users will respond to a specific layout, workflow or, design. A/B testing allows us to measure response by putting different versions of the application in front of two user groups and using analytic data (and group feedback) to determine the most successful implementation. We often use A/B testing for banner advertising with calls-to-action, newsletter layouts, website flows, and social media campaigns.
Quality Assurance (QA)
We employ a dedicated QA team to test the work that we develop. For larger projects, we set up a bug tracking system that allows businesses to record any errors they find with the product – even after it has been deployed. We can then prioritize our development team to fix bugs while still developing new features. The result is far fewer issues post-deployment – meaning that our go-live date has a much higher success in delivering a quality product.