October, 2003

Design Patterns, Basic HTML

Design Patterns

We have two hot skills of the month for October. The first one is more advanced; it’s design patterns. The second is basic HTML skills (for those who are newer to IT). Have fun!

Design Patterns
“In software development, a pattern (or design pattern) is a written document that describes a general solution to a design problem that recurs repeatedly in many projects. Software designers adapt the pattern solution to their specific project. Patterns use a formal approach to describing a design problem, its proposed solution, and any other factors that might affect the problem or the solution. A successful pattern should have established itself as leading to a good solution in three previous projects or situations.
In object-oriented programming, a pattern can contain the description of certain objects and object classes to be used, along with their attributes and dependencies, and the general approach to how to solve the problem. Often, programmers can use more than one pattern to address a specific problem. A collection of patterns is called a pattern framework.

The design patterns methodology has become increasingly popular among software developers since the early 1990's, due largely to some groundbreaking presentations and books on the subject released to the object-oriented world at trade shows and conventions, notably OOPSLA '94 (the Object-Oriented Programming Systems, Languages, and Applications conference). A book, Design Patterns: Elements of Reusable Object-Oriented Software, by E. Gamma, R. Helm, R. Johnson, and J. Vlissides (known in the industry as the Gang of Four, or GOF) is generally credited with sparking the growing interest in design patterns for use in object-oriented programming. The book contains twenty-three patterns, each with a solution for a recurring problem faced in object-oriented design.

Design patterns include the following types of information:

  • Name that describes the pattern
  • Problem to be solved by the pattern
  • Context, or settings, in which the problem occurs
  • Forces that could influence the problem or its solution
  • Solution proposed to the problem
  • Context for the solution
  • Rationale behind the solution (examples and stories of past successes or failures often go here)
  • Known uses and related patterns
  • Author and date information
  • References and keywords used or searching
  • Sample code related to the solution, if it helps

The concept of using common patterns to solve other, similar problems is said to have originated in the field of building design and architecture and the published work of architect Christopher Alexander. One of his books is largely credited with this concept, A Pattern Language: Towns, Buildings, Construction, Oxford University Press, 1977.” – from whatis.com

See also: http://hbsworkingknowledge.hbs.edu/pubitem.jhtml?id=3313&sid=0&pid=0&t=bizhistory (patterns have been around since at least the 1600's)

What this means to the newcomer is that there are accepted methods of approaching certain design problems. Instead of having to re-invent the wheel for every project, it was found that certain situations lend themselves to an approach where the same steps can be followed every time, for a consistently successful approach. Design patterns are most commonly used in J2EE, or object oriented programming (OOP) or object-oriented design (OOD). Still there are design patterns to nearly every programming approach or industry. In fact, one might argue that jobfairy.com is itself a design pattern for job search and survival. Below are some links to training, further explanation of design patterns, and books you may find of interest.

Ah, good ol’ plain vanilla HTML. This is short for Hyper Text Markup Language. Start here if you know nothing about HTML. http://www.htmlgoodies.com/primers/basics.html. For those who are completely in the dark, HTML encompasses the set of commands that cause text, pictures, and a whole lot more to display in your web browser. The best way to learn about it is not necessarily to read about it. The best way is to do it. In fact, this is how jobfairy.com got started. I was giving a presentation to some of my fellow students on how easy it was to start your own web site online, and I was absolutely swamped with questions on how to do that and about how to learn all other kinds of technical skills. Therefore, I took the plunge. I'm glad I did, and you will be too. Basic HTML fluency is more or less expected of the techie these days. Soon it will be expected of the average office worker. Therefore, it makes sense to get good now. You can start with Microsoft Front Page, Macromedia DreamWeaver, or a freeware editor like Max’s HTML Beauty ++ (just make sure you turn off the racy splash screen with the partially dressed Carmen Electra’s before you use it at work. Not that I would know from personal experience or anything.) On the other hand, if you don't have any of these tools, you can learn how to build pages online, for free! That’s right, you can go to http://geocities.yahoo.com/ps/learn2/HowItWorks4_Free.html and sign up for a free account right now. They have an online page builder, which works pretty well, templates to help you get started, and an easy to use interface. That’s how jobfairy.com got started – as a free GeoCities site. Take the tour at http://help.yahoo.com/help/us/geo/tour/tour-01.html and see what you think. This will get you hands on, working with it, and familiar with how and where the code goes. Once you have an idea of what to do with it, you can use tools like Front Page or DreamWeaver to make pages and upload them. By the time you've outgrown what GeoCities can do for you, you'll be ready for our next article on more advanced HTML. We can't wait.