What to tell noobs who want to "learn coding"? I get a lot of people genuinely interested in learning. In my opinion code academy sucks cause of the false sense of accomplishment it gives. Thoughts? Strategies? |
What to tell noobs who want to "learn coding"? I get a lot of people genuinely interested in learning. In my opinion code academy sucks cause of the false sense of accomplishment it gives. Thoughts? Strategies? |
---it's an online book that lets you run code right in the book
---it's the language of the REPL that everyone has access to (in the browser)
---js is dynamically typed, which I think is easier for people to grok (I learned Java first, and for months I was puzzled by this "public static void main (String args[])" that I had to start everything with. Public? static? main? void? JS has none of these, and while it's debatable whether that's a good thing or a bad thing, it's an unqualified good thing when first learning to code.)
My main point is that in my opinion books, interactive or not, are still the best source for learning to program for many, if not most new programmers.
if you want to learn to program, open Terminal, type ipython and go from there. When lost google stackoverflow, repeat. Forget books, there are way better, more up to date online resources.
If getting a class isn't an option, there's always something like Learn Python the Hard Way, or if they have issues following just text, Land of Lisp is pretty gentle and friendly, if not as immediately applicable to say, mobile development.
Not being able to use Ctrl/Cmd-F to quickly locate code snippets in your text editor. Not using keyboard shortcuts...the seconds it takes to move from task to task quickly build up, and so does the frustration and urge to quit.
Everyone wants coding to be about amazing creations and The Future...but a lot of proper coding is just hard work and good habits. When that routine is in place, learning AND producing code is significantly easier.
Find the best book ever written for your language of choice, its Crockford's book for js I imagine - don't know about other languages.
I would NOT learn to write code from random web resources. A good portion of the code on sites is horrible. There's alot of horrific PHP code floating around out there.
Except, find someone on Github who is blowing your mind with their stuff and read through their gists and projects. Succinct and easy to understand code is best. I did this for two hours last night and got more out of it than a month reading weak stuff and the more mediocre books..
Moving quickly and freely (in any direction) at the beginning helps keep interest levels up, where an 800 page book on Java might squash their energy. Plus, if you only have the basic-basics of web stuff you start to chafe pretty quickly, and that's great motivation.
Usually, I ask them what they want to do with code and go from there. Sometimes, I realize that all they really want to learn is HTML and CSS. Other times, I really do feel like the "hardcore" approach would be more fulfilling, albeit slower.
http://docs.python.org/2/tutorial/
Offer to answer questions when they have them.
If they get through that, talk about what kind of programming they'd like to do, and point them toward their first resource. Offer to help. If they actually still want to code, they'll go from there.
https://github.com/karan/Projects has a good set of first projects, ranging from straight algorithm practice to actual app and full project work. My younger brother is following something very similar, and it's working quite well so far.
But what if you want to make a chart maker?
Also, learning git isn't something that a novice programmer should need to struggle with. It's hard enough figuring out the concepts of programming without having to add on all sorts of other stuff. You don't need git to write a 100-line program.
Finally, the whole list is very skewed toward web development, which not everyone is interested in. People who work in science or business might be more interested in learning how to write programs that manipulate data (e.g., using Python to automate what they would otherwise do with Excel). Others might want to learn how to write games for PCs or iPads. Web apps written in Rails might appeal to the startup crowd, but they're hardly fundamental steps toward learning programming.
If you're a dev school graduate I'd love to meet up with you over coffee and understand how we can improve the experience with Campendo.
a) Buy a C-64, TI-99/4A, TRS-80, etc.
b) Turn it on
c) start programming.
a) Buy a Raspberry Pi ($25 vs $hundreds (converted to today) when those were released)
b) Turn it on
c) Start programming (since it starts up into a programming environment of some kind, IIRC)
If anything it's easier now, and much much much more available to people who don't have $1400 to drop on the new C64 hotness: http://en.wikipedia.org/wiki/Commodore_64
Now that I've attended this school, I can pick up books about code and not feel completely overwhelmed. For this reason, I believe that if it's an option, a bootcamp is the way to go.
I also believe that the only requirement for 'fitting in' to one of these schools is to be easy to get along with, and be able to take the stress without becoming a jerk. This is more difficult than it would seem, as the course is pretty intense.
On an unrelated note, main in python is not a whole lot better. By the time you get through __name__ == "__main__", import sys and use sys.argv you're not really winning much over public static void main. The nice thing about python is that you don't have to start worryin about main since you can just run it as a script to start, which is definitely great for beginners, but that doesn't exactly justify the argument you were trying to make about the verbosity of Java.
BTW: Don't all C based apps begin with a call to main (all Mac / iOS apps):
int main(int argc, const char * argv[])
In the beginning, the day is usually split into two parts: frontend and backend. Each day there is a 'microproject' that covers what you learned that day, and each Friday there is a project that covers what you have learned up to that point. There is very little theory, though the instructors are constantly recommending books and other reading material for things they gloss over. Towards the end of the course, the frontend and backend lessons are integrated into projects that students complete while pair-programming.