My blogging efforts this year aren’t really impressive, are they? Well, the first half of the year I was constantly on the road at a ton of conferences and events and didn’t really get the time to blog much. After TechEd Europe, I was simply burned out, took three weeks of vacation to recover somewhat and since then I’ve been trying to get some better traction with areas of Visual Studio that I hadn’t really looked at well enough since Beta 2 came out. And of course there’s WinFX with Avalon and Indigo that I need to track closely.

Now, of course I have the luxury of being able to dedicate a lot of time to learning, because taking all the raw information in, distilling it down and making it more accessible to folks who can’t spend all that time happens to be my job. However, I am finding myself in this rather unfortunate situation again that I will have to throw some things overboard and will have to focus on a set of areas.

At some point rather early in my career I decided that I just can’t track all hardware innovations anymore. I certainly still know what’s generally going on, but when I buy a new machine I am just a client for Dell, Siemens or Alienware like the next guy. I don’t think I could make a qualified enough choice on good hardware components to build my own PC nowadays and I actually have little interest to do so. All that stuff comes wrapped in a case and if I don’t really have to open it to put an extension card in, I have no interest to look inside. The same goes for x86 assembly language. The platform is still essentially the same even after more than a decade, and whenever Visual Studio is catching an exception right in the middle of “the land of no source code”, I can – given I have at least the debug symbols loaded – actually figure out where I am and, especially if it’s unmanaged code, often figure out what’s failing. But if someone were ask me about the instruction set innovations of the Pentium 4 processor generation I’ll happily point to someone else. In 2001, I wrote a book on BizTalk and probably knew the internals and how everything fits together as good as someone outside of Microsoft possibly could know it. BizTalk 2006 is so far away from me now that I’d have a hard time giving you the feature delta between the 2004 and 2006 versions. Over time, many things went over board that way; hardware and assembly being the first and every year it seems like something else needs to go.

The reason is very simple: Capacity. There’s a limit to how much information an individual can process and I think that by now, Microsoft managed to push the feature depth to the point where I can’t fit Visual Studio and related technologies into my head all at once any longer. In my job, it’s reasonable for people to expect that whenever I get up on stage or write an article that I give them the 10%-20% of pre-distilled “essentials” that they need 80% of the time out of a technology and that I know close to 100% of the stuff that’s underneath, so that they can ask me questions and I can give them good, well founded answers.  In the VS2003/NETFX 1.1 wave, I’ve done something (and even if it was just a demo) with every single public namespace and I am confident that I can answer a broad range of customer questions without having to guess.

Enter VS2005 and the summary of trying to achieve the same knowledge density is: “Frustrating”.

There is so much more to (have to) know, especially given that there’s now Team System and the Team Foundation Server (TFS). TFS is “designed to be customized” and the product makes that clear wherever you look. It is a bit like an ERP system in that way. You don’t really have a solution unless you set up a project to customize the product for your needs. Hence, “Foundation” is a more than fitting name choice.

I’ve been in a planning project for the past two weeks where the customer has a well thought out idea about their analysis, design and development processes and while TFS seems like a great platform for them, they will definitely need customized events, a custom-tailored version of MSF Agile with lots of new fields and custom code analysis and check-in policies, integration with and bi-directional data flow from/into “satellite products” such as a proper requirements analysis system, a help-desk solution and a documentation solution, and probably will even want to get into building their own domain specific language (DSL).  All of that is possible and the extensibility of Visual Studio and TFS is as broad as the customer would need it to be, but … who would know? The Team System Extensibility Kit has documentation to extend and customize process templates, work items, source control, the build system, the team explorer, test tools, and reporting and that’s just the headlines. Add the tools for custom domain specific languages (huge!) and the class designer extensibility and you’ve got more than enough stuff to put your head into complete overflow mode.

And at that point you haven’t even looked at the news in Windows Forms (where I like all the new data binding capabilities a lot) and much less at ASP.NET 2.0, which is an entire planet all by itself. Oh, and of course there is the new deployment model (aka “ClickOnce”), SQL 2005, with all those new features (whereby SQL/CLR is the least interesting to me) and BizTalk 2006 and, and, and …

And of course, my core interest is really with the Windows Vista WinFX technology wave including of course Indigo (don’t make me use “WCF”) and for me to a lesser degree Avalon (yes, yes: “WPF”) for which knowing the VS2005/NETFX 2.0 foundation is of course a prerequisite.

What kills me with Avalon, for instance, is that I’ve got quite a bit of the 2D stuff cornered and know how to do things even with just an XML editor in hands, but that the 3D stuff is nicely integrated and sits right there in front of me and I just don’t have the necessary knowledge depth about building 3D apps to do the simplest thing and not the time to acquire that knowledge. And I’ve got such great ideas for using that stuff.

It looks like it’s time to take some things off the table again and that’s an intensely frustrating decision to make.

Don’t get me wrong … I am not complaining about Microsoft adding too many features to the platform. Au contraire! I think that we’re seeing a wave of innovation that’s absolutely fantastic and will enable us out here to build better, more featured applications.

But for a development team to benefit from all these technologies, specialization is absolutely needed. The times when development teams had roughly the same technology knowledge breadth and everyone could do everything are absolutely coming to an end. And the number of generalists who have a broad, qualified overview on an entire platform is rapidly shrinking.

And the development teams will change shape. Come Avalon, and game developers (yes, game developers) will be in great demand in places that are as far away from gaming as you could imagine. I’ve just had meetings with a very conservative and large investment management company and they are thinking hard about adding multi-layer, alpha-blended, 3D data visualizations complete with animations and all that jazz to their trading system UIs, and they’ve got the business demand for it. Of course, the visualization experts won’t be data mining and data analysis or software integration specialists; that’s left for others to do.

For “generalists” like me, these are hard and frustrating times if they’re trying to stay generalists. Deep and consequent specialization is a great opportunity for everyone and the gamble is of course to pick the right technology to dig into and become “the expert” in. If that technology or problem space becomes the hottest thing everyone must have – you win your bet. Otherwise you might be in trouble.

Here are some ideas and “predictions” for such sought-after specialists – but, hey, that’s just my unqualified opinion:

·         Cross-platform Web service wire doctors. As much as all the vendors will try to make their service platforms such as Indigo and Web Sphere and Web Logic and Apache interoperable, customers will try hard to break it all by introducing “absolutely necessary” whacky protocol extensions and by using every extensibility point fathomable. As if that wasn’t hard enough already today where most interop happens with more or less bare-bones SOAP envelopes, just wait until bad ideas get combined with the full WS-* stack, including reliable messaging, security and routing. These folks of course will have to know everything about security aspects like federation, single-sign-on, etc.  

·         Visualization Developers. Avalon is a bit like an advanced 3D gaming engine for business application developers. While that seems like a whacky thing to say – just wait what’ll happen. Someone will come along and build a full-blown ERP or CRM package whose data visualization capabilities and advanced data capture methods will blow everything existing out of the water and everything with white entry fields on a gray background with boring fonts and some plain bar charts will suddenly look not much better than a green-screen app. In 3 years you will have people modeling 3D wire-frames on your development teams or you are history – and the type of app doesn’t really matter much.

·         Development Tool and Process Customization Specialists:  I expect Team System to become the SAP R/3 of software development. No deployment without customization, even if that only happens over time. Brace for the first product update that comes around and changes and extends the foundation’s data structures. I fully expect Team System and the Team Foundation Server to gain substantial market share and I fully expect that there’ll be a lot of people dying to get customization assistance.

 

That said: I am off to learn more stuff.

Wednesday, August 31, 2005 10:30:26 PM UTC
Consider also the situation had .NET (with it ASP.NET/ADO.NET different ways of thinking etc.), SQL Server 2000, Biztalk 2003, Visual Studio.NET all been released roughly at the same release date, I think you would also of been left scratching your head about where to start.

This is one of the unfortante consequences of taking the road of building everything in a standardized managed enviroment (.NET 2), the releases are going to start happening in avalanches, and the individual products are more and more focused as 'join the dots' enviroments, which means lots of dots for lots of different situations, I think the 'generalist' position is more and more simply going to mean 'worked on too many different projects' position from here on in.
Michael
Thursday, September 01, 2005 3:21:58 PM UTC
Yet another reason why we have to make sure our software is Mort-friendly - because the more focused our Einsteins get, the more they become Morts in the areas where they don't specialize. Software has to encourage both correct use, and best practices. Its fundamental design must guide the user down the right paths. Folks just don't have the time any more to research the 'right' way to do everything.
Thursday, September 01, 2005 11:32:19 PM UTC
Totally agree!

I have been feeling the pitch over the last 18 months or so, trying to sqeeze all of the upcoming .NET goodness into the "noggin", but alas there just ain't enough hours in the day to play with all of the goodies and only some of them get a quick glance.

What will be interesting to see, is if in the next 12-18 months, will employers start to reorganise developers along lines of specialality. I'm certain there will be pockets where this will occur, but it will be interesting to see if this will happen across the industry on a larger scale.

- Paul
Monday, September 05, 2005 2:54:03 PM UTC
A very nice entry, indeed. Very true ideas about the increasing breadths of things and I appreciate your idea of emerging expertise areas very much. Keep up the good work. It was good to see you at PDC 2005. You might recall that we shared an Indigo CTP CD in the speaker's lounge. It was an honor.
Tuesday, September 20, 2005 3:48:58 AM UTC
For smaller 5-10 man teams like the one I work in, the specialist vs. generalist debate is a real dilemma. If you only have five people in your dev team do you let individuals specialise in the hope of improved productivity but risking continuity if you lose that team member?

My experience bears out what Clemens is saying, products like SQL2005 demand specialisation if you are going to get in-depth knowledge of even 50% of the product, this develops a kind of paranoia laced with guilt about the features you might be missing out on!
Saturday, November 05, 2005 3:46:15 AM UTC
Don't despair you are not going to loose the crown of king if you hold to it. You must keep doing what you did up to now.

In 1 or 2 years you are going to laugh at this post, because you are going to master the whole platform again, you are just afraid because you think you are loosing momentum are you are not used to that :)

Being a generalist was never about knowing the tiny details (wich you end up knowing if you are a good one) but knowing what to and what no to use.

I don’t totally agree with the “Microsoft folks I’m a good partner of yours” part of your speech because I think Visual studio has done an excellent job and a terrible job at the same time. It is “a great solution to obsolete problems” it doesn’t bring much innovation to the field besides DSL tools. Everything else is just a service pack for the old stuff.

Microsoft is not acknowledging the need for Architectural Government and their products are starting to collide terribly by adding more and more features to solve product egocentric problems and not platform problems, and remember their biggest advantage was always integration and uniformity but politics are really rottening the apple. Every solution they do is tightly coupled to the FX version they target and they are not backwards compatible as a well thought rule!

On the other side they are by far the best thing out there and looking for alternatives is very time consuming so you are better of with what they give :)


Alejandro Jack
Comments are closed.