brady gaster

yadnb

Meanwhile, in the REAL WORLD

Perhaps its relatively synchronistic that I began this new project with this new client right before TechEd, during which all of my colleagues will be finding out about all this new stuff coming out with Whidbey and yada yada. Perhaps its a little weird that, during TechEd, I was reminded of a really interesting fact...

That there are people out there who are still learning the proper usages of the 1.1 Framework.

Even still...

There are some people out there who are using 1.1, but haven't quite grasped the power that it provides them, because of the fact that the overwhelming amount of work dictated by their employer dictates the “just get it done” paradigm.

Point, Mr. Gaster? Simply, there are people out there who are incredibly intelligent, who know technology, but because of the fact that they have applications to build on a daily basis, they don't have the time to really understand some of the unpderpinnings of .Net. That fact proves one very important thing to me -

We as a population are guilty as all hell of jumping the gun far too often, and as a result leaving many in the proverbial dust, forever to play catchup while we move onto other technologies. We as developers are a fickle group of people.

Some of my peers are good at .Net, others suck at .Net. Some still even hate it. And within all of those groups, there are members who really rock as programmers, but haven't had time to learn about delegates, events, attributes, reflection, inheritance, polymorphism, implementation, collections, design patterns, and all the other goodies we sometimes take for granted.

The team with whom I'm working, for example, contains a lot of individuals who have these nice little friendly things called deadlines and requirements, and for those reasons, are still writing procedural, ASP-like code.

[Okay, close your mouth and stop looking so shocked. You have lots of spare time, and for you (like me), technology is not only a job, its a passion/addiction and you revel in learning all you can about it. Sometimes, the application isn't as important as the vehicle. Stop looking so surprised for one moment while you're learning about all this new stuff and remember that, outside of that ivory tower in which you work, there's this real world, with money and requirements and users and developers and deadlines and all other sorts of things that aren't always as black and white as the code.]

Here's the deal - stop for a moment. I challenge you to go find one of your peers who's working with .Net, who's been grappling with a particular project for X days/weeks/months. Then, ask them if you can look at their code. Take a look at what they're doing wrong, and show them something new. Take an hour and use all that knowledge you've picked up about refactoring to help them split that hairy function into little pieces. Help the guy who's been struggling with his new web application build the reusable stuff into a web control so that he won't have to do it over and over and over again. Better yet, help the guy next to you who's having issues with his data layer, and assist him in the development of a simple ORM class structure. Or whatever the case may be - take a moment and help someone who hasn't had the time you've had to learn this stuff do it in a better way.

This team I'm on - they're awesome, each one of them - but they haven't had the time I've had to learn how all of this new stuff works. Some of their code lacks organization. Some of it could be refactored. I looked at an app yesterday that's simply beyond refactoring because of the sheer complexity of the business logic, which had to be hard-coded (and trust me, I'm not slacking on this - I implemented two brand new architectures over the weekend to accomodate this beast and neither ended up working because of the fact that this puppy is so freaking specialized there's no way it can be encapsulated).

If we as a developer community forget these very important people - those who are consulting, developing, maintaining, or architecting each and every day of their professional lives for clients, employers, or non-profit organizations whose businesses depend on deadlines (and not newfangled nify-ness or “oo-ah code“) - there's no point to the whole industry of information technology in the first place; what good is an industry whose sole purpose is to further itself and “be better“ if those using it haven't the time to learn how to properly make use of it?

Sure, you could call youself a “computer scientist” and argue that your career revolves around the “newfangled niftyness.” But for those of us out here in the real world who are trying to make business succeed, there's a different need. If the developer community exists solely to drive technology, what community exists to support the “enterprise developers” out here in reality who have to do something for our organizations? What community exists to teach my new partners-in-crime the “right” and “wrong” ways of doing things? Who is responsible for looking at the “new procedural C# code that could have just as well been written in VBScript?”

I'm out here doing it, and I'm not at TechEd. I'm giving a seminar for my team in the upcoming weeks on the proper usages of Delegates and Events, so that they might get some of their own “a-HA!”'s and find the kind of joy I've found with those two lovely little tools. Next? Maybe a lunch-and-learn on Attribute-based coding. And then, who knows?

One thing is true - I'm not going to show them things that they don't need to know. I'm not going to mention Whidbey. Why? They don't use it, they have no plans of moving to it any time soon. And more importantly - clients like this make mistakes because they haven't had the time to learn the stuff. They're too busy w-o-r-k-i-n-g for their organization, helping their team, and helping their internal customers. If these misuses continue to flourish, chances are they'll assume that “.Net isn't that much better than ASP.”

If that happens, what's the future of Whidbey? Or Microsoft? Think about Java - it was too complex, too slow, and Sun did a pretty crappy job of informing people on the best ways of doing things, because there was so much focus on coming up with better ways of doing what needs to get done done today. What happened to Sun? And to Java?

Reminder - .Net just took over in terms of acceptance.

All I'm saying is this - take a moment to remember the others out there, who are actually using .Net and coding as a means to a larger end. There's more to it than just code. There's more to it than niftyness. There's a whole big real world out there that continues to run because of technology. Don't let all those people working get left in the dust because 1.0 or 1.1 is so “yesterday.” The developer community needs to remember one very important thing -

If you keep pissing off the people who employ you because you're so focused on the technology for it's own sake and don't ever build anything with the toys you already have, you have no one to thank but yourself when the technology ceases to be accepted and applauded because nothing ever “worked” with it.

Comments

Jason Mauss said:

well said, Brady. This is a pet peeve of mine. I think it's actually starting to become a much more serious problem than anyone thinks. Believe it or not - I would actually prefer if there was zero mention of Longhorn/Whidbey at all until it shipped. I don't appreciate Microsoft changing their focus before I've had a chance to really pick up and learn what they already gave me. The constant "c'mon...catch up with us" crap from MS is a real pain in the ass.

Microsoft, listen: You *WROTE* the friggin' software....stop for a minute and just think about what kind of position that puts you in - in terms of knowing the technology. Let the rest of us catch up before you take off and leave us with nothing but answers like "So, In Longhorn and Whidbey with Avalon and XAML you can..."
# May 25, 2004 4:25 PM

senkwe said:

God, you have NO idea how much this post resonates with me :-(
# May 25, 2004 4:32 PM

Alex Lowe said:

I work for Microsoft. I work in the field (i.e. outside the 30 acres surrounded by reality that is Redmond). I see Visual Studio 6, Visual Studio .NET 2002, and Visual Studio .NET 2003 in use everyday. I work with customers to help them learn and implement best practices with these existing technologies all the time.

While I can relate to a great deal of what is said, I think that you can only speak from your perspective. Your perspective is your perspective. Your perspective is not that of many of our customers who are asking for new features and asking to use the next generation of tools - TODAY. Yes, that's right.....we have customers who want more features and want to use the software that is cutting edge and they want it today.

Now, set aside the fact that we have customers who want to use the technology that many are just not ready for. Let's look at how a business makes decisions. Businesses DO NOT make a decision solely on what a technology looks like today. Business DO make a decision based in part on what they can do today with a technology but more importantly what they can do with it tomorrow. Why is tomorrow more important? Because everyone knows that technology will change and most companies are looking to do a few things of which cutting costs and being more efficient are pretty high on the list. I can tell you that in my district, companies DO want to know how Microsoft software will do that for them going forward.

Back to *your* reality. I commend you for focusing on what is important in software development - the things that make a great application. I think your team attitude surely shows in your applications and your business. The things you speak of are great but they in no way preclude Microsoft or the community from looking forward to what is coming down the pipe. There are a ton of resources available for .NET developers working in .NET 1.x. Only so many articles on delegates, events, etc. can be written and I don't think you will see the articles on the 1.x technologies stopping anytime soon.

Remember, the folks outside of Microsoft who are beating their chests about the new stuff are a very vocal minority. Everyone else lives in the real world and there is nothing wrong with that. Similarly, I don't think it is worth your breath to worry or labor over those who are in a position to look forward at the new stuff. The two philosophies are not mutually exclusive - developers have lived in a world with new and old technology since technology became a word.
# May 25, 2004 4:48 PM

Jose Manners said:

Bravo!!! At last, a blogger with some sense.
# May 25, 2004 5:08 PM

David Levitt said:

Wow! You know I had a similar train of thought over the weekend....after a barrage of new information on what 2005 will bring (DevDays, ASP.NET Roadshow, TechEd, etc.), I found myself in that "vocal minority" only looking forward to tomorrow's tech and losing focus on what is available today.

Coming from an ASP background with no OOP experience prior to .NET, I sometimes find myself in a bit over my head....sure I'm bustin my hump trying to get up to speed, but rather than continually looking to the future I need to slow down and get a handle on some more of the fundamentals that are still a bit hazy....

As always, your comments help shape the way I code Brady. Great article.
# May 25, 2004 6:15 PM

Jack William Bell said:

Good luck on the 'teaching your co-workers' front. I know from long experience that this can be very difficult for a variety of reasons. I have also learned to have realistic expectations as to how much they actually apply in the real world. People tend to be set in their ways; another reason for doing things sub-optimally that you left out of your post.

I would like to point out an interesting fact (born out by several <a href="http://www.stevemcconnell.com/ieeesoftware/bp14.htm">studies</a>): Two out of every ten programmers are more productive than the other eight put together, but compensation and influence are often not linked to productivity and ability (something I have written about <a href="http://slashdot.org/~Jack%20William%20Bell/journal/29640">here</a>). You are probably such a 'star' programmer, but the people you are working with are not. They are probably very good at some specific and narrow area, but they can only start doing something different with difficulty. And, far too often, they are promoted into managing the 'stars'.
# May 25, 2004 6:27 PM

TrackBack said:

# May 28, 2004 4:19 AM

TrackBack said:

# May 28, 2004 8:44 AM

Zolpidem. said:

Zolpidem tartrate. Zolpidem.

# August 3, 2008 10:55 PM
Leave a Comment

(required) 

(required) 

(optional)

(required)