"In a white room
With black curtains
Near the station"
-- Cream
Opinion collection: where is an appropriate balance point between programming knowledge and domain knowledge?
Or to put it another way, what's the minimum amount of domain knowledge a programmer should have - or vice versa - to (generally) be successful?
Like dws said, it depends on the domain. The balance isn't really between domain vs. programming knowledge within the programmer, but the balance of deep domain vs. shallow domain jobs in the market.Opinion collection: where is an appropriate balance point between programming knowledge and domain knowledge?
In my experience, there are a great many jobs in the world that require a solid knowledge of general programming with little domain specific knowledge. An intelligent programmer can ramp up to speed with the details about real estate, website construction, publishing or any number of different lines of business without too much problem.
Some projects require specific programming skills, like writing desktop apps, numeric programming, embedded systems, real-time software or graphics processing. You can be very crafty, but without a solid background in numerical analysis or the relevant sub-discipline, you're not a good candidate for a job. In some cases, the converse is true; I wouldn't want to hire an ex-embedded systems hacker to write an accounting package if I could get someone with more experience with server-side software instead.
There are some entry-level positions that don't require much in the way of domain knowledge, but the higher level positions do. Finance is like this; there's room for a few green programmers on a trading system, but you don't want a bunch of people writing software to price securities when they don't understand what the various different yields on a bond are.
Then there are the jobs that have other hoops to jump through. I've never been a defense contractor, but surely the same dichotomy exists there as well, once you have the appropriate clearance. Some jobs need a good generalist (IT infrastructure work), while other jobs need a good specialist (navigation and guidance systems, speech processing).
So if you're looking for a job that doesn't require a lot of specialized domain knowledge, there are plenty of domains that need little more than experience and a solid programming background, possibly with experience in some programming sub-disciplines to boot.