I've been thinking lately about the different types of programmers and different attitudes toward application design and development. An interesting concept occurred to me. In my industry, there seem to be two types of programmers: business programmers and core developers. Why do I make a distinction? I've been analyzing some code and reviewing articles (for example, Scott Mitchell's "More On Why I Don't Use DataSets in My ASP.NET Applications") and it occurred to me that I don't dive into the constructs as much as many people do. I typically take a given tool, a dataset for example, and implement it. If I have issues with performance, I will investigate alternatives and update my knowledge so next time I use a datareader instead (or whatever tool fits the situation).
How is this different from a core developer? I think a core developer will research all the options and dive deep into what fits initially. The good news is the application will run well and correct the first time. The downside is that investigation takes time. I would actually say it takes longer to investigate than it does to actually code. This causes the business to be slow in adoption and slow in momentum behind new projects (which in turn causes poor moral due to additional red tape...but that is another topic).
That being said, I believe that the correct balance lies in the middle. Businesses need to be agile and small applications need to be created quickly. That is the role of the business programmer. However, there is a point in the application design where the architect needs to decide on how much developer time to spend. If too little time is spent, the application becomes a maintenance nightmare with many points of failure. It may work when you roll it out, but will it hold up?
Okay, so I don't have any grand insight as to the answer as this was just a passing thought I wanted to jot down. I guess the real answer might just goes back to the saying, "Everything in moderation."