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 JavaVirtualMachines, 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 SemanticNets.
CategoryAddress