As software engineering practices continue to evolve to meet modern day requirements, we continuously review our own practices to identify more efficient ways of working and to make the most of cutting edge technologies.
We currently work in the following areas:
We use Scrum for most of our development projects. Development teams are complemented by Scrum Masters and Product Owners, as well as Business Analysts and Solution Architects where needed.
Application Lifecycle Management
Tooling is essential to modern software development. We use Microsoft Team Foundation Server as our ALM tooling and have a policy of keeping up-to-date with new Microsoft releases.
Our developers use a range of tools including Visual Studio, ReSharper 9 and a choice of complementary tooling, such as NCrunch, LINQPad and Beyond Compare.
Code quality is one of our highest priorities. Therefore we focus on ensuring that code is supported by high unit test coverage and developers are actively encouraged to work in a test-driven development manner.
We see automation as a key enabler to improving efficiency, and are implementing continuous delivery to ensure every change to an application is releasable. This process involves the use of tooling to manage the configuration of applications and automating its deployment to different environments.
Automated testing is a practice which we actively encourage in order to reduce software delivery cycle time. This enables test engineers to focus on high-value testing rather than routine testing.
Technical Debt Management
Technical debt refers to the deterioration of a codebase over time. We are continuously looking for ways to reduce technical debt, using code quality metrics tooling such as SonarQube to help monitor progress and maintain the health of our codebase.