Geeks With Blogs

The Lanham Factor The (ir)rational thoughts of a (not-so)mad man

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.

Posted on Wednesday, March 28, 2007 1:23 PM Cutting Code | Back to top

Comments on this post: You're an Adult Now...Code Like One

# re: You're an Adult Now...Code Like One
Requesting Gravatar...
While I see what you are saying, I have to play Devil's Advocate for a moment. You said:

"Why do we, as a profession, tend to regard [some] technologies [..] as "complicated"?"


"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."

I can think of several companies that I've worked for where they have done business the former way (worried about things being too complicated) and not the latter way (always planning for the long haul). And those companies are still in business and doing fine.

I think it really comes down to a hair's-width distinction between IT, IS, CS, and CE.

As an IT professional, nearly everything you do needs to be done *right now*. And you're living in a world of moving targets -- you're a guy in a kayak in whitewater rapids. If you stop and plan out what is going to work 6 months from now, odds are not only are you not reacting fast enough but you're fixing your solution to a specific technology. But, if you provide small fixes instead of large solutions, you win for another day. The thought of this is anathema to a Computer Engineer.

As an IS professional, things slow down a bit. You have a chance to test things and make sure that they do work and will continue to work. You still can't spend too much time on any one thing, as the work continues to come in at an alarming pace, but you can get some small amount of planning in. This time, you're more like a day-sailer at the mercy of a nice breeze.

As a CS student or professional (not too many of these) you get to really plan things out. Sometimes up to a year, maybe two. This is the mentality that your "Pitch" is referring to. You get to do things The Right Way The First Time, and the only trade-off is that you take a bit more time to plan things. But! The price of this is that you almost never see a "CS Department", because CS people don't run businesses, they solve problems in groups. Your boat has sails and a motor, and it doesn't take two long to switch between the two, but it can only do one thing at a time.

As a CE student or professional, the idea of not getting something perfect the first time is downright repugnant. Most of the time, the planning takes more time than the doing. But that's okay, because when you finally do the doing, nothing else needs to be done. If someone needs a change half-way through a project, that's too bad and it just goes into the next version -- this version will exactly fit the spec, because that's what specs are for! Your boat has no sails, as they would leave you vulnerable to the elements, and the tiller and keel lock into place as soon as the boat starts moving, which it won't do without a course map programmed via GPS and verified against NOAA for weather conditions. Enjoy the ride.

Anyone who calls themselves a "Software Engineer" and then puts "Agile Lifecycle Development" on their resume is lying to not just you, but themselves. Similarly, any "IT Professional" that lists any project longer than 6 months is mistaking themselves for an IS department.

Sometimes you need an IT person, sometimes you need an Engineer.
Left by Rick O on Mar 29, 2007 1:38 PM

Your comment:
 (will show your gravatar)

Copyright © Brian Lanham | Powered by: