I look forward to the Linux conference circuit every year, but only partly for the opportunity to learn something new and “geek out” for a week or two. Each year I find that spending several days surrounded by some very intelligent, very dedicated people leaves me in a pensive mood. I often find myself yearning for a way to be better at what I do, and to be able to do it faster. Today, during a panel session, a panelist described the “iron triangle” as it relates to software development: Cost, Schedule, Quality/Features – pick two, the third will have to be allowed to vary. This concept has also been similarly described by Susan Susanka in her “Not So Big House” series of books and articles, slightly modified to address the architectural process. This led my wife to ask me what my third point of the triangle was. I had time and quality… so what was the third? Quantity is the obvious answer. I struggle with this as I somehow still believe, despite numerous concrete examples in my own experience to the contrary, that I should be able to be a perfect husband and father, a brilliant kernel developer (in numerous subsystems), a domain maintainer, a competent business strategist, a woodworker of unmatched craftsmanship, a capable chef, an intuitive dog trainer, a carpenter, mason, landscaper, architect, interior designer, model of fitness and health, all the while maintaining my quick wit, charisma, and enviable good looks.
On numerous occasions I have received a similar piece of advice from my mentors. “Be the best in your field.” “Pick one thing, and do it extremely well.” etc. While I’m not willing to give up everything else to become a better kernel developer, perhaps it is time to let the “Quantity” point vary in favor of the “Time” and “Quality” points.