[
Advertise | Submit Code | About us | Contact us | Link us
]
Go!
Membership Services
Login
Register

Home
C# General

General

C# Language

Design & Architecture

Algorithms

Database

Security

Active Directory

COM Interop

Remoting
C# Windows Forms

General

Combo and List boxes

Miscellaneous Controls

Button Controls

Edit Controls
Cutting Edge

ASP.NET 2.0

Visual Studio 2005

Windows Longhorn

SQL Server 2005
C# Multimedia and GDI+

General

DirectX

GDI+

Audio
Internet & Web

General

Images and multimedia

Database

Utilities

Security

ASP.NET Controls

Design and Architecture

Webservices
.NET

General

Design & Architecture

Algorithms

Database

Security

Active Directory

COM Interop

Remoting

ADO.NET

XML.NET

Tools

Enterprise

IDE
Visual Basic .NET

VB.NET General

VB.NET Controls
General Reading

.NET Books Review

Product Showcase

Book Chapters

Business Design & Strategy
Community

Discuss

Job Board

Discussion

CodeXchange
DeveloperLand

Advertise

Submit Code

About us

Contact us

Link us
Miscellaneous

Favorite Links

Downloads

Programming Sites

Top Stories
Regular Expressions

E-Mail

Date/Time
Home > General Reading > Business Design & Strategy
Farther, Faster, Higher
Posted by on Thursday, September 23, 2004 (EST)

It's true that in our business sometimes no good deed goes unpunished.

This article has been viewed: 1,613 times
Technology: Business Design & Strategy.

There is an old proverb which states that a camel is merely a racehorse designed by a committee. I never really understood what that meant until I began living in the corporate world.

Any time that you have three or more people in the same room, you have politics and all the other frailties of human nature. Unfortunately, when you apply this to the business of software development, what often results is the lowest common denominator. What follows is a true tale from Corporate America and serves as an excellent illustration of why software delivered both internally and to the general public so often falls behind the technical power curve. The way things worked out in the end serves to inspire me from time to time when I become a bit too cynical about the constraints of the business environment that I call home. On to our story, then. In the words of that old 60s cop show, the names have been changed. There are no innocent.

In the course of looking for yet another contract, I met and was subsequently hired by a guy who is one of the most savvy managers for whom I've had the pleasure to code. I'll call him Fred. Not terribly original, perhaps, but Fred is easy to type. Besides, I don't know any Freds in real life.

Fred was a fairly young man at the time, and the corporation in question was one of those huge, nationally known behemoths. To say that bureaucracy was prevalent in this environment would be a study in gross understatement. Our little corner of the world centered on billing and non billing customer information. Fred's group worked the non billing side of the street on a Windows platform. Billing information was handled by another group in the same department, running on a green screen AS/400 system.

By the time I arrived on the scene, Fred had already garnered quite a reputation as a trouble maker. Prior to his movement to run the non billing group, he had worked as an analyst on the billing team. Their task was to put a Windows face on the AS/400 system through the tried and true process of screen scraping. For those of you unfamiliar with the term, it involves reading the character mode output that a user would see on a dumb terminal, parsing and interpreting it, and then displaying the data in a Windows program.

I actually had a chance to get to know the programmers on this team and it turns out they were capable programmers and nice folks. However, due to political considerations fueled by the ever familiar turf wars, there was great resistance every step of the way in terms of the Windows program design. If you've never found yourself in such an environment, here's how it works. In the beginning, there was the mighty AS/400. All data and programs resided on a single box, controlled by a small group of programmers and managers. He who controls the data controls the world, or so the general feeling runs. The users got what the programmers said they could have, and anything the programming group didn't want to fool with was just stated as impossible to do on this particular computer, and that was that. No one could argue the fact as computers were still arcane and mysterious. And life was good. At least if you weren't the users.

Unfortunately, as time moved forward personal computers began to spring up everywhere like rats in a city. You couldn't shake a stick without hitting one of the darned things, although anytime I saw someone shaking a stick it looked to me like they were pretty much aiming for them. But hey, I could be wrong. The proliferation of PCs wasn't that big of a deal in the beginning, as they were character based and frequently just ended up as glorified dumb terminals anyway. Eventually, though, these drab little boxes began to sport colorful graphical interfaces. Third party programs aimed at all the basic business functions began to take hold in the corporate environment. Local area networks of these little beasts became ubiquitous and soon everyone was using word processors and spreadsheets that had common user interface features and were much easier to operate than a character mode terminal. It was a dangerous time to be a green screen programmer, and territorial disputes erupted everywhere as individual clans vied for control of the terrain and power over the increasingly demanding users.

It was in just such a clan that Fred found himself working on the design of the aforementioned screen scraping application. Having never worked as an AS/400 programmer himself, he had no sense of how the world should be presented to the users for the sake of the clan's continued power structure. He simply knew Windows, and also knew a good user interface when he saw one. The users, too, were becoming educated by the popular business suites of office programs that were rapidly becoming standards in the industry. Both Fred and the users lobbied for common user interface features such as drop down list boxes, wizards and many of the other things that Windows programmers take for granted. Time and again there was resistance to these newer ideas, and for the oldest of reasons. Things had always been done a certain way, they worked, and so there was no reason to change. Perhaps you've found yourself in similar conversations during your career.

Passionate, articulate and relentless, Fred fought continually for standard Windows features, along with another analyst that I'll call Joe, for the same lazy typist's reasons. They also pushed for innovation, new approaches to old problems, streamlining, connectivity, and all the other things typically frowned upon by the green screen empire. Eventually, Fred found himself in charge of the non billing system and curiously, Joe found himself on the same team. Funny how those things work. With the most vocal resistance moved out of the team, the screen scraping project continued at a comfortable, lowest common denominator kind of pace.

When Fred hired me, he explained to me early on that he wasn't a career programmer and consequently his technical knowledge fell off abruptly. His job, he told me, was to handle the political end of things and keep people off my back so that I could do my job for him. He was adept.

In the beginning of the project it was decreed by higher management that all development groups would use the same cross platform development library, for compatibility. This library, while not a complete disaster, was not particularly productive or flexible. Programmers in different groups all grumbled quietly and voiced desires for either the Microsoft or Borland C++ environments, both of which were tremendously more powerful. After several weeks of brick walls, I appealed to Fred for the Microsoft environment (I've had good luck with both compilers, but simply had more road behind me with Visual C++). Being one of those managers who understand that the best way to get results out of your troops is to support them, he quietly gathered all the other managers, got their backing and arranged a meeting with the higher ups who had made the decision on tools.

The meeting was populated by both managers and programmers. Every programmer and manager who had complained to me about the choice of tools was present. However, once the department manager began speaking, it was clear that the battle was over before it began. While both Fred and I spoke strongly and loudly about productivity and all those other little buzzwords that department managers like to hear, the silence from everyone else in the room was deafening. I seem to recall them all being quite fascinated with their shoes at the time. In short, we got our heads handed to us and we emerged bloody and bruised from a meeting that held no successes and perhaps a reprimand or two.

The next morning I was prepared to set about my business with the tools at hand and just make the best of things. I was greeted by another developer on my team who said he had a simple message from Fred - take the Microsoft tools and get the system done. To this day I don't know what he did to pull that off, but I wasn't about to take any chances. That week I worked some ridiculous hours, wrote 10,000 lines of code and made darned sure that the base system was up and running so that Fred would have something to defend himself with should the higher ups change their minds.

For the duration of that project, Fred continually fought battles trying to push the limits of what we could do within the Windows framework. He also fought for tighter integration between our system and others, and high levels of automation for the users to speed up their tasks. If there was a technical capability available to us, he was motivated to put it to use on the users behalf. He saw the benefits that new technologies offered and pursued the bleeding edge with a simple motto: Farther, Faster, Higher. What I saw as the pursuit of excellence, however, was viewed a bit differently by upper management and competing program groups.

We delivered that project on time and on budget. We pulled an all nighter one of the last evenings doing the testing and debugging thing. Fred (and his wife, who also worked in the user community there) were with us all night banging on the app, ordering pizza and asking what they could do to help us make it happen. Together, we all made it happen.

For his efforts to meet the deadline, meet the budget and provide the user community with the best possible tools to work with, Fred found himself in a position that effectively forced him to seek greener pastures. In such environments it is far more conducive to a long and healthy career to sit back, be quiet, support the status quo and not rock the boat than it is to strive for excellence. For my part, I was hired as a contractor and knew that the gig was up when the project was finished. That's just the mercenary life. Just the same, I was irritated on my friend's behalf.

However, the story took an entertaining turn. Joe, the other analyst I mentioned, left first and ended up as the head of software development at a competing firm. He promptly hired Fred. An amazingly similar turf war ensued between the old guard green screen group and their new technology group, this time focussing on Internet enabled applications. It wasn't even a fair fight. The Internet applications caused such a stir when unveiled at an in company demo that when it was time for questions there was silence until one of the employees raised his hand and asked how he could buy stock in the company. My favorite tale was from a trade show where Fred displayed the new system. An employee of the company we had both worked for saw it and commented that he sure wished there were people like Fred at his company to do this sort of leading edge development. I'd pay serious money to have been there when Fred told him that they once had such people but hadn't been interested.

Perhaps there's no absolute truth or simple moral to come from this story. Nonetheless, for all of you who reach for the brass ring and try to push technology to its limits only to be stifled by petty politics and short sighted people, take heart. It was an uphill battle all the way and no doubt continues as we speak, but in the end Fred and Joe were able to deliver a killer system and live up to the credo of Farther, Faster, Higher. Maybe if we all push just a little harder we can raise the standards of the technology that is both our livelihood and quickly becoming the lynchpin of our society. I've seen it happen.

Top Go to Table of Contents

About Christopher Duncan

As a leather jacket wearing ex musician, Christopher Duncan entered the corporate world through the side door. He's held positions ranging from factory worker to company president, and understands from firsthand experience the fundamental principals that every industry has in common. Irreverent, passionate, unconventional and sometimes controversial, his focus has always been less on the academic and more on simply delivering the goods, breaking any rules that happen to be inconvenient at the moment. He is author of Unite the Tribes: Ending Turf Wars for Career and Business Success and The Career Programmer: Guerilla Tactics for an Imperfect World, both from Apress. And no, he doesn't really have an attack Chihuahua. Honest.

Click here if you want to know more about .

Other articles that may interest you

  • Write a Word Add-In – Part 0
  • Write a Word Add-In – Part I
  • Lengthy Operations on Single Thread in .NET Application
  • Learning Draughts
  • Exceptions and Performance
  • Average Rating :

    Discussion Forums
    Got a programming related question? Hopefully someone has the answer... Want to help out other developers? Visit our discussion forums.

    Sponsored by:

    New Articles

  • Exceptions and Performance
    Almost every time exceptions are mentioned in mailing lists and newsgroups, people say they're really expensive.Let's examine that claim, shall we?

  • Creating multilingual websites - Part 1
    Extend the existing globalization capabilities of .NET to create flexible and powerful multilingual web sites. First, create a custom ResourceManager, and then create custom localized-capable server controls to easily deploy multilingual functionality.

  • Parameter passing in C#
    Many people have become fairly confused about how parameters are passed in C#, particularly with regard to reference types. This page should help to clear up some of that confusion

  • Most Popular Articles

  • LDAP, IIS and WinNT Directory Services
    This article explains how to use .NET Directory Services to retrieve and search directory objects, create new directory objects and edit or delete existing directory objects. Describes Active Directory Application Mode (ADAM) and how to use the IIS, WinNT and LDAP directory (ADSI) provider.

  • An in-depth look at WMI and instrumentation, Part II
    WMI stands for Windows Management Instrumentation and, as the name indicates, is about managing your IT infrastructure this article is the second part of a two-part series.

  • An in-depth look at WMI and instrumentation, Part I
    WMI stands for Windows Management Instrumentation and, as the name indicates, is about managing your IT infrastructure this article provides an in-depth look at WMI and MOM 2005

  • New Books

  • Murach's ASP.NET 2.0 Upgrader's Guide: VB Edition
    What’s new and how to use it! That’s what this book delivers if you’re a VB developer who’s interested in upgrading from ASP.NET 1.x to ASP.NET 2.0.

  • C# in easy steps
    Learn to program with Microsoft’s premier programming language. No previous programming knowledge is assumed. With numerous easy-to-follow examples, this title explains the essentials of object-oriented programming with C#.

  • Murach's ASP.NET web programming with VB.NET
    Murach's ASP.NET web programming with VB.NET by Doug Lowe and Anne Prince is a in depth training and reference book for ASP.NET programming using VB.NET. The book builds upon Murach's previous books and covers more advanced concepts for programming ASP.NET pages.

  • Got Code?

    if you have any article , source code , or anything else you'd like to share with this community that you think others might find useful, please submit it here and we will gladly make it available on this site. submit@developerland.com.
    Partners

    All articles are copyrighted by their individual authors unless otherwise specified , everything else Copyright ©2004-2006 DeveloperLand