A simple, visual guide, to how I approach sprint planning and the following tracking sessions.

Image for post
Image for post

Interestingly, I had a conversation with a couple of people about how tasks should or should not have an owner, especially in newer Scrum teams.

I’m firmly on the side of tasks being owned regardless of the maturity of the team, given we’re using time based estimates provided by the person responsible for the work being done, but I guess not everyone agrees.

Today I joined Capital One’s Women in Tech work group.

Well, I joined before Christmas, but today was the first session of the new year that I was part of.

Image for post
Image for post

I’ve mentioned it to a couple of people, and I’ve pretty much gotten the same look, which pretty much says

Since it wasn’t only one or two people that did this, I wanted to explain why I joined the group and why I see it as an important group to be part of.

I also wonder, if I posted this on Twitter I might get the following…

In a previous post I made clear my dislike for User Stories, and how there are fundamental problems with them that make them unfit for defining and tracking a projects development. I ended that post with the line…

There have been some very good attempts to work around some of the issues with User Stories, the most successful has to be User Story Mapping

I thought it would be interesting to walk through a User Story Mapping session I recently went through.

(As this is work related, images in this post have been blurred, but it should be easy enough to get a good idea of what is being…

I’ve written before about why daily stand ups generally don’t work, but I wanted to offer just a small change that will see a big impact on the effectiveness of the stand up far beyond the 10 minutes you spend talking about your work.

Usually, you answer three questions

  • What did I do yesterday
  • What will I do today
  • What is in my way

Or, as described in the offical Scrum Guide

What did I do yesterday that helped the Development Team meet the Sprint Goal

What will I do today to help the Development Team meet the Sprint Goal?

Do I see any impediment that prevents me or the Development Team from meeting the Sprint Goal? …

Click bait title alert - sorry!

My last post was How I Interview People and now I’m telling you not to even bother interviewing people.

Mixed messages? Bear with me.

Image for post
Image for post

Over the last 12 months I’ve probably averaged a new hire every month. Sometimes we hired two or three people a month, sometimes less, but given that hire rate, it’s clear we had a lot of people through the door to find the ones we wanted to stay.

And yet, I didn’t do a single interview and still hired the right kinds of people for the team, people who matched the values of our group, and had all the skills we needed for them to succeed. …

No one has the perfect interview technique.

That one true method that finds the diamond in the rough, never fails and always pulls everything you need to know without resorting to ‘impress me’ questions simply does not exist.

A lot of companies think they’ve nailed it, but they haven’t as it’s not something you can nail. But you can create an interview process that provides candidates with enough opportunities to show you their strengths and work through their weaknesses.

Image for post
Image for post

And while it’s great to have the opportunity to hire the people you know, and the people you’ve heard about on social media, it’s not always that easy. …

There comes a time when something is so ubiquitous that is starts to lose it’s original purpose. This usually happens when a process or method reaches critical mass, is often ‘standardised’ and everyone you speak to utters something along the lines of “ah yeah, that…”.

Scrum is a perfect large scale example of this, but that’s a seriously big topic so I’m going to look at a smaller scale example of something often used as part of the Scrum development process.

User Stories.

I’m pretty confident that everyone reading this knows what user stories are, and it’ll boil down to the…

Image for post
Image for post

For the release of ng-dynamic-dialog v2, I wanted to move away from defining the dialogs look in TypeScript and use standard CSS classes. This would allow the style of the dialog to be defined alongside the rest of a websites style, and make it compatible with CSS preprocessors like LESS and SASS.

What Was I Aiming For

The main goal was to provide in-built CSS classes which define the default look of the dialogs, and then allow the user to override specific attributes as needed.

They would then be able to specify these CSS classes using Ng2DynamicDialogStyle

// Sets the style of the dialog private 
setDialogStyles() {

// Initialise the style of the dialog
let dialogStyle = new Ng2DynamicDialogStyle();

dialogStyle.background = 'my-custom-background-style';

dialogStyle.dialog = 'my-custom-dialog-style';
dialogStyle.title …

Image for post
Image for post

Google finally finally released the official version of Angular 2 the other day. As a result I needed to updated both ng2-file-drop and ng2-dynamic-dialog to build against the new version.

Given the hassle of going from RC4 to RC5, I wasn’t optimistic this would be a quick job.

However, other than having to change a single import for ng2-dynamic-dialog (DomSanitizationService is now DomSanitizer), everything was done in under 30 minutes!

Both packages (now sitting at 0.1.0) are available via npm.

Image for post
Image for post

Note this also covers upgrading from RC4 to RC5’s ComponentFactoryResolver.

I recently upgraded from RC4 to RC5 and as a result my dynamic component injection module failed due to ComponentResolver being deprecated. Of all the changes between RC4 and RC5, this seems to be the simplest deprecation step, but though I’d document it here.

Generating and Injecting Components

To dynamically inject componets, we need to use ComponentFactoryResolver to create both the factory and the component, as opposed to ComponentResolver and ComponentFactory in RC4.

// These will be your basic imports for component injection
import {Component, ViewContainerRef, ComponentFactoryResolver, ViewChild} from ‘@angular/core’;

ComponentFactoryResolver now does all of the work, which needs to be injected into the componet that will be responsible for doing the injection. …


Lee Winder

Leadership, management, engineering — www.leewinder.co.uk

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store