I was recently reminded of the importance of actually getting people involved and engaged if you ever want to be successful. If there is a secret sauce to this it’s this: Aspire to the awesome, and sell the awesome. Nobody wants to be part of the next mediocre.
When people talk about their most amazing, most fun projects, they never recount that one time when they got a 1% improvement in performance or reliability with some hard work. Which is maybe it’s own little tragedy because sometimes that’s the way winning is done and you should celebrate those kinds of efforts too. But that’s another article entirely.
What people talk about are audacious, amazing, goals where they redefined what was possible. To wit: it’s often easier to get people to sign up for a 50% improvement than it is to get them to sign up for 5%!
Sometimes you get what you need by challenging the current thinking, sometimes I say, “You’re thinking about what improvements you can get here with maybe sandpaper, spit and buffing. What could you do with a chainsaw?”
There are a lot of systems out there in need of chainsaw love. Is that a thing?
If you can re-think how the system works, and sell your ideas as “we’re lopping off half of this junk now and more later!” you will get a lot more people excited about helping. And if you fail, and only manage to lop off 45% of the junk… well… that’s still pretty good. And there’s always next year.
While it’s true that there are mature systems out there that are already very well tuned, where polish is the best you can hope for, they are less common than you might think. Even well considered systems, like compilers, can be disrupted — everyone thought compile time was stuck until precompiled headers. Linking was capped by i/o until incremental linking was possible. These kinds of things whacked off 90% of the core cost.
It’s important to be ambitious enough out there. And get the big tools out. Because if you go into it thinking “I have to whack half off” you have a totally different mindset than if you think I gotta make this a little better. You should do that often.
In the Microsoft toolchain, precompiled headers, incremental linking, incremental browser information, deferred solution loading, and other things like that happened because someone said it couldn’t be done and someone else said “the hell it can’t, hold my beer!”
Be bold! It will be glorious!