Question{maybe silly] Sanity check

This maybe a silly question and the fact that I need a sanity check
might even be weirder, but I’m trying to set realistic expectations
for myself.

I’ve been reading reading reading AWDWR, Ruby on Rails, some of the
PickAxe, and even done a few recipes from Rails Recipes. This is all
of two weeks. I feel that I’ve learned a considerable amount but
going through the Depot tutorial for the 3rd time I feel that there’s
a whole lot to remember (that I don’t). Having had very little
experience with OOP and never an MVC framework, is there an average
time frame that things should start to crystallize, for an average
person ?

TIA
Stuart

On Wed, 2006-06-21 at 16:28 -0600, Dark A. wrote:

time frame that things should start to crystallize, for an average
person ?


After 3 weeks, I was starting to seriously code a solution with great
difficulty but I am nothing if not persistent.

After 6 weeks, I had a very workable application and put client into
production mode.

After 12 weeks…I don’t need to ask very many questions any more and
some of the things are actually starting to make sense. I was able to
recognize the things that I did early on, why they worked, how to make
them better and consistent.

Craig

On 6/21/06, Craig W. [email protected] wrote:

After 12 weeks…I don’t need to ask very many questions any more and
some of the things are actually starting to make sense.

Craig

So any day now ?

Stuart

On Wed, 2006-06-21 at 16:44 -0600, Dark A. wrote:

On 6/21/06, Craig W. [email protected] wrote:

After 12 weeks…I don’t need to ask very many questions any more and
some of the things are actually starting to make sense.

Craig

So any day now ?


that’s really hard to say since it encompasses so many different areas
of learning…html/css/javascript/database/web server and that doesn’t
have anything to do with the language itself.

Coming in, I understood html, had basic understanding of mysql and web
server, little to no experience with javascript and css and of course,
had never done anything in object oriented language.

Webrick allows you to put off web server integration while you learn.
CSS is a biggie…I started with the css in ADWDR and worked from there
I knew I wanted to use postgresql instead of mysql but the beauty of
rails is that the db is abstracted enough to blur the differences to
some extent.
Javascript…well, I just worked through Cody F.'s RJS booklet and
got enough understanding to start thinking about backtracking a bit to
move to AJAX/javascript

Wherever you are deficient, you will have to spend time getting up to
speed in those areas which will bog down your learning of ruby/rails.

More than anything…I find just slogging away at new code tends to
start the crystallization process…in the beginning, luck sometimes
helps and things work and you’re not entirely sure why. Eventually, you
start to figure out why and then of course, why you should go back and
clean up the code that was lucky.

Craig

So any day now ?

Stuart

I’ve been working at rails for almost 6 months now and i’m really just
getting to the point where things make sense and i don’t ask questions
every single day. To say that in 12 weeks not having to ask questions at
all would be an over statment i would presume, but hey everybody’s
different. The point is, it’s not how fast you can put an app together,
it’s the quality of your work. Getting an app to “work” is one thing,
but not having to go back and fix it a month later cause you didn’t
really know what you were doing is really the key. Right? I think that’s
pretty much global knowledge though. So don’t expect anything more from
yourself and whatever you do, don’t think that you’re only one who has
questions cause i can assure you that most people do.

Jon

On Wed, 2006-06-21 at 15:59 -0700, Craig W. wrote:

that’s really hard to say since it encompasses so many different areas
rails is that the db is abstracted enough to blur the differences to
helps and things work and you’re not entirely sure why. Eventually, you
start to figure out why and then of course, why you should go back and
clean up the code that was lucky.


I forgot svn which I had to learn :wink:

and this list has been a great resource !

Craig

Yes, I think your right. Some here may not agree especially when it’s
here I might come to ask questions .

Stuart

I think you will start to understand better when you try to do a sample
application by yourself. AWDWR is a very good starting point, but you
will learn a lot by doing it yourself.

_Hari

On 6/21/06, Craig W. [email protected] wrote:

After 12 weeks…I don’t need to ask very many questions any more and
some of the things are actually starting to make sense.

Craig

So any day now ?

Stuart

On Jun 21, 2006, at 3:28 PM, Dark A. wrote:

Having had very little
experience with OOP and never an MVC framework, is there an average
time frame that things should start to crystallize, for an average
person ?

Dark,

I’ve been writing code for about 15 years. I started using OOP 10
years ago. I started using MVC-style frameworks 6 years ago. I’ve
progressed through at least five OOP languages – Perl, C++, Java,
Objective-C, and Ruby (in that order.)

Things really started making sense for me 3 or 4 years ago, when I
read Design Patterns
<http://www.amazon.com/exec/obidos/tg/detail/-/0201633612

. If I had read that book when I started OOP, it wouldn’t have made
sense. But at the time I was doing Objective-C and had already
learned C++ and Java, and the AppKit framework in Objective-C (on Mac
OS X) is heavily designed around the MVC pattern, so I was able to
understand the examples of how to do things RIGHT, because I had so
much experience doing things WRONG.

There absolutely is a lot to keep track of in RoR. I think you’ll
find that things make a lot more sense in a few years. :slight_smile:

I’m not saying you can’t get useful work done after 3 weeks – just
keep in mind that an average person couldn’t build a house after
taking woodshop for 3 weeks, even if they were instructed on how to
use every single tool required to build a house. The same is true of
software development, in my opinion. Fortunately RoR is much more
forgiving than building a house, so a beginner stumbling around for a
few months in RoR may be enough to create a production application –
on the other hand, I wouldn’t want to live in a house built in 6
months by someone who just started woodshop.

So, keep at it. Try learning more languages and frameworks that use
the MVC pattern. Check out
<http://www.amazon.com/exec/obidos/tg/detail/-/0596007124?v=glance

, I hear it is more accesible, although I haven’t read it.

Good luck,
David

http://www.norvig.com/21-days.html

Any day depends on whether you are set on your original question. If I
read
that correctly, it involved understanding OOP. Most people start using
o-o
programming languages just as they would use languages that don’t
provide
good object support: Procedurally. Rails helps you a bit here by giving
you
a class for models and controllers, and blah, blah, but it doesn’t
illuminate why.

After a bit of reading up on inheritance (usually the first o-o concept
that
makes sense), people often get an aha! moment because they see they
might be
able to save code by refactoring through a class hierarchy. From there,
the
going gets a bit trickier when you deal with polymorphism, encapsulation
and
coupling.

Coming from object-oriented, kitchen-sink environments like C++ that
tries
to do everything and fails at most (multiple inheritance, templated
methods,
etc.), you might find Ruby a bit odd because it punts on some things
like
MI, but instead uses mix-ins. Ruby is a very idiomatic language and it
all
works well once you have the language down. Until then, there will be a
lot
of I wonder why :foo won’t work here when ‘foo’ will?

It’s likely that persistence and a couple of months will give you a
functioning Rails app. If you use TDD, it might even be a good Rails
app
(and then you can refactor with confidence as you learn). I’m convinced
the
computer science side of this (object oriented programming, design
patterns,
etc.) are a longer reading assignment.

FWIW

View this message in context:
http://www.nabble.com/Question{maybe-silly--Sanity-check-t1827030.html#a4984506
Sent from the RubyOnRails Users forum at Nabble.com.

All -
First, thank you for you insightful responses!

Just to clarify, my statement “so any day now” was in response to
Craig’s
“After 12 weeks… and
some of the things are actually starting to make sense”

I meant it in a lighthearted way since he was already in the thick of
it and yet the understanding didn’t come to some time later.
I’m keeping the email stashed so I can refer to all the books
mentioned. Right now, I’ve taken a step back and working with
“Learning to Program” from Pragmatic Programmers. While I now have a
few of their books, I think other authors and particularly those who
maybe planning on writing books, to take away one lesson from Learning
to Program - include assignments in the book! Step by step tutorials
are fine, but way to common. Often they seem more proprietary to a
specifc application then explaining by example and then challenging
the reader to write their own.

In the past I’ve tinkered around (but not for long) with C++ and Java,
so some of the concepts triggered familiarity. The deeper ones require
my patience. Regarding “Procedural languages” vs “OOP / MVC”, yes
they are different but and in particular to web design there are some
commonalities, even if they are structered differently. I say all this
because because even though I know very little I am still impressed by
and see at least some of the uniqueness (and cool stuff) of both Ruby
and Rails. Good for me :).

All in all, I think the thread has cleared up much confusion for me as
well as given me a better view of the steps I need to take to improve
my skills and grow in this hobby.

Thank you,
Stuart

David, that’s a very insightful and well worded response. I like the
carpentry analogy.

Stuart/Dark A.,

I have pretty much a similar background as David (does that make us
average?), and it took me about two months from installing Rails for the
first time to getting a small app into production. But at least a week
or so of that time was spent dealing with things not directly related to
the Rails framework like getting my web host configured properly and
getting an SSL cert installed correctly, and some more time was spent
working with the customer to gather requirements.

I think the people who love Rails the most, the people who are always
raving about how great it is, are folks with a lot of experience working
with similar types of frameworks in other OO languages like Java and
C#. Those are the people who have been doing the same thing but doing
it the hard way, and using Rails is like a breath of fresh air. To
these folks, a lot of the magic in Rails (like automatic loading of
attributes into model classes, for instance) is a big relief because
before they were having to manage a lot of this stuff themselves, or
relying on complex tools to do it for them. They understand what Rails
is doing at a conceptual level. I think these folks can get to the
point where t hey can write “good” apps in Rails very quickly (“good”
meaning bug-free, easily maintainable, cleanly designed code).

Then there are the folks who are coming from the other direction, who
are taking a step up from procedural programming (like PHP 4) or just
getting into web development for the first time, and Rails is attractive
because they can create a lot of things very quickly. But a lot of the
magic may initially be a stumbling block because there are so many
things that just happen automatically and there are a lot of
conventions, and it’s not so easy just to look at the source code and
understand what’s going on. I am guessing this is where you are right
now. I think you will just have to keep plugging away until you get all
that stuff into your head, but it may take a while.

Something that I think many people are not prepared for when jumping
into Rails (and Ruby) is that is that it does some rather sophisticated
things that are new even to many experienced OO developers. Learning
how to put together an app in Rails is relatively simple, but I think
there’s a steep learning curve to really understanding what is going on
behind the scenes. (When things go wrong, knowing what goes on behind
the scenes will make all the difference).

A good analogy is understanding how sessions work (whether in PHP or
Rails or whatever). You can tell a new web developer that they can just
stuff something into a session and it will be there in the next request,
but they won’t REALLY get it until they understand that HTTP is
stateless, and that there are things called cookies stored in the
browser, that sometimes you can use URL rewriting or hidden fields, and
that sessions are an abstraction on top of all that stuff.

To get to the point where you can grok all the magic behind Rails, you
really have to first spend a lot of time doing homework and really
understanding OOP at a deep conceptual level. I don’t think it will
happen from just writing apps using Rails. If you want to dig in and
really make the most of Rails, I’d say first pick up a good book on OOP
and learn the mechanics of OO (objects, inheritance, polymorphism,
abstract classes and interfaces), then learn how to “think in objects”.
Applying UML and Patterns by Craig Larman is supposedly one of the
best books for this. Then pick up Agile Software Development:
Principles, Patterns, and Practices
by Robert C. Martin and
Refactoring by Martin F… If you really understand the contents
of these two books inside and out, then you can try out for your first
degree black belt in OOP. :slight_smile:

Sorry about the long-winded response. I hope it is helpful.

Ken