Question: > 
> **Possible Duplicate:**  
> 
> [How important is Domain knowledge vs. Technical knowledge?](https://softwareengineering.stackexchange.com/questions/51268/how-important-is-domain-knowledge-vs-technical-knowledge) 
> 
> 
> 

I often hear from my colleagues and sometimes from interviewers that,

> 
> "There is nothing so great in having excellent programming knowledge.
>  One must gain the domain knowledge as the 1st priority. If you have a
>  good domain knowledge, then writing code for that is not a big deal."
> 
> 
> 

(Here domain knowledge is something related to area you are working in. For example, I work in telecom domain, someone might be in Finance or Pharma or Web development or Embedded and so on.)

I disagree with above passage and think exactly opposite. In my career *till now*, I have seldom missed any deadline for bugfix or feature enhancement. I have kept changing the domains (within telecom) but stuck with learning the programming techniques. Though I might be wrong.

**Questions**:

* Is my current approach correct ?
* Given a choice between domain or programming (with limited time)
which one should be chosen ?
* Is there a good future for a person, who is primarily a very good
coder but not so great in a domain (of course initially) ?

I ask this because, I feel that every domain ultimately boil down to code sea in which one has to dive!

Answer: 
One could even *define* programming as "mapping domain knowledge to code", so obviously mastering both the domain and coding is mandatory. You have to dive in the code sea, yes, but it's not enough. How could you write the program without knowing what the program is supposed to do? Or, if you know what your program should do, how could you write it if you can't code?

In many cases, the programmer has to know the domain even in more detail than some plain "domain specialist", because the specialist can solve all kind of exceptions and corner cases with his common sense and experience as they turn up, but the programmer has to explicitly handle all those details in the code, before they turn up.

> 
> Given a choice between domain or programming (with limited time) which one should be chosen?
> 
> 
> 

At any given moment, the best bet is to improve your weakest point. And, there are easier and harder domains. If you're making mobile phone toy games, then the domain is probably not that hard; the harder part is making the program efficient, portable, good-looking, etc. But if you're making nuclear power plant control program, then it may take years of intensive study to actually master the nuclear physics that your program has to deal with.

> 
> Is there a good future for a person, who is primarily a very good coder but not so great in a domain?
> 
> 
> 

You can approach total mastery from either direction, but in the end, you have to master both coding and the domain.
If you wish to remain only a programmer, working for a company, then domain knowledge is not necessary but if you have, it is good. If you are a part of a team and you have a program manager, then he should possess little domain knowledge. In your case, you gain a basic domain knowledge while working on a project. For example, if you are involved in the development of a product in Telecom domain, then after a certain period of time, you do get a basic knowledge of the Telecom Services Provider.

From my experience, if you run a company or is a part of business development process, then definitely you should have a domain knowledge. You should also have a knowledge of your competitors.

Anyhow, you should keep your eyes open because you won't remain a programmer life long. In future you may lead projects.

**Edited**

And also, highly scalable products are possible only when you have excellent domain knowledge.