views:

724

answers:

8

Ok So You are Programming Geek , Expert in c/++/#.... . However the project where one work falls in one of many "domains". By domains I mean Technology Domain like :

  • Banking/financial applications
  • Networking/wireless/telecom
  • Mobile Applications
  • Web/storage/enterprise/Numerous others..

So as a programmer Do one need to be master of a domain ? Or just the Language can make you survive ? and you love to be called great Programmer or also a Domain Expert ?

Note: I come from "C" background ,which is not tied-up with any domain, unlike PHP and others , hence for some of you this question might be irrelevant , so pardon me.

+2  A: 

Obviously, understanding the underlying business helps a lot, as this help you differentiate yourself so you're not just a code monkey. If you know the "Technology Domain" well enough, you can make a number of decisions yourself or implement better features. But if you are a good programmer, you are probably smart enough to learn other domains relatively quickly, and some businesses appreciate people coming from backgrounds in different sectors as they can bring new, fresh ideas with themselves.

DrJokepu
+1  A: 

It will depend on the domain. I find some basic understanding of any domain helpful. However, in some domains a deeper understanding might actually be necessary. For example, I work in bioinformatics. This field of study has evolved precisely because of the inherent necessity of domain knowledge.

While other programmers can work in bioinformatics as well, they are usually working on more specialized tasks that doesn't really touch the domain.

Konrad Rudolph
+3  A: 

I'm personally a web developer in ASP.NET. I don't have a lot of domain knowledge but I'm starting to get to know e-Commerce really well.

I wouldn't say I'm a domain expert. I'm a programmer. Being a domain expert, I think, is restricting you too much to a small portion of the work you could do.

What most companies want anyway is "Experience with X" where "X" could be :

  • e-Commerce
  • Banking
  • Retail

I rather be called a programmer myself. ;)

Maxim
+23  A: 

I think a lot of companies have wasted a lot of money by not ensuring that their developers understood the domain. Not only should you understand the domain, you should be an authentic user of the domain. Some people say "but we have analysts for that" and the result is disconnected, obfuscated, backwards software imperfectly written to spec.

To put it another way: how can you begin to abstract a domain in code, and to solve problems around that domain effectively, without understanding the underlying domain?

So to me it's not a question of whether you're going to be a programmer or a domain expert. You're always a programmer, and fully half of your job is understanding the domain.

James D
I totally agree. You don't get to be much more than a simple "code monkey", without domain-knowledge. The question is only HOW MUCH domain-knowledge you need.
myplacedk
Perfect answer. Love it.
Maxim
I agree , and advice to fresh graduate to focus on Domain along with language for their smooth career path.
A: 

Yes, specialising really helps. Domain knowledge really helps.

A mediocre developer with the good knowledge of the domain could pull the work of the good developer without it. There are some domains (betting comes to mind) there such knowledge an is essential and mandatory tool for any developer.

I know a company where the developers were able to effectively and productively work without a manager for a considerable amount of time because every one of them knew enough about the product and the domain to be able to work directly with the customers. It's an exception but it illustrates my point well.

Ilya Kochetov
A: 

Ya! That's why my Manager says, Learn the Business...

Rajeshwaran S P
A: 

In order to solve the problem, "Problem Domain" knowledge is more important than implementation technology. Once you've understand the problem, even you'd made wrong technical decision, you still be able to produce the software which can solve the problem (the quality is another story).

The another great reason is that you won't find much of problem knowledge in the internet. Face-to-face communication still required to get real understanding on the problem. But when you're asking for technical knowledge, a lot of forum / books / blogs could help. This site could HELP also!

To sum up, get the problem solved, then improve the solution.

Ekkmanz
A: 

I think that domain knowledge is at least as important as programming knowledge (alt least for embedded projects, my working domain).

I've seen projects that failed although real programming experts whre working on it and the code looked brilliant. BUT the project wasn't on time and the custumers didn't like it very much.

Another project I've worked on was really successful but the code base was a big legacy mess. We tamed the beast a little over the years and learned to live with it. The product was great, it sold very well and the custumers really loved it.

The differnence between the two projects was the way the developers cooperated with product marketing and the customers. The first project I mentioned above was focused very much on architecture, UML, clean code and things like that. The second was focused on getting things done and to make the customers happy.

I think that programming is just a tool to procuce (software) products. Of course you always should use the best tool and construction material you can get. But don't stop thinking about tools and construction material, a great product that is loved by your customers is the goal!

chrmue