Adopt-a-newbie? Based on actual experience

Although I have only been lurking on this list for a couple of months, I
have been totally impressed with the expertise of the Ruby community,
the help offered and the lack of flames. None of what I have offered
today I think should get in the way of this.

I agree with Jim. That is a fact in the Ruby community.

I wander a lot in Ruby’s IRC channel at Freenode. I believe that the
easiest way of a newbie getting help is to just ask. If the person
doesn’t want to just shoot the question out in the open, we could have
a few frequent IRC users that will help them through private messages.

Having a channel full of mentors is somehow better than binding a
newbie to only one person.

Regards,

Ricardo Amorim

Grr. Thats what I meant to do. Stupid non-mind reading computer.

Since I’ve been asked a lot, a few guidelines for mentors:

  • When you receive an email asking if you’re OK hooking up with a
    newbie,
    you’re just expected to wait until he asks something.
  • It would be more advantageous, though, if you do send him an
    introductory
    email and try and get to know him, his code and his purposes in learning
    Ruby. From there you can spawn a discussion on the design of his code,
    offering him better ways to do things.
  • As important as it is to teach Ruby, it is important to teach both
    good
    practices (from indentation through irb to testing) and how to find
    information in the Ruby world (how to use documentation, when to ask on
    ml,
    what’s on rubyforge…)
  • Don’t just spill information. Wait for it to be exactly relevant.
  • Think of this whole things like a discussion in a computer lab where
    the
    programmer next to you asks you a question in a field you’re better
    at…
    The sort of discussion that also happens a lot at conferences.

Aur S.

if anyone has a good tip to add, feel free!

I’d like to put myself up for adoption!.

Vincent F.
Go Montessori
1757 Woodside Dr., Suite 201
Woodland, CA 95695
1.800.331.5147 (Toll-free from the US and Canada)
530.661.1968 (FAX)

Visit: www.montessorijobs.com

On 2/15/07, William S. [email protected] wrote:

Grr. Thats what I meant to do. Stupid non-mind reading computer.

Yours doesn’t read your mind, either? The nerve… =)

(btw, thread taken offlist to discuss the pitiful excuse for progress on
the
referenced project, or lack thereof.)


Samantha

http://www.babygeek.org/

“Beware when the great God lets loose a thinker on this planet. Then all
things are at risk.”
–Ralph Waldo Emerson

On 2/15/07, Eric D. [email protected] wrote:

RubyForge project page).

Eric D.

Awesome, Eric!

It’s really cool to see such a great community!!!
– Samantha

http://www.babygeek.org/

“Beware when the great God lets loose a thinker on this planet. Then all
things are at risk.”
–Ralph Waldo Emerson

SonOfLilit wrote:

Indeed.

I asked for the volunteers to post to-list. That is also temporary.

I would like to volunteer my help to mentor a person or two. I have
been using Ruby for about two years now. About 50% of my Ruby is with
Rails, the other 50% is general system administration stuff (e.g. file
management, calling external programs, etc).

Samantha wrote:

http://www.rubynewbie.org is available. Once I have gainful
employment,
I’m
willing to buy the domain and put it to work for this purpose.

I have ordered this domain for now, just to hold it. I can transfer it
to someone else if we need to. I also have a server we can use to host
the website on if someone would like to create one (or redirect it to a
RubyForge project page).

Eric D.

On 2/14/07, SonOfLilit [email protected] wrote:

What do you think? Would you consider it a good idea? Would you volunteer?
Is anyone up for infrastructure (preferrably on ruby-lang.org, though
anywhere is good)?

I’d be willing to mentor someone as well, but as others have
mentioned, it should be expected that the adoptee is motivated to do
the heavy lifting necessary to learn.

But yeah, I’m in.

On Feb 15, 1:23 am, |MKSM| [email protected] wrote:

a few frequent IRC users that will help them through private messages.

Having a channel full of mentors is somehow better than binding a
newbie to only one person.

Regards,

Ricardo Amorim

I agree with him somehow.

In my short (but pleasant) experience with programming, as a newbie I
started looking for resources, forums and sources of information. Ruby
was my first language, and what made it special is that, although
there are not too many libraries or information in English, this
groups made (my) learning experience good.

I cannot say I’m a total newbie, but I think part of that learning is
to search, to ask. That’s what the forums are for, and to make that
process ‘private’ may benefit one person, but I think it will private
that information to others. I cannot say I’m a newbie, but a lot of
what I’ve learnt has been through this forum. (Yeah, I’m a lurker too)

Not that is not a good idea, but it has to be more focused on oslve
specific doubts or give more extensive help to someone. I find it a
great idea to be tutor of some people of the same language, for
example.

Probably I’m not the best person to say it, but it’s my point of view.

On 2/14/07, SonOfLilit [email protected] wrote:

What do you think? Would you consider it a good idea? Would you volunteer?
Is anyone up for infrastructure (preferrably on ruby-lang.org, though
anywhere is good)?

I’ll volunteer; areas of expertise is advanced pure Ruby hackery, and
generic Unix experience. I’m a former kernel hacker on FreeBSD with

20 years of programming experience, about 10 years of web/database
experience, about 4 years of Ruby experience, and I used to work
professionally with Ruby (though I don’t at the moment.)

I can help with generic program design and use of Ruby; I do not
program Rails, nor have I worked with most of the special modules for
Ruby lately, just general Ruby programming (including use of
Test::Unit).

If it sounds useful, just throw me questions.

Eivind.

Premises:
(1) I believe that the list is the best way to teach.
(2) I know that I am a bad teacher (I love to teach of course).
(3) I understand that some newbies are afraid on posting even on the
friendliest ML of the world ruby-talk IMHO.

Conclusion:
Count me in but only if you are willing to accept, that
(1) I will ignore your mail if tired/overbooked or not interested.
(2) I will give strange answers
(3) I will act as a proxy to the list nobody will ever know who asked
the stupid question. <As a matter of fact I can now ask stupid
questions for free:)>

Cheers
Robert

It is focused on answering trivial questions and on the kind of dialog
and
guidance that will more often develop in 1:1 than in a group.

As I already said, issues which are fit for ruby-talk should still be
discussed in ruby-talk.

More than that, I would like there to be a system that records those
mentoring sessions who’s participants agree to be public and allows
public
browsing and searching of them. With that, I think that instead of
decreasing, the amount of available material for Ruby
learners/practicers
will dramatically INCREASE.

Now if only someone had the time/will to build such a system…

Aur S.

First, my definition of “newbie” just for this post:

A person who is generally inexperienced in computer programming, and
specifically inexperienced in Ruby programming.

Therefore, when mentioning newbies in this post, I do not refer to
people who are already adept at programming in another language but just
don’t know Ruby. I believe most of such people would not hesitate to
post to a forum, and would not really want or need a mentor. They would
also hopefully know how to ask questions in a clear way.

I mentor developers as part of my job. Based on experience, I would say
that newbies as defined above should execute the following algorithm
(which contains polite versions of RTFM and STFW) to get maximum benefit
from a mentor:

newbie.read_the_manual or
newbie.search_the_web or
newbie.read_ruby_books or
newbie.ask_mentor or
newbie.post_to_ruby_forum # Last resort

It is unfortunately not rare to encounter people who will not exhaust
all other self-help possibilities before asking others for help. I will
not opine on why this is so. However, IMHO, help is given freely and
happily when the helpee has demonstrated sufficient gumption, and
consideration for other people’s time, to try to find the solution using
the above algorithm.

Newbies should, in their email or forum post, clearly describe the
problem, and explain what they did, prior to asking for help, to solve
the problem. This will give the ones who are being asked the question
enough information to reduce or eliminate the need to ask the newbie
follow-up questions before being able to answer.

Although some people find the content at the following link to be
objectionable and rude, it does cut to the heart of the matter and is
worthwhile reading for all newbies:

http://www.catb.org/~esr/faqs/smart-questions.html

If they agree to adhere to the above conduct, I will volunteer to take
on a couple of newbies. This is dependent on time and workload, so
patience is a virtue; I may not be able to answer instantly. It does not
mean I am ignoring you.

My background is that I have been developing software for an
embarrassingly long time, mostly in C++ and Java, on various platforms.
I use Ruby on a daily basis to automate Linux- and Unix-based tasks such
as performance monitoring, graphing, data analysis, and as a replacement
for shell scripting when possible. I provided some Ruby extension code
for the ruby-informix and RubyWMQ projects. I also use Ruby at home on
Ubuntu Edgy x86_64; the last significant thing I did was reorganize my
MP3 collection’s directory structure by artist and album, using the ID3
tags. I have been using Ruby for about 18 months, so IANARG (I am not a
Ruby Guru), but I have pretty much read all the books and manuals and
written a fair amount of stuff. I am a systems-type developer, so GUI
questions are not a great idea. I also don’t know Rails (yet).

Finally, I don’t think it is a good idea to post email addresses and
personal contact details on this or any forum. I would suggest using the
email links provided by this forum to contact me with your details.

Best regards,
Edwin F.

Edwin F. wrote:

First, my definition of “newbie” just for this post:

A person who is generally inexperienced in computer programming, and
specifically inexperienced in Ruby programming.

Therefore, when mentioning newbies in this post, I do not refer to
people who are already adept at programming in another language but just
don’t know Ruby. I believe most of such people would not hesitate to
post to a forum, and would not really want or need a mentor. They would
also hopefully know how to ask questions in a clear way.

I mentor developers as part of my job. Based on experience, I would say
that newbies as defined above should execute the following algorithm
(which contains polite versions of RTFM and STFW) to get maximum benefit
from a mentor:

newbie.read_the_manual or
newbie.search_the_web or
newbie.read_ruby_books or
newbie.ask_mentor or
newbie.post_to_ruby_forum # Last resort

It is unfortunately not rare to encounter people who will not exhaust
all other self-help possibilities before asking others for help. I will
not opine on why this is so. However, IMHO, help is given freely and
happily when the helpee has demonstrated sufficient gumption, and
consideration for other people’s time, to try to find the solution using
the above algorithm.

That’s my point: for specific questions a newbie should exhaust as many
possibilities of solving a problem before asking to a mentor. However,
for the learning process of any people, a good technique is to learn
from other people’s problems, hence the communities. I believe in
collaborative learning.

I agree with Aur, it can be possible to do this system and benefit the
community by doing it an open process, with browsable search and so
-which yields to a forum-. Or, extending the process and adopt a newbie
for a long time, would better make a course or a tutorial.

In short, I can see the benefits of this by changing the learning
process of the newbie in question. However, it would hurt the community
learning process. As a shy newbie myself, I can say I’ve learnt a lot if
things -that are not in any manual or book- by searching and posting,
and more important, by looking at other people’s learning processes.

Ruben.

On 2/14/07, SonOfLilit [email protected] wrote:

What do you think? Would you consider it a good idea? Would you volunteer?

I would be happy to help out. I would also suggest that most user
groups have a mailing list and that can be a very comfortable place to
post questions that are “too basic” etc. As most everyone involved
tends be more acquainted with one another.

I was actually going to suggest that in the previous thread; however,
I did not want to in anyway diminish the community of the this mailing
list .

In any case sign me up – and if you live any where near South Eastern
Michigan, checkout http://rubymi.org/ for details on our meetings and
mailing list as well.

pth

I think exposing the dialogs between mentors and newbies is essential,
and if infrastructure doesn’t exist, it hsould be done manually.

Personally, I’m going to edit my conversations with Semantha a bit and
publish them since they are such a great learning resource in my
opinion (they just contain far too much personal information as-is, so
major editing is required - I don’t think many Ruby newbies are
interested in Jewish prayers :slight_smile: )

With these dialogs published, I don’t think the community will be hurt.

There will just suddenly be a huge FAQ with the REALLY frequently
asked question, those too trivial and too abundant for an official
one, all answered until a real newbie approves and groks.

Besides, conversation is a great kind of teaching material, as anyone
who reads Creating Passionate Users (and everyone SHOULD! How much
resonance can begin with an article there) has read lately.

Aur

On 2/17/07, Ruben M. [email protected] wrote:

-which yields to a forum-. Or, extending the process and adopt a newbie

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

Just putting my two cents in… (or maybe a whole nickel, we’ll see how
long-winded I get.)

I personally think that every newbie-mentor relationship is going to be
different. Different people have different ways of communicating. For
me,
there are a couple of people I’ve found myself emailing at different
points
over the last week or so. Of course I Google for things I need help on,
but
if I have a program concept, or a thought about "would it be better to
do
something like this, or like that… In this recipe (program) should I
use
basil (MySql) or oregano (files as databases…)… " And then that
generates a discussion…

I haven’t gotten to a stage yet where I’m saying, I’m stuck at place X

how do I get out of here??? I’m sure I will at some stage, at which
point,
I’ll probably send that to the list… I tend to censor myself as I feel
I
need to. (ie, while I know there are no stupid questions, I’d rather
remain
silent and be thought a fool, than open my mouth, er move my fingers on
the
keyboard, and remove all doubt.)

My # 1 rule for myself is not to take myself too seriously. All I know
is
that I’m grateful for the few people who have reached out to me and
offered
to let me tap their experience and wisdom as resources, and that I’m
having
a blast learning new things. It really can’t get much better than that.
(Okay, so deploying my first incredibly wonderful program would be
better
than that, but ya’ll know what I’m saying.) :slight_smile:

Samantha

http://www.babygeek.org/

“Beware when the great God lets loose a thinker on this planet. Then all
things are at risk.”
–Ralph Waldo Emerson

On 2/17/07, SonOfLilit [email protected] wrote:

Personally, I’m going to edit my conversations with Semantha a bit and
publish them since they are such a great learning resource in my
opinion (they just contain far too much personal information as-is, so
major editing is required - I don’t think many Ruby newbies are
interested in Jewish prayers :slight_smile: )

Aur

HEYYYYYYYYYYYYY. (just kidding)

So, am I a Ruby Jew-bie, as opposed to just a Ruby N.??

I think you’ve sparked a great conversation and am looking forward to
seeing
what comes forth from discussions between newbies and mentors.


Samantha

http://www.babygeek.org/

“Beware when the great God lets loose a thinker on this planet. Then all
things are at risk.”
–Ralph Waldo Emerson

Ruben M. wrote:

That’s my point: for specific questions a newbie should exhaust as many
possibilities of solving a problem before asking to a mentor. However,
for the learning process of any people, a good technique is to learn
from other people’s problems, hence the communities. I believe in
collaborative learning.

learning process. As a shy newbie myself, I can say I’ve learnt a lot if
things -that are not in any manual or book- by searching and posting,
and more important, by looking at other people’s learning processes.

Ruben.

Ruben,

You make a very interesting point, and in doing so, expose a deficiency
in my thinking. I did not consider the different categories of learning
with respect to software development. If you will indulge me in a rather
long post, I would like to explore some ideas. I hope this isn’t all
stating the obvious! Let’s start by listing some of the many things that
we can learn about in the field of software development, in no
particular order:

  • Object-oriented concepts
  • Problem definition and analysis
  • Software design
  • Software implementation (coding)
  • Testing (e.g. unit, integration, system)
  • Software development process (e.g. agile, formal)
  • Documentation
  • Configuration management
  • A specific programming language
  • A specific operating system or environment

Many books have been written on each of the above topics. Clearly there
is a lot to learn. But what is the appropriate way to learn each of
these things? This is a critical question. Here are some of the ways of
learning to develop software that I can think of:

  • Formal education
  • Reading books, articles, forums, tutorials
  • Doing it (designing, implementing, testing, and so on)
  • Asking questions
  • Reading existing code written by experts
  • Working with an experienced person (mentorship)
  • (Advanced) Reading poor quality code; learning what not to do

I’d like to venture a strong opinion here: there is no effective way to
learn abstract concepts such as analysis and design in a purely
theoretical manner.

First of all, a person has to have the innate capability to abstract; I
don’t believe it can be taught. This is not to say that people incapable
of abstract thinking are unintelligent, only that they will never be
able to analyze and design software well, if at all.

Secondly, a person has to be able to solve problems. This requires a
combination of logical and intuitive thinking. I think problem solving
techniques can be taught, unlike the ability to abstract, but there
still needs to be a certain minimum level of logical reasoning to build
on.

Thirdly, a person needs to work with a good or great software developer,
preferably in an on the job capacity, and learn by watching the
“master”, trying things out, making mistakes, and learning from them.
This is really an apprenticeship. For two great books on this topic, see
[1] and [2] below. I am sure that many people on this forum will have
read [2], which is co-authored by Dave T. of Pickaxe fame. Not
everybody will have this opportunity, which is why the online mentorship
concept in this thread is important.

The bottom line is that… I’m getting tired and need to wrap this up :slight_smile:
The bottom line is that one progresses from novice to expert in an
iterative way, using multiple learning techniques. Of these, I think the
most important are:

  • To be “apprenticed” to a “master”.
  • To paraphrase Miyamoto Mushashi, to practice, practice, practice -
    write as much software as you can.
  • Read as much good stuff as you can get your hands on.

Thanks to those who read this far :slight_smile:

“I hear and I forget. I see and I remember. I do and I understand.” -
Confucius
“This can only be understood by practice” - Miyamoto Musashi
“In theory, there is no difference between theory and practice; in
practice, there is.” - Unattributed
“Good judgment comes from experience; experience comes from bad
judgment” - Unattributed


[1] Software Craftsmanship: The New Imperative, Pete McBreen
(http://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862)
[2] The Pragmatic Programmer: From Journeyman to Master, Andrew H. and
Dave T.
(http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=pd_bxgy_b_text_b/102-2741119-8695365).

We have a /temporary/ home:

http://rubymentor.rubyforge.org/wiki/wiki.pl?HomePage

Please take a moment to make a minor contribution to the
presentativeness of this page :slight_smile:

Also, coordination moves to the wiki (also I’d gladly help with
whatever, so you might as well mail me instead).

Aur S.