HW9: Reflections

13 Sep 2016

I’m sure I’m not the only one who’s occasionally wondered whether I’m getting started as a programmer a few years too late…it’s not that I expect I’ll meet the same fate as the 20th century carriage driver or the 21st century telephone operator, but I can envision at least two possible futures for programming that do not include a healthy job market for yours truly. One of these possible worlds is actually pretty exciting. It’s one where anyone and everyone can program whatever they desire, like the power that 3D printing hopes to distribute in the world of manufacturing. The syntax and semantics that take so much practice to learn could conceivably be accomplished automatically for the user, so that any creative and analytical person could write a nice computer program. The second world is much dimmer, and it’s one where programming is centralized to the degree that only a few major companies rely on a relatively few software developers to write all the software most people will ever need. I imagine that Google and Apple wouldn’t mind fitting the bill on this one.

My software engineering training so far has alleviated my fears of the first possible future. While no doubt there will be programs to assist untrained people in writing whatever code they can think up, I think there will always be a need for trained, and probably licensed, engineers to create anything that is remotely safety-, security-, or financially-critical. Just as legalzoom has consumed some of the market for banal legal work, and smartphones have made everyone an amateur photographer, I think assistive programming platforms will fill some basic programming needs but nonetheless leave plenty of work for trained professionals. I don’t think anyone working with critical systems will even be tempted to replace engineers’ experience and expertise with automated development, though automation has clearly been helpful in speeding up routine tasks like testing. I suppose automated testing scripts must reduce the number of engineers needed for a project…but we won’t think too much about that. Who wants to be that intern anyway who has to run thousands of tests everyday? I would think that one of many reasons why automation wouldn’t gain a foothold in making critical engineering decisions for us is that diversity is a major component of system resiliency. Automated programs would to some degree homogenize code and thereby introduce a sort of monoculture of programs with the same vulnerabilities. Perhaps having a bit of human stochasticity can be a nice feature here.

The second possible future is not so easily dispelled, and I think that we have [recently?] entered a period of centralized power in programming. Here history suggests that we will be in this period for some amount of time but eventually emerge with a greater interest in diversity, customizability, and the good ol’ diy spirit. Our mid-20th century was one of complacency with major corporations standardizing and homogenizing anything and everything they could, but we have fairly recently started to embrace the need for diverse food systems, democratization of culture, and even a bit of local culture. I think when the honeymoon period of wondrous technologies starts to fade (iPhone 7 anyone?), we’ll be left with a desire for democratized programming. Big companies will continue to dominate, specially with cloud services that require expensive infrastructure, but I think standards will constantly be established and then broken down. Certainly Windows and OSX have dominated the PC market and will continue to do so as long as there are “PC’s” around, but Linux certainly hasn’t gone away, and there is always a place for open-source software that appeal to power users and developers. I see our software choices in the future as more of an expanding phylogenetic tree rather than a zero-sum boxing match. I assume the same is true for back-end software as well related to IoT and other networks of the future.

Unfortunately, I agree with the Future of Programming that our smartphones will take the wheel of our decision making processes for finding information. Gone will be the days when most of us intentionally pointed and clicked our way through search engines and websites. Automated systems that learn our patterns, and incorporate a little proprietary algorithm here and some advertising income there, will take us straight to what we think we’re looking for without seeing or caring about our alternatives. This view is a tragic perversion of what should be happening…instead of our horizons expanding and the world getting smaller, it seems like instead our scenic panoramic windows are just becoming more opaque and reflective.

Big data will continue to expand (because why wouldn’t it?), but strangenesses will emerge, e.g. Weapons of Math Destruction-style abuses of information as well as more nuanced issues. It seems possible, given what we already see with the simultaneously predictable and illogical dynamics of market economics, that we will learn strange things about human patterns when we connect more of the dots. I would hypothesize that many attempts to predict human behavior will seem, in a sense, recursive. If we want to predict where the next major terrorist attack will occur, then we might find that one of the most important predictive factors is where we expect the next major terrorist attack to occur. If we want to predict when the next bear market will begin, then we need to find out when we think the next bear market will begin. In a nutshell, I think that learning more and more about our complex systems will introduce new variables into these systems, thereby making it harder to learn about these complex systems. That strange situation combined with the many opportunities to abuse information will contribute to a fairly short honeymoon period for big data.

All that said, it’s an exciting time to be become a programmer, but we students may need to think strategically about what sort of projects we specialize in. I think a future in web design may be a bit murkier than one in AI, but I guess you have to do what you love, so we’ll find a way!