We use the latest best-of-breed software development tools to enable us to work as efficiently and effectively as possible. We've selected a few of these tools here.
The default tool for virtually all of our software development.
For critial transactional database systems, and in keeping with our utilisation of the Microsoft stack, SQL Server is a high performing and highly available RDBMS that forms the data tier of many of our bespoke applications. For price sensitive projects, and where data storage volumes are low, we also use the free edition, SQL Server Express.
We can support all versions of Microsoft SQL Server including 2012, 2014, 2016 and 2017 - including versions running on Linux.
TFS is our default choice for both source control and agile .NET development workflow management. With particular experience in setting up automated builds that are tailored to your team's needs. We regularly set up Continuous Integration (CI) and gated check-in processes for our clients, and also have a selection of custom Build Actions available - such as auto assembly versioning, service password generators, and more.
We also recommend Microsoft's cloud version of TFS - now known as Azure DevOps, which is a great alternative to on-premise TFS installations, particularly where dev teams are geographically dispersed or regularly working at remote locations. Elastic Build provides powerful on-demand build agents that are created when your build process needs them, potentially vastly reducing build times in complex scenarios.
This renowned productivity tool has truly awesome code inspections, automated refactoring features and simply brilliant all-round coding assistance. This tool improves the speed and quality of our code, and after many years of using it we wonder what we'd do without it. We are always happy to introduce ReSharper to new users, and teach them how to code smarter and perform complex but risk-free refactoring.
NCrunch is our favourite tool for automated execution of unit tests in the background while we are writing code. It provides instant indication inline with our actual code to indicate which lines are covered, which aren't and which unit tests are passing or failing.
There are several free file comparison tools on the market, but we use Beyond Compare - which really lives up to its name. We prefer Beyond Compare's smart diff view and three-way merge - a must when integrating complicated pull requests. Integrates seamlessly with Visual Studio and Git to replace the default merge/diff tools.
After testing several productivity alternatives to using the Git command line - including the popular Git Kraken and Source Tree - we settled on Git Tower. Tower works perfectly with Visual Studio, TFS and Azure DevOps (with repository cloning direct from the Web UI), this tool also supports Git Flow, Git LFS and GitHub out of the box. Tower has a neat, beautifully clean user interface and is available for both Windows and macOS.
SQL Sentry is a great way of crunching the information that SQL Server spits out in the form of a Query Plan. The visualization of complex stored procedure call trees allows us to identify the root cause of performance bottlenecks quickly and accurately.
We use the ANTS suite of tools for finding performance bottlenecks in .NET and SQL code. To date our greatest success with this tool was to reduce a custom Windows service from using 20GB of RAM to just under 8GB. Although ANTS Performance Profiler has a fairly steep learning curve, we are always pleased to transfer knowledge to your dev teams. The latest profiling tools in Visual Studio mean we are using ANTS less and less these days, but it's still useful when we need to roll out the big guns.
We like to use Selenium for creating robust, browser-based regression and other automated UI tests. It's free and supports most browsers, and we can implement a testing framework for you that targets multiple browsers simultaneously, thus vastly reducing the time required to run your entire test suite.
One less common use of Selenium involves using it as a headless browser to implement automated web bots. For example, we might implement a web bot to perform 'screen scraping' of data from legacy web based applications, or to automate processes from closed or third party systems.