RE: META: Recommendations for a 13 year old transhumanist

Billy Brown (bbrown@conemsco.com)
Sat, 8 May 1999 10:56:53 -0500

Chandra Patel wrote:
> I'm also interested in sharpening my programming skills which have been
> isolated mainly to BASIC and QBASIC at this point. What computer
languages
> are best for beginning my trek toward Coding Deity status? There seem to
be
> lots of options and my teachers and friends have no ideas about where to
> start.

That depends to some extent on what kinds of programming you want to end up doing. It also tends to be a religious issue, so you'll probably seem some violently different opinions from others on the list.

I'd suggest starting with a more advanced PC-based development environment. If you want to take it slow, try learning to use Microsoft Access. It is a very user-friendly database program, and you can learn a lot about tables, queries, SQL and form design by playing with the tools it gives you. It also lets you write Visual Basic code, which makes it a relatively painless way to learn about event-driven programming. Eventually, however, you will reach the point where all of the fancy wizards and interface tools seem more of a hindrance than a help - at that point you'll want to move on to the next step.

If you already know something about databases, you may want to jump straight into Visual Basic programming. VB is a surprisingly powerful tool, and it makes a pretty good introduction to most types of modern application programming. I'd start with learning to design forms (using the data control for data access), then move on to class modules, ADO, SQL, web programming and ActiveX components (in pretty much that order).

After that, it all depends on what kind of programming you are interested in. No matter what you do you'll want to become moderately familiar with C++ and at least one major database program (Oracle, SQL Server or Sybase). If you want to write device drivers, system services, graphics software or other low-level/highly-optimized code, you'll want to become a real expert in C++ and assembly language. If you want to program on Unix machines, you'll want to learn Perl and/or C++. If you want to write business applications, you'll need a little C++ and a lot of inside knowledge about database programs and component-based development. If you want to do web programming, ask me again next year - the XML field is evolving so fast right now that there is no way to tell how things are going to work out.

BTW, I would also suggest investing some effort in learning more general skills, like how to design complex applications and how to plan a software development project. Steve McConnell has written several excellent books on these topics (Code Complete, Rapid Development and Software Project Survival Guide). Ideally, you want to reach the point where you can just pick up a new language on the fly whenever you need to, and you decide which one to use on a project-by-project basis.

If you have more questions, or run into problems learning just about anything, feel free to e-mail me.

Billy Brown, MCSE+I
bbrown@conemsco.com