Learn To Program NOW!

Once you have the basics down, then what?

Last updated: 2006-12-09 00:00:00

Here are a few of the broad topics you are likely to have to learn about sooner or later, you might as well make a checklist or something and start gathering info about them.

Programming Basics

Learn a language - an important basic

Well, you have to more or less start here. There are a lot of languages you can learn, and any of the "common" ones are probably the best place to start. Personally, I recommend C#, VB.NET, or Java - but you can start with almost any langauge.

So you have started learning a language... what kinda stuff do I need to learn?

There are numerous basic things to learn, such as: langauge keywords, variable, scoping, loops, conditional blocks, operators, and so on... any good "Learn How to Program XYZ in 24 Hours" type of book covers these things.

Relational database programming

Many types of applications use databases to store the information used or manipulated by the application. If you do anything with business programming, you'll probably be working with SQL in a relational database management system. Common commercial database products inlude Microsoft Access, Microsoft Sql Server, Oracle, and MySql. There are numerous others as well, but those are the products you are most likely to come upon. Modern relational databases all use some version of the Sql language to do operations on the data in the database - Inserting, Updating and Deleting data are typical operations, as well as Selecting records to view.

Additionally, you need to learn how your chosen language interacts with the database. There have been several standards devised by the industry to try to make it straightforward to work with a database from an application. You'll see names such as JDBC, ODBC, OLEDB, and so on. Mircosoft provides ADO and ADO.NET as the programming interface for databases, and other vendors provide their own mechanisms.

Eventually you will also need to learn about designing and creating a database - the tables, columns, indexes, primary keys, foreign keys, and so on are the basic elements that you work with. There are also important rules about how to best design the structure of the data. One of the most important are the rules of normalization, which deal with determining a good design of tables and relationships to keep from storing redundant data and allowing easy retrieval of data, among other things.

Code Complete - Learn about programming standards and practices

There are few things you'll learn beyond the basics of the language itself that will be as important as learning good habits and practices related to writing code. "Code Complete" is the name of a book by Steven McConnell - and I highly recommend getting and reading that book. It is in its second revision.

XML/XSLT

We'll get into this later

File I/O

Reading and writing to files on disk is something almost every program does at some point

OOP, OOD, OOA - Object Oriented Programming, Design, Analysis

This is a complex subject. First of all, not all languages provide mechanisms for OOP. However, if the language you are learning does, you'll want to learn not only the basics of OOP, but also the ideas and principles behind OOP so that you can take full advantage of this powerful concept.

Refactoring

The ideas, principles, and practices of refactoring code are very useful to my day to day work. Without Refactoring and Test Driven Development I am certain I'd be a great deal less productive. As far as I know, refactoring was introduced by Martin Fowler in a book named "Refactoring", and is the improvement of existing code without changing the external behavior the code.

Unit testing, and Test Driven Development

Unit testing is the practice of testing code at the function level - that is, at about the smallest unit of testing that can be done. Test Driven development is a practice where code is designed and written by first writing a Unit test and then writing the code that successfully fulfills the test.

Data Concurrency

When you start working with applications that have more than one user accessing data at the same time, sooner or later one user will change data that another user is trying to change at the same time - and this is the issue of concurrency. I won't go into details here, but basically an application has to deal with this to prevent the accidental or unintentionally corrupution or loss of data.

Remoting / Distributed applications / N-Tier concepts

It isn't uncommon for modern business applications to be designed to operate on a network with the various part of the application being installed on different machines.

Security

This is a very important consideration in todays applications, particularly for applications that are exposed to the internet.

Design Patterns

You may hear a lot about design patterns as you start reading more advanced topics about programming. A Design Pattern is essentially a description of a proven solution to a common programming problem. I'll try to go into further details later.

GUI - Graphical User Interface

As a beginning programmer you will likely be writing programs with a "Windows" user interface, or GUI as it is often known. It's easy to put together simple user interfaces, but there are numerous controls or widgets you will need to learn to use, along with learning the appropriate controls to use for various common tasks.