This part will take you approximately 25 minutes.
In this video, I struggle with the question of when to implement equals(). I try to defer it as long as I can, in part because it represents a really big step, and I'd like more of the design elements to stabilise before using them to implement equals(). Moreover, it continually surprises me how long I can defer design elements that I "obviously have to build". You might know this as "YAGNI" (you aren't gonna need it). In practice, I like to see how far I can push YAGNI; although in industrial practice, I sometimes just build it because I know we're going to need it. This creates a delicate balance that comes with experience: when do we just build it and when do we try not to? It often depends on how easily I think I can build it. My disciplined approach to version control makes it easy to change my mind in the face of new information. (Yours should too, maybe.)