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.
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.
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:
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
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
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!
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.
noNet <wildc...@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...
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.
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.
On 1/4/07, Michael Steinfeld <mikeisgr...@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.
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.
> 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
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.
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 Sent from the Turbogears General mailing list archive at Nabble.com.
> 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.
noNet <wildc...@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...).