Need some basics

Peter Hansen peter at engcorp.com
Mon Mar 10 19:32:47 EST 2003


"L. B." wrote:
> 
> I'm quite a newbie in programming and i'm soon getting tired of the VB
> crap (and that's why i'm learning Python)... i'd like, someday, to
> define myself a programmer, but i feel i'm missing some valuable
> basics of computer science: algorithms, data-structures, software
> engeenering... and when thinking about making even a simple game (like
> tic-tac-toe) i found myself screaming just for thinking how it should
> be done.
> 
> So here is the question... assuming that i'm too old (26) for going
> back to college and study something else that Politics and Economics
> which doesn't seem to be anything computer-related ;-) which book
> should i study, which books shouldn't miss from a serious programmer's
> bookshelf?

My very serious suggestion to you is to learn about some of the
principles behind Extreme Programming (XP) (many references to be found
via Google) and Test-Driven Development (TDD) as defined by Kent Beck
(likely many more, so I won't bother providing any unless you get
stuck).  You don't need to buy a book to learn everything about them,
though there are many available.

These approaches appear to be, for experienced programmers, highly
effective at directing the result towards well-designed, robust,
high quality code, with relatively little mental overhead required.
It's unproven, unfortunately, how effective they might be with novice
programmers, but I am personally convinced that their potential value 
for such programmers is even greater than it is for the more senior
types.

In a nutshell, XP can make sure you stay focused on achievable, 
valuable results, while TDD can lead to modular, highly tested
code without a lot of wasted time spent debugging or on unnecessary
gloss.

While this won't directly help you learn about data structures or
algorithms, it should ensure that the limited time you'll have
available to do that will be focused in the right areas, and give
you immediate payback.  To a large extent, it might give you direct
input as to *which* of the many such areas you need to learn about,
and in other cases it will show you that you don't need to learn
much about it at all.

More importantly, it will ensure that if you attempt to use your
still-developing programming skills for practical purposes, you will
achieve the most for the least effort put in.  Any other approach
will, I believe, be much less effective.

Just a thought from someone who wasted too much of his 20+ year 
programming career with less focused approaches...

-Peter

P.S.: After choosing the above approaches using Python is, I believe, 
the second most valuable choice you could make: good thinking! :-)




More information about the Python-list mailing list