Not the future of programming

Why you should program

Corey Kiyoshi Clippinger
Data For The Machine

--

Hello, and thank you for taking the time to read my blog. I started programming about two years ago, I did not study computer science in college, nor was a particularly computer adept growing up. But in the course of the past two years, I learned how to program because I had to. Not in the sense that I forced to or had no other career options. It was just that it came to dawn on me that in order to do the kind of projects I had become interested in I would need to learn how to program. And the more I’ve grown and developed as a programmer, the more I’m convinced that this skill should not be the domain of a select few but instead become what literacy was a hundred years ago, something we should all know. I do not think it’s either beneficial or nor really feasible in the long term for there to be this distinction between programmers and non-programmers. As software becomes ever more present in our lives, the need for people who can write software will grow. Just as other technologies have become more powerful and easier to wield over time. Programming is much easier and more relevant than what the general public perceives.

Consider that a few hundred years ago the opportunity to read and write was in the hands of a select few. Picture a medieval monk or ancient scribe carefully and laboriously toiling over ornate and delicate scrolls, worth more than a common person could even conceive. What changed since then? Two inter related processes. When printing presses were developed the written word became exponentially cheaper to produce. Reading and writing became a much more applicable skill for the general populace. Education helped fill in that gap as did technology. Technological advances in the early modern era made books cheaper to produce, which in turn helped along literacy. Soon the work of a few dedicated scribes, became an everyday practice of school children. Currently in Estonia, they are teaching first graders programming.

At first typewriters were both expensive and thought of as tools for specialist. Being a skilled typist was once a admirable skill. But in a rather short period of time these morphed into the personal computers we use today, which are much more forgiving machines. For anyone young reading this, typewriters did not offer any kind of grammar or spell check, and you could not delete anything without using whiteout, which is basically a kind of white paint you would use to cover up any mistake.

In the same manner that the skill of writing or typing was once a skill that was both rare and difficult to manage. Early programming was both a difficult and hard to practice. But in a relatively short period of time things have rapidly changed. Modern programming languages are both technically sophisticated and can be written in editors that more feature complete than anything Microsoft Word will create anytime soon. And especially today in the age of the internet, a miracle made possible via programming, reference material is more accessible than ever. I by and large taught myself what I know today with nothing more than a search bar, and your stomach for combing the internet for answers is undoubtedly tied to your ability as a programmer.

When deciding to create this blog I thought of people very much like myself. 20 somethings without any clear path towards how to make a living in this modern world. To you all let me say, being literate and productive as a programmer, without a doubt will benefit you and there is little to stop you from acquire it currently. In the end to build a great website or application requires no degree, no family inheritance or any kind of permission. One needs only the willingness and patience to begin such an undertaking. And yes you’ll need a computer but since you’re reading this I assume that’s already covered. The programming world is more meritocratic that I think people preconceive, especially in the open source world. If you happened upon my blog as a young person struggling to carve a place in this digitized world, know that I’m on your side. Just as all the people who wrote the blogs and stack-overflow answers were on my side. If anything I sincerely hope that my work here will contribute to the proliferation of programming to people at large.

Along with people trying to make a transition to programming as a way of making a living, I also want to dedicate this blog to people who can use programming to better accomplish their own creative/professional goals. Most if not all, small businesses or freelancers could benefit from having a consumer facing website. And even the smallest mom and pop shop needs to efficiently analyze their key performance indicators. Sure you can pay a pretty penny to have these things done for you. But these services can be prohibitively expensive to both create and maintain. A basic website can often cost upwards to a couple thousand dollars and Business Intelligence software isn’t cheap either. A personal Tableau account costs as much as a mid range cellphone plan, only provides data visualization. For a large or medium sized company this might make sense but for many it won’t. Hiring a developer or using software services like square space have an obvious monetary cost that can be prohibitive but they also carry a more hidden cost.

In order to make a lot of software “user friendly” essentially entails restricting what the user can do. Sometimes this is a good thing. You don’t want your average user to have write and delete permissions to your internal database. But often times this also means restricting a tools use cases to only what the company behind the proprietary product envision or even want their customers to use it for. Because Tableau has Tableau Server as a product, there’s a good chance they’ll be very resistant to allow the visualizations you make in their software work anywhere else other than from their own servers. Essentially instead of being a user, often these kinds of services tie us down as consumers. This is less of a problem when working with a good developer, but can become a major issue with something like Square Space or Tableau. The features available to you when using proprietary software for the most part limited to what the company behind the software want you to have available. And it won’t take you long to find those limitations.

Today open source programming languages have without a doubt trounced closed programming languages, meaning that the vast majority of the programming languages out there are freely modifiable. Meaning that you could download Python and then modify the actual behaviors of the language internally without requiring permission from anyone. Now I really doubt anyone reading this about to go do anything like that and I wouldn’t recommend it. But many people have and the changes that the broader community has deemed exceptionally good eventually make it into the version that you downloaded. While proprietary software’s development is mostly the result of paid workers creating changes dictated from a top down corporate structure. Open Source software is maintained and developed by the people who use it and care enough about making better for themselves and others. This typically has resulted in far more flexible and more feature rich software. Python originated as simply a general programming language for teaching people how to program. But now people use it for a myriad of purposes, mostly through the use of packages which are collections of code assembled for a specific set of tasks and then made freely available for people to use and improve upon. Also it’s worth reiterating, most programming languages and the packages people write for them are free. In fact I’ve really never heard of any good programming languages or packages that aren’t free and open source.

we should all be programmers because the future and history demand it. No one should be left out of today technological marvels, who’s full potential can only be unlocked by learning to program. Up next I’ll be sharing my take on some good starting tracks for getting started with programming. Broadly I’ll consider what I would recommend for those looking to take a more analytical route, which covers the realm of data science and what I would recommend for the more creative types who will likely be more interested in working with web design and development, more front end work so to speak. I’m also going to be putting up more information on a tutorial series I’ve been working on. Which will be an sort of go at your own pace sandbox adventure through the methodologies and paradigms we work with in data science.

--

--