Saturday, July 14, 2012

How to Start in Computer Programming

Lots of people are intimidated by programming, but while I was managing one of my companies i asked my engineers what programming languages would be

1) so easy to learn that a freakin biz guy would be able to handle it


2) powerful enough to actually do interesting things, as fast as possible, as often as possible.

They looked at each other like long-suffering people do and tried to explain a few things to me. First they told me that I was probably thinking about web programming (which, obviously i was. There are still other kinds of programming, turns out. who knew.), and they told me that yeah, there's a couple of good languages out there for exactly that purpose. Twitter, for example, was built in a couple of days using Ruby on Rails, which is designed to write code for you and automate simple tasks.

Second, they told me that if i want to be a lone programmer who doesn't contribute anything to the community, i probably wouldn't be a very good programmer because i couldn't play around with as many projects or see as wide of a variety of tasks, and i'd be more likely to lose interest because i'd be working by myself on things only interesting to me. There are tons of open source projects available if you want to work on em, and it's the best way to learn beyond the basics.

Third, because all software is written by programmers and they're the sorts of people who like to make their own lives easier, they have written tons of different tools to help themselves program better. Most of what people call 'programming' is just copying and pasting from other people's successful projects, learning how to use these tools (lots of installing and troubleshooting), and trying to simplify ideas you thought were already simple into things you know how to do. So it doesn't require a ridiculous intelligence as much as it just requires tenacity and curiosity, and a problem to solve. It's more like writing a letter to a pen pal in a foreign language than it is like math, and when you get it right the program replies by doing your bidding and being the best minion you could ask for.

I find that a bit of realism helps too- software programming isn't some kind of magic power you get from hiding in your basement, getting a gut, and growing a beard, which lets you cast magic spells using a computer. It's mostly just really simple algebra, people complaining on web forums, and google searches. Just like everything else these days, except a) you can get a high five figure to mid six figure salary with it, b) you can use these skills to start the next facebook or twitter just like Zuck did, and c) everyone who is in the field is self-taught- software engineering moves too fast to ever have a university program that isn't obsolete by the time you graduate. Having a degree doesn't mean much in programming- it's all about what you've done.

So I recommend following this tutorial to pick up the basics of programming for the internet-

The Best Way to learn Ruby on Rails

Ruby on Rails can automatically build you a whole website. It'll be a crappy website, but you can tweak it later to your heart's content. That tutorial is awesome because it has a lot of quick and easy parts, keeps things simple, and is more explicit than most sites that help you just 'learn programming.'

then, or if you get bored with that, software engineers have copy and paste coder heaven in the form of a website called github, and being programmers they aren't intimidated by making it a little bit complicated. But if you go through this next tutorial you should be ready to go onto it and see what people can do with software these days. Github is where open-source projects are hosted as well, and there's lots of cool stuff going on in that area.

Try Git

I could put more links out there but if you haven't gone through those two then it won't help, and if you have then you can google search as well as i can. Get tenacious and curious, and get going. Enjoy!