I live in Iowa,1 a mostly-rectangular state in approximately the middle of the United States.2 I grew up in Wisconsin, a lumpy state in the north central United States.3 Both states are about as far from the coasts of the United States as you can get and still be in the lower 48 states.
Both of these states are pretty accurately referred to as “flyover country“. They’re not places that people fly to. Iowa is heavily agricultural, with large fields growing corn and soybeans and wind turbines.4 Wisconsin is known for dairy production, beer, bratwurst, natural beauty, and a few professional sports teams.5,6
Far away, on the coasts, there are states like New York, California, and Florida. Everybody knows about those states. Lots of people go there on vacation. New York City7 is the financial capital of the world, is full of art and culture, and is a top choice for a setting for movie and TV shows. California has beaches, Hollywood, Silicon Valley, and as many NFL teams as Wisconsin and Iowa have professional sports teams combined.8 Florida has beaches, Miami, Disney, rockets, and is the home of Florida Man. And all, at least by the coasts, have much gentler climates than most of flyover country.
Those of us that live in the midwest would probably self-deprecatingly refer to the coastal states as “places people actually want to be”. Let’s call them “destination country”. That lets us talk about all those states, or Caribbean islands, or European tourist hubs, or any other place in the world that lots of people want to go, all together. “Destination country”. To borrow a slogan from Visa, “it’s everywhere you want to be”.
Flyover country exists between destination country. It makes flights or drives take longer.9 Now, parts of flyover country are pretty useful; it’s where a lot of food comes from. Sometimes, people have to go there. They’re going to one of the excellent colleges or universities in a flyover state. They’re in town to conduct business with a company headquartered there. They’re a career-focused woman without time for a personal life who has an event to attend around Christmas and through a sequence of events finds herself falling in love with the good-looking hardware store owner.10 Or sometimes, people choose to go there. Perhaps they’re a tourist from a neighboring flyover state, or they have interest in area history, or they have a specific hobby that brings them to a certain part of flyover country.
So it’s not like nobody goes there. But it’s not where everyone wants to be.
Software has flyover country and destination country, too.
Some software I think of as “destination software”: Google, Apple’s iOS, YouTube, Tik Tok (all your various social media sites really), Microsoft Excel (maybe?), ChatGPT, and video games. This is software people actively seek to spend time using. It’s entertaining, or an extraordinarily useful tool, or interestingly novel.
My career has been in flyover software. Even the software I’ve written for aircraft—software that literally flies—is still not software most people want to spend their time using.
That’s flyover software. It’s often vital to the functioning of a product or a business. But it’s not software people want to spend time using.
For example, take some flyover software (and systems) I’ve worked on. Twice upon a time, I worked for companies in the train control business.11 In the entire world, there exist approximately zero people who seek to spend time using North American Interoperable Electronic Train Management System (I-ETMS) style back office servers.12 However, approximately all the railroads in North America use them and need them to function reliably. Same for the software that turns survey data into track data: approximately nobody gets excited about it, a slightly larger number of people (still approximately zero) know that it even exists, and anybody who benefits from functioning North American railroads needs for it to exist.
As another example, consider some extract-transform-load (ETL) software I worked on at Home Instead. It ran entirely unattended in the wee hours of the morning, making API calls, looking things up in databases, doing useful things with the results, and putting the useful data into other systems. It kept the business running efficiently so that seniors could receive the home care they needed. It didn’t even have a user interface, meaning exactly zero people spent time using the software.
One last example.13 For a while, I worked at a startup company that brokered vehicle shipping. If you needed your Honda Accord shipped from Schenectady, NY to Young America, MN,14 you could call us up. We’d find a trucking company to do the actual hauling, take care of all the paperwork all around, and get paid a small fee for our trouble.15 Most of the folks in the call center used our web-based, custom-built ERP16 every day. So in some sense, you could argue that the ERP was destination software. I would argue it’s really flyover software, though. It got used because it made things more efficient and helped our team do their jobs better. People used it because they “had to”, or because it made their work day a bit better than alternatives (index cards, files on a shared drive, a giant whiteboard, etc.). It wasn’t a destination, any more than a truck stop restaurant is a destination. Both useful, neither a destination.
Flyover country is the space on a map between the destinations.17
Flyover software is the space on a business process map between between the start and end of a process. Flyover software packages are the names in the boxes that do the work to generate the results; they’re not the goal by themselves.
So what’s the point of all this? I’ve written nearly a thousand words so far, not including footnotes, drawing this distinction between flyover software and destination software. And yes, the analogy is kind of neat. But that’s not worth the time and effort all on its own.
One reason I’m writing this is simple encouragement for everyone that’s not writing destination software. The vast majority of software out there is flyover software. Most of the software out there isn’t the latest, coolest, destination technology. Heck, some of the software in the latest, coolest, destination technology is flyover software.18
It’s easy, as a programmer / developer / engineer to look at the new and shiny, to see the rest of the world getting excited about the new and shiny, and to feel second-class. Sure, I’ve gotten “attaboy” comments from my boss, or a high-five from a colleague in another department when something worked great, or even prospective customers saying “wow, this is amazing” at a trade show. But I’ve never had my work become a household name, become big news, or be the subject of a Congressional hearing.19 Those other programmers get the glory. The good news, though, is that the glory a programmer receives20 is completely uncorrelated to their skill. Outside of certain relatively small circles, the name Linus Torvalds doesn’t mean much, but Linux runs everywhere. On the other hand, lots of non-programming-world folks probably heard the name John Carmack back in the days when Doom and Quake were popular. Both Linus and John21 are top-notch programmers. It’s not a negative correlation between glory and skill, it’s just entirely random.22
In other words, working on destination software isn’t inherently a better job. Neither is it inherently worse.
Besides simple encouragement, though, I’m writing this because I want you to understand what you’re working on. If you’re building a destination, you’ll work on it differently than if you’re building something for flyover country. Again, not better or worse, just differently.
If you’re building flyover software, it’s either temporary or you’re building something that needs to last. If it’s temporary, you’ll just make it work, like you did for that little one-off script to pull data for the report your boss needed. Get it done and mostly working, and throw it on the junk heap.
If it’s something that needs to last, that’s different. Because it’s flyover software, it will persist as the machinery that does the work inside that box on the flowchart. It needs to be built solidly and fit for purpose. What that means will vary. To grab some real examples from flyover country, your barn doesn’t need to be insulated, heated, and 100% windproof. Your house doesn’t need an indoor Olympic-size swimming pool. Your town hall doesn’t need Renaissance paintings hanging in it. Your tractor doesn’t need a popcorn machine. If it makes sense to have those things, go for it—but don’t avoid moving into your new house because you’re still looking for someone to put in that pool for you. And don’t spend the extra money to make sure every tiny opening in your barn is sealed up.
Here’s the point, I think. For those of us that live here, flyover country is home.23 When you’re writing flyover software, you’re writing software that keeps your “home” working, or software that is “home” to your users. That ERP I worked on? It was home to dozens of my call center colleagues every day. My cube was right near theirs, and if something was wrong, I’d go look at their screens and do what I could to fix it, just the same as I’d do if a neighbor needed help in their actual home. That ERP wasn’t my workday home (my code editor was), but it was what powered the company that paid all our salaries.
This may be a good reason to think long and hard about whether to outsource a software project. While there are certainly times it makes sense to outsource,24 you’ll need to consider whether the outsourced team will build destination software, or whether they’ll build software that’s “home”, that you can want to live with (there’s a difference between suffering through and wanting to live with). The question isn’t whether they’ll try, or what they’ll tell you during the meetings. The question is what they’re equipped to build and what they will build.
Build your flyover software with all the care and respect that home deserves.
If you can’t, it’s worth thinking about why you can’t.
And worth thinking until you have good answers.
- Go Iowa State University Cyclones! [↩]
- And we’re right across the Missouri river from Omaha, Nebraska. “Omaha, somewhere in middle America!”, according to Counting Crows. Nebraska, of course, is yet another mostly-rectangular, mostly-agricultural state. [↩]
- Wisconsin is known as “The Badger State”. I attended Iowa State University, home of the Cyclones. Hence the name “Cybadger”. [↩]
- And raising hogs and poultry, for you livestock fans. [↩]
- Go Packers! [↩]
- Those sports team are the Milwaukee Brewers (baseball), Milwaukee Bucks (basketball), and Green Bay Packers (American football). Milwaukee is large enough, and close enough to Chicago, to support pro teams. The Green Bay Packers continuing to exist in relatively tiny Green Bay (population of about 100,000, metro population about 3x that, somehow supporting a team whose stadium seats over 80,000 people) is a combination of historical accident and several miracles. [↩]
- I’m just looking at the city, not even the state or the surrounding area. [↩]
- And heck, before the Raiders moved to Las Vegas, California had more NFL teams than Wisconsin had professional sports teams. [↩]
- I’ve driven across Nebraska several times. It’s flat, empty, boring. Aside from being a very long drive on its own, the monotony either leads to a completely Zen state, or a descent into madness. Usually the madness. [↩]
- Why yes, this is a reference to Hallmark movies! [↩]
- I’m not sure if any of the code I wrote for the box-on-a-train portion of the system still exists—that was about 20 years ago—but I kind of enjoy the mental image of an aircraft running some of my code literally flying over a locomotive with a line or two of my code still on it. [↩]
- The Back Office Server is the thing that sits in a server closet somewhere, takes authority and bulletin data from systems of record (usually a dispatch system) and makes sure the onboard systems (the boxes on the actual locomotives) have the right data; it also does a bunch of other useful record keeping and messaging. Last time I was in the rail industry, there were three commercially available I-ETMS style BOSs. Two of the commercial BOSs were developed based on a spec I wrote. The third was developed by my team. (One or two larger railroads had written their own BOS. I have no insight into whether they used “my” spec.) [↩]
- For today, of course. I’ve worked on a lot of flyover software! [↩]
- If these seem oddly specific, it’s because they are. When testing or debugging, I’d need to put in origin and destination addresses. It did not take long to discover that ZIP code 12345 is Schenectady, NY, or that ZIP code 55555 is Young America, MN. These locations are reasonably far apart, which made for more realistic testing. [↩]
- The real value proposition was that we could be trustworthy and reliable. That’s hard to get if you aren’t regularly shipping vehicles. Unfortunately, when the Cedar River flooded in 2008, our downtown office became accessible. The power was also out. And our servers were all in the server closet in our downtown office. It took a few days to be allowed into the building to get equipment out. That was a big hit to our reputation for being trustworthy and reliable, both with customers and with the carriers. We limped along for another month or so, then folded. [↩]
- Normally ERP stands for “Enterprise Resource Planning”, and that’s what was meant here too. But I’m not sure a start-up with fewer than 100 total employees quite qualifies as an “enterprise”. [↩]
- Just like “time is nature’s way of keeping everything from happening at once.” [↩]
- Hey iOS network stack dev team, OpenAI storage system team, release engineers at Rockstar, and team working on Roomba memory management and garbage collection (get it?!?!). And all the rest of y’all behind the scenes at the destination! [↩]
- I’m not sure that last one is necessarily ideal… [↩]
- Let’s be honest, it’s not like even the most well-known programmers get a lot of glory. But at least our creations can. [↩]
- Look at me calling them by their first names like we’re pals! [↩]
- And this is just picking examples you’ve possibly already heard of. If I’d used “this guy Ben who I used to work with who could sling excellent code like nobody’s business” (true story!), you just have to take my word that Ben exists (he does) and that he’s a good programmer (he is). [↩]
- For those of y’all that live in destination country, I know. That’s home for you. And in a lot of ways, you’re lucky to have your home in a place people actually want to go. [↩]
- Just like it makes sense to hire a contractor to build your house or replace your furnace! [↩]
Leave a Reply