“You get what you pay for” is a phrase that applies to many parts of life, and software development is no exception. However, much of what goes into software development is a bit of a mystery to the layman, and understandably so.
It took me four years of education to gain a cursory understanding and many more years of hands-on experience to gain real knowledge of software development. So if you aren’t a technical expert and you’re paying for software development services, how can you truly evaluate quality?
The difference often lies in four areas: change management, planning and review, automation, and testing.
Simply put, companies that get these right produce higher quality software than those that don’t. These key elements drive efficiency, building software with fewer errors while creating a structure that facilitates future development
We store code in a source control repository, meaning every change we make is tracked and saved. Furthermore, multiple developers can work on a project at once without fear of overwriting each other’s changes.
We also practice Infrastructure as Code. This means that hosting environments are scripted as code and stored in the repository, ensuring that infrastructure can be stood up in a repeatable manner. The benefits include simplified maintenance, testing, and disaster recovery.
Every deployment is planned and versioned so that we know the exact state of our software and when it got there. Being able to reference past work enables us to add new features quickly and easily.
Planning & Review
Every feature is planned using a consistent format. We outline the feature’s business objective, document our assumptions and questions, outline dependencies, formulate a work plan, and determine how to test if it’s working correctly. We prefer to measure twice, cut once.
Every line of code that’s written is reviewed by another developer. Nothing is released without peer review and approval.
Code from all developers is run through software that compiles or parses the code, triggers the automated tests, and reports back on coding style and complexity. This happens daily (sometimes several times a day) and allows us to detect problems early – before code is deployed.
We remove the human element of error by automating our deployments. Continuous Integration Servers run in parallel with deployment tools to ensure that our clients’ code reaches the intended servers efficiently and consistently.
Every project is shipped with automated tests in place to ensure performance, accessibility, and predictable functionality. We use unit tests, integration tests, visual regression tests, accessibility tests, and load tests to ensure that the software we build behaves exactly as it should.
Acceptance criteria define the technical requirements of development work, and we write our acceptance criteria in Gherkin. This provides the perfect blend of human readability with technical specificity, and can also be used with automated testing.
We still test the good old fashioned way too. Every feature is tested against its acceptance criteria by a Quality Assurance Engineer. Before a feature is released, we ensure that the user experience is precisely as we intended it to be.
Spend Your Money Wisely
Through effective change management, planning and review, automation, and testing, we produce top quality software for our clients.
If you’re already working with a software development partner, ask if they’re doing these things for your project. If they aren’t, then you’re likely getting less than you deserve. Contact us today for a free consultation, and we can discuss applying these best practices for your next software development project.