
Ask HN: Learning 2 Hack - For the very first time. With a deadline. - biz2hack
	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.<p>Items I submit for consideration:<p>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.<p>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.<p>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.<p>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?)<p>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.<p>Please let me know your thoughts.
======
coderdude
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.

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

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

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

~~~
aidscholar
These two are both good intros to Ruby: <http://pine.fm/LearnToProgram/>
<http://mislav.uniqpath.com/poignant-guide/>

------
ihumanable
If you want to get a handle on the basics, especially ruby basics, try out
ruby koans.

<http://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.

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

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

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

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

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

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

[http://www.hostingrails.com/wiki/1/How-to-deploy-a-Rails-
app...](http://www.hostingrails.com/wiki/1/How-to-deploy-a-Rails-application-
on-HostingRailscom)

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>

------
icey
I would start with these books:

[http://www.amazon.com/Beginning-Ruby-Novice-
Professional/dp/...](http://www.amazon.com/Beginning-Ruby-Novice-
Professional/dp/1590597664/)

[http://pragprog.com/titles/rails3/agile-web-development-
with...](http://pragprog.com/titles/rails3/agile-web-development-with-rails-
third-edition)

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

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

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

~~~
als
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?

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

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

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

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

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

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

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

~~~
biz2hack
Thanks Chris, will do!

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

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

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

[http://www.scribd.com/doc/2236084/Whys-Poignant-Guide-to-
Rub...](http://www.scribd.com/doc/2236084/Whys-Poignant-Guide-to-Ruby)

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.

------
marcamillion
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!

------
jacquesm
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!

j.

\-----

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

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

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

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

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

<http://ruby.meetup.com/81/>

------
biz2hack
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!

------
biz2hack
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!

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

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

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

