"Demo Scene" Coding Vs. "Real" Coding: Deep within the underground of computing culture is what's known as the "demo scene", a loose community of computer programmers who mainly program what's known as a "demo", essentially a tiny program which functions as an electronic ad or greeting card. Demos are often used to advertise BBSes, or to give greetings from/to various other underground groups (cracker groups, pirate groups, etc.) Demo programmers are very concerned with how their demos look and sound. These are the focal points of a good demo program. After all, any beginning programmer can produce a program that simply displays text for greeting the local cracker groups; Demo scene programmers are marked by their ability to produce eye-candy effects and catchy music with compact program code. Although the demo scene is an undeniable part of the computer underground, and there is no doubt that the coders within this culture can do some neat tricks with a few lines of code, it is questionable whether they are "real" programmers or simply tricksters playing around with toys. The fact is that most demo programming relies on fairly simple techniques to produce their effects, some kind of algorithm or code sequence which will produce something that looks impressive on a screen, but in fact is not so hard to program. In the old days of computing, demos were called "display hacks", which were considered fairly trivial tricks used to make pretty designs on the screen. The legendary hacker Bill Gosper, for example, invented a display hack called "smoking clover" which made a striking image of a multicolored four-leaf clover. Although display hacks were fun, they were considered trivial. Today, however, the computing scene has changed somewhat. Advances in computer hardware technology have made graphics a big thing because of games, and the demo scene is thriving. Demo coders are often regarded as highly skilled programmers, awed by those unfamiliar with computer programming. Yet demo coding, and in fact graphics programming in general, is (perhaps surprisingly) quite far removed from real-world programming. There is a misconception among the non-programming public that all computer programming is the same, and once you know how to program a computer, you can program any type of application, be it a spreadsheet, a web browser, or a game. In actuality, graphics programming relies on a series of specific techniques which must be specially learned, and which are not usually taught in general-purpose programming courses or books, since they are so specific. Let me make an analogy here. There are courses in piano playing which teach the student how to play certain popular pieces of music. They show the student what keys to press on the piano, and the student memorizes the key positions, so the tune can be later played from memory. However, these courses teach nothing of music itself (properly known as "music theory"). The student, upon finishing such a course, will be able to play very well, but will still know nothing of scales, keys (as in "key of C", not the actual physical piano keys), or sheet music notation, all topics of important study for the "real" musician. Although this student may be a great performer able to impress some friends, he or she will still know nothing about music. Graphics programmers are often similar. They are regarded as brilliant programmers because they can make such stunning scenes, yet in fact, many of them are not well-versed in the workings of any computer language and don't know many real-world programming concepts like memory management or code optimization. This is not to say that ALL graphics programmers are this way; Many, in fact, know a lot about every kind of programming. But it must be understood that being able to make a great display hack does not make you a great programmer. If you want to be a good programmer, you must learn a lot about all aspects of computers and your language of choice (be it C, Pascal, or whatever). Don't concentrate specifically on making graphics. In fact, unless you plan to seriously go into graphics as a game programmer or some other kind of profession which focuses on graphics, you probably shouldn't learn much about graphics programming at all, since it has little to do with any other kind of programming. The more you know about programming, the better a programmer you'll be. So learn as much as you can.