Enterprise Computing (EC) has been the niche of the Java platform; its sweet spot is to have at least three developers, three months development, and thirty end users -- I made the numbers up, but you got the idea.
OTT stands for, well, real simple, "One-Two-Three", which refers to "one developer, two weeks development, and three end users". Obviously, it is about small applications. Traditionally, it is the niche of "departmental computing", in which classic VB is the king.
However, in hindsight, we now know better. OTT is still enterprise computing, for the following reasons:
(a) Many OTT products (or subsystems) consist of bigger systems, and they are mission critical;
(b) An OTT will have a long lifecycle time, during which it usually grows; and even it does not, its maintenance and small enhancements will cost resources and time far more than "one-two-three".
So, OTT is OTT Enterprise Computing, hence OTTEC (or, 123 enterprise computing).
Neither classic VB nor Java can handle OTTEC. Note that I am not talking about the languages per se; I am not even talking about the platforms. I am talking about the techniques and cultures that are carried with VB and Java. To carry out OTTEC, we need C#. It will borrow techniques from lightweight Java world (i.e. non-J2EE world), and will push those techniques to their lightweight extremes. Just to be fair to classic VB, I want to point out again that classic VB was the king of the OTT niche; as a result, classic VB carries the right culture for the sense of how "heavy" the techniques should be.
Note that VB.net is functionally the same as C#. We can use either VB.net or C# for OTTEC. It seems that it is inevitable that we will use both VB.net and C#. For a team, you may feel that you can "standardize" on one language. Then, very soon you may find that you need to use an in-house or an open source product, that uses precisely the language other than you have standardized! As a result, it is inevitable that a competent programmer should know both.
Having said that, I guess we need to know that OTTEC requires borrow and modify techniques from Java, and C# is very close to Java, both syntax-wise and community-wise -- most (but not all though) first-generation open source projects in .net are ported from Java and are in C#.
However, there are some good open source projects originated from VB.net, one prominent example is CSLA,
http://www.lhotka.net/ArticleIndex.aspx?area=CSLA%20.NET (CSLA has C# version also).
OK, you may say, enough concepts, tell us about those "techniques from lightweight Java world" and how can we push those techniques to their lightweight extremes.
Before doing that, I need to list eight issues that those techniques try to solve. After all, techniques are just the "means" to some "ends"; and we need to know those "ends" first. However, I also noticed that some of those eight items sound more like techniques, instead of "ends" -- in "technical" context, it is not easy to tell apart "techniques" and "ends" -- let's assume we can justify that they are "ends" by themselves.
1. Have flexible logging
2. Wrap database access
3. Centralize transaction handling
4. Centralize communication handling ("remoting")
5. Centralize security handling
6. Centralize logging (this is different from flexible logging)
7. Separate UI and business logic completely
8. Have automated unit testing for business logic
I will not elaborate why we need to solve those issues. For that, please read any articles that essentially describe "lessons learned" in classic VB projects, and read those articles that essentially recommend "frameworks used" in Java projects. Note that in the latter category, the articles usually say how "lightweight" they are. However, if you used classic VB, or/and if you did some OTTEC, you know that they are still too heavy. That leads to my next post -- to be continued.
P.S.
Why OTTEC is important? -- if you know the importance of classic VB in a company (regardless what Java, perl, or C/C++ people have told you), you know the importance of OTTEC; and wait, there is more. Once we can do OTTEC in .net, and apply good Enterprise Computing techniques, then, we can divide bigger projects into many OTTEC projects. Then, more than 80% of Enterprise Computing are OTTEC! Effectively, this is an extreme vision/version of Extreme Programming (Test Driven Development).
Since we are talking about XP/TDD, I should point out one thing: because OTTEC is so lightweight, although it is double "extreme" of XP, it "cuts corners" (or, “lightweightize”) on some of its "extreme" techniques. For example, in OTTEC, there is no need and no time to unit testing UI; and there is no need and time to use mock objects, since we do not do intensive framework development and the testing is relatively coarse grained -- typically, only those facade methods are unit tested, and the testing purposefully includes database access code. Therefore, mock objects are not necessary. Also, because the code in unit testing does not use mock objects; the code is more ready to be pasted in UI code. This means there is no “extra” time that is “wasted” in unit testing – in OTTEC, every minute counts.
Note that this does not mean you do not need to know mock objects. When you use frameworks, you got to run their unit tests, and so you got to know mock objects. Also, to take full advantage of the nature of open source, to be a competent user, you got to be a contributor, therefore, you got to use mock object to develop frameworks or tools.
OTTEC is flyweight XP/TDD. Note that for XPers orTDDers, it may sound paradoxical; becuase they are used to feel that they are the most agile doves; and now, here are the flies ;-)