Hacker News new | comments | show | ask | jobs | submit login
Ask HN: Learning 2 Hack - For the very first time. With a deadline.
44 points by biz2hack 2779 days ago | hide | past | web | 47 comments | favorite
Dear HN, This is a plea for advice. I've recently decided to take the plunge and learn how to code. I have my own startup that I foolishly outsourced, and I've decided that there really is no other way around it then sitting down and learning to hack myself, and then iterating the product once I have a better handle on things.

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.

Just a general bit of advice: You will learn more iterating through "change the code, save the file, execute the code, repeat" than any amount of plain reading. When I learned Python, I sat down with Dive Into Python and the command line.

I think Dive into Python is a great book - but I wouldn't recommend it to biz2hack. At least - not yet. (How to Think like a computer scientist) is a better Python intro book - but if you've got a site in Ruby/Rails - start with that.

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.

I wasn't suggesting Dive into Python to him, he's trying to learn Ruby. I was just drawing upon an example. The VMWare approach, setting up a virtual linux box so that he can configure apache and ruby, might be a little much for a biz2hack, as you put it.

Would you happen to know a similar book available for Ruby, if you have any ideas?

If you want to get a handle on the basics, especially ruby basics, try out 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.

Thanks for the reply. Do you have any resources you can recommend where I can learn more about programming in general? There seem to be a lot of things that people talk about that just go completely over my head.

Hey there, I've (re)learned to program over the course of the past year, listening to what your've said these are three books I think can help:

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.

Keep in mind that this will continue to be the case for a while. Sometimes you have to worry less about understanding what's happening to start off with, don't let not knowing how to do something stop you from doing it. Sometimes it all becomes clear once you see how things are used.

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.

It really helps to have people to whom you can direct questions as you learn.

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.

Actually, no...unfortunately. I think while I am at the Hacker dojo, I'll make some more friends as I'm here. But that's a great idea, I just hope to make some friends that will tolerate questions that are rather basic..

Alternatively, get your hands on a free IRC client and hang around #ruby and #rubyonrails on irc.freenode.net.

Hit or miss, at times, but being able to chat live with real Ruby and Rails programmers is pretty helpful.

The ruby koans do a pretty good job giving you a quick overview of programming concepts in ruby. If you have any trouble getting up and running feel free to send me an email ihumanable at gmail dot com

Get whoever coded this site for you to explain how to deploy it, in enough detail that you would be very confident re-deploying it several times a day if you wanted to. If the original coder is unavailable, find a hacker friend who can figure the process out for you.

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.

I would recommend this advice as well. Deployment for Rails apps isn't as simple as uploading something to a remote server.

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...


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

I would start with these books:



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

Here is what you should do:

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

   textarea {
   color: #000000;
   font-family: courier;
   font-size: 10pt;
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.

Hey man, I recently had a similar revelation that I just needed to learn how to code. I picked up ruby a week ago with the intent of learning rails and building web apps. I knew a bit of python/django before, but nothing that could be considered hacker knowledge. If you want to learn together, let me know. It'd probably help the both of us. I have a few ebooks and what not that I could send you that have helped me learn the basics. I'm kyrobeshay on freenode #startups. Email is in my profile.

Kyro and biz2hack, I've been thinking it would be fun to get some beginners/novices together to learn the basics of various languages together. At some point we'd probably need to tap some outside wisdom but we could get started together. Interested?

100 percent absolutely. My e-mail is in my profile, and I would be very happy to be a part of this!

Hey biz2hack, I'm not seeing your email in your profile. I'm in for joining you guys. I last programmed about 4 years ago, and 4 weeks ago I picked it up again. My email is in my profile, and please keep me in the loop.

Ricuarte, sorry about that. We're also going to start an IRC Channel where we can all get together and ask each other questions. My e-mail should be in my profile now.

Yeah, definitely interested. My email is in my profile.

I'm down for this. Email in profile.

Also down for this - I'm handy with Java and Python (have Django experience too), so might be able to chip in with help or advice. Am going to be teaching myself Clojure pretty soon too so if anyone wants to dabble with it let me know! Email in profile

can I jump in on this? I think this is exactly what I've been needing.

My websites started with someone else asking permission to post something I had written on her site. She made a little subsite on her site for my stuff. I sent more content to add to it occasionally. When she could no longer keep up, she gifted me the templates. My then-husband was pursing a degree in computer science and took a few minutes to explain a few things to me (like what an FTP program was) and I started with a Yahoo account which apparently wasn't very hacker friendly. I later moved my sites to something with more flexibility when I knew more. Initially, I could only copy and paste colors to change backgrounds and copy and paste text to make a new page. The first time I tried to change anything structurally, I messed it all up. The woman who wrote the original templates kind of mentored me for a time and I eventually used some CD's, online sites, and a book or two to learn more coding, supplemented with talking with friends online who knew more than I did. I still tend to look things up "as needed". I do okay these days with my websites. They are in (X)HTML and CSS.

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.

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.

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.

> 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.

OMG of course, this is how everyone does it and you leave me amazed at why didn't you try to code something yourself?

Hey there, Though I am a little ahead in building a Rails app, I'm essentially in the same position you are in and (more importantly) have the same mindset of building it myself. Shoot me an email and hopefully we can help each other with our projects.

Thanks Chris, will do!

One thing that will be limiting your motivation is how much you actually like coding if you truly do like it I'm sure you can be competent as to what is happening on your rails site in your time frame but if you absolutely loath programming the goal may be a hard one to reach.

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

I would dare to suggest that you create a HN thread for other novices. Better yet, you use this thread to ask your questions, and some folks here will try and answer politely.

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>

Whys Poignant Guide to Ruby is an excellent, gentle introduction to Ruby. If it fits your personality that is. Have a look and decide for yourself.


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.

biz2hack....like everybody else pointed out, the best way to get into it is to jump in with trying small changes, and seeing the effect of those changes. I was in a similar position as you recently, except that I know all the fundamentals of programming - did a BA in Comp Sci :)

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!

Hey Biz2Hack,

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!



I'm pretty sure a hash, in the ruby context biz2hack has come across it, is best explained as a dictionary. It's an object that maps a set of keys to corresponding values. So you could have a hash that maps fruits to colors {:banana => 'yellow', :strawberry => 'red'} or people to occupations {'Steve Jobs' => 'CEO', 'Barack Obama' => 'President'}


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!

Thank you so much jacques, and I will absolutely keep you updated. I hope that things will go well. Actually, (2) is the way that I previously learned finance, and it worked incredibly well. Thanks for the advice, and I'll be sure to follow through with that.

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?)

Learning how to program is a lifetime journey, it is not something that you do in a couple of weeks or months, but it is possible to learn enough of a particular environment that you can use to get to a level of being able to do something moderately useful.

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.

What better language for someone like you than my language of choice, Ruby.

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

My contact information's in my profile. If you have any questions, no matter how general or specific, don't hesitate to bug me.

Since you're in the bay area, you should look into regional meetups for people learning/using rails. There's one at Berkeley the third Tuesday of each month (Nov 17 this month)


Hey everybody, I just wanted to let you know I've created #HNBeginners for those who are just starting out and or those who would like to contribute and help other people out who are just getting started. Please drop by if you can!

Thank you all so much! I will definitely keep you updated of my progress, and if there is anyone who would like to e-mail me to get in contact with me, my e-mail is in my profile. Thanks again!

Do you have source control set up? Because you will break the code and be unable to fix it and that might cost you 4 months itself. Source control is your #1 priority.

Read this: http://norvig.com/21-days.html. If you start now you'll be good to go in 2019.

Once you get going, you'll want version control to keep track of the editing process.

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.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact