My name is Jonathan Carling but you can call me Jonny. I am a Software Developer who primarily develops web-based applications in object-orientated languages, in particular .NET and other related Microsoft technologies. I do however consider myself to be a very flexible developer who is able to quickly adapt to other languages and environments and therefore do not limit myself to particular technologies.

Areas of software development I am currently interested in include:

  • Responsive design
  • Windows 8 development

Outside of the software development world, I live with my beautiful wife Helen, and our naughty, fun loving puppy Ruby, in Sunderland. When someone is able to tear me away from a computer screen my hobbies include playing 5-a-side, pool, and dog walking.

From my experience in software development, there’s a few aspects I have discovered along the way which I feel passionate about and pride myself on;

Coding Standards

An experienced developer may consider themselves to have an expertise in a particular programming language, with the ability to demonstrate knowlegde of advanced concepts and design patterns, but without an understanding of how to actually write good software they will never become a good developer. The foundations of writing quality software starts with coding standards – layout, structure, comments and naming conventions. Another developer who has very little or no previous exposure to your code should be able to easily read it, understand it, explain what it does and why. I’m not talking about a particular coding standard outlined by an individual or organisation; I’m talking about consistency across all your code, applying rules and seeing the benefit from it.

Software Reuse

So many times I’ve seen developers copy and paste extracts of code, sometimes whole functions, from class to class, project to project with the excuse of “it’s quick and it works”. In other situations I’ve discovered huge blocks of code, hundreds of lines long, duplicated and relocated from it’s origin with only a few lines modified to do what they wanted at the time. This is not software reuse. Software reuse is writing code in a generic, reusable manner to be used again and again in different situations. Avoiding repeated code is crucial for developing bug free, easy to maintain software. Although initial implementation may be more time consuming than a copy and paste job, in the long-term it will save time, money and effort.

Layered Architecture

Building a software architecture which is layered is one of the most important aspects of creating solutions which are manageable and testable. Dividing and separating parts of a module into different layers from the lowest data layer to the highest user interface layer will result in an system which is easier to make changes to and perform automated testing.