Where to start from?

Hi guys,

I want to be a professional web developer using Ruby. Where should I
start from? give me a roadmap or some recommeneded books. It would be
helpful if you tell me step by step what to learn first and then what
and vise versa..

Thanks.

···

--
Posted via http://www.ruby-forum.com/.

read this: http://mitpress.mit.edu/sicp/

···

On Fri, 2010-11-19 at 05:48 +0900, Ruby Me wrote:

Hi guys,

I want to be a professional web developer using Ruby. Where should I
start from? give me a roadmap or some recommeneded books. It would be
helpful if you tell me step by step what to learn first and then what
and vise versa..

Thanks.

Go to college. No, really. Learning a framework or a language is easy.
Learning algorithms, and learning to translate requirements into
architecture is not something that books alone can teach you: You'll
need a solid grounding in maths *at the very least* so you can think
in an abstract enough fashion (like boolean logic, or vectorial maths
for business applications).

···

On Thu, Nov 18, 2010 at 9:48 PM, Ruby Me <i_baseet@hotmail.com> wrote:

Hi guys,

I want to be a professional web developer using Ruby. Where should I
start from? give me a roadmap or some recommeneded books. It would be
helpful if you tell me step by step what to learn first and then what
and vise versa..

--
Phillip Gawlowski

Though the folk I have met,
(Ah, how soon!) they forget
When I've moved on to some other place,
There may be one or two,
When I've played and passed through,
Who'll remember my song or my face.

To do Ruby on the web, you are basically talking about Ruby on Rails. I
would suggest starting with Sinatra, because it is very accessible, and then
when you feel comfortable with it, moving to Rails. To learn Sinatra, go
pick up the peepcode (Online Courses, Learning Paths, and Certifications - Pluralsight), go through it,
and then read the "Sinatra book" (http://sinatra-book.gittr.com/\). Write a
few simple applications with it, then go for a medium sized one.

After that, move to Rails. To learn Rails, watch a few of their screencasts
(http://rubyonrails.org/screencasts\) so you can get a feel for how things
work. Then read through the guides (http://guides.rubyonrails.org/\) which I
think are better than any book. While doing this, re-implement your Sinatra
projects in Rails. Think about things you would like to add to it to make it
better. While reading the guides, take notes, that is an effective learning
tool. And think about how you might use whatever you are reading about at
that time, in your application. How you could go back and make something
better, how you might approach the next part of your application, etc. That
will help you translate the material into something you already understand,
which forces you to process the information (as opposed to reading it and
forgetting it). Looking at the screencasts, I see they have an interactive
site now that is supposed to help you go through it
http://railsforzombies.org/ it's new so I haven't tried it, but it might be
a great resource (though I really want to point out, again, that the guides
are amazing). And lastly, when you have specific things you want to figure
out how to do, they are often covered in a Railscast (http://railscasts.com/\).
I subscribed to them on iTunes, and then download the ones I am interested
in. You need to have an idea what you're doing before you can get anything
out of Railscasts, but they are a great way to get very focused
comprehensive examples.

Now, while I'm unimpressed with other people telling you to go learn math
and Scheme and go to school, there is a good point behind their suggestions
that learning about Rails doesn't constitute learning how to program. So you
need to challenge yourself to learn problem solving techniques. You can use
math to do this, but I'm suspicious as to whether this is necessary. My
experience was that it took an exorbitant amount of time, with a lot of that
spent learning the math rather than the problem solving, and now it has been
a couple of years and I don't remember any of it. If the only lasting thing
that math has to offer is problem solving, then I suspect you can use
programming instead (you will have to push yourself). Look for programming
problem solving sites, there are a number that are decent, but most aren't
that great for Ruby. If you want to go the Math route, check out
projecteuler.net (that is where I started programming). I think a better use
of your time, though, would be to go through the pickaxe (
http://pragprog.com/titles/ruby3/programming-ruby-1-9\) in order to learn
Ruby itself, while also trying problems from different sites such as
codechef.com (though last time I tried there, Ruby wasn't a tenable
language). I love codingbat.com, though it isn't set up for Ruby. I haven't
gone through Code Kata, but I have heard they basically fit this category,
and are probably much friendlier to Rubyists (http://codekata.pragprog.com/
).

Find problems in your own life that are interesting to you, and try to solve
them with Ruby. Try to find projects that are maybe 20% beyond your
abilities, and work on those problems, that gives you 80% reinforcing
knowledge you have, while keeping you from getting overwhelmed with the
things you don't know. Then you increase your knowledge by whatever is in
the 20% of the project that is new. It allows you to solidify your base of
knowledge while growing the boundaries outward to new things. Don't be
afraid to fail, that will keep you from trying things that would otherwise
be good learning experiences. It is easier to go forward by doing something
poorly, then analyzing it and making it better. Trying to do it perfect the
first time is much more difficult, and will inhibit you. Projects are great
because they give you real goals to shoot towards, which helps keep you
focused on moving forward. It is better to move forward to the next thing
than to stay on the current thing until you know it 100% There are just too
many things you need to know for you to wait until you understand everything
about everything. You will also find that by pushing yourself in some other
area, you will figure things out such that the next time you come back to
the topic, it will be much clearer than if you had spent the whole time
trying to understand that one thing. You can keep your learning momentum
high by switching to a new topic when you begin to slow down in the current
one (not to say you should abandon your projects, completing projects is
good because it establishes discipline and gives you a mental reward,
helping you validate your learning).

Hopefully by the end, you will know Ruby well, Rails well enough, and
understand problem solving necessary to be a programmer. If not, you can
always try math then, though it might be harder to learn it at the end than
the beginning (because you will feel like you should be learning programming
instead). Or, SICP, which at least is still programming, and presumably will
change the way you think about programming (though I just want to point out
that even MIT quit using this book, and moved from Scheme to Python. Reasons
given by Gerald Jay Sussman, one of the book's authors at
http://wingolog.org/archives/2009/03/24/international-lisp-conference-day-two\).
One last point on SICP, even Paul Graham thinks you shouldn't go through it
before you are ready (http://www.amazon.com/review/R3G05B1TQ5XGZP\).

After that (or heck, even during that time), if you want to be on the web,
you will probably have to deal with the front end too (the side the user
sees) and for that, you should know CSS to style your sites, and JavaScript
to do client side work. I don't know either of those well enough to tell you
how to gain that knowledge. Which brings up the point that this is a Ruby
forum, so its a little less surprising that so few of the comments said
anything about Rails. You would probably get more relevant results asking
the Rails forum (http://www.ruby-forum.com/forum/rails\).

···

On Thu, Nov 18, 2010 at 2:48 PM, Ruby Me <i_baseet@hotmail.com> wrote:

Hi guys,

I want to be a professional web developer using Ruby. Where should I
start from? give me a roadmap or some recommeneded books. It would be
helpful if you tell me step by step what to learn first and then what
and vise versa..

Thanks.

--
Posted via http://www.ruby-forum.com/\.

Go onto a web job site and type in Ruby. You'll then see lists of the
skills people expect before they consider you a Ruby developer.

Here's a typical one today

The Role We are looking for an experienced Rails Developer to help
continue with our new development projects. You will have at least a
couple of years experience working with Ruby and Rails in large test
driven deployments. You will be working alongside an established team of
contract and permenant expert developers. The Skills Web technologies -
you will need to be an EXPERT in all of these R uby and/or Rails PHP5 -
including knowledge of frameworks and OO development using PHP.
JavaScript - to utilise the most modern aspects of web development A
combination of other suitable technologies for scalable web solutions
Code & performance optimisation - to squeeze the most out of each
function and line of code. Unit/functional testing - to make sure each
release is as stable as can be. Web Systems Apache - administration and
configuration Nginx and others? Great! Operating systems Linux
administration - for scalable solutions Knowledge of the Shell to
automate and improve productivity. Database SQL/NoSQL - Whichever
flavour that will provide most suitable scalable and stable environment

···

--
Posted via http://www.ruby-forum.com/.

What is that anyway? :slight_smile: I want to learn Ruby, you want me to go to the
past?

Niklas Cathor wrote in post #962422:

···

read this: http://mitpress.mit.edu/sicp/

--
Posted via http://www.ruby-forum.com/\.

Heck, maths offers more than problem solving skills.

Let's take three examples, out of different mathematical fields (all
of this is Maths for Engineers 101):

1) Enterprise resource management (solving linear equations; vectorial maths).
Let it be given that you need 2x, 4y, and 7z to produce a given item.
Let it be given that the parts cost: x = .03, y = .25, z = 1.00.
Let it be given that there is a demand of 1000 for your product.
Let it be given that you can produce .2 items per day, and production
of an item costs .50 USD.

How many x, y, and z do you need to produce 1000 pieces?
What is the minimum cost of your product?
What is the maximum price you can demand and still sell 500 items?
How long will it take you to produce the items?

2) Electrical Engineering (complex numbers).
Given are two harmonic fluctuations of identical frequency (that's an
exam question at my engineering college, BTW):
y1 = 4 * sin(2t + 45º)
y2 = 3 * cos(2t + 60º)

What's their superposition?

3) SQL's JOIN (set theory).
What's the intersection of the sets {1,2,3,5,6} and {1,2,4,6}?

Point being: maths is applied to real problems, that you have to deal
with. Of course, if all you ever do is create a blogging engine, then
you won't need any maths at all (that is, if you blindly trust that
your SQL engine does the real thing, and that your assumption of what
kind of join you want is always correct).

But once you want to solve the sort of problems people offer you money
to solve, you *will* need maths.

···

On Fri, Nov 19, 2010 at 12:38 PM, Josh Cheek <josh.cheek@gmail.com> wrote:

Now, while I'm unimpressed with other people telling you to go learn math
and Scheme and go to school, there is a good point behind their suggestions
that learning about Rails doesn't constitute learning how to program. So you
need to challenge yourself to learn problem solving techniques. You can use
math to do this, but I'm suspicious as to whether this is necessary. My
experience was that it took an exorbitant amount of time, with a lot of that
spent learning the math rather than the problem solving, and now it has been
a couple of years and I don't remember any of it. If the only lasting thing
that math has to offer is problem solving, then I suspect you can use
programming instead (you will have to push yourself).

--
Phillip Gawlowski

Though the folk I have met,
(Ah, how soon!) they forget
When I've moved on to some other place,
There may be one or two,
When I've played and passed through,
Who'll remember my song or my face.

Learning from the past is exactly is necessary to become a professional
developer.

Everyone's definition of professional a lot of times are different.

You can get some books merely on Ruby and Rails and start doing simple work
like creating simple websites for shops, etc, and that might already
considered professional to some.

To be competent to handle complex and hard requirements, simply copy and
pasting how to do things in Ruby won't be enough.

You'll actually have to understand how ruby's garbage collector work, how to
optimize performance, how to tune Rails (or any server), handle
load/security, etc.

And all of these things requires you to first understand how the computer
works, and slowly progress to understand "why" ruby is designed this way and
how you should use this.

Tim

···

On Thu, Nov 18, 2010 at 12:56 PM, Ruby Me <i_baseet@hotmail.com> wrote:

What is that anyway? :slight_smile: I want to learn Ruby, you want me to go to the
past?

Niklas Cathor wrote in post #962422:
> read this: http://mitpress.mit.edu/sicp/

--
Posted via http://www.ruby-forum.com/\.

What is that anyway? :slight_smile: I want to learn Ruby, you want me to go to the
past?

Rome wasn't built in a day. :slight_smile:

···

On Thu, Nov 18, 2010 at 2:56 PM, Ruby Me <i_baseet@hotmail.com> wrote:

Niklas Cathor wrote in post #962422:

read this: http://mitpress.mit.edu/sicp/

--
Posted via http://www.ruby-forum.com/\.

I want to learn Ruby, you want me to go to the
past?

Can you answer questions like:

* Why does this program stack overflow?
* Why is the program so slow?
* Can I help with this algorithm from the literature?
* Who am I? What day is this?

Also, I hear when they interview you to be a professional software
developer, they may actually ask you questions about computers!
Shocking really. I'm a math student though so what do I know...

Johnny

And a book such as Powell’s Books | The World’s Largest Independent Bookstore
would also be a good idea.

···

On 11/18/10 12:56 PM, Ruby Me wrote:

What is that anyway? :slight_smile: I want to learn Ruby, you want me to go to the
past?

Niklas Cathor wrote in post #962422:

read this: http://mitpress.mit.edu/sicp/

Phillip Gawlowski wrote in post #962566:

> 3) SQL's JOIN (set theory).
What's the intersection of the sets {1,2,3,5,6} and {1,2,4,6}?

The original motivation of the N-ary Relational Model (ie the invention
of Codd and Date and the one we know today) was (as ever)
there is far more to do than can be done by the number of trained
programmers available. The model was to allow non-IT professionals to
manipulate organisational data without unnecessary spec!alist knowledge.
This is why relational databases first appeared as sort of warehouse
copies of data also held on more traditional arcane data storage
systems.

Although the first relational languages (like DSL) were rather
mathematical, the underlying principle was that you only need to
understand a few high-level powerful concepts. Quickly we got to such
things as Sequel (not to be confused with SQL). Sequel is 'structured
english query language'(and a play on the name of an earlier language
QUEL).

I therefore take issue with your point that you need to know maths set
theory to appreciate SQL. It was designed to be simple to understand
without a spec!alist background.

···

--
Posted via http://www.ruby-forum.com/\.

>
> Now, while I'm unimpressed with other people telling you to go learn math
> and Scheme and go to school, there is a good point behind their
suggestions
> that learning about Rails doesn't constitute learning how to program. So
you
> need to challenge yourself to learn problem solving techniques. You can
use
> math to do this, but I'm suspicious as to whether this is necessary. My
> experience was that it took an exorbitant amount of time, with a lot of
that
> spent learning the math rather than the problem solving, and now it has
been
> a couple of years and I don't remember any of it. If the only lasting
thing
> that math has to offer is problem solving, then I suspect you can use
> programming instead (you will have to push yourself).

Heck, maths offers more than problem solving skills.

Let's take three examples, out of different mathematical fields (all
of this is Maths for Engineers 101):

1) Enterprise resource management (solving linear equations; vectorial
maths).
Let it be given that you need 2x, 4y, and 7z to produce a given item.
Let it be given that the parts cost: x = .03, y = .25, z = 1.00.
Let it be given that there is a demand of 1000 for your product.
Let it be given that you can produce .2 items per day, and production
of an item costs .50 USD.

How many x, y, and z do you need to produce 1000 pieces?
What is the minimum cost of your product?
What is the maximum price you can demand and still sell 500 items?
How long will it take you to produce the items?

2) Electrical Engineering (complex numbers).
Given are two harmonic fluctuations of identical frequency (that's an
exam question at my engineering college, BTW):
y1 = 4 * sin(2t + 45º)
y2 = 3 * cos(2t + 60º)

What's their superposition?

I have an incredibly difficult time imagining a web developer being asked
either of these questions. The second one in particular, if you had that
question, would you think "I better go find a web developer"? Or even more
generally "a programmer"? If you are able to word it like that, then you are
probably already ahead of them in solving it. And if you aren't, then this
isn't a compelling example.

3) SQL's JOIN (set theory).
What's the intersection of the sets {1,2,3,5,6} and {1,2,4,6}?

Okay, I guess I should clarify that I am mostly thinking about Calculus and
Linear Algebra and Statistics. I'm not saying there is no merit to Discrete
Math. Though I don't think it is anywhere near as difficult as school makes
it, and I still think it is less relevant than academics consider it, and I
expect you will figure almost all of that stuff out when you need it -- if
you need it.

In my discrete math course, they taught prefix, postfix, infix. I understood
it well enough to walk through their drawings of trees and get the right
answer on my test. Then in Data Structures, I was given code for a Binary
Search Tree, looked at the delete function (recursive), couldn't comprehend
it, sat down and worked out what it was doing, and said "holy crap!". And
when told to print the tree, wrote my own version. I didn't comprehend that
it was the same as what I learned in Discrete Math, I just thought about it
for a while, tried putting it after the traverse child code, it didn't work.
I thought about why not, realized it needed to go between them. Then,
several days after I finished. I was reflecting on it, and finally realized
the placement of the print statements was just prefix, postfix, infix
traversal. I had solved it without math. Of course, I can't see myself ever
needing to code my own BST, so even then, not sure how relevant this example
would have been for the pro-math side.

Another example: I have never used De Morgan's laws outside of homework
problems, but I've been taught them at least 6 times (yes, I just stopped
and counted).

Point being: maths is applied to real problems, that you have to deal
with. Of course, if all you ever do is create a blogging engine, then
you won't need any maths at all (that is, if you blindly trust that
your SQL engine does the real thing, and that your assumption of what
kind of join you want is always correct).

I am confused by this. I would say you don't have to trust it, you can just
look and see if it gives you the correct results. Presumably you will say
that for some other input, it may not. To which I will say that isn't
determined by math, but by how it is coded.

···

On Fri, Nov 19, 2010 at 6:57 AM, Phillip Gawlowski < cmdjackryan@googlemail.com> wrote:

On Fri, Nov 19, 2010 at 12:38 PM, Josh Cheek <josh.cheek@gmail.com> wrote:

Also the free rails book online:

···

2010/11/19 Rob Saul <wyrd@code-gnomemad.org>:

And a book such as Powell’s Books | The World’s Largest Independent Bookstore
would also be a good idea.

Without set theory, math doesn't work. Any number space is a set (the
set of rational numbers, the set of real numbers, the set of complex
numbers). It's necessary to represent solutions (which can be an
interval from -infinity to infinity, or a set with a single element,
or anything in between), and a set can be all white Ford F-150s in
Washington, D.C. with a Senate numberplate.

As far as mathematical principles go, set theory is neither
specialist, nor advanced.

And without an understanding what sets are, and how they relate to
JOINs, you won't be able to test your assumptions about a JOIN for
correctness.

···

On Fri, Nov 19, 2010 at 3:06 PM, Mike Stephens <rubfor@recitel.net> wrote:

I therefore take issue with your point that you need to know maths set
theory to appreciate SQL. It was designed to be simple to understand
without a spec!alist background.

--
Phillip Gawlowski

Though the folk I have met,
(Ah, how soon!) they forget
When I've moved on to some other place,
There may be one or two,
When I've played and passed through,
Who'll remember my song or my face.

I have an incredibly difficult time imagining a web developer being asked
either of these questions. The second one in particular, if you had that
question, would you think "I better go find a web developer"? Or even more
generally "a programmer"? If you are able to word it like that, then you are
probably already ahead of them in solving it. And if you aren't, then this
isn't a compelling example.

The first one is likely, once you shift the ERP to a web app. The
second one: not so much, but then again, Electrical Engineering uses
specialized software.

3) SQL's JOIN (set theory).
What's the intersection of the sets {1,2,3,5,6} and {1,2,4,6}?

Okay, I guess I should clarify that I am mostly thinking about Calculus and
Linear Algebra and Statistics. I'm not saying there is no merit to Discrete
Math. Though I don't think it is anywhere near as difficult as school makes
it, and I still think it is less relevant than academics consider it, and I
expect you will figure almost all of that stuff out when you need it -- if
you need it.

It's easier than school makes it, definitely. But set theory is pretty
basic, and like all basic things, it is not that difficult, but still
highly important. Fortunately, a good 3 hours in Maths 101 will teach
you the basics well enough that you won't ever have to look up any
laws related to set theory.

In my discrete math course, they taught prefix, postfix, infix. I understood
it well enough to walk through their drawings of trees and get the right
answer on my test. Then in Data Structures, I was given code for a Binary
Search Tree, looked at the delete function (recursive), couldn't comprehend
it, sat down and worked out what it was doing, and said "holy crap!". And
when told to print the tree, wrote my own version. I didn't comprehend that
it was the same as what I learned in Discrete Math, I just thought about it
for a while, tried putting it after the traverse child code, it didn't work.
I thought about why not, realized it needed to go between them. Then,
several days after I finished. I was reflecting on it, and finally realized
the placement of the print statements was just prefix, postfix, infix
traversal. I had solved it without math. Of course, I can't see myself ever
needing to code my own BST, so even then, not sure how relevant this example
would have been for the pro-math side.

You solved it without maths, but it took you much longer. Algorithms
of any kind are the bread and butter of mathematics, and once you grok
maths, any algorithm becomes easy (outside of cryptography, anyway).

Instead of days, it'd taken you just a few hours *at most*.

Of course, that assumes were taught actual mathematics, and not
computing (Wolfram had an interesting TED Talk on teaching maths using
computers, instead of teaching computing at school).

Another example: I have never used De Morgan's laws outside of homework
problems, but I've been taught them at least 6 times (yes, I just stopped
and counted).

I've been taught vectorial maths 5 times sofar, and I expect a few
more lessons on that. But be that as it may, maths is the universal
language of any hard science endeavour, and just worthwhile to know,
if only to make an educated guess on whether or not a certain solution
works, or makes sense.

To look at our set theory in the context of JOINs: You can go ahead
and try all possible iterations until you strike gold, or you can, up
front, define the exact result you need by formulating it in
mathematical logic. It's TDD before you write a single line of code,
more or less.

···

On Fri, Nov 19, 2010 at 9:38 PM, Josh Cheek <josh.cheek@gmail.com> wrote:

--
Phillip Gawlowski

Though the folk I have met,
(Ah, how soon!) they forget
When I've moved on to some other place,
There may be one or two,
When I've played and passed through,
Who'll remember my song or my face.