Once again, I decided to make a blog post out of an assigned essay question in my Coursera "Python for Everybody" course taught by Dr. Charles Severence. To serious code monkeys this will seem, at best, sophomoric, which would actually be a compliment since i'm barely a Freshman programmer. For others who are, like me, just starting out with the likes of Python, I hope the insight helps.
Question: What is the impact of programming on our world? Does everyone need to learn programming? How might individual lives and society as a whole be changed if we found a way to include programming and technology at all levels of education? It is acceptable in your essay to disagree and say that programming should not be for everybody. Make sure that whatever position you take, that you support your argument.
The impact of programming, at least in my world, is twofold. Scaling and Automation. With the advancement of social media and collaboration tools, we're able to share ideas and projects with anyone around the world. The consequence of that is, the smaller our world becomes the more complex the challenges. Using my Information Security background as an example, if we are to survive the bad guys getting smarter and faster we need to be able to automate our defenses. Do I spend my day hunting down a thousand different potentially malicious IP address's/domains? Or, do I figure out a way to code a program that ingests a spreadsheet and runs it against a set of logs while I move on to other aspects of my investigation? We have to be able to speed up our own process's if we're to stay ahead of the threats. The only way to do that is to scale our defense to match the bad guys offense.
The other advantage of programming is automation. Information Security investigations tend to follow a very similar pattern relating to tools and intelligence gathering. Chances are good that I will run into a similar scenario for which I've already built a tool. If I can utilize that same tool with minimal code tweaks, I have saved myself valuable minutes and hours in an active investigation. What's more, I can share that same tool with my peers as we work towards a common goal. With the Open Source community growing every day, this presents a great opportunity to crowdsource our solutions and see them grow and improve at an exponential rate. Scaling and Automation are the only things that will give us an edge over our adversaries and we absolutely cannot succeed in our defenses without learning to program.
This is not to say that programming is suitable for everyone. My need for programming is very career specific, I need to be constantly improving at my job and programming is the only true path to multitasking. I do think there is value in at least an early introduction to programming, perhaps it could have an impact on how a child learns about the world. We don't all need to be developers creating the next big piece of software. Simply put, some people just aren't wired that way. If we approach learning to program as a way to develop our critical thinking and problem solving skills then it becomes a valuable pursuit. Something as simple as "If this happens, then this will happen, else something different might happen", serves as an application to real world problems as well as a foundation for understanding technology as a whole.
Just as an understanding of wood working or banjo playing is not necessary to be a contributing member of society, serious programming should be left to those most interested and engaged in the pursuit of coding. For those of us in the Security world that do need programming to scale and automate, a quote by William S. Burroughs says it best, "When you stop growing, you start dying."