While things like PowerShell have become more ubiquitous in most Microsoft shops in regard to how dependent the current OS and applications are, For a lot of people on the sysadmin side of IT, there is a reluctance to learn or better understand code.  In my earlier years even I (like many other sysadmins) would often use the phrase “I can read it, but couldn’t build it”, but I wanted to push past this limitation.

I must preface that my goal isn’t necessarily to become a developer, but to learn how to think and solve problems like one.  

When I say “Code is Everything” I refer to everything used in the 21st century in terms of technology and things we take for granted.  It’s not as simple as it being something on a computer (or what we familiarize as a computer), but literally everything:  Lights, televisions, phones, appliances, cars etc.  Take away the software and your phone becomes a paperweight, your car doesn’t start, and your TV becomes a dust collector so I think you get my drift.

Pick a language

After failing…<cough> struggling with Pascal in college the first time around I wanted to overcome my coding hump and start simple so I chose Python which was about five years old when I started college.  It’s a high level language that can do an awful lot and is rather easy to learn.

Start simple. Iterate (fail fast and fail often)

I’m going to file this under “one of those things I wish I knew back in college”, and I’m sure there are plenty of more (and less) efficient ways to learn, but the approach I took as I was going through Learn Python The Hard Way was somewhat iterative.  Rather than try to do each lesson perfect and proof read as I go, I took the approach of getting a lesson finished as soon as possible without regard to errors, then going back and correcting everything once I’ve written the program.  This actually helped by 1, finishing the examples faster. 2, by doing it this way I learned about iteration, and 3, most of what I learned was through the debugging process troubleshooting my code.  So far this method has been effective.  It was also effective when I did this when I was really tired or just flat out not paying full attention.  What can I say, I was catching up on Game of Thrones.

Make something useful

So far I had been getting more familiar Python and have content on GitHub that I’m still organizing.  Other than “Hello World”, and a bunch of other examples I cant remember at the moment, I learned a lot of basic concepts but it was hard to keep interested with the lessons and eventually wanted to make something i could use.  Without boring you with the details, I’ll just recommend you to go to my GitHub page.  So far I’ve made a few small scripts based on content in other books.

Learn more than just syntax

So after “Hello World.py”, and maybe a banner grabber or two on GitHub, I feel like I’m starting to get the hang of it, but have a ways to go.  I notice a lot of programmers use other tools in addition to their code.   I’ve already mentioned GitHub, which is a resource that comes in handy but there’s so much more than just learn <language> such as Docker, Node.js, or Jira.   Aside from the complimentary tools there’s also things to learn about Data Structures, Algorithms, Object Oriented Programming, and good software design.  One thing I found helpful with this was following a couple blogs, particularly one written a developer (below) that has aspirations of someday working at Google and writes about his journey.

And it only gets more complex from here as you’ll be using those things you’ve learned to using APIs to make your applications do a variety of things.

Repeat steps 1-4 for additional languages

No, seriously!  if you want to learn another programming language, repeat the steps above.

Additional Resources:

Code School

Codecademy

Learn Python The Hard Way

Googleyasheck– A really good Blog to learn a lot of software development concepts