Every programmer starts out writing some perfect little snowflake like this. Then they’re told on Friday they need to have six hundred snowflakes written by Tuesday, so they cheat a bit here and there and maybe copy a few snowflakes and try to stick them together or they have to ask a coworker to work on one who melts it and then all the programmers’ snowflakes get dumped together in some inscrutable shape and somebody leans a Picasso on it because nobody wants to see the cat urine soaking into all your broken snowflakes melting in the light of day. Next week, everybody shovels more snow on it to keep the Picasso from falling over.
There’s never enough time, right? This world moves so fast. Even if a client had granted unlimited time to produce something (I can hear you laughing. Stop it.), the technology changes so fast that as soon as you build something, there is already a better way to do it. By the time you build your fourth feature, you already want to rewrite and optimize the first one you built.
But beyond the speed of technology, it’s just the cost of gaining knowledge. The more you know, the more you realize what you’ve done before could be better. It’s an awesome monster that we feed with every step. The faster you learn, the more the past haunts you. The refactoring monster is on your doorstep. Would you want it to be any other way?
I wouldn’t. The adventure of learning and exploring is worth the potential regret that we can’t refactor everything behind us.