My view on methodologies and technologies for the web
Tags: web, tdd, ddd, cleancode
Published: 2018-01-31 19:34:18

---
title: My view on methodologies and technologies for the web
published: true
description: Personal view on how a web site should be built.
tags: web, TDD, DDD, clean code
---

This is my first proper post on this site. You'll need about 3-5 minutes to read it.

I'd like to tell my viewpoint on how a web site should be built upon, including mainly on methodologies and some technologies to use for the web.

### Building the software

**TDD** (test-driven development) should be your starting point for your trip. It would be fantastic if you even include **BDD** (behaviour-driven development) or acceptance testing.

Even if you're working on a new project or an existing one, moving to a **DDD** (domain-driven design) is a good approach for a proper definition of your business problem, making your software independent from the architecture you're relying on. Carlos Buenosvinos is a good guy on this topic.

Having **clean code** is a good way of also providing good software. The [book from *Uncle* Bob](https://www.amazon.es/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) is a good starting point.

Peer-review is a methodology that we apply always during software development. There is usually at least another different person from who developed that piece of software, that review what the developer did, considering all quality factors of coding.

### About technologies

I like **containerising services**, using docker or any other service, because services served in this way are very easy way of providing reproducibility, error pruning, of services together with their own settings, on every environment you need to build (for developing, staging or production).

### What I put in practice from all this?

I continually look for the way of producing good quality code, in general and also on the context of PHP. PHP is the programming language I use at work and I like too.

I tried TDD some years ago when refactoring some software peaces, but I had to abandon it given short due dates. I suppose I didn't have enough practice and confidence on the methodology as for being really a quick developer using it. It's something I want to adopt. I have to put a date on it.

I tested some technology facilitating BDD on PHP (Behat) at home some time ago, because we work on Moodle and acceptance testing on Moodle rely on Behat. We actually work on integrating Moodle with the institution's information services.

I have been working for some months on peer-review and designing, but not coding, applying DDD on a web project at work. However, we had to abandon that project and had no opportunity to code thinking on DDD.

I started some months ago reading the book from *Uncle* Bob about clean code, and it is spectacular. I started applying it at every peer-review I made since then. And the software quality is superior.

I make peer-review, and receive peer-reviews, of all software we produce. In my experience, it is hard to start with, and takes some important time. However, the results are a good quality of code that invests on the quality of the proper code, considering criteria like performance, security or clean code concepts.

At work and at home I use containers for several services, like databases and web servers. It is very easy to start and reproduce the same database information several times due to the use of volumes mounted on containers. How easy it is to have the same service, like an apache2 web server, running on several instances with the same settings, forgetting to configure any single instance individually. And how easy it is to share amongst the colleagues the same images to develop using the same service with the same configuration. Fantastic!


### Conclusion

I'm very satisfied on all the set of methodologies and technologies I believe I have to dive in. In some, I'm a totally beginner, in others I'm experienced, but in all them I'm enthusiastic.

What do you believe? I would like to know your opinions. Do you agree at some point? Do you think I missed some other key point? Just let me know on the comments. 

Umm.... if you don't want to write, just a like is very meaningful for me too!

Thanks for your time!