<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.developerdotstar.com/community" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>developer.* Blogs - Domain Specific Knowedge: How much do you REALLY need? - Comments</title>
 <link>http://www.developerdotstar.com/community/node/467</link>
 <description>Comments for &quot;Domain Specific Knowedge: How much do you REALLY need?&quot;</description>
 <language>en</language>
<item>
 <title>Different Developers, Different Skills</title>
 <link>http://www.developerdotstar.com/community/node/467#comment-1051</link>
 <description>&lt;p&gt;This has been an interesting discussion, but I think a few key issues have been missed.&lt;/p&gt;
&lt;p&gt;The successful communication between the real domain experts and programmers is, in many way, the essence of software development. We&#039;ve got to get what&#039;s in some guy&#039;s head (or what should be in his head) into a computer program. But non developers don&#039;t know how to think like developers and in order for them to really know what solution they need, they more or less need to be coached to do so.&lt;/p&gt;
&lt;p&gt;This is not to say that domain experts need to learn Java (or whatever), but that they need to learn to turn their ideas and business process needs into a software-baed system that makes sense. They must understand the limitations of software. This last one is key. A program, for example, can&#039;t take a whole bunch of vastly different and idiosyncratic input and magically make sense out of it. So very many non-developers have so very much trouble with this point.&lt;/p&gt;
&lt;p&gt;But that&#039;s not what I really want to say here. My main point is this:&lt;/p&gt;
&lt;p&gt;To think that every single software developer will become an expert at translating the the business domain into the software domain is fantasy. Clearly this is a specialized job in itself. Even in a small shop, I think you are much better off if you have a requirements gathering expert generally act as a bridge between coder and the client. &lt;/p&gt;
&lt;p&gt;This is not to say that at some point communication between the coder and client can&#039;t happen. At some point the coder and the client can go one-on-one to go over the finest details and to refine the requirements. But not every developer will be an expert requirements gatherer. I think everyone knows this. The world needs people who can stand all day at the assembly line and twist the same bolt again and again. That&#039;s a real job (well a figurative job in my example) and it&#039;s not going away.&lt;/p&gt;
&lt;p&gt;I also think there are two levels of &quot;the domain&quot; and not one. There is the business domain in the sense of Accounting or Medicine. But then there is the specific domain of a specific solution to a specific business problem.&lt;/p&gt;
&lt;p&gt;When you work for several years on the same tool you become an expert on that domain. You may know very well how your own accounting system works and how it integrates into someone&#039;s business process. But this requires only the slighetest knowledge of actual accounting. &lt;/p&gt;
&lt;p&gt;An this brings up another point. So much emphasis is given in job interviews on computer programming trivia. How do you create an ODBC connection in C#? How do you call a servlet from a JSP? These things are actually quite simple and easily taught and really, developers generally have such a steep learning curve learning the ins and outs of the particular application they are working on that the amount of time it would take to teach them to create an ODBC connection (or point them to the doc) is minimial by comparison.&lt;/p&gt;
</description>
 <pubDate>Tue, 02 May 2006 14:07:42 -0700</pubDate>
 <dc:creator>Rob MacGrogan</dc:creator>
 <guid isPermaLink="false">comment 1051 at http://www.developerdotstar.com/community</guid>
</item>
<item>
 <title>Ditto on Agile</title>
 <link>http://www.developerdotstar.com/community/node/467#comment-1038</link>
 <description>&lt;p&gt;And on Dan&#039;s thanks to Sally.  Non-technical perspective is always needed.&lt;br /&gt;
But the Agile thing -- taking the emphasis off of BDUF is one of the elements I find most appealing about agile methods.  It doesn&#039;t work, and what&#039;s more it gives the false impression that things are further along than they really are.&lt;/p&gt;
</description>
 <pubDate>Thu, 27 Apr 2006 12:27:48 -0700</pubDate>
 <dc:creator>Andy Tegethoff</dc:creator>
 <guid isPermaLink="false">comment 1038 at http://www.developerdotstar.com/community</guid>
</item>
<item>
 <title>Domain Knowledge, Super-Domains, and Requirements</title>
 <link>http://www.developerdotstar.com/community/node/467#comment-1037</link>
 <description>&lt;p&gt;I&#039;m not sure how successful I was in adding to the discussion, but a few days I ago I did some riffing on this thread in a &lt;a href=&quot;http://www.developerdotstar.com/community/node/470&quot;&gt;related post to my blog&lt;/a&gt;. My basic point is that the debate about &quot;how much domain knowledge is enough,&quot; and related debates about technical knowledge, processes, methodologies, are limited unless we consider a larger context, which I label somewhat awkwardly as a &quot;super-domain.&quot;&lt;/p&gt;
&lt;p&gt;On another note, thank you, Sally Knox, for adding to the discussion (see Sally&#039;s comment above). It&#039;s great to have a non-programmer perspective. Particularly, I&#039;d like to comment on this passage:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The problem arises when the domain expert is not skillful in communicating those needs or does not know how to determine the needs. I think some of the software failures can be attributed to the fact that the users don&#039;t know what they want. But that should be anticipated.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This situation is I think common, and normal, and it has always been my opinion that the burden falls more on the technical professional to bridge the gap, have empathy and understanding for the subject matter expert&#039;s point of view, and elicit what&#039;s needed for the project. As you say, &quot;it should be anticipated.&quot;&lt;/p&gt;
&lt;p&gt;Some might say this is unfair, that the burden for bridging the gap should be equally shared. In an ideal (perhaps future) world I might agree. However, in today&#039;s imbalanced situation, the technical professional is the only one in the equation who is in a position to understand and appreciate *both* the business and technical points of view.&lt;/p&gt;
&lt;p&gt;We&#039;re talking about eliciting or &quot;gathering&quot; requirements, of course, and there are some great books on this subject, notably Weinberg and Gause&#039;s &lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0932633137/developerdots-20&quot;&gt;Exploring Requirements&lt;/a&gt; and Karl Wiegers&#039;s &lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0735618798/developerdots-20&quot;&gt; Software Requirements&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also liked this comment:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Too often, needs and design elements are determined by some group or committee sitting down with a piece of paper and drawing boxes and arrows. I would contend that that methodology will NEVER result in superior software.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I have seen this happen more than once. In fact, I think it&#039;s fair to say that this is one of the Agile perspective&#039;s most stinging criticisms of the sequential &quot;Big Design Up Front&quot; methodologies. The Agile solution of working closely with, even co-locating with, the customer/user is a lesson that&#039;s easily transferred, though, even to the most giant of waterfalls.&lt;/p&gt;
&lt;p&gt;Thanks again, Sally.&lt;/p&gt;
&lt;p&gt;Dan&lt;/p&gt;
</description>
 <pubDate>Thu, 27 Apr 2006 07:47:15 -0700</pubDate>
 <dc:creator>Daniel Read</dc:creator>
 <guid isPermaLink="false">comment 1037 at http://www.developerdotstar.com/community</guid>
</item>
<item>
 <title>domain knowledge</title>
 <link>http://www.developerdotstar.com/community/node/467#comment-1030</link>
 <description>&lt;p&gt;Greetings. I am one of those &quot;domain experts&quot; that have wandered into the programming world searching for answers. Like, why don&#039;t we have the software we need in medicine? I would contend that domain knowledge is not needed for the programmer. Programming is an art and involves far more than knowledge of syntax. I want my programmers to be expert in how to make the code do what it needs to do. That has little to do with what problems the software should solve within the domain. That&#039;s up to the domain expert.&lt;/p&gt;
&lt;p&gt;The problem arises when the domain expert is not skillful in communicating those needs or does not know how to determine the needs. I think some of the software failures can be attributed to the fact that the users don&#039;t know what they want. But that should be anticipated.&lt;/p&gt;
&lt;p&gt;Too often, needs and design elements are determined by some group or committee sitting down with a piece of paper and drawing boxes and arrows. I would contend that that methodology will NEVER result in superior software. &lt;/p&gt;
&lt;p&gt;In more complex systems such as the world of medicine, it is imperative to design something that seems right, then test it in the real world. I call this &quot;functional prototyping&quot; for lack of a better term. We need a cheap way to test a concept before it&#039;s set in stone. And it can&#039;t be tested looking at a non-functional screenshot. Real-life use of the proposed solution is the only thing that can determine whether the design is any good.&lt;/p&gt;
&lt;p&gt;Just my thoughts. Thanks to all you developers for all your hard work!&lt;/p&gt;
</description>
 <pubDate>Mon, 24 Apr 2006 06:14:36 -0700</pubDate>
 <dc:creator>Sally Knox</dc:creator>
 <guid isPermaLink="false">comment 1030 at http://www.developerdotstar.com/community</guid>
</item>
<item>
 <title>Allow me to clarify some things</title>
 <link>http://www.developerdotstar.com/community/node/467#comment-1024</link>
 <description>&lt;p&gt;This post was written directly after writing the comment on Sarah&#039;s article (to which I left a hyperlink) and so, in the interest of avoiding repetiton, I left out some key thoughts.&lt;br /&gt;
As I mentioned in that comment, I am in no way opposed to the idea that a developer gains or needs to gain domain knowledge as they work through a project.  In fact, I state quite clearly there (and in this post, actually) that as a developer/architect works a project, they need to be absorbing that knowledge.  If they aren&#039;t, they are not doing their job in a professional manner.&lt;br /&gt;
That said, I repeat that I wholeheartedly disagree with the notion that a developer is only useful in a given business domain if they have prior knowledge of that domain.&lt;br /&gt;
Tim&#039;s point is both well-said and well-taken, and succinctly summarizes my view: the developer is the funnel through which domain knowledge must flow into the design and implementation of a system.  They must and should be acquiring domain knowledge as they go -- if through no other process than simply by osmosis.  Sitting in requirements meetings, establishing specifications, direct contact with end-users, etc should all help to provide that kind of information.  And if the developer is resistant to learning it, they&#039;re also missing the point.&lt;/p&gt;
&lt;p&gt;Having said this, I can directly respond to Tim&#039;s comment by saying that I firmly believe that one of the most important &quot;meta-characteristics&quot; of a good developer is that they pick things up VERY quickly.  Otherwise, you had BETTER be a domain knowledge expert.  Because that&#039;s what you&#039;re building a career on, not software skills.&lt;/p&gt;
&lt;p&gt;And to respond directly to Donna, there is absolutely a value-add when a developer stays in a given domain for an extended period and accretes domain knowledge.  But, in my experience, most shops--even in the same line of business--have such different cultures that when that developer swtiches jobs, the domain knowledge is of somewhat limited use.  While it is &lt;i&gt;temporarily&lt;/i&gt; a benefit (to the current employer), it is not so much so with respect to that developer&#039;s long-term goals.  Keep in mind, this is EXACTLY the dilemma I was just faced with in my career -- where all I could accumulate was domain knowledge, while I watched my development skills atrophy.  Balance is key, yes?&lt;/p&gt;
&lt;p&gt;So, to furhter clarify the point I was attempting to make between my comment(s) and post: a good developer is not hallmarked by their specific absorption of domain knowledge, but by their domain-agnostic development skills coupled with by their ability to quickly establish understanding of new domains/problem spaces.&lt;/p&gt;
</description>
 <pubDate>Fri, 21 Apr 2006 08:09:03 -0700</pubDate>
 <dc:creator>Andy Tegethoff</dc:creator>
 <guid isPermaLink="false">comment 1024 at http://www.developerdotstar.com/community</guid>
</item>
<item>
 <title>Why Domain specific knowledge matters</title>
 <link>http://www.developerdotstar.com/community/node/467#comment-1019</link>
 <description>&lt;p&gt;I will asssert that you need to have domain specific knowledge. But you can pick it up.&lt;br /&gt;
I think Software Gurus who go lecturing and write books are doing something really worthwhile. They are teaching the fundamentals. They matter. Chipping flints sucks.&lt;br /&gt;
But I don&#039;t write generic software. It solves a problem for a customer. In a problem domain. (Defense)&lt;br /&gt;
What happens to software developers where I work is:&lt;br /&gt;
They get given a task, then they rapidly have to become subject matter experts, or they end up writing software that is useless. They ask real experts questions and try to be the funnel that does the knowledge injection into the computer software. It is helpful to have developers who learn really quickly and have a background in the appropriate sciences, but with less background they just have more to learn quickly. There is a point where that tradeoff fails. We call those &quot;no-hires.&quot;&lt;br /&gt;
The most experienced developers can talk to external experts in the field and not make fools of themselves.&lt;br /&gt;
I care about a developers ability to learn new information, not the domain thay already know because it isn&#039;t the one we work in. In four years I have interviewed one developer with domain experience in our domain. Other companies in the domain may recruit differntly; but there are probably less than a thousand people people worldwide with that domain experience, all happily working. YMMV&lt;/p&gt;
</description>
 <pubDate>Thu, 20 Apr 2006 17:38:08 -0700</pubDate>
 <dc:creator>Tim Williscroft</dc:creator>
 <guid isPermaLink="false">comment 1019 at http://www.developerdotstar.com/community</guid>
</item>
<item>
 <title>That Valuable, Dispensible Domain Specific Knowledge</title>
 <link>http://www.developerdotstar.com/community/node/467#comment-1018</link>
 <description>&lt;p&gt;Right or wrong, I&#039;ve heard executives (CIO types) say that while they can outsource (even offshore) coding, the special talent that in-house developers bring (and the thing that will provide them job security) is domain knowledge. However, that argument can cut both ways. Put all your eggs in a pharmaceutical basket based on domain knowledge, for instance, and then finding another job in another industry post merger/takeover could be more challenging.&lt;/p&gt;
&lt;p&gt;Having said this, I don&#039;t disagree with your point, Andy. As you say, someone less familiar brings a fresh perspective that is not so entrenched in &quot;the way it has always been done.&quot; However, if you stay with a company long enough, after a while you&#039;re likely to accumulate some of that offensive or valuable domain knowledge, like it or not. I know that we cringe in MIS when our clients depend on us to tell them what to do (in business situations they should handle) because they know we know more about their business operations than they do.&lt;/p&gt;
</description>
 <pubDate>Thu, 20 Apr 2006 13:52:03 -0700</pubDate>
 <dc:creator>Donna L Davis</dc:creator>
 <guid isPermaLink="false">comment 1018 at http://www.developerdotstar.com/community</guid>
</item>
<item>
 <title>Domain Specific Knowedge: How much do you REALLY need?</title>
 <link>http://www.developerdotstar.com/community/node/467</link>
 <description>&lt;p&gt;Why do lawyers retain expert witnesses?  Why does a general practitioner refer you to a specialist?  Do you see a pattern here?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.developerdotstar.com/community/node/467&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://www.developerdotstar.com/community/node/467#comment</comments>
 <category domain="http://www.developerdotstar.com/community/taxonomy/term/20">Software Development</category>
 <category domain="http://www.developerdotstar.com/community/taxonomy/term/2">Career and Profession</category>
 <category domain="http://www.developerdotstar.com/community/taxonomy/term/35">Process and Methodology</category>
 <category domain="http://www.developerdotstar.com/community/taxonomy/term/4">Quality</category>
 <pubDate>Thu, 20 Apr 2006 10:22:06 -0700</pubDate>
 <dc:creator>Andy Tegethoff</dc:creator>
 <guid isPermaLink="false">467 at http://www.developerdotstar.com/community</guid>
</item>
</channel>
</rss>
