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.
Try the (unofficial) Python tutorial wiki instead of the official Python
tutorial. It has many improvements for newbies:
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
[1]: http://diveintopython.org/
Lee
--
Lee McFadden
blog: http://www.splee.co.uk
work: http://fireflisystems.com
skype: fireflisystems
> 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>
(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!
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)
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
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
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
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
> 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>