Home » Archives for Sandro Mancuso

Author Archives: Sandro Mancuso

Software craftsman, founder of the London Software Craftsmanship Community (LSCC) and author of Software Craftsmanship: Professionalism, Pragmatism, Pride.

Mocking as a Design Tool

Mocking is still a point on contention among TDD practitioners. The biggest complaint is that when we use mocks the tests end up knowing too much about the internals of the module under test, making it difficult to refactor in the future. Because of that, a common recommendation is to avoid the use of mocks and only use them as ...

Read More »

Should we always use TDD to design?

Can design emerge from TDD? Should we always use TDD to design software? Should we design upfront? How much design should we do and when? Those are common questions that often generate a lot of debate. People involved in those debates often have very different definitions of design and also the scope where it happens. It is difficult to have ...

Read More »

Introducing Interaction-Driven Design

Before reading this post, I strongly recommend you read the two previous blog posts that serve as a foundation to this blog: MVC, Delivery Mechanism and Domain Model and A Case for Outside-In Development. Most software projects become very difficult to maintain and evolve after a period of time. Business is constantly complaining that things take forever to be delivered. Developers complain the ...

Read More »

A case for Outside-In Development

There is no reason to have a backend when there is no front-end. There is no reason to have an API when there is no one to consume it. There is no reason to have a class when there is no other class (or framework) to use it. There is no reason to have a method when there is no ...

Read More »

MVC, Delivery Mechanism and Domain Model

Model-View-Controller (or MVC for short) is one of the most misunderstood design patterns in software design. MVC has its origins in the SmallTalk community in the late 70s but it was only in 1988 that it was expressed as general concept in an articleby Glenn E. Krasner and Stephen T. Pope for The Journal of Object Technology. The main idea behind MVC was to ...

Read More »

Bowling Kata in Clojure, F# and Scala

In one of our evening apprenticeship meetings, a pair was doing the Bowling Kata in Java. After reviewing their code, I thought that it would be a good idea to do it myself. Every craftsman at Codurance is a polyglot developer and, although we have very similar values, we all have our own preferences when it comes to programming languages ...

Read More »

We did it wrong, but not all was in vain

Yes, there was over engineering. Loads of it. Back in the mid 90s, when I started my career as a developer, the goal was to become an architect. No serious developer would dare writing a single line of code before selecting our preferred design patterns—we would then decide how the business requirements would fit into them. Yes, we would first ...

Read More »

Mutual Problems

The HTTPS protocol is the well-established standard for securing our connections. Understanding how this protocol works is not a problem and the corresponding RFC document is available since 2000. Despite HTTPS is used so widely, you can still find a software which doesn’t handle this protocol without unnecessary complexity. Unfortunately I’v experienced problems during the implementation of mutual authentication in ...

Read More »

Containers all the way through

In this post I will attempt to cover fundamentals of Bare Metal Systems, Virtual Systems and Container Systems. And the purpose for doing so is to learn about these systems as they stand and also the differences between them, focusing on how they execute programs in their respective environments. Bare Metal Systems Let’s think of our Bare Metal Systems as ...

Read More »