Tuesday, May 19, 2015

This is NOT the End.



This is not the last sprint. There will be more after this. You don't have to have everything this week, and it's more important to deliver than to have every possible feature crammed in. Also, there isn't a good reason to not retrospect or plan if we're going to keep working.

This is not the last test.  There are cases not covered yet, and the solution isn't complete. That's fine. We can write another test and then add the code to cover it. Working incrementally means we often have work in some in-between stage. Let's just get this test working, and then write the next. Programming, says Michael Feathers, is the art of doing just one thing at a time.

This is not the last change. We could try to cram it in like it is an unexpected interruption and a special occasion, but it's not. Changes continue until the last user deletes the last version of the software from the last machine where it is installed. Probably better that we make changes like this easier to implement and easier to fit into the schedule.

This is not the final refactoring. As much as we'd like to pretend that the code can be finished once and for all, it's just not true. This is not the last change, and not the last sprint, so the design will have to continue to evolve. If one refactoring makes it temporarily worse, that's okay. Sometimes it's like cleaning the garage in that you have to make it a bigger mess before you can get it cleaned up. So, code goes through stages and steps and evolution. It's okay.

This is not the last project we'll do. This is not the time to stop learning. There are plenty more where this came from. Even if some aspects of this project are awful, it won't last as long as you and I do. Even if it is great, there are still things to learn. We can't act as if all of the future depends on this one, because it doesn't.

You are not the last person who can take on work. You have competent colleagues, all competent to various degrees and in different areas, but there is a lot of overlap. You don't have to always say yes, or promise that you will personally do all the work. You can share work assignments, and you can defer to others. Take care of each other and yourself.

This isn't the only day.  Tomorrow will have new work, and new problems, and priorities. We don't have to have everything perfected and perfectly buttoned up today. We can lean from today and pay it forward as long as there is still a tomorrow. There has always been a tomorrow for almost everybody almost everyday. Forgive what it is, but use some of it to make tomorrow great.

This isn't the only job. As much as we might want this gig to go on forever, odds are it won't. After 36 years I've outlived so many companies I worked for, but the people there are now in other jobs and so am I. The people and the skills you are blessed with and develop are so important. Your longevity in this field depends entirely on the number of people who want to work with you. Be kind. Be helpful.

This isn't the only thing we'll have to learn. The need to learn is relentlessly ongoing. We might as well get used to the idea and embrace the dreadful constancy of it, so that it becomes instead a kind of never ending adventure. We need to love learning, and keep learning, and keep shoveling out room for our curiosity. We can afford to have the next big lesson come only to find us unreceptive. Open up, it's okay.

The whole world is still incredibly incomplete and moving. This is not the end.