One of the most under-appreciated skills that programmers (and members of other professions as well) have; and a key reason why programmers aren't commodities. ''Domain knowledge'' is expertise in a particular problem area - especially problems which aren't the primary concern of a computer science curriculum. Examples of important areas of domain knowledge that can help land you a job: * Accounting systems * Desktop publishing * Graphics and multimedia In many cases, DomainKnowledge can be very company- or site-specific, i.e.: * Knowledge of the accounting systems and procedures in place at GeneralElectric * Knowledge of how to write plugins for Adobe PhotoShop * Expertise in designing codecs supporting the MPEG standard. Generally, skills in a particular programming language (or programming skills in general) ''aren't'' considered a problem domain. Some computer topics are legitimate problem domains of their own, which one might acquire DomainExpertise in: * OperatingSystems * Programming language design/compiler design. (A programmer who is skilled at writing code in Java wouldn't be considered a "Java domain expert". One who is skilled at implementing JavaVirtualMachine''''''s, on the other hand, might be.) * Database design In general, domain expertise is hard to come by (which is why it is so valuable). True domain expertise requires both a considerable amount of study in the topic (formal or informal), and a considerable amount of experience in design and implementation. One doesn't read the RedDragon and become an expert in compilers; but if one reads the RedDragon (and a few others) and works on GCC or a commercial compiler for a few years, one could start to claim domain expertise. ---- DomainKnowledge can be modelled with SemanticNet''''''s. ---- CategoryAddress