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. We also support most previous versions of Visual Studio, including Visual Studio Code.
For today's mission-critical, super-scalable and highly available applications, we recommend .Net Core (or Asp.Net Core) and Docker. We generally prefer to build Linux-based images, which are smaller and can be deployed without the need for expensive operating system licensing.
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.
Azure Dev Ops 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. Last year, we managed the migration of one very large TFSVC code repository into nearly 100 individual Git repos. This was done in such a way that the team of almost 100 users experienced no inconvenience or downtime, and the process was completed in its entirety on a Saturday afternoon.
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.