Role up! Role up! (but keep hold of your Moose and make your meta immutable)

So what’s this immutable stuff all about? In short, it’s the Moose equivalent of

use strict;
use warnings;

Summary: Stick


at the bottom of every Moose class unless you really know what you’re doing. It makes your code safer (and faster).

Continue reading

Software Engineering

What developers can do when the work-in-progress limit is reached

Introducing work-in-progress limits

In January this year, we (the NET-A-PORTER GROUP Product Management team) introduced work-in-progress limits to our software development process. For example, we have at most five items “in development” (including in code review) and four “in test”. An item in this case is a user story, bug fix or investigation task.

We added the work-in-progress limits as part of a Kanban-inspired move away from a fixed-iteration process to a continuous flow of work.

Continue reading


Go Headless, be vulnerable

During some routine network security testing recently, it was pointed out to me that my laptop had X running an open network port — anyone could connect to it and control my desktop as if they were me.

Being that I’m fairly conscious of network security, and particularly when you are surrounded by some very technical people with a mischievous sense of humour, this is something that I would never have manually configured.

Continue reading


Using an “Exploratory Testing” Approach in Net-A-Porter…

What is Exploratory Testing?

Exploratory testing is an approach to testing. Traditionally, testing has always had a “scripted” approach, where tests are planned based on a list of requirements supplied by the business stakeholders, and these scripted tests are written long before any software is even written. Although this might be useful in some circumstances, and scripted tests are still used in some circumstances within Net-A-Porter (in the regression team for example), it can be painful to use a scripted testing approach in other situations (like when testing new functionality in the streams). Continue reading