The Windup...
A month or so ago I was delivering a design/architecture review along with a code walkthrough for some software I wrote. Basically, a VB6 application needed updating to support cryptography (through a third-party tool) and FTP. I distributed the cryptography services to account for licensing constraints. Since the shop is migrating to .NET I wrote .NET assemblies to support the cryptography, data access, and file transfer functionality. I then wrote a COM-Callable Wrapper (CCW) to expose only the needed methods for the VB6 application.
The result is several new DLLs (around 8ish) plus a whole boatload of extensibility, flexibility, and scalability. I didn't just blindly architect the system thusly. I gained an understanding of the vision. I accounted for licensing issues. I consider the number of existing and planned applications to use cryptography. I knew about the direction to include file transfer capabilities in most applications. Nevertheless, the design and architecture are "fit"...not too much...not too little (okay maybe just a tad too much...but only a tad).
During the review a question surfaced as follows: "Once we get away from VB6 can we get rid of some of those DLLs?"
The Pitch!
Why do we, as a profession, tend to regard technologies and technology aspects such as remoting, distributed computing, security, etc. as "complicated"? Aren't we educated professionals? Aren't we educated, trained, and capable of complicated things?
We spend so much time complaining that users don't understand how "complicated software" is. We gripe that we get no respect. Why is it, then, that we also complain that "this or that is too complicated"?
I'm not suggesting that we "over" complicate systems just for the sake of complication. I am suggesting that we use the tools available to us as appropriate for a given situation. This isn't college. We're not going to write an application in 16 weeks to be used and deleted. This is business. We are going to have to do what is appropriate and best for the business and not for "just now" but for the months and years ahead.