Quality code and lots of coffee

Category: Skill

Skills that I have accumulated over time are displayed below. Some range from formal education with qualifications to self taught and gained through experience.

Server Architecture

Building an application is only part of the process; a platform to run your code on is just as important to know about. Environmental differences can cause unexpected bugs in your code and having a knowledge of of server architectures can be a vital asset to your tech stack. Servers need to perform a range of tasks, including manage domains and user groups, permissions, and run your applications – ultimately to provide a service to you.  These services can include web services like IIS or Apache, Databases such as SQL Server or MySQL, email services like Exchange or Postfix/Dovecot.

As well as having an in depth knowledge of desktop operating systems Windows XP – Windows 10, and Linux environments such as Ubuntu, Fedora and OpenSuse I have an extensive knowledge in both Unix and Windows Server. Windows server as always provides the advantage of managing everything through a GUI, giving your server management a little bit of ease, and being able to run some development tools natively is always a bonus.

Running a Unix server by comparison is a lot more hands on, but provides much greater flexibility when it comes to server architecture (As well as having the bonus of being free), and with the new territory of .Net Core Unix is becoming a more viable option in businesses. I am familiar with most Debian and Redhat bases systems – in fact this website is running on a CentOS system running in the cloud.

It is one thing to know that these services are available to you, but understanding the alternatives on both platforms, as well as how to set up and use these platforms is a valuable skill.

Source Control

Source control speaks for itself – it allows source code to be managed, maintained and worked on from multiple sources, keeping track of changes and allowing reverting to certain versions of code – or deploying certain versions of code.

The fundamentals of source control are the same, you create a working copy, make your changes, check your changes in and anything that conflicts must be resolved before committing. While there are differences between varieties of source control, a basic understanding can go a long way. My introduction to source control was using Subversion, setting up a subversion server on a remote server so that I could manage code between multiple developers throughout my university projects. From there my affinity for source control grew, in a professional capacity I completed complicated merges between branches after long running parallel developments, enforced repo cleanliness and managed integrity of branches.

Throughout my career I have become proficient in  using

  • Git
  • TFS
  • Subversion
  • Source Safe (yes, really)

Unit Testing

Any developer can give you a number of reasons why Unit Testing is important – however few actually do it and even if they do code coverage isn’tgreat. My knowledge of Unit Testing focuses on 3 areas:

  • Compile Tests (MSBuild, dotnet build)
  • Core Functionality Tests (NUnit, XUnit)
  • Front End Tests (Selenium, SoapUI)

Compile Tests may seem like an obvious step, but a remarkable number of people will commit a solution without checking if it builds. Post-build events or continuous integration can easily check whether or not your solution will compile, if it can run without encountering errors. I am a firm practitioner in the belief that the first step of any build test, should be “Does it actually build”.

Core Functionality Tests are what most will consider when writing Unit Tests, NUnit and XUnit are great ways to test core pieces of  functionality, making use of mock frameworks (Moq, Rhino) to test the core functionality of your code without any impact to any data sources you have. I aim to have my projects include unit testing to be run via build script or build server to ensure quality.

The front end is an often forgotten and untested area, but tools are available to test your API and your web interface. Tools such as Selenium can be programmed from within you unit tests to run against a running site and assert actions. SoapUI can fire formatted requests at multiple types of online APIs to ensure that any changes you’ve made to your service are unaffected.

SQL

Databases play a vital role in any backend system; from the early stages of my A levels, throughout my degree and now in my current employment I have been using SQL based systyems; and through both professional and personal interests my SQL knowledge has grown from simple web interfaces, to managing entire SQL databases in various formats, including Microsoft SQL Server, MySQL and Oracle.

I have worked with SQL Server  in a professional capacity since 2013 when I first started my professional development career. Working for a company with a tech stack ranging from 2005 to present I was became familiar with a range of SQL Server products from SQL Enterprise 2000, SQL Profiler and SQL Server 2005 – 2016. Working with Tables, Views, Stored Procedures and functions – as well as more meta datbase objects such as logins, schemas and SQL Agent Jobs. Working with large quantities of data at a time I am proficient in indexing, query optimisation and common table expressions. As well as tracking SQL through source control in DDL formats, as well as Microsoft’s inbuilt SSDT.

MySQL has been used in both my personal and freelance work – as an open source and free option it is a very powerful and cost effective database platform. Used in both Command Line and GUI capacities I have set up multiple databases, tables, functions, stored procedures and users – even the database this blog is operating on.

My degree focused on Oracle 11g, creating tables and stored procedures as well as focusing on relational algebra.

PHP

PHP is a free server side scripting language. I started to teach myself PHP in 2010 when I started University as a means to take on some paid work during my studies. I quickly learnt the basics and after a short while was able to build my own code libraries for sites, allowing them to interface with MySQL databases, send mail and manage login systems. PHP has been vital part of developing websites and used a PHP based system in the final year of my BSc to deliver a system to a client, despite it not being taught on the course.

.Net Framework

My introduction to C# .Net began in 2013 in my final year of University during my introduction to Threading, & Windows Communication Foundation. From there my knowledge of .Net expanded to Web Forms, Windows Forms, Console Applications, MVC  and Cross Platform apps using Xamarin and UWP.

My coverage of .Net begins with 1.1 (due to supporting a very legacy project) and overhauling it to .Net 2, then eventually .Net 3.5 to ensure it was part of a supported framework. Newer applications built in the .Net 4.x family made up the majority of my projects and the professional products I worked with.

I first started to take notice of .Net Core in 2017 with the release of version 2.0 – the ability to run .Net applications on a cross platform meant that I could start to develop much more complex and modular code on my virtual Unix boxes, Raspberry Pis and EC2 instances.

While my focus on .Net has been with C#, I have also worked on some projects written in VB .Net.

© 2025 Joe van de Bilt

Theme by Anders NorenUp ↑