What's My Learning Path?

84 views
Skip to first unread message

noNet

unread,
Jan 4, 2007, 3:35:15 AM1/4/07
to turbo...@googlegroups.com

I am trying to chart my learning path from not knowing anything except how to
run a computer to using TurboGears in building my own database based
eCommerce
Site on the web.

However in trying to figure out the shortest and logical path to my goal, I
keep running
into the Chicken and the Egg problem. I start to look at one thing, and then
it seems I
should study something else first and around the table I go. I am looking
for the logical
learning path so that what I am learning builds upon itself as I go.

So, I am going to tell you specifically where I am at, and ask you to tell
me what I need
to learn, and in what logical order I should do it, to get to the point of
being able to
accomplish my goal from here?

I have moved over to Mandriva Linux (as I want to work from a linux platform
and server)
and now know a little bit of linux, and I am 3/4 of the way through my first
Python Tutorial.
What should be the lineup of things I should study and acquire skills in be?

I know I am probably asking quite a lot, and I really appreciate your
expertise and time.
Thanks.

--
View this message in context: http://www.nabble.com/What%27s-My-Learning-Path--tf2918323.html#a8155672
Sent from the Turbogears General mailing list archive at Nabble.com.

Paul Johnston

unread,
Jan 4, 2007, 4:12:16 AM1/4/07
to turbo...@googlegroups.com
Hi,

Just take it one step at a time. The TG tutorial takes you through enough basics to get going. You can then choose the bits to focus on, depending on what you application needs.

Paul

Christopher Arndt

unread,
Jan 4, 2007, 4:57:53 AM1/4/07
to turbo...@googlegroups.com
1. Learn to use the command line (the rest of Linux is irrelevant or
very similar to Windows)
2. Learn to use the interactive Python interpreter (use the Python
tutorial for that)
2.a Learn what Python modules and packages are (see also the Python
tutorial for that)

Try the (unofficial) Python tutorial wiki instead of the official Python
tutorial. It has many improvements for newbies:

http://pytut.infogami.com/

3. Learn basic HTML
4. Learn what a template engine is

(most template system are similar, but for TG you'll be using Kid, but
Kid's documentation has no newbie-friendly tutorial, so I suggest
reading a quick tutorial for some other template language, just to get
an idea. You could try the Smarty crashcourse

http://smarty.php.net/crashcourse.php

Yes, this is about PHP, but the general principles are the same and it's
always nice to braoded one's view.

5. Read about object orientation and the MVC pattern at Wikipedia (just
read until it gets too confusing)
6. Read up on Python iterators and decorators

- http://www.python.org/doc/2.2.3/whatsnew/node4.html
- http://www.ddj.com/184406073

Again, only skim these, until it gets too scary.

7. Now you should be able to approach TurboGears and fully understand
the tutorial and further documentation.


If that sounds like a lot, that's because it is! TurboGears flexibility
and sometimes bleeding edge technology unfortunately means that there
are a lot of concepts that you should know about. Fortunately these are
all concepts every web and Python developer should know about ;-)

Of course you can just go ahead and start with the TurboGears tutorial
but I suspect it will just leave you puzzled over too many things and
will be a frustrating experience, because you will lack the background
knowledge to recover from simple mistakes on your own. One step at a time!

HTH, Chris

Lee McFadden

unread,
Jan 4, 2007, 5:22:25 AM1/4/07
to turbo...@googlegroups.com
In addition to everything that Chris pointed, I would suggest running
through the Dive into Python[1] book. It may take a while, but it's
an excellent overview of the Python language.

[1]: http://diveintopython.org/

Lee
--
Lee McFadden

blog: http://www.splee.co.uk
work: http://fireflisystems.com
skype: fireflisystems

Jorge Godoy

unread,
Jan 4, 2007, 5:49:11 AM1/4/07
to turbo...@googlegroups.com
noNet <wild...@plains.net> writes:

> I am trying to chart my learning path from not knowing anything except how to
> run a computer to using TurboGears in building my own database based
> eCommerce Site on the web.

It's a huge path. If it was a toy application it would be much easier.

You'll need to learn:

- Some good editor

Forget about word processors. You won't be writing reports
but you'll be writing code. Choose a good one. Mastering a
good expansible editor might take you years so don't worry
learning everything about it. With some editors you never
will learn everything that it is capable of. Since you're on
Linux I recommend Emacs or VIM.... I use the first, and
thought it fitted my brain better. Both are the most common
editors and exists for dozens of OSs, including Windows, so
if you know one of them (or both) you'll be OK in, I dare
saying, each and every OS that you might use.

- Programming Logic and Terminology

You'll need to learn how to code. There's no way to scape
from it.

- Some RDBMS (relational database management server) -- I suggest
PostgreSQL due to eCommerce's requirements, but you'll find hosting
easier if you use MySQL (please, see the details on each type if you
choose the last one and take a good look at it's gotchas)

Without that you won't be able to correctly plan and implement
a model with all of its relationships. You can have something
that won't handle heavy load or will break in one or more of
several ways if you don't know what you're doing.

Of course, refactoring is possible, but when you have
thousands or millions of records guaranteeing their integrity
while manually altering their underlying structure is
something you really don't want to worry with...

- HTML / XHTML / XML

Forget about templating systems if you don't understand the
basics of how the web works and where it is going to (it is
mostly HTML but is going towards XML and is starting a
transition state where it is more XML like with XHTML).

- Python

Your code will mature with time. You'll never code the best
code at first attempt -- maybe never... -- but you'll see how
to optimize things and how to make your work easier with
time. Python is easy to start with, in one afternoon you'll
be able to learn the basics with one of the several tutorials
and books linked from the Python website...

- Some templating system

I suggest you start with Genshi. You'll learn what TG will be
using as default "soon" and will benefit a lot from your
studies in the XML area. Together with what you learnt from
Python you'll be able to replace the code you wrote to learn
HTML / XHTML with a template and insert dynamic information
there. Here you'll already be able to create websites on your
own. Resist the temptation for a while.

- More Python

You didn't thought you'd have to learn everything, right?
Take a look at more advanced stuff: decorators and generators,
mainly. Studying some design patterns would also be
interesting.

- Learn TG

That's your goal.


Of course, you'll have to learn several things as well: modeling a database
with some ER drawing tool, modeling your program using UML (use cases,
classes, etc.) and more. If you have a small application it isn't all
needed, but it helps a lot growing and fixing bugs after a while without
touching that code.

> However in trying to figure out the shortest and logical path to my goal, I
> keep running into the Chicken and the Egg problem. I start to look at one
> thing, and then it seems I should study something else first and around the
> table I go. I am looking for the logical learning path so that what I am
> learning builds upon itself as I go.

If you really can't go on with what you're learning then you're missing some
requisites for that or are trying to give a big jump. ;-) Learn, try it out,
learn more, try it out, learn more... If you don't write code you won't learn
how to code.

> So, I am going to tell you specifically where I am at, and ask you to tell
> me what I need to learn, and in what logical order I should do it, to get to
> the point of being able to accomplish my goal from here?

If you're a complete newbie it will take you a long time to start with an
eCommerce website and have a good solution. If you're willing to play with
your family and friends it will be easier...


--
Jorge Godoy <jgo...@gmail.com>

Steve Bergman

unread,
Jan 4, 2007, 9:27:07 AM1/4/07
to TurboGears
Just a note. Your newness to programming in general is actually a
strength. One of the hard things about learning a new language (say,
Python) when you already know another one (say, Perl) , is that one
tends to want to write Perl code in Python. i.e. one writes the
program the same way as they would in Perl, but using Python keywords
and syntax instead of Perl keywords and syntax. It works. But it's
not really Python. Much of learning a new language is *unlearning*
what you are used to. Something you don't have to worry about. Python
is an excellent first language and will teach you good programming
practices.

(I've heard of one professor who says that a student who learns BASIC
as a first language is ruined for life! Perhaps that's why I'm not
better than I am!) ;-)

BTW, I see that "Dive Into Python" has been recommended. I don't have
it, but by all accounts I have heard, it is excellent, and available
on-line and Bruce Eckels' site. My own first Python book was "Learning
Python" by Lutz and Ascher, which is a pretty gentle introduction.

I'm pretty sure I've seen at least one book called "Python: Learn To
Program" or some such. I'm not really familiar with it, but it is
supposed to be for people who are learning to program for the first
time, with Python as the language.

Also, be advised that there is a mailing list called python-tutor
which is really good when you are stumped, or have actually
accomplished a task but think that the way you did it looks ugly.

Have fun!

Michael Steinfeld

unread,
Jan 4, 2007, 11:18:12 AM1/4/07
to turbo...@googlegroups.com
Since everybody who replied has done a wonderful job with showing you how to build a foundation and then build on that, I'll offer some books that I find irreplaceable. I have quite an extensive library of computer books, some I find great and some I found awful. Listed below are the books I highly recommend.


Python Books
-Beginning Python From Novice to Professional, by Magnus Lie Hetland, Apress
-Core Python, by Wesley Chun
-Dive into Python is free on the web

I have both Dive into Python and Beginning Python FNTP, I really found Beginning Python easier to understand when I was first learning Python and then moved on to Core Python and DIP.

Database/SQL
-MySQL & mSQL, By Randy Yaeger,George Reese & Tim King, O'reilly
I have had this book for years, it is old, probably published in 1999 but it really gives the clearest example of how to model your databases and relationships.

Web Development
-Plenty of XHTML/HTML tutorials out there, no need for a book, just view source on some websites and learn
- DOM Scripting, by Jeremy Keith, Friendsof, Apress
- CSS Mastery by Budd, Moll, Collison - Friendsof, Apress
- The one and only TurboGears Book, By Mark Ramm, Kevin Dangoor - Pearson

In regards to MVC you can find a lot references on the web, but where I received my understanding of MVC design was from the Agile Programming With Ruby On Rails. This is a great book, though you may get confused with ruby idioms vs python's clean and intuitive syntax I suggest that you don't indulge into the Ruby Lang so much as you read about the MVC paradigm. You can always read about Ruby later if that is what you fancy.

Anyhow,
The books above have been my arsenal along with many others, it never hurts learning and understanding you operating environment either, so you may want to study some linux material. I come from a Sys Admin background like a lot of us have and with that experience
it has enhanced my ability to learn programming.

Hope this helps!

--
-mike

Karl Guertin

unread,
Jan 4, 2007, 11:47:20 AM1/4/07
to turbo...@googlegroups.com
On 1/4/07, Michael Steinfeld <mikei...@gmail.com> wrote:
> -Plenty of XHTML/HTML tutorials out there, no need for a book, just view
> source on some websites and learn

Ensure that your tutorial is teaching semantics, which almost all do
these days. I did a quick search and [1] is the best tutorial I ran
across while [2] is a more direct explanation of what semantic markup
means and why it's worth doing.

[1] http://www.howtocreate.co.uk/tutorials/html
[2] http://brainstormsandraves.com/articles/semantics/structure/

Viewing source on web sites is useful but relatively few major sites
have top quality markup. I'm not necessarily a standardista, but if
you're learning in this day and age, you might as well learn the
correct way to do things.

> - DOM Scripting, by Jeremy Keith, Friendsof, Apress

I learned the hard way: reading the seamonkey frontend supplemented by
the old core javascript reference and Crockford's writings.

> - CSS Mastery by Budd, Moll, Collison - Friendsof, Apress

No complaints against CSS Mastery. More design-oriented approaches are:

The Zen of CSS Design - Shea, Holzschlag
Transcending CSS - Clarke, Shea, Holzschlag (followup to the above)

Jorge Vargas

unread,
Jan 4, 2007, 2:43:10 PM1/4/07
to turbo...@googlegroups.com
On 1/4/07, noNet <wild...@plains.net> wrote:
>
>
> I am trying to chart my learning path from not knowing anything except how to
> run a computer to using TurboGears in building my own database based
> eCommerce
> Site on the web.

great replies on this thread and even though your a bit far from
actually getting into TG stuff I'll recommend the following for that
part

first learn some of the subcomponent as standalone, this is important
so you will actually know what each part does, but don't go to far
since that will defeat the purpose of using TG.

learn
SQLObject and/or SQLalchemy
then go to CherryPy
and then write some kid templates
after that learn how a quickstart project is structure and do a
"putting it all together" app
after that go into more complex things like validators and widgets

iain duncan

unread,
Jan 4, 2007, 3:08:22 PM1/4/07
to turbo...@googlegroups.com
This has been a really good thread, I think it would be cool to gather
all these suggestions on a the doc wiki somehow.

My two cents to add to the otherwise excellent suggestions:

Books I love:
- HTML & XHTML, the definitive guide ( O'reilly )
- Apache, the definitive guide ( O'Reilly )
- Javascript, The Complete Reference ( I'm sure the O'Reilly is good too
though )
- Cascading Style Sheets, the definitive guide ( O'Reilly )
- A Practical Guide to Linux: Commands, Editors, and Shell Programming,
by Mark Sobel
- Beginning Python
- Core Python

- also, get some good books on coding practice and OO design.

To the good suggestions I would add that it is worth setting up a linux
install at home at learning how to run and code on a local development
box. This will make learning how to deploy and test gears much easier
( which is non-trivial for the newbie ). The Sobel book I recommend is a
great way to get up and running on the command line, editors ( vim &
emacs ), basic shell scripting, regular expressions, etc. All tools that
are invaluable to the serious web developer.

If I could go back in time to talk to myself, I would tell myself not to
just learn code from sites but start with a proper book on html/xhtml,
css, and javascript. There are waaay too many out of date or plain bad
examples and tutorials on the net. These are your tools, it's worth
spending the money on the best current books. I would also tell myself
to really learn regular expressions, my editor ( Vim for me
personally ), and bash commands. Being able to properly combine and
integrate those three will save you countless hours of work and make you
vastly more efficient as a coder.

Hope that helps.
Iain

noNet

unread,
Jan 4, 2007, 3:37:46 PM1/4/07
to turbo...@googlegroups.com

WOW! These replies are really great and enlightening! Thanks!

I am busy organizing and integrating them together into a path of
skills to acquire. And I want to especially thank you for pointing me
at the resources that go with each step. This is all gold. Rather
than working blind, it is really good to have the professional
opinions saying go here, study this, then go....

You know, a road map of prerequisites coordinated with the
resources to get there from the beginning would seem to
me to be a great way to build a bridge for all those wanting
to steer toward your position, as everyone, despite their
skill set, could quickly see where they are at, and what
to go after next.
--
View this message in context: http://www.nabble.com/What%27s-My-Learning-Path--tf2918323.html#a8166998

Adam Jones

unread,
Jan 4, 2007, 4:08:54 PM1/4/07
to TurboGears

iain duncan wrote:
<snip>

> If I could go back in time to talk to myself, I would tell myself not to
> just learn code from sites but start with a proper book on html/xhtml,
> css, and javascript. There are waaay too many out of date or plain bad
> examples and tutorials on the net. These are your tools, it's worth
> spending the money on the best current books. I would also tell myself
> to really learn regular expressions, my editor ( Vim for me
> personally ), and bash commands. Being able to properly combine and
> integrate those three will save you countless hours of work and make you
> vastly more efficient as a coder.

I will second that ... strongly. Just like any other discipline being
ignorant of your tools is very close to being ignorant period. It is
well worth it to spend an hour a week per tool to learn something new.
I have yet to spend any amount of time learning something new or trying
to understand something better that did not repay itself with three
months, if not sooner.

-Adam

Jorge Godoy

unread,
Jan 4, 2007, 5:24:54 PM1/4/07
to turbo...@googlegroups.com
noNet <wild...@plains.net> writes:

> You know, a road map of prerequisites coordinated with the resources to get
> there from the beginning would seem to me to be a great way to build a
> bridge for all those wanting to steer toward your position, as everyone,
> despite their skill set, could quickly see where they are at, and what to go
> after next.

It isn't a problem on free software. :-) You can see the code, you can even
use it for free on your own projects. For commercial software it is more a
matter of timing and innovation than anything else (of course, having the
client counts much as well).

There was no secret, no deep magic, no nothing on this thread, just help for
someone beginning on the game. I wouldn't imagine anyone refusing this kind
of help (unless he's a beginner as well...).

--
Jorge Godoy <jgo...@gmail.com>

Reply all
Reply to author
Forward
0 new messages