How I believe software is grown!

No matter what people tell you, developing software is not an exact science. For me designing abstract applications and systems is a very creative and unpredictable practice. Here you find a quick summary of what I believe makes good software. If you want to know my technical expertise, just scroll to the bottom of this page.

  • People and communication

    The only way to get good working software is to know what the software should do. Although the technical part is really important, I believe good requirements are needed from the start. I try to get as much feedback as I can, from the beginning of a project until the end. I don’t practice heavy methodologies, but instead value lightweight practices chosen for the specific project and client. Together with the client we constantly work to improve the collaboration.

  • Automation and feedback

    When a task is boring, you should automate it. The less energy a developer has to wast on boring tasks, the more work he can deliver, and the more value he can create. The best way to avoid problems made by humans, is it to take it away from the humans. That is why we automate as many boring and repetitive tasks as possible in the development process.

    This begins with automated compilation of the source code, and the automation of tests from source code to requirements. This process is called Continuous Integration (CI), and will result in a lot of feedback about the progress of development and the quality of the developed code. The tests are  implemented by using Test Driven Development (TDD) and Behavior Driven Development (BDD). Next comes the deployment of the software applications and the management of environments. This process is called Continuous Delivery (CD).

    All these practices should be best implemented from the start of a project. But it can be introduced later on the project, to get take control over the quality. I have helped teams implementing CI, CD, TDD and BDD numerous times before, and I can help your team also.

  • There is NO silver bullet

    Good practices and methodologies are really important. But sadly enough there is NO silver bullet. I’ve worked on and designed systems from simple data driven three tier applications to complex event driven architecture. Each problem domain needs its own carefully chosen architecture, and not the other way around. The technical implementation should serve the business problem. And even more importantly, the architecture should be ready for change, so it can evolve with the project.

  • Continuous learning

    I believe software development is a craft, and should be practiced. And that is what I do! I have experience in whole range of languages and frameworks. And I will never stop learning.

  • Have fun

    Developing software is a creative task, and programmers should not be treated as code monkeys. To get the best out of each developer they should work in an environment in which they feel appreciated and have the freedom to develop their skills and knowledge. In the end software development should be productive and fun a possible!

On-line consultancy

My Experience

With 13 year’s experience as a professional software developer I’ve had the opportunity to work with a whole range of different methods and technologies. Here you find the most relevant ones:

Methodologies

  • Scrum
  • Agile
  • Kanban
  • Lean Architecture

Applications & Architectures Types

  • Desktop Applications
  • Web Applications
  • Mobile Phone & Tablet Applications
  • Cloud Computing
  • Framework Building
  • Service Oriented Architecture
  • Event Based Systems

Code Design

  • Object Oriented Design
  • SOLID Principals
  • Test Driven Development
  • Behavior Driven Development
  • Aspect Oriented Programming
  • Object Relational Mapping
  • Domain Driven Design

UI Frameworks

  • ASP.NET MVC
  • Silverlight
  • WPF
  • WinForms

Automation

  • TFS – SVN – GIT – Mercurial
  • Automated Testing
  • Continuous Delivery

Databases

  • SQL-Server
  • MySql
  • Oracle
  • RavenDB
  • EventStore

And I’m currently learning more about

  • Agile Coaching
  • CQRS-ES
  • Data-Context-Integration