How To Spot The Legacy Code Writer In Your Company (Hint: It’s You)

Also available in Czech, kindly translated by Aleš Roubíček

TL;DR

Writing Legacy Code* is a distributed activity.

*In Working Effectively with Legacy Code Michael Feathers defines Legacy Code as “Code with no tests“, which reflects the perspective of legacy code being difficult to work with. I’ll stick to this definition.

Long version

Oh, no! Bad code again

You have been assigned a new task.

Your mission: to add a simple feature to a Corporate project. You know almost nothing about it, but the feature request sounds feasible. You can easily accomplish the task.

wtfperminute

This is what you think. Until you open the code base.
Continue reading “How To Spot The Legacy Code Writer In Your Company (Hint: It’s You)”

What-If Daily Scrums

Dan North
I agree with Michael Kennedy when he says that Software Development could be modeled as a Knowledge Discovery Process, “the process of going from 0% knowledge about an idea to 100% knowledge of a finished product ready for delivery to a customer“.

I agree so much that I decided to adapt my future Daily Scrums to this.

In Introducing Deliberate Discovery Dan North quoted this story:
Continue reading “What-If Daily Scrums”

Principles and Rules

Some weeks ago I gave a talk at AgileDay.it. My talk was about a weird experimental Kanban board, and the Leitmotiv I used was around the differences between Principles and Rules. The topic was: we often learn methodologies mocking rules (often, without getting the point) rather than trying to understand the principles behind them. This bad habit sometimes leads us to take really dumb decisions.

Well, if only I had seen then what I saw today, I would have used in my talk, since I think it would have been the perfect example.

See what I found in a recent production code.
Right now, it hangs on the wall of our open space, for all the developers to see.

bddDoneWell
Continue reading “Principles and Rules”

8 Practical Rules For Producing Decent Estimates

This the second part of How I Was Able To Be Successful Even When Forced To Use Waterfall

Rule #1: take your time

Luckily, your estimation meeting will be much more fortunate than mine (see Part I).
In my previous Scrummerfall experience, since I was forced to produce a big-planning-up-front phase, I was used to always plan 2 or 3 days for it. I was asking for an estimation when my ignorance of the problem was at the maximum level, hence I needed a lot of analysis.

Continue reading “8 Practical Rules For Producing Decent Estimates”

A brand new, iterative and analytic Agile Methodology is born. Don’t miss it!

Disclaimer

This post is going to be pretty long.
Feel free to scroll down, or roll the paragraphs, if you think.
I’m pretty sure you will entirely read it later, since it is really interesting.

In case of panic, click here to jump to conclusions.

Introduction

Managing The Development Of Large Software Systems

I am going to describe my personal views about managing large software developments. I have had various assignments during the past nine: years, mostly concerned with the development of software packages for spacecraft mission planning, commanding and post-flight analysis.
Continue reading “A brand new, iterative and analytic Agile Methodology is born. Don’t miss it!”

8 rules for being successful even when forced to use Waterfall (with a pretty good estimation)

Waterfall can work

No it cannot.
I mean: actually, it does, but adopting new and modern methodologies, you can dramatically improve your team productivity.
Yet, I believe most teams are using a mix of Agile and Waterfall. The reason is Waterfall is the sole methodology able to give the only information your manager needs to know: how much the project will cost and what’s the delivery date. About this, read the excellent post by Christopher Goldsbury Why Agile Adoption Fails in Some Organizations
Continue reading “8 rules for being successful even when forced to use Waterfall (with a pretty good estimation)”

Why you should learn some Waterfall as well

Scrummerfall

I once worked as a team leader in a startup. I was in love with XP, studying Scrum and looking forward to be able to put into practice what I was reading.

Unfortunately, my boss explicitly told me to use Waterfall. I never blamed him: before him, the company had no process at all, and was governed by anarchy; no documentation, no requirements, no clear roles. Actually, introducing a Waterfall process, he made a great revolution, and let the company succeed.
Continue reading “Why you should learn some Waterfall as well”

Help me, because I think Martin Fowler has a Merge Paranoia

There must be something very wrong with me: for the first time in my life I think that Martin Fowler is wrong on a specific topic. And, since Martin is Martin and I’m just a humble developer (Arialdo who?) I’m likely to be the one who’s completely off the track.Nevertheless, unfortunately, no matter how much I dig into the topic, I’m not able to convince myself that Martin Fowler’s arguments about Feature Branching, Continuous Integration and Feature Toggling are right.

Please, help me to understand what I’m missing.
Continue reading “Help me, because I think Martin Fowler has a Merge Paranoia”

Unit tests lie: that’s why I love them

When a unit test for a method implementing some feature is green, it does not mean the feature is working. The corresponding end-to-end or integration tests reveal if it’s working or if it’s broken. To Product Owner’s point of view, end-to-end tests are all that matters. Unit tests are useless.

Unit tests are meant to lie. They rely on the often wrong assumption that the rest of the world is correctly working, but only because they are explicitly mocking it: using a fake world is a deliberate lie.

To me, that’s exactly why they are so useful.

Continue reading “Unit tests lie: that’s why I love them”

Wrong estimation, help! I’m late! Cut features and stop waterfalling!

I won’t be able to deliver on time. My estimation was too optimistic. What can I do now?

If you can’t deliver on time, don’t. Simple, isn’t it?

I believe the best strategy is cutting features and start both constantly refining your estimation and doing Deliberate Discovery. In other words, I believe the question was somehow misplaced.

Continue reading “Wrong estimation, help! I’m late! Cut features and stop waterfalling!”