My job title is “.NET Developer Evangelist,” which (as comically vague as it might seem) is very self-descriptive. My job is to talk about the goodness of .NET to whomever will listen, willingly or otherwise. Unlike Scoble, also an Evangelist, I am employed by a vertical within Microsoft, the Communications Sector vertical. Blogging has little impact on my true audience, as my customers are developers within telecommunications companies. This explains a large reason why I have blogged less and less in the past 4 months. This explains why my posts are growingly less techically-relevant. This is an unfortunate byproduct of my new job (of four months now): largely, I cannot talk about customer matters, and I am so busy that I hardly have time to read blogs (let alone author a consistent one). I code in PowerPoint on a daily basis and I am usually too pressed for time to smell the roses and share with the community that got me here.
The telecom industry, as a whole, has been likened to “a chubby kid in a starvation contest,” meaning that companies are being purchased or filing for bankruptcy at an exponentially higher rate than new companies are entering the industry. These companies want to leverage their existing investments as much as possible while adding new and compelling offerings that make their services just a little more inviting than the competition’s. These companies are very interested in innovation where it adds something at a rdiculously low cost, but in a tight industry you have to carefully weigh investment against your expense threshold. Pain matters, and its effects are felt immediately and far. These companies do not invest in technology simply because it is newly released: in fact, these companies relable “upgrade“ as “risk“. The slightest blip in a patch deployment or desktop upgrade means lost production, lost revenue, and a definite scarlet A for the vendor responsible.
This is why this is a perfect job for me, and why this is a dream job for any “Evangelist.” You get to preach to the masses, the poor, the downtrodden. You help restore faith in the faithless, the lost. Budgets do not typically run dot-bomb rampant: to the contrary, budgets are typically highly constrained and closely guarded. Vendors go to highly contested bidding processes, and the results are sometimes bordering on freaky blood matches. Drama aside, you get to work with some amazingly talented developers with a highly varied background who are more interested in task completion than technological zealotry. But here’s the kicker: you get to talk about a technology you believe in and share a view of The Way Things Ought To Be with a side of political irreverance. That’s right… I am not paid on commissions, I am paid simply to tell about the wonderfulness of .NET while discussing how it addresses rather obvious pain points.
If you believe Joel Spolsky, Microsoft seeks to give their development tools away. If your job partially depends on adoption of .NET, however, you have a very different opinion. How do you compete against Eclipse when IBM doesn’t even charge for their premier IDE? How do you state the virtues of Visual Studio 2005 when the people you are tyring to talk to only want to know if you have a GUI approach for expressing deployment descriptors for BEA Web Logic Server? How do you sell an IDE without a graphical tool that will make building Ant XML files easier? No, Microsoft does not give their tools away, in fact the only software assurance program path for Visual Studio .NET is currently MSDN Universal. Microsoft asks a fair price, and it is a price I am more than comfortable discussing with my customers: I was an independent consultant not so long ago and found the means to purchase MSDN Universal for myself. Writing that check hardly felt like Microsoft gave anything away for free.
I come from a varied background. I have coded Java in the past, and I liked it. To quote a conversation overheard between Ted Neward and Cathi Gero, referring to Cathi’s speckled FoxPro past, “I inhaled, and I admit it.“ I also coded quite a bit of Pascal and have compiled my share of C for HP-UX. I find beauty in grep, awk, and tail, and honestly believe from experience that vi is a remnant of the afterbirth from Satan’s spawn. I had a love-affair with VB at one point, back when it was just starting to piss Karl Peterson and Bill Vaughn off and when it turned Matthew Curland on to its beauty, the same point frozen in time tangent to the point when Bruce McKinney became simultaneously disgusted with everything Visual Basic. It is preceisely this varied background that helps me to appreciate… no, adore… no, absolutely believe in the very product that I am tasked with talking about… NET and Visual Studio .NET. I just happen to think that God also likes squiggly braces and semicolons, and I think that God somehow finds the statement “OrElse“ singularly offensive.
I have coded ASP classic (OK, HTML with “%“ directives), C#, Java, VB, ASP.NET (“%“ directives with code-behind), J#, C++, SmallTalk (yes, a self-admitted glutton and loner), and a myriad of script languages and XML dialects. No IDE handles them all so flawlessly as VS.NET. My old IDE of choice was Visual Slick Edit (aside from God’s own true editor, Notepad), which is wonderful for C++, Java, and even C# but has problems being faithful to VB and ASP.NET (along with VBScript and classic ASP). Now, I lean between Notepad and VS.NET.
Here we get to the true difference between those in the telco space and the rest of the developer community. They drive towards Java and J2EE out of a seeming sense of duty. This is not a Java-based duty, quite the contrary. These developers are under the guise that they must be prepared to migrate servers at a moments’ notice. “We must be prepared to run on any of the available servers, be they Solaris or BSD.” Yet there are hardly servers laying around unused, in fact there is nearly an epidemic of server shortage. Hoping for the One Great Day of Consolidation, yet another Big Iron box is obtained under the guise of future consolidation and migration. “Ignore the current numbers, 3 Microsoft boxes fully stocked surely cannot compare in 5 years to the single server license we currently have obtained. We did not ignore the financial numbers, the advice from Forrester and Gartner, the results from various studies, we just currently disagree based on a gut feeling.” This is reminiscent of the Great Database Layer Debate: do you design to be database agnostic in case your database changes, or do you deliver for 1/2 the cost and twice the performance? Or do you code to the lowest common denominator because that’s the way things have always been? How often do you switch database vendors? If you are switching backend databases, chances are that you have a large number of stored procs waiting for migration that will far exceed your code’s calling convention… supposing that you listened to the nTier Argument for the past 6+ years.
OK, a bit of preaching came out in the last paragraph, but this is the honest truth. I have the ultimate respect for the developers in the telco space as they do a tremendous amount with very little. While the Lazy Programmer gains attention, the telco companies are composed of the Resourceful Programmers who do what they need to do to get a job done. I cringe when I can help a cash-strapped department make a better decision and they won’ t listen based on fuzzy factors. Admittedly, I don’t always push .NET… why lose credibility telling them to migrate when they have something that works? However, there are many occasions where what they have is not working and .NET fits the bill so glowingly obiously that I want to scream.
It just happens to be my job to show you how to get where you want to go using Microsoft technologies. That is, if you run a cable or phone company.