Learning Microsoft (PT1) - C# and XAML are it?

It's been roughly three months now since I started at Microsoft. I've been learning enormous amounts about the company and products it has on offer. I've been studying a lot on all web based products we have on offer and so I thought it would be worthwhile to put together a weekly series of posts on "Learning Microsoft".

I mention this as being a developer of Adobe/Macromedia products of past, it's been somewhat frustrating to go back to the starting line of learning a new language (I hate building shopping carts via tutorials) to get my head up to speed around the languages we have. That being said, I have to go through the motions as despite my understanding of OOP + Design Patterns, you've still got to crawl before you can walk.

Bridging Course a Must

I've not seen many places where I could see how to go from say Coldfusion to ASP, other then Learn2Asp.net. In doing all of the modules (yes, I did them all) I found out more and more about how ASP + C# really work under the hood and more to the point just how easy life is for Microsoft Developers.

I found it a bit scary initially to think at just how easy the distinction between client-side code vs server-side get's blurry by using Visual Studio 2005.

eg.

You drag a Submit Button into your "Design View". You then double click on it, and not only is the code packages etc setup for you already, but the code's stubbed and you're ready to start wiring the "behavior" or "logic" on what this button is about to do going forward.

In comparison to say Coldfusion + HTML, well you need to do a lot more work to make this happen is all I'll say.

That's one of many more examples of how creepy life can get in ASP.NET world.

Languages

Ok, so given that C# is my preferred language of choice (I tried VB for a while, but it feels goofy footed for me, hey different strokes for different folks so VB is cool! still) and given this I started to explore what others I may need to learn in order to get my foundation pieces together for future products (given my job title that was important).

I was actually freaked out, more shocked that I'm really going to only need to know the following:

  1. C# (kind of knew, based off of Java learning's)
  2. XAML (kind of knew, based off of MXML learning's via FLEX)
  3. ASP (new, but very similar to Coldfusion + Spectra days)
  4. SQL (already know)
  5. HTML (already know)
  6. JavaScript (already know)

These language's are what my day pre-Microsoft would of been like:

  1. Coldfusion (CFML)
  2. ActionScript 1.0 + 3.0
  3. MXML
  4. JAVA
  5. SQL
  6. HTML
  7. JavaScript

I was lucky per say, as a year ago I started on C# anyway so once I figured out that ASP, XAML and Advanced C# was all I needed to know going forward it struck me as to how interesting Microsoft has been in empowering developers in this regard.

As when I think about it, I've spent X number of years learning Coldfusion and ActionScript 1,2 & 3. Yet, these are restricted to the one set of products (dare I say one-trick pony's). You can't embed ActionScript code inside Coldfusion and vice versa (well I lie you can via certain CFFORM pieces only, as Flex 1.5 is bootstrapped into Coldfusion 7, but in a locked down mode. Not sure if this will continue though in Coldfusion 8).

C# however, you get to use through-out the entire Microsoft Product range, everything from IIS7 through to Powershell.

So, C# is something you can use in a number of career paths and ways and it's growing in size in terms of places it can be used not just via Microsoft products but 3rd party offerings (so it's a great primative to have under your belt, no matter what style of developer you are at present)

Microsoft don't celebrate that enough, so for me, I thought I'd point that out as that's quite a compelling argument developers should ponder more on.

A developer whom is about to use Adobe FLEX for example will need to understand that they will have to learn a new language, which is similar to C# but has specific differences.

Yet, with WPF/e and WPF going forward, that's something they can take from ASP.NET development into the new way of life going forward. It's currency one can use between different playing fields and you're not swapping in and out of languages.

It's also useful for me, as once I got over the C# hurdle, my confidence in using the other products (sharepoint, cardspace, workflow foundation server, IIS7 etc) was there and it was more about their respective SDK's that one really had to study.

Awesome! ( no more writing bridging scripts & converting native objects between disconnected technologies! ).

That's it so far, I'll talk more about Sharepoint, ASP.net and Macromedia Spectra next time.