[
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
Welcome to Reality
Posted by on Monday, September 27, 2004 (EST)

No battle plan ever survives contact with the enemy. If you're not basing your development strategies on the real world, you're headed for trouble.

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

Sometimes art, sometimes science and frequently just plain GWV (General Windows Voodoo for the uninitiated), developing software for the Microsoft Windows platform is an intoxicating experience. More potent than any drug on the streets and capable of keeping us up for nights on end without sleep, programming is a passion and a religion. Intense and focussed, we forsake many of the traditional social amenities, decline invitations to all but the most entertaining reindeer games and occasionally even forget to water the dog until he's gnawing on our well worn sneakers, all for the sake of just one more compile. We're here because we're hooked.

Somewhere along the way most of us have also awakened to a rather insistent little alarm clock reminding us each morning of a simple and immutable fact. Our passion is now our vocation. Without question, we are the fortunate. Each morning we press through traffic with great enthusiasm, juggling coffee, dodging the occasional unwary Chihuahua and passing others who aren't nearly as eager to get to work as we. For the record, the Chihuahua probably isn't that crazy about the traffic, either, and doubtless has frequent sessions with his therapist about it. Indeed, we are lucky. Very few people in the world get paid to pursue their hobby. That's why we signed up for this gig in the first place.

However, as every veteran programmer knows, the coding is the easy part. It's also the part that we'd much rather be doing. In the Real World, though, there's much more to manage. Deadlines, analysis and design documents, timelines, estimates, product specifications, installations, documentation, training, support, meetings, bureaucracies, politics, marketing, scope creep, testing and technologies that seem to change almost hourly, the list goes on and on. For many, it's a bit of an eye opener in the beginning to realize just how much time and energy is required in non coding areas when all we wanted to do was make steady money writing clever little apps.

Those of you making a living as developers in any of the Microsoft technologies are paying the bills and eating on a regular basis because you're just plain good at what you do. Windows does not suffer fools. Part engineer and part artist, we are as a class of creatures both proud and driven to be the best at what we do. Show me a programmer without at least a little ego and I'll show you a very mediocre programmer.

Being a first rate developer is no simple matter given the multifaceted nature of our business. The bottom line, however, is a constant for us all - delivering an easy to use, stable and functional system, on time and on budget. No matter how well you can make the compiler dance, if you can't master all the other factors in our profession that contribute to or interfere with this goal, you lose. From the idealistic and purely creative world of our early programming days we step through the looking glass into the business world that pays our bills. Welcome to reality. We hope your stay here is a pleasant one.

Success in our industry can be defined in a number of ways. Making good money is the most obvious of these, but in such a creative world true achievement requires more. For the dyed in the wool software developer, artistic control is every bit as much of an issue as it is for a rock star. While there's a slightly smaller chance of wild eyed groupies flinging themselves at the team who just produced the perfect corporate order entry system, it doesn't diminish the satisfaction of a program elegantly designed and brilliantly executed. Okay, so maybe there's no chance at all of wild eyed groupies. For what it's worth, few aspiring rock stars eat as well as we do. Fringe benefits aside, however, there's not a programmer out there who wants to deliver a less than spectacular product. While the art versus science debate will likely rage forever unresolved, in many ways designing and developing a software system is no different from creating a breathtaking painting, an emotional symphony or any other priceless work of art. Forged in the fires of dedication it begins with inspiration and vision, requiring skill as much as talent.

Given these facts, one would think the corporate world fortunate beyond belief to be populated by such a large amount of artistic and passionate souls. (Anyone who thinks that computer programmers are geeks without adrenaline has never attended a design meeting or had to dodge the occasional white board eraser. Ever wonder why they made those things so soft?) And yet, why is it that in almost every industry we find example upon example of uninspired, buggy, clumsy or just plain bad software? What kind of an artist would let such shoddy work out the door? How could they possibly show their faces at the next developers conference? Good heavens, why don't they just get their employment status revoked? The answer is neither shocking nor unusual. The artists are not in control. Who's driving, then? The business people, of course.

Having eked out a meager living in a previous lifetime with a guitar in one hand and a box of macaroni and cheese in the other, I can assure you that this phenomena is not limited to the software industry. Nor is the typical response to the situation. Wander the haunts of the disillusioned and dissatisfied in either industry and you'll hear complaints of art lost to commercialism, how the greed of the corporations is stripping society of the art it could so easily enjoy if the priorities were set by artisans rather than accountants. You'll hear innuendo or exclamation that money is bad, money is the problem. Right before you hear the grumbling about being broke. Artists have short memories. You might also hear complaints about the lack of groupies, but that's another topic.

In defense of Suits everywhere, let's clarify something at this point. Money, or the desire for corporations to make more of it, is not a bad thing. Ever the public servant, I'll be happy to assist anyone who disagrees by emailing you my bank account number so that you may rid your life of all that pesky currency with one simple, painless wire transfer. If the company does not generate revenue, from what eternal spring comes your paycheck? (You do get paid, right? If not, I've got a few projects I'd like to discuss. No scope creep. Honest.) It's a simple fact of life that companies have to turn a profit in order for us to pay the rent and stock the fridge with Jolt cola. Well, okay, maybe the dot com world doesn't have to turn a profit, but hustling up those investors is probably just as much work.

If every program developed is not the next Killer App, or at least a reasonable contender, where then does the blame lie if not with the bean counters who make decisions based on profit and loss statements rather than the inherent coolness of a system? The responsibility sits squarely on the shoulders of folks like you and me.

Did I just hear someone from the back row reminding me that the artists are not in control? Good. I'm glad to see that you're paying attention. There will be a test later. If we're not in control of the process, then how can we be responsible for the high level design decisions made on the software we're paid to develop? The quick answer is that, technically, we can't be if all our cleverness is overridden by those at the top who don't share our vision. As in most areas of life, though, things are rarely that simple.

CodeGuru is a site dedicated to helping those who write the code. Here you will find volumes of code snippets making it easier to get from point A to point B before your manager appears at your cubicle with an AK-47. Are we smart enough to figure this stuff out on our own? Of course we are, given enough time. Regrettably, time is rarely on our side, and so the availability of technical solutions here is a lifesaver as we race away trying to beat the ever present deadline clock.

Still, no matter how helpful this is, addressing the technical side of our world and ignoring all other facets still leaves our careers and our code at the mercy of the fiscally oriented. It also does not shield us from the software industry's business model that views releasing a buggy product as acceptable since it's better to put out a patch later than be second to market.

How, then, do we take charge of our projects and our careers in a world where we're not in control? It's simply a matter of attending to all those non coding issues, and getting good at them. If the truth be told, I'm happiest when I'm left alone in my corner, coding away at warp speed with someone coming by and tossing raw meat over the cubicle walls every day or so. Nonetheless, I have a passionate personal desire, and not incidentally a professional obligation to my clients, to deliver the absolute best software possible. That means honing skills in areas that don't require a compiler, whether I like it or not.

A veritable herd of unruly questions (all complaining about the lack of room and how long it takes to get a decent pizza delivered these days) now appears to illustrate this. Can you sell an idea both to your teammates and to your superiors? Further, can you give your boss the ammunition needed to carry that idea further upstream, rationale and justifications that will make sense to the business bottom line rather than just your perception of technical cleverness? What's your philosophy on testing, and how serious are you about implementing it? Further, how serious are you about error checking and writing bulletproof code? Have you learned how to hot rod your editing environment so that you can concentrate on the logic, not the typing, thus maximizing your productivity and the number of lines of code you can kick out in a day? How's your political and diplomatic abilities? How about your interviewing skills, on either end of the table, not to mention your ability to write a good resume? Do you know which technical skills you need to be on top of to maintain your value in the marketplace? When you do hit streets looking for that next gig, how's your negotiating skills (you don't think they're going to make their most lucrative offer on the first pass now, do you)?

If these questions haven't worn you out or swiped the pepperoni off your pizza when you weren't looking, they're all worth considering if you want to be in control of your career as a professional software developer. That's exactly where we'll be headed in the weeks to come. Most of these topics have little to do with the nuts and bolts of writing code. You already know how to do that. All of these issues are absolutely critical if you want to make more money and eliminate the obstacles you find in the Real World to writing a exceptionally cool system. It ain't sexy, folks, but for the pro developer it's imperative. All any of us really want to do is write the next Killer App and get rich in the process. However, until you get as good at managing the non coding issues as you are at coding, you're target practice. The gratification comes when you've become adept at deflecting corporate distractions, maximized your productivity and can kick out a bullet proof and inspirational work of art that will be the envy of your peers and the reason your boss gives you more money, lest you seek greener pastures.

Besides, regardless of the endeavor, there's just no substitute for being the best.

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