The notion of a Black Art as expressed on the ExtremeProgrammingChallengeOne
- Compiler made me think about what makes a BlackArt
- I would suggest the following characteristics:
- Priestliness (only certain adepts know the secrets of the trade)
- Arcane (to do it you must know obscure and difficult things)
- Not Quite Well Behaved (it is implementation sensitive and tends to need fine tuning)
- Looks Like Magic (i.e., it obeys ClarkesLaw and is sufficiently difficult and surprising that it looks like magic to the uninitiated and to naive users)
- The only way to learn is by being apprentice to a master -- OliBye (an apprentice)
... there are probably others -- RaySchneider
This page annoys me. It is making fun of a topic that is important and should be looked at seriously. People don't take expertise seriously enough. Experts can do things that leave the rest of us amazed, yet most people are an expert at something, and we know how to become experts. Rather than saying that something is a black art, we should honor those who have spent the time and energy to become experts in it.
Every time I try my hand at car repair or carpentry, I realize that I am not an expert at those things, and I am happy to do business with people who are. I am not an expert cook, and I am happy I live with one. Becoming a compiler expert is no different from becoming an expert cook or an expert car mechanic. It takes a lot of time and effort. It is easier to become an expert if you work with an expert, but you can usually learn on your own with a lot of practice and by reading books and articles. Even if you work with an expert, you have to practice a lot. You don't really learn how to do something by reading a book or listening to someone talk, you learn by doing. The book and the expert tell you what to practice, let you know what to aim for and when you miss the mark, and give you information that you would otherwise have to learn on your own. But expertise is always expensive to acquire. In the strict sense of the definition, there are no black arts, just expertise (and experts) that you don't know. -- RalphJohnson
has a meaning that could be refined a little more tightly. The two features that make a given specialty a BlackArt
are implied above, but not made explicit enough for my tastes:
- BlackArt possesses disproportionate complexity: solutions are more complicated than problems.
- BlackArt is document-less: all knowledge about the environment is folk knowledge, and must be gathered directly from experts.
Saying that something is a BlackArt
is not saying that no respect is due to the experts. On the contrary, if someone knows a BlackArt
it means they have invested considerable time and energy in gaining their knowledge. With this definition in mind, one can say proudly that, in a career, one has both mastered a given BlackArt and
worked to eliminate its BlackArt
On the other hand, it is clear that too many people in our industry assign BlackArt
-ness to skills that just don't qualify. In particular, the point about priestliness seems a gibe rather than a fair description. If you know someone who is priestly about some corner of our profession, it is likely that the person you know is not a BlackArt
master, just an ordinary dickhead.
Could we name some things that seem to be BlackArt
s so that this wiki could turn them into pages which helps change their colors? For example:
- Knowing the AT -- HayesCommandSet? for modems and how to type it and interpret its responses
- Knowing how to PIP and STAT in a CP/M environment
- Ability to debug programs written in CobolLanguage, FortranLanguage, JobControlLanguage, ...
- Operating system kernel development or device driver development.
What makes these BlackArt
s? Is it their only occasional usefulness? What about the movie Tron? Everything inside the computer was easy, but it took an OldFart
to know how to get a message from the computer to the outside.
It seems to me the above sets a pretty low bar for 'black art', as do some early comments at the top of the page for 'expert'.
Knowing anything about the HayesCommandSet?
is a LOST Art.
A black art is something you need a wizard for.
There's a definition of black art in the JargonFile
that notes related categories such as 'black magic', 'deep magic', and 'heavy wizardry' and 'voodoo programming'.
My understanding always was that the defining quality of a BlackArt
was that it was something which even the experts do not fully understand, and which no one has figured out how to express in a straightforward manner. The only way to learn it is through long experience under the tutelage of someone who has already mastered it, and even then you have to undergo a ZenSlap
experience to fully grok it. -- JayOsako