Is it possible to have everything you do wrapped up neatly every single day and left in a state that others can see with nothing broken?
May be. But why would you do that?
1. Better relay chain
Working in day-long batches enables you to hand off the work to the next person to play with
2. Small batches eliminate waste
That’s a straight-forward Lean principle. Figuring out that you are going down the wrong path is far better after a day than a week.
Have you ever completed a project just to realize you want to rewrite it because NOW you know how to do it right? Go do it! One day worth of work can be redone quickly.
Err… have you ever had somebody else complete a project and realize HE should have done it a different way? Happens. Tell him to redo it.
And even more uncomfortable… Have you ever asked somebody to do something, just to realize you didn’t really need THAT and THIS would have sufficed? Tell them.
And then the good news. Play with the results and have a revelation. Daily.
4. Integration first.
The only way to do this would force you to work backwards from a deliverable. This means, you do working UEx before functions. You do API stubs before filling out functionality. You tie empty pieces together before filling them out. For most of us, this means, you solve the hard problematic, risky part first, and do the straight-forward thinking on the solution later.
5. The flow.
Suppose you are a full stack developer.
Day 1. Splash page that defines colors.
Day 2-4 iterate on (3. Ideas!) that were generated – I’ll skip that. Suppose there were none.
Day 2. User flow (that is all the buttons) which take you from point A to point B without doing anything. (Ah! more iteration)
Day 3. Think hard about database architecture and make three tables. (Didn’t break anything!)
Day 4. Create the model framework with just one model – and hook it to one button.
You get the idea. Notice that if you are actually four people, person 2 can get engaged on Day 2 while you iterate. Person 3, well, on Day 1 and go in parallel.
Make every day count. Feeling under the weather? Plan a small task. Don’t waste a whole day on doing something complicated that you won’t finish, and will only confuse matters. Advance the project flow as a primary. Plan what you think you can accomplish – and go. It’s a great way to create a positive sense of urgency for yourself so you can stay the course.
Great! I convinced you. You want to do daily builds from now on!
Oh. Right. It’s impossible. Why is it impossible?
What happens if Joe pulled you into a meeting right after you began coding. Then just as you get into the groove, Bob needs help because *he* thinks your stuff is broken. Sigh. No way to get what you had to a state you need it in.
Fine. Miss a day. This happens EVERY day? Plan better. Make tasks smaller. Talk to your team. Work from home. Schedule a disruptions day. Get somebody else to help *you*.
Create a chain of days on which your builds were completed. See how long you can go without breaking the chain. This isn’t very different from SCRUM velocity – but small batches. You can figure out how to estimate with daily feedback – instead of biweekly. Now we are talking!
2. Large hard tasks.
OK. There are things that just can’t be done in a day. That can’t be broken into pieces that can be done in a day. That can’t be worked on backwards in a way that everything is released and nothing is broken.
Right. All three of them. One is the invention of the Internet. The others are two tickets currently assigned to you. Announce that you are going off grid and taking a three day, three week, or three month vacation err… deep-dive into the most brilliant invention of all time.
Seriously, this happens, but very rarely. Most projects will never encounter a task like that. But when you run into this THING and you recognize it as the polymer of tech tasks – note it, let everyone else know it and treat it as the special thing that it is. Go offsite to think about it. Or get the whole team together to prepare for it. Don’t mix it in with the bells and whistles of everyday life. Value it and enjoy it!