Get a quick win
We have a tough time starting but just as hard a time not finishing what we've started, especially if we have had even a tiny bit of success.
You'll eventually lose motivation when you've set out to do something that takes a long time. When will you ever see the end of that feature? There are still so many things to do, and you're nowhere near finished.
That's why getting a quick win under your belt is crucial, even if it's a small thing. It makes you feel good, and you'll want to continue.
Examples might include:
- When building a complex UI component, put something on the screen that looks half decent.
- When implementing a hairy algorithm, start by making it work for a simple case.
- When extending a function, go ahead and add a 6th positional parameter (but then refactor into named parameters, for the love of God!)
When doing a lot of TDD (Test-Driven Development), I got a kick out of devising a trivial implementation of making the first test case work. On some occasions, it was as cheap as returning the same value that the test expected, but the dopamine hit was still there, and it kept me going effortlessly.
Why does this work?
The reason is two-fold. First, we have a much easier time improving an existing thing in small steps than building it perfectly from scratch. Second, we get satisfaction from creating something that works, even for a trivial case.
It's the same spark of joy you get when you put the first two cards of a house of cards together, and they hold. The analogy should stop here; your software should not collapse when delivered.
"Make it work, make it nice, make it fast" is excellent advice, but don't feel bad about going fast for making it work just a little with loads of cheats. In fact, I recommend going further and actively looking for an imperfect but fast solution.
Hard-code all the values you want. Copy-paste code (yes, copy-paste code!). Cut the corners you feel necessary. Sprint to that quick win, and then consider all the cases you left by the sideways.
And then don't forget about the second part, making it nice and cleaning up the mess you've made.