Ask HN: Learning 2 Hack - For the very first time. With a deadline.
Items I submit for consideration:
1. I have a site already running (more or less, it will be at least within the week) on rails. I have no idea what is going on, but I'd like to figure it out and be able to change functionalities as I learn about my customers.
2. I have never coded before. Not even once. I still don't understand what a hash is, really. Aside from taking a class, I really don't know the best way to learn. I've been reading books, but reading hasn't been doing much for me, since I'm not really absorbing the material. I want to try 'testing' things out...I don't know if that makes sense, but I feel like if I have exercises to do, I will understand concepts much faster then simply reading.
3. I have availability to take courses. But, I do not know what courses to take. I am based out of the bay area, and am open to suggestions for classes for beginners.
4. I have a self-imposed deadline of four months. Is this enough time to be able to handle simple, workable functions on rails? (The common answer, my guess is, is that it's completely up to me. But I'm just looking for perspective. what can I possibly get accomplished, if I am starting from scratch?)
Also, supplemental 5: Would there be anyone out there who would be willing to learn with me? I think having a partner would help tremendously, but I don't know where to find people in such a situation.
Please let me know your thoughts.
49 comments
[ 3.1 ms ] story [ 98.9 ms ] threadhttp://github.com/edgecase/ruby_koans
They are simple exercises that you can work through without prior knowledge, its a fast and fun way to get your feet wet. Then its important to read some books and get a good foundation under those wet feet, but we all know books can be boring, try to find one that has an actual project you work on throughout, seeing concepts come to life in front of you can be really helpful.
Then try to look at some code, since you are using rails I would highly suggest railscasts ( http://railscasts.com/ ) they are short videos, but there are 188 as of this writing that show some cool stuff about rails and get you in the hacker mindset.
One thing I would suggest, it really provided the "aha" moment for me, is finding something that will dump out or print our your datastructures. If you don't understand what a hash is, and there's a tool in language (x) that will spew out what's in there, you will probably very quickly "get" what it is.
Do you have any friends that are developers? People generally enjoy when someone takes a genuine interest in their field. Perhaps ask politely if any of them would mind occasional IMs as you work your way through things.
Hit or miss, at times, but being able to chat live with real Ruby and Rails programmers is pretty helpful.
Start with Learn To Program 2nd edition as it will get you familiar with programming concepts. (I worked halfway through this book before I realized I understood most all of it) http://www.amazon.com/Learn-Program-Second-Facets-Ruby/dp/19...
Next I feel Beginning Ruby is a good place to get in depth with Ruby (I'm still getting into this book) http://www.amazon.com/Beginning-Ruby-Novice-Professional-Sec...
Last is Simply Rails 2 which is one big long Rails tutorial and will take you through the process of building a Rails app (it took me about two weekends to work through and has given me rudimentary understand of Rails) http://www.amazon.com/Simply-Rails-2-Patrick-Lenz/dp/0980455...
In addition, as other people have recommended you should try small programming exercises when you have a chance. For further brain teasers, I recommend working through the exercises in http://mitpress.mit.edu/sicp/
Well there's a specific lesson plan that I think is geared towards your business goals. I'm not sure what your time constraints are like but if you spend some uninterrupted time with these books you should be able to tackle them no problem.
Anyhow, good luck, I hope you find the time amongst everything else to dive into this material.
PS Programming is a lifelong project, give it time.
http://www.amazon.com/Beginning-Ruby-Novice-Professional/dp/...
http://pragprog.com/titles/rails3/agile-web-development-with...
With your deadlines, you're going to have to skip over some CS basics just to get everything going. That's okay though, there is enough to learn to keep you busy for a lifetime. The most important skill set that you need to learn right now is how to determine what's important this second and what can wait until later. Deadlines are a fantastic way to learn that skill :D
Completely Agree though on this: "change the code, save the file, execute the code, repeat"
Here's a first step for you - you've got a website somewhere - getting it running on your local machine. It might be worth installing something like VMWare Player and setting up a linux "virtual machine" - you can download pre-configured ones. (To translate - that basically means your windows computer can pretend to be a linux server - and that pretend server can run all of your programs - without changing anything on your own system)
Regardless of how you do it - let me repeat. Set it up locally and play with it. Change. Save. Test. Repeat.
OMG of course, this is how everyone does it and you leave me amazed at why didn't you try to code something yourself?
Once you're comfortable deploying, start making really small changes. Don't bother with books or classes yet - they'll round-out your knowledge once you know the basics, but in my experience they're not much use for getting people started. Begin by just editing bits of text on the website. Then progress to really small pieces of functionality. Try to deploy some small positive change to the site at least once a day. Doing this will build your confidence and get you to the point where you can make gradually bigger and bigger changes.
Here are some links specific for rails deployment:
http://www.capify.org http://www.modrails.com/
This is specific to hostingrails (a rails hosting company), but it's the simplest tutorial I've found...
http://www.hostingrails.com/wiki/1/How-to-deploy-a-Rails-app...
Some other technologies that you may need:
http://en.wikipedia.org/wiki/Fastcgi http://en.wikipedia.org/wiki/Apache_HTTP_Server http://en.wikipedia.org/wiki/Mongrel_%28web_server%29
Don't worry about the possible flak because of the n00b questions, we ALL were n00bs at one point of time...
As for point 4, you can learn to create a whole site without knowing what's the difference between a function and a closure, so worry about practicing your coding skills hehehe I'm sure you'll nail it if you code regularly.
The best of luck, welcome to our world <insert dark laugh here>
You posted this earlier today and I wrote you a reply, then when I hit 'submit' the page was deleted!
Here is what I wrote:
(1) Well, you certainly have your problems cut out for you.
You won't be lacking in motivation, that's for sure :)
Where to start...
Programming is a method, a way of thinking, it has nothing to do with the actual language that you use to do it in, that's just a means to an end (though judging by the various language wars they are probably more like religious factions). Changing your site is great, but you'll have to set up a development and a production environment, and make sure you run those on two separate databases to make sure that if you do something you end up regretting you can revert back without your users catching any grief.
(2) Pick whatever feels best and easiest to you. That choice seems to have been made for you, since you mention 'rails', but really that's a framework for a language called 'ruby'. So ruby comes first, then rails.
Probably your best bet is to start off with making a list of the terms that you keep coming across (rails, ruby, framework, webapp) and so on, then read the wikipedia page on each of those to give you a feel for the terminology.
A 'hash' is a programmers trick to turn any object (usually a string, but you can apply hashes to just about everything else) into a more or less unique number. That way it becomes easier to find things, hashing is used for many purposes but one of the main applications in programming languages is so allow you to find in a very short time an entry in a list without having to go through all the items in the list one by one.
Your best bet to understand this stuff given the requirements of your situation seems to be to get a book on entry-level ruby, read that until it falls apart making sure that you do and understand all the exercises, then to move on to the rails framework.
You can test things out but I think there are better ways of learning how to program a given framework than messing around with a live website.
(3) As for courses, there are lots of tutorials available online, I would advice you to find a programmer buddy, preferably one that already has experience in the field that you are interested in.
4) could be, depends on how much time you put in there and how much background you already have. It sounds like a tall order to me, but when sufficiently motivated I'm sure you'll amaze yourself in what you can do in three months of really hard work.
(5) I completely agree with you there, hence the tip for a programming buddy. I'd look for that IRL though, and only use online fora as a backup plan if you can't find a live human being.
best of luck with all of this, let us know how you fared!
j.
-----
http://www.ruby-doc.org/core/classes/Hash.html
Behind the scenes, ruby is using a hash function to implement the hash data structure, just like jacquesm says, but don't worry too much about that.
I jumped into rails development about a year and a half ago with minimal programming experience, so it's definitely doable. Good luck!
Would you have any suggestions for (3)? Someone had also previously mentioned railscasts, and I came across rails tutors, but I was looking for something that could help me get started on the basics.. My dad recommended programming for dummies, but that series usually seems to only cover cursory explanations. (Maybe I'm wrong?)
There isn't a book so 'dumbed down' that you don't learn anything from the only thing that you will see then is that it will be something that you can go through relatively fast. At worst it will give you the confirmation that you already knew it all :)
I'm not into ruby so I can't tell you what books to look at, but elsewhere in this thread there are some good suggestions and some people that are willing to hook up with you, so I think you'll be alright.
IMO, then, you've been reading the wrong books. I went through "Learning Rails" (O'Reilly) and followed the text through, actually doing stuff rather than just reading about it, and it worked great. I do recommend the "Learning (foo)" series by O'Reilly, but I don't have a copy of Learning Rails right here to flip through to see quite how absolute-beginner-friendly it is. The Pragmatic Programmers guides to Ruby on Rails are also quite good. Flip through books in B&N or something to see if you can find something with really appealing worked exercises, do it cover to cover, and then sit down with the guys who did your current site and get them to explain it to you.
Alternatively, set yourself a target small project that isn't maintaining an existing site, e.g. creating a blog. Plenty of screencasts and online tutorials on that sort of thing to follow along with but I would say most of them assume knowledge of programming, whereas books tend not to.
1. Get the firebug extension for firefox. It will allow you see changes live on your site, exactly how it appears in your browser.
2. Hit F12 to launch it.
3. Start out by learning basic CSS. Find a class to play around with, let's pick something like
What will happen when you change #000000 to some other color, #ff0000? AHA! that changes the font color for the text box to red. Perfect, let's try another class.4. Next you should learn HTML, use the element tool in firebug and select one of the elements. It'll highlight the element in question. And will show you the code for that element. Click edit, and see the full code for that element. Then modify the code and try different options, to see what the changes do.
I'd use Dreamweaver as a suggestion tool, since it shows you all available options. Which comes in handy, if you don't really know HTML like the back of your hand.
Your #1 priority is learning to read other people's code. After you do, you can quickly "borrow" their code for whatever it is you are working on. Especially useful if it's just CSS/HTML.
5. After your get the hang of HTML and CSS, you can move on to scripting languages and databases. By this point you should be able to read other people's code, which will help you find the code snippets in the code your freelancer wrote for whatever example you are looking for.
http://www.scribd.com/doc/2236084/Whys-Poignant-Guide-to-Rub...
Remember that Rails is just a large Ruby program. The best way to understand Rails is to understand Ruby (plus MVC and other general software development theory that Rails uses). If you don't understand Ruby, you'll just be a copy/paste Rails programmer.
For ruby you probably could do well starting off with Why's (Poignant) Guide to Ruby http://mislav.uniqpath.com/poignant-guide/ and maybe buy pragprog's ruby book, programming ruby, or the ruby way and move up from there
Just remember to try and change the code yourself, you have to interact more than read the books
My current goal is to learn a programming language so I can write a game. I have yet to seriously pursue that. I don't have a deadline though. Que sera, sera.
I hope my story is helpful to you and good luck with this.
However, I have recently taken a liking to Ruby and am committed to learning Rails. I looked at many Ruby books and even tried the poignant Ruby tutorial that other posters have linked to, but I found the best tutorial & accompany book is the 'Learn to Program in Ruby' book by Chris Pine. http://pine.fm/LearnToProgram/ He started writing a Ruby tutorial online and refined it according to feedback from readers. Then once he had all of that done, he published it in a complete book. But the bulk of the tutorial is still available free at the link I posted above.
Chris does an awesome job of making programming accessible. He assumes you don't have any experience programming, and breaks down everything into 'human-friendly' language. It is hands-down one of the best programming texts/tutorials I have ever seen. The truth is, I have been searching for a similar text for Rails, but haven't found it.
If you start there, I think that would be a good place to start.
Keep us posted on how it all goes.
Good luck!
Get started here: http://tryruby.sophrinix.com/. Now. When you get that done, if you want more goodies, email me (email in my profile) or reply, I'll be glad to help.
Also check out http://www.htdp.org
http://ruby.meetup.com/81/
So what version control software is good for a total novice? (I use git because it is industrial strength, but that may not be the best for biz2hack.)
What version control does: It keeps a record of all the little changes you make as you create your code. If you blow something up, no problem, just revert the latest change. If you want to try a wacky experiment, you can put it in its own little sandbox and ditch it if it doesn't work out. If a bug shows up, you can work back through earlier changes until it disappears: the next change is the one that introduced the bug.