Classnotes | JAVA01 | RecentChanges | Preferences As we saw in the previous example, in order to think like a programmer, one must learn to see even the most simple and seemingly trivial tasks in terms of a series of fundamental steps.
Details: Special attention must be paid to the details of a given problem. What is the desired goal? What possible things do we want as input? What possible things could we get (whether we want them or not) as input? What are each of the steps involved in obtaining that goal or processing that input?
Assumptions: What assumptions can we make? For most computer languages, the assumptions are that the steps we lay out must be very basic and fundamental. We cannot assume that there will be any pre-existing knowledge of the problem we're trying to solve.
All roads lead to Mount Fuji
One of the interesting things about computer programming that typically does not apply to other engineering-type fields is that programming requires the programmer to be both creative and logical. There is rarely just one solution to given problem. Instead, there are many (hundreds, thousands, millions, infinite). Some solutions may be better than others, but all are valid.
There are two different modalities when designing a program, both have their merit and use. Some languages require the use of one or the other:
In top-down programming, in order to solve a problem with a computer program, the programmer must look at the big picture, decide what needs to be done, and break up the problem into smaller bits and peices. Gives a program a logical, hierarchical structure. Large routines are broken down into smaller, modular routines.
Bottom-up programming is the opposite of top-down programming. It refers to a style of programming where an application is constructed starting with existing primitives of the programming language, and constructing gradually more and more complicated features, until the all of the application has been written.
Getting real-world experience and building a resume
One of the best way to gain real-world programming experience is to assist on an Open Source or Free Software project.
Take a look around sites like SourceForge? and check their "Project Help Wanted" pages (http://sourceforge.net/people/). Find a project that interests you, take a look at the source code, lurk around the mailing lists, and volunteer any help you can.
The nice thing about helping out in a project like these (in addition to the good feeling you get from helping) is that non-trivial assistance in a project looks very good on a resume. I can honestly say the jobs I've worked at were all due to my experience in running an Open-Source project.
If you would like to help out with a very friendly project, then I would like to recommend mine: http://www.tux4kids.org/