Beginning Programming: A letter

This is an odd post but I thought I’d share though I doubt anyone is reading.  I wrote this letter to my sister and brother-in-law.  He is contemplating learning a programming language and I wrote him a note to get him started.

Bryson and Bekah,
I hear you are thinking about learning some programming.  Yay!  I am a firm believer that learning to program is learning to think slightly differently and I fully intend to teach my kids programming right along with reading when they are kids.  Learning to code just a little bit is like learning to read poetry.  Even if you don’t ever use the skills, they affects the way you see the world and expanding your view of the world is important.
As far as a first language, I thought this article did an excellent job explaining the different languages.
http://lifehacker.com/which-programming-language-should-i-learn-first-1477153665
 A class is nice though not necessary.  There are also plenty of online courses and even “open courseware” through MIT, Harvard and other places.  That being said, a “certificate” my look better on a resume though open courseware is gaining some grounds there.
There is also this program that I hear is super awesome though I haven’t used it yet.  http://www.codecademy.com/

In fact, you have inspired me to refresh my C coding skills so I’m starting on this tutorial:
http://lifehacker.com/which-programming-language-should-i-learn-first-1477153665
I’ll probably stop half way through and hopefully make a script that calculates the total sun exposure for any one spot based on the relation of the shade-obstructions and the sun over the course of the year.
Something like this cool web app but probably without pictures, just enter GPS coordinates and “obstruction free” angles or something and receive a graph of hours of sun a day over the course of a year.  It would be easiest for me to do something like this in Matlab or even Python but I need to get more confident in my C so C it is.
http://www.suncalc.net/
Java is very similar to C with a bit more of a wrapper on it.  It’s simplified C if you like.  It’s also not an Object Oriented Language which is the second big hurdle in learning to program.  The first is the understanding of the following:
i <= i + 1;
Once you come to understand loops, you’ve got 90% of the understanding for non-object oriented programming so that’s where you should start.
Another thing to consider is that getting an environment set up is (for me) the most frustrating part of the endeavor.  Some languages, particularly teaching languages, have a whole environment you need in order to get started.  Matlab is like that.  Python needs to be installed in such a way that you can compile and run via commandline, and then you want to figure out your own workflow.  I can’t recommend notepad++ for Windows and I’m an emacs user in Linux.  I’m sure there are equivalents for Mac, find one that will highlight and change all the colors and really help you with the formatting and syntax.  Start with one that is intuitive (notepad++) before you go to something super complicated with strange keystrokes (emacs).
One more thing, Version Control!  Use it.  Use it. Use it.  I don’t know what there is for MACs but there is TortoiseSVN for windows which is a pretty wrapper that sits on top of SVN (Subversion).  There is also GIT which is the big new thing.  If you get version control set up, make sure you put it on your resume.  It’s a thing to know.  Old people don’t understand it though it really is very simple and logical.
OK, that’s all I have to say on the subject.  Let me know if you have any more questions.
Sarah

Leave a Reply

Your email address will not be published. Required fields are marked *