Home » Author Archives: Sandro Mancuso

Author Archives: Sandro Mancuso

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

Coupling in distributed systems

software-development-2-logo

Coupling and cohesion are key quality indicators. We strive for systems highly cohesive and loosely coupled, but high doesn’t mean pure. The same goes with functional programming, we aim for isolating and reducing side effects, but we need them unless we want a useless system. It’s good to modularise our systems, so whenever those modules need to talk to each ...

Read More »

Isolating integration tests and mocking dependencies with Spring Boot

spring-interview-questions-answers

Integration tests can be slow and unreliable because they depend on too many components in the system. Up to a certain point, this is unavoidable: integration tests are here to validate how each part of your system plays with other internal or external components. We can, however, improve some integration tests by only spinning up the required dependencies, instead of ...

Read More »

Premature Microservices

software-development-2-logo

Building your app from the very start as microservices is not a great idea! Their deployment is complex – regardless of how good your microservices infra is. They create boundaries in your application that resist change. Software applications are complex systems and complex systems are grown not designed. In order to grow an efficient system – we must allow it ...

Read More »

Clojure VIM Environment

clojure-logo

The Cursive plugin for Clojure is now out of its beta testing phase. I have been using it throughout its beta program and, I must say, it is pretty good. Sure, the refactoring capabilities are not quite on a par with those of IntelliJ for Java, but then Clojure is dynamic and asking for that kind of power is asking ...

Read More »

Testing multithreaded code in Java

java-logo

Testing multithreaded code is a tough challenge. The first advice that you get when trying to test concurrency is to isolate your concurrent concerns in the code as much as possible. This a general design advice but in this case it’s even more important. Make sure to first properly unit test the logic that is wrapped by the concurrent construct. ...

Read More »

Changing Scalatra and sbt default directories

scalatra-logo

Conventions are not always good. I recently started a new internal web project at Codurance and I decided to use Scala. As I’m not a fan of big frameworks, I chose Scalatra as a micro web framework. The first challenge was that I wanted to organise my application with a different directory structure. By default, sbt and Scalatra use the ...

Read More »

Tips for a friendly open source experience

software-development-2-logo

Open source has moved from being an important actor in software development to being central for plenty of people, especially thanks to Github. Most of us are simple users of OSS (Open-source software) but being brave and taking a step forward and becoming a contributor, or even an owner, could help you massively in different ways: Collaborating with clever people ...

Read More »

Transcending REST and RPC

software-development-2-logo

It seems that a new paradigm is coming. Facebook and Netflix have come up with different implementations for that idea. Some people are calling it Demand-Driven Architecture, but before I show you some solutions, let’s go over some history to understand the problem. I will use the example that Netflix provides, but I think that most of us will find ...

Read More »

Code review: Why are we doing it?

software-development-2-logo

Developers across many organisations adopted code reviews as one of their core practices. Although that sounds like a very reasonable thing to do, over time the goal that led to the adoption of the practice is forgotten and the only thing left is the mindless application of the practice itself. Why do we need code reviews? Maintain quality. Disseminate knowledge. ...

Read More »

Clojure (Prismatic) Schemas are Swagger

clojure-logo

 Recently, I decided to include Swagger documentation to our time sheet application. Although Swagger provides tools to help clients integrate with your REST API the most powerful feature, in my opinion, is that it acts as “living documentation” for the API. Adding Swagger to my the application had a couple of pleasant side-effects: Idiomatic Clojure encourages the use of data ...

Read More »

Want to take your Java skills to the next level?

Grab our programming books for FREE!

Here are some of the eBooks you will get:

  • Advanced Java Guide
  • Java Design Patterns
  • JMeter Tutorial
  • Java 8 Features Tutorial
  • JUnit Tutorial
  • JSF Programming Cookbook
  • Java Concurrency Essentials