The Best of “Both-and” Worlds
How the AdvantageCS Development Team Optimizes Contrasting Styles
I am, by temperament, indecisive. Wishy-washy. Equivocating. I embrace both-and-ism rather than either-or-ism. It gets me in trouble at times.
My wife is similarly afflicted. She and I joke that our family motto is, “Indecision: the key to flexibility.” It’s impossible to plan vacations. “Scotland would be fun,” but so would Tuscany. Or France. Or Spain. We end up enjoying the tried and true cottage-on-a-lake-with-friends we have been visiting for 30 years.
At times, though, both-and-ism is exactly what is called for. Here are three examples from my role leading on the software development teams.
Openers AND Closers
Some software developers love to start new projects, even when it’s unclear how big the project will become or how the various technical challenges will be met. Other engineers find it deeply satisfying to check off the last few items on a to-do list that is miles long. In my experience, these are not the same person. The starter gets bored and wants to move on to new challenges before wrapping up the final 10%. The closer is intimidated by all the unknowns of a new project and finds it very hard to get started.
I’ve gotten a little insight into this through several family friends who are professional counselors. They are all familiar with the Myers-Briggs personality type indicator. It categorizes personality along four axes, labeled by letters representing the endpoints. I can never keep the categories straight, so I get confused when they begin talking in code: “That is so S of you!” Or, “I don’t know what she sees in him. He’s so T and she’s high F.” I simply recycle my favorite one-liner: “All I know is that my sons are all ESPN’s”.
One of the baked-in personality dichotomies has to do with whether you enjoy starting things or finishing things. (Here, my counselor friends would tell me I’m describing it all wrong. They can write their own blog.) As a manager of software projects, I love pairing openers with closers. (They don’t always love it as much as I do.) Yes, we encourage the more creative folks to see projects through to the end and the detailed folks to get started with the tasks they do understand. But if those tendencies are ‘pre-installed’ into our staff members, how much better to take advantage of each employee’s strengths for the good of the project? Both-and-ism.
Pragmatism AND Idealism
AdvantageCS is unlike many software companies in the length of service of our staff. We certainly have many recent graduates, but we also have a sizable contingent of those who, like me, are nearer to the ends of our careers than the beginnings. Because all but a couple of our developers work in the same building, I am able to see daily examples of ways in which that diversity strengthens our teams.
AdvantageCS invests continuously in improving the software and methodologies that make up Advantage. We incorporate new languages, new development tools, new testing strategies, new deployment models and new team structures. Much of the energy behind these changes has come from the younger staff. They benefit from decades of progress in our field. They expect software to just work and they help keep us moving in that direction.
However, we veteran developers learned our trade in an era of scarcity. Tools were few, servers slow, memory limited and disk space outrageously expensive. We worked midnights because the servers were overburdened during the day. Good developers were characterized as resourceful and even ‘clever.’
And yet, every once in a while, I enjoy seeing some hard-won bit of pragmatic, resourceful knowledge being transferred from older to younger. Both-and.
Change AND Continuity
A third area in which we aim to strike a balance is in reworking and modernizing our software. This topic has been especially relevant over the past year, as we undertook a significant revision of our processes. We consolidated many processes into a single one; we improved error handling; we enabled concurrent queues and, in general, modernized the source code to improve its maintainability.
We spent thousands of hours to implement change for the better. At the same time, we recognize that our processes are full of specific behaviors – both base and custom – that our clients rely on. So we give special attention to preserving that functionality even in the course of a major rewrite.
I like to think this is one balance that AdvantageCS excels at. We strive to know our customers, to understand your business and to find just the right blend of continuity and change.
And now my wife and I need to decide about dinner. Perhaps surf-n-turf?