An ExpertUser is described in ExtremeProgramming as a non-developer, an expert in his/her field who knows much about computers, and therefore can help in the development process. ExpertUser''''''s should be an integral part of the development team. They should be provided with tools that will enable them to take an active part in the process, and not just give remarks after it was done. ExpertUser''''''s can help modeling and write tests. In order for this to happen, the programmers and the expert users should develop a common language. Something that is not as sophisticated as a programming language, but can be translated automatically to code. The language can have two parts: The "upper" part which describes the model (objects and their relations), and a "lower" part, which gives external data. A good example for such process is developing GUIs. An Expert user can easily develop a GUI using Visual Studio or such development kits. The "upper" part is the windows and widgets and their relations, and the "lower" part is the exact colors and locations of those widgets. The rest is done by programmers, who just need to tweak everything in. This process can work on many other domains, and is good for reducing load from the programmers, and making the software more tuned to users than to programmers. ''Just need to tweak everything in???'' Well, That's what programmers (like me) do. isn't it? Taking pieces of code and making them work together. All the rest (drawing screens, etc) is not my job, I'm not particularly good at it and I make wrong choices time after time. ''ExpertUsersAreDevelopers fits the main concept of the TgpMethodology, aims to make these people active developers, by providing them tools. In this methodology the agility is based on the active participation of these people. Based on their knowledge the FlexibilityZonesArchitecture that help to adapt to change are determined. In the TGP Methodology they are called BusinessProfessionals (at the moment), where there is a big discussion about the right term for this role. See also ExpertUser and BusinessAnalyst. '' So, what are the tools and what is the way to make ExpertUser''''''s developers? ''I don't think there are "the" tools or "the" way. The TgpArchitecture is one way of doing it, but I believe all the methods will have similar characteristics:'' * ''Creating an extendible language that describes the model of the system.'' * ''The language will be declarative and not procedural.'' * ''Graphical tool that enables reading and writing this language.'' * ''A compiler or interpreter let the computer understand this language'' ---- ''Something that is not as sophisticated as a programming language, but can be translated automatically to code.'' If it can be translated automatically to code (i.e. by the computer), then it is source code. See WhatIsTheSourceCode What you are doing in this case is creating a project-specific programming language for the ExpertUser, effectively making him a developer in your custom language. ''Exactly. However, I would be reluctant to call it a programming language, since often it will create only a skeleton code, and will require additions from programmers. Think for example of the Xml part of Spring, which is a source code, but not really a programming language'' ---- See AgileForNonProgrammers