Sunday, March 9, 2008

Which Platform Pattern should I be using for my business?

This past week I had three interviews for new contracts. All three were with major established companies asking if I would fill the part of LEAD developer and drive the development. All suggested deadlines and goals to be obtained with a reassessment of the future thereafter. In other words, no commitment of a total product solution from an Agile development viewpoint; but rather a waterfall approach to interim expectations for customer driven requirements and an acknowledgement of the current state of the market. A recession will turn any Agile solution into a waterfall production everytime. Directors and managers simply don't have the promise of new sales to guarantee employment of anyone, including themselves. So they typically make decisions 3 months at a time with no promise of thereafter. So now the decisions you make, as a contractor, become even more important as you bet your family income on their business decisions, the company's ability to market and sell their products and services, and their apparent interest and motivation to keep you.

During these last interviews, I found it interesting that all were telling me their current dilemmas and asking my opinion about possible solutions. Now although I love these kinds of intelligent discussions to assess my knowledge and contributions for the current position; I always leave there wondering if I should have charged a consulting fee. Another point I noticed about all three was they had all bought into some flavor of Microsoft Model and Practice and were asking about security and extending the models.

Now there is little doubt in my mind that Microsoft (with the release of 3.5 Framework) has finally gotten to the point where they are writing a large percentage of the backend business logic and business entities pages. I am not sure of their marketing strategy of this other than to get developers more hooked on free Microsoft work and dependant to the point they can never let go of the Microsoft offerings. Likewise, I advised one of those interviewers (who develops and maintains banking software products) that if I were accountable for this software development and support, that last thing I would ever want to tell my boss is how the Microsoft patches now need to be applied because Microsoft missed this or that security issues. His next question to me would likely be, why did you expose us like that? Do you think Microsoft would take an interest if I called them? Here is the answer: Why customization beats source code modification.

I know one thing for sure. If I am responsible for the success of this web site as LEAD, Manager, or Director; then we will be doing the production my way. And it will be architected as a good solid foundation for classification and layering and optional client features will be extensions of current foundation layering. I talk about this with suggested examples in my book (due for release, next month). But I want to know every line of code, its purpose, and its costs.

Here is the point and purpose of this discussion. I prefer to put the root functional files in the root directory of the web application. Images go under a folder called images. Scripts go under a folder called _ScriptLibrary. Middle tier and all other classes go under the App_Code folder. And the backend libraries that offer data separation and layering, utilitarian functionality, and error and events logging are all compiled separately into their own DLLs and reside in the bin folder. If I need to add another feature to the web site (in essence, another web application), then I may put it in a subfolder if it is only applicable to that web application; or if I have several clients looking to use this new feature, then I will put it in a new web application folder. It all depends on required functionality, customized settings per clients, and how generic I can make it for everyone's purpose. But these are decisions you, as a developer or architect, need to make to mirror your business processes. You should not be listening to anyone tell you that you need to follow this pattern or that one because everyone is doing it that way. My book tells the details of this discussion and makes suggestions for design.

No comments: