In the world of software engineers, there are 10 types: those who speak binary, and those who don’t. Kidding aside, it is sort of akin to the political spectrum, except the labels are roles like the Idealist, the Architect, and the Pragmatist. After almost 15 years of developing software, I have decided that being a pragmatist is my happy place for one and only one reason: shipping software.
I’ve worked on projects that never ship, it is no fun and from what I’ve observed the delays usually stem from designers getting mired in over-engineering. Most of the over-engineering follies revolve around something we as humans are all bad at doing: predicting the future.
However, we remain convinced that we can predict the future, and with accuracy:
This impulse pervades all of engineering, regardless of the field. I’ve done it myself: obsessing over scalability of a website before visitor one hits the front page.
Engineers get obsessed with the minutia. In a city where it takes us 23 minutes to drive 19 miles we get obsessed over those first and last 4 minutes of travel, before getting up to 60MPH. I’m glad that there are people out there who can nerd out about their field of study, but sometimes you have to draw the line.
If I’ve learned anything from years of development, it’s best to see how people use a simple design before adding additional (potentially unnecessary) complexity. Recently, when the I-694 / MN-51 Snelling interchange re-opened after construction I was overjoyed. The previous design forced all 694 eastbound through traffic into the left lane, which only reinforced that bad habit all of us Minnesotans have: immediately moving to the far left lane as soon as we merge onto the motorway.
The switch-to-the-far-left through traffic pattern isn’t a problem anymore, but but there is some over-engineering that has taken place here. If you are traveling east on 694 and exit to go south on MN-51 / Snelling Ave, it is a single lane exit. But then it immediately becomes a 2 lane ramp, only to quickly reduce back to one lane before merging onto 51.
I know someone was nerding-out on this ramp because there has never been a traffic issue with cars wanting to exit 694 here. But it was a two lane exit before reconstruction – heaven forbid we remove some lane miles and reduce cost – so it better be a two lane exit for the next generation to maintain. Part of being a pragmatist is recognizing waste – noticing what is going unused and eliminating or re-purposing it. The over-engineer will horde these assets, whether they are used or not. They’ll be there if they are needed, if ever.
All engineers need to summon their inner pragmatist and do what is the most flexible thing, not pie-in-the-sky perfect.