I’ve been working my way through the first 4 books in the Dune series by Frank Herbert. I find them to be a very interesting and thought-provoking look at humanity, government, faith, and the effect of power on the same – especially with the current political situation in the USA.
While reading The Children of Dune (book 3), I ran across a quote that I think is a phenomenal summation of my philosophies as a code architect and programmer. The quote was originally about “mentats” (basically human computers), I have paraphrased it, and modified it slightly to be about architects:
‘Above all else, the [architect] must be a generalist, not a specialist. Experts and specialists lead you quickly into chaos. They are a source of useless nit-picking, the ferocious quibble over a comma. The [architect] on the other hand, should bring to decision-making a healthy common sense. He must not cut himself off from the broad sweep of what is happening in his [application]. He must remain capable of saying “There’s no real mystery about this at the moment. This is what we want now. It may prove wrong later, but we’ll correct that when we come to it.” The [architect]-generalist must understand that anything which we can identify as our [application] is merely part of a larger phenomena. But the expert looks backward; he looks into the narrow standards of his own specialty. The generalist looks outward; he looks for living principles, knowing full well that such principles change, that they develop. It is to the characteristics of change itself that the [architect]-generalist must look. There can be no permanent catalogue of such change, no handbook or manual. You must look at it with as few preconceptions as possible, asking yourself: “Now what is this thing doing?”‘
– From Children of Dune by Frank Herbert (1976)
I really believe architects must take a generalist view. To be effective, you must be able to look at a project as a whole: code, usability, aesthetics, motion graphics, business process, project objectives, brand requirements, user profiles, stakeholder concerns, etc. You must understand that your specialty and it’s mantras (design patterns, OOP, et al) are secondary to the objectives of the project. You must embrace the fact that the standards and technologies you are an expert on are in a constant state of change – that what you know and believe today may be wrong tomorrow. Ideally, you should look at this reality with anticipation and even excitement. This continuous state of change is what makes this job / industry so much fun to be a part of.
Keep thinking. Keep learning. Keep having fun.