Can a beginning programmer use Delphi as a starting point?

I'm totally new to programming and I have a couple of questions I'd like to ask: Do you believe a beginning programmer can use Delphi as a starting point, and do you know of a good book or books to go with it?

Like you, I started from ground-zero: no formal degree in computer science. I was a biology major in college! But when I decided to start programming, I went about educating myself on the basic tenets of programming itself, in addition to learning a language. So when I encounter people who wish to follow this path, I do my best to steer them in the right direction.

Beginners can certainly use Delphi as a starting point, and the nice thing about it is that it has enough contained within itself to provide you with the capability to perform incredibly complex feats of programming as you become more adept. As far as books are concerned, there are a ton of them out there. Personally, I like The Delphi 2 Programming Explorer by Jeff Duntemann, et al, which I reviewed here. The book will take you step-by-step through the language so you can get familiar with programming concepts as well as good, solid programming techniques.

And do you believe self-teaching can work in the field of programming?

I find myself speaking on this question quite often. Yes, I believe self-teaching can work in the field of programming because I did just that. However, it will require an almost obsessive desire to gather information and educate yourself. Your best bet to accelerate this process is to take a couple of beginning programming courses at a local community college.

What will this afford you? For starters, a course will teach you about basic Structured Programming; that is, the organization of code and functions within the code to make it intelligible; not only to you, but to others as well. You'll learn about standard notational practices that are accepted throughout the industry, which means that anyone can read your code. I'm not saying you become really anal-retentive about putting everything in your code in exactly the right place in the editor; rather, knowing and practicing structured programming provides you with a base to communicate your concepts to other programmers. Besides, having well-organized code will aid in code maintenance down the road. There are a lot of folks out there - even several well-known "experts" - who don't know a thing about structured programming (or if they do, they fail to practice it). Thus, their code is typically rife with inefficiency and is also incredibly difficult to read.

In addition to course, the Web is full of useful reference sites (like mine <G>) that can aid you in learning how to program.

Are there any other tips you can give that will facilitate my learning?

Mind you, this is totally from personal experience, but here goes:

  • I've found that the best way to learn a language is to learn it by building a project. The most basic project is the "Hello, World" type of project where you make a program display the Hello World message in response to some interaction. But that's just practice. What I like to do is solve some business problem, like creating some database application to store names and addresses. While certainly much more complex than a simple messaging application, I think I learn a lot better by building the pieces of a full-blown application because I learn not only how to code, but how to make the disparate modules interact with each other.
  • Read, read, read. When I'm learning a new language, I search the Web, and I spend a lot of time reading books and reference manuals.
  • Work your problems and make sure you ask a lot of questions. A lot of people are intimidated by the so-called gurus that lurk the industry. But remember, they started out as beginning programmers as well.

Oh well, that's all I can think of right now. Maybe I'll add more later.