wait just start

Learning to code, learning to script

We've all heard the message: you should learn to code. It's become mainstream. I've read numerous stories claiming a high percentage of jobs in the future will require coding skills.

But that is where the story typically ends. It lacks actionable advice as to what exactly you should be learning. HTML? JavaScript? Swift? Python? Ruby on Rails? C#? Objective-C? ASP.NET?  Where do you begin and how do you do it?

In the early-stages (you are in school, or are programming as a hobby)  it doesn't matter which framework or programming language you start with. It depends on your situation. For example if you know a professional programmer, I recommend starting with the programming language they recommend. That way when you hit roadblocks that don't have StackOverflow answers, you'll have a resource to help you. My dad is a professional programmer, and his primary language is C# and the .NET framework. So I started there.

In the early-stage it's important to understand the fundamental concepts of programming. Specifically object-oriented programming. What is an object, a class, a method. What is an array and a for loop. You'll find that these concepts transcend programming languages. Sure the syntax and libraries will be different, but those will come easier once you get the fundamental concepts. 

Books that I love are the Head First series. I learned a ton from them.

The C# book is a practical introduction to the fundamental concepts of object-oriented language programming. It just happens to use the C# programming language to convey the concepts. I have not read Head First Python, but based on my experience with the Head First series of books, I'm sure it's excellent.

Now if you are not in the early-stage, but in a career transition stage, you'll need a different approach. You first need to figure out what development stack (the set of tools you are going to use) to code/build applications. You can take several approaches. One would be to go to the careers page of a company you'd like to work at, and look at a job listing. See that list of "technologies we use"? That's what you need to learn. That developer friend I mentioned earlier? Ask her for a recommendation. Don't have a developer friend. Go to a technical meetup, meet a developer, and ask for their recommendation.

Once you know what to learn, a site like Pluralsight has an excellent collection of courses for you to learn from. Or you can sign up for Treehouse and be walked step-by-step through a full curriculum of learning.

I attended an unstructured data meetup today and was chatting with a data analyst from an insurance company. He was describing how he writes various Python scripts to help him do his job of processing large quantities of data. He specifically pointed out that he doesn't know how to build applications, but he is self-taught and quite capable in writing scripts to process data.

His programming experience is a sign of what will be much more common in the future. Coding is typically associated with building applications, while scripting tends to have more of a negative connotation (see Script kiddie). By learning to code, we don't necessarily imply someone should learn to build an application. Instead, learning to code involves learning the fundamental concepts of object-oriented programming so that you can write scripts that "do stuff". For example, you may write a script that utilizes various APIs and grabs your Fitbit data, does some sort of calculation, and posts the result on Facebook (assuming such IFTTT recipe doesn't already exist).

The other day I watched an introductory video introducing the 'C# REPL' into Microsoft's Visual Studio.

Essentially a REPL allows you to write out scripts and execute them real-time. I haven't fully wrapped my head around it, but I think this tool can have very cool applications for people learning to code, and for those writing scripts to get their work done.

A personal example. The final versions of the posts on this blog live on an FTP server. Every month I manually connect to the server, download the posts, and put them on OneDrive as a backup. I'm envisioning writing a script, testing it on C# REPL in Visual Studio, and then use the built-in Task Scheduler in Windows to automatically run my script whenever I'd like. I'm not building an application, but I'm scripting/coding something for a computer to do in order to save me time.

As our workloads and datasets increase. As our time becomes more limited, we need machine power more than ever to get our work done. The first step in getting there is learning how to code, or more specifically, learning to write scripts.