This week marks Computer Science Education Week. It is held annually, and it is primarily to inspire students to take the time to learn about computer science, specifically coding. One of the sources of that inspiration is trying to demystify coding and demonstrate that anyone can do it. That proverbial “anyone” includes…me.
I am going to learn Python this year. I have said that I would do that for several years now, but this is the year. In fact, I am forcing the issue by taking a CS course at DePaul University, where I will be working on my Masters in Predictive Analytics.
So why learn to code and why Python?
Programming languages and the way program development works is important in my industry, for sure. But that is not why I am doing it. My role at Microsoft is to work with civic leaders, government leaders, community organizers, activists, and civic technologists to help figure out how technology can be applied to some of the most intractable social challenges in Chicago. Much of that is ideation, brainstorming, understanding and refining the problem, identifying who is impacted, where is the data, and so on. All of that is crucial to overcoming challenges or capitalizing on opportunities before one line of code is written.
My contribution to date has been providing resources to civic technology projects from Microsoft and from my own network: thought leadership, technology resources, occasional sources of funding, etc. And…I fell in love with civic tech. I fell in love with the challenges, the opportunities, the people, and the neighborhoods that are served by the outcomes. So I want to do more than provide the early-stage resources. I want to help build those solutions. And to do that, I need to learn the process and mechanics of problem solving through coding.
So why Python? For one thing, the fact that it is easy to learn and easy to read makes it a good language to help understand how programmers think through a problem. A person with no programming language skills could look at a listing from a Python program and just by reading could figure out what it does. The faster you can learn how programmers think through a problem, the faster you will be able to do it yourself.
For another, there are many learning resources out there. Everything from online tutorials (such as those at Lynda.com and Code Academy) to books (for adults and kids alike, at any level). And there are so many people in the civic tech space that know Python that getting help will not be an issue. My course at DePaul, naturally, will be super-beneficial to helping me think like a programmer.
Third, Python has an enormous ecosystem of libraries. Libraries are pre-built code that you can use to do all kinds of things for you. For example, there are libraries for data science including Pandas (for data analysis, statistics, social science functions, etc.) and NumPy (for scientific functions); libraries for gaming (such as Pygame and Pyglet); and libraries to just make things easier (like BeautifulSoup, Requests, and OpenPyXL). There are thousands.
Last, there are many development environments that make actually putting the Python code all together easy (called Integrated Development Environments). I plan on using the Python tools for Visual Studio. It will help me learn while editing my code with tool tips and code snippets. Plus, it will help as I look for various libraries and frameworks I may want to use as I advance in my skills.
It is cliché to say that if I can do it, anyone can do it. But seriously, if I can do it, so can you. Let’s celebrate Computer Science Education Week together this year by diving in deep. Learn more about Computer Science Education Week at the Microsoft on the Issues blog.