Jumping Back In

Earlier this year I left this blog half-begun, and another (more serious) project as well. I've just now decided to kick the dust off of each, and it's actually gone alright. I have to admit that I was worried that wouldn't be the case.

General self-doubt

Self-doubt: we've all got to deal with some level of it. Well, many of us do. Mine is born both of making a bunch of mistakes, and being able to see them play out over time. It's left me a firm believer that caution is worthwhile. Making things easier for yourself is, too.

Still, here, I had mild assuredness in mind. You can plan to make things easier for yourself, but still goof it up.

Some crappy imagined scenarios

I was worried that one of two things, or both things, would impede me jumping back in to my old work.

Scenario one. My design sucked. In this imagined scenario, I put together a bunch of stuff which I can't figure out later. This one is an exterior apprehension. If so, it was given to me by people who think ignoring complexity is the same as solving it. Plenty of times I've heard that I lay elaborate scaffolding, and I worry that it's true.

Luckily, I immediately saw my old design. What's more, it was flexible. It was maintainable. It was comprehensible.

Even better, I left great tests.

Scenario two. My tooling decayed. This one did kind of happen, but not to disastrous effect. I got my more serious project ported to its new home eventually. The blog was fine though, which made sense, as it was much simpler.

For the more ambitious project, it took me about an evening to get rolling. Nothing major.

Things which helped

Again, testing. That let me know at a glance what to dig in to and where I left off. It got me quick assurances.

Trusting my designs. By this I definitely mean software design, not necessarily visual. I left myself a bunch of opinionated piles of code. Luckily, I worked for those opinions and they bore out. I'd like to write about them but I'm still jumping back in.

Vercel. Wow, what a great kit Next.js and Vercel are. They worked exactly as they used to. There was some general entropy, of course, but nothing major.

Things which didn't help

I'm just going to be super blunt: Storybook. This tool kit is industry standard and I advocate it, but wow. What a timesink. Its plugin ecosystem is something I dread interacting with. It's an elaborate house of cards, with a version web that is up to you to figure out.

If you have Storybook in your project, you'll spend a nontrivial amount of time maintaining it.

This may sound like an indictment of the library itself, but I don't think it is. I think this is an indictment of the "bag of tricks" / "plugin ecosystem" design. Loads of node.js projects adhere to it and, well, I think it's a poor approach. It makes things harder to onboard, and harder to evolve, and more prone to entropy.

Your code should work out of the box.

Lessons learned

This may seem out of left field (or not?) but every point that failed or succeeded rhymes. Things that obeyed a fragmented design succumbed to general entropy. Stuff that had better cohesion held strong.

This isn't the same as saying that "simple things won", it really isn't. Lots of the high cohesion code was also very complex, but it was also, like I said, cohesive. It had guarantees, and it had clear boundaries. On the other hand, these nonsense "plugin ecosystem" kits have no surface cohesion. They have no single point of entry, and they rely a lot on user expertise.

I may be an expert in the moment, after hard-won configuration and doc traversal. But will I still be an expert, months later, after your plugins have all had version drift? After I've jumped back in, am I still going to remember any of it?

Probably not.