Archive for the 'Uncategorized' Category

05
May

Web API Roadshow

When Doug and I worked on the flow and content for the “Services Powering Experiences” keynote at MIX10, we ended up with something that would have taken hours to do it true justice. Having to cram it into a 30 minute keynote was very difficult, and as you can imagine, many details of the story weren’t able to be fully articulated, and much of the “on the fly” coding that we both prefer had to be sacrificed for the sake of time.

Fast forward a few months, the story has gotten tighter, VS2010/.NET4 has shipped, and Doug and I have decided to take the “Services Powering Experiences” love around the world. Over the next 6 weeks we’ll be hitting seven different cities, and doing a day long workshop that combines demos/discussions and interactive coding. We’ve got some pretty cool projects to discuss/show off, and a lot of lessons learned when developing web APIs using OData and Azure.

Keep in mind though, this isn’t a Microsoft/.NET lovefest. This workshop is about web APIs in general, where we just happen to be using OData/AtomPub/JSON as the primary subject matter (any general-purpose discussion has to choose a concrete example). We’ll be demoing/writing JavaScript applications, iPhone applications, and would love to have developers from any of those camps attend. It would be amazing to have some Java, Python, Ruby, Smalltalk (Doug would love this), etc. developers there, so please come by and share your thoughts/experiences.

In addition to the demo/discussion side of things, we’re also going to have an afternoon of interactive coding time, where we’d love to see attendees show off anything cool they’re building in the web API space, or experiment with consuming/exposing data via a web API. Once again, any platform is welcome. Anyone with an entrepreneurial itch should also make sure to come hang out. We’re definitely going to be discussing monetization, and what business opportunities exist in the world of web APIs.

The schedule, further description, and agenda can be found here. If you’re not able to make it, but live in one of those cities, and would like to get together for drinks or something, please e-mail me (joncart at microsoft dot com). As always, I want to make the most of the time abroad, and it’s always great to hang out with the local devs.

26
Jan

If He Walks Like A Ruby Developer, But He Talks Like A PHP Developer, Then What Exactly Is He?

After I made my opinionated post last week on the pointlessness of debating what the “best” is in regards to programming languages, frameworks, etc., I got a rather substantial amount of feedback/whiplash from it. I really appreciated someone submitting the post to Hacker News because it ended up generating a lot of great commentary that made me rethink my thoughts on the matter. Have I changed my story? Not really. But, I need to clarify a couple of things.

One of the better responses that I saw came from Ryan McGreal who I thought made an excellent observation:

“It seems to me that the author is ignoring the relationship between experience and expertise in a language. Programmers call themselves [language/framework] developers because they’ve invested a lot of time becoming proficient in that language/framework. Of course there’s some skills transference when you pick up another language, but they’re not commodities and they’re certainly not entirely fungible.”

Ryan is totally right, and I admit that I carelessly made some rather abstract comments without mapping them back to reality. As professionals, we all need jobs, and those jobs come with a label attached to them (e.g. ASP.NET developer). In order to be valuable for those jobs we need to do our best to excel in a specific language and/or framework (most likely both). I was never trying to call out that truth or somehow sound disillusioned to the way you can become successful.

What I need to clarify though is how I view developers, their multiple personalities, and their immensely powerful ability to change between those personalities as needed. When I think about software development as a whole, I think of it as a series of different personalities that people can choose to adopt over time. For instance, if somehow along your career path, you do a stint as a DBA, you’ve acquired that personality. Done embedded development? You got another. Written ColdFusion? Eek, sorry about that (I know how you feel). Worked with functional languages? Guess what? You’re now changed forever.

As your career progresses, your “value” can be calculated in one of two ways: how many personalities you’ve acquired, and how strong some of your individual personalities are. The former is what I focused on in my previous post, the later is what I believe Ryan was referring to, and in most cases is what lands you a job in the real world. But, is that what makes you the most flexible? Or the most well-rounded? It’s hard to say.

I’ve interviewed many developers who applied to a position that was attached to a specific programming language, and didn’t even know that language, but I still gave my recommendation to hire them. The reason was that I felt comfortable enough with their current skill set that I knew I could not only mentor them to transition in another language, but they could become really strong. Truthfully speaking, I never once saw a negative recourse from one of those decisions (thank goodness!).

To me, these types of incidents have always spoken to the fact that a good developer, who has strong fundamental knowledge, paired with the right team, can easily move between languages and frameworks. Everything out there is made up of the same ideas, they’re just worded differently. Give someone the right translator and they’ll be happy to speak the language. Anyone who is running a development team, and doesn’t try to see that potential in people, is doing themselves and their team a disservice.

This anecdote doesn’t exactly hold up for contractor positions where a company is looking to hire someone with a specific skill for a specific amount of time. But, I only think my point degrades from the perspective of the company, not the developer. The next subheading will explain why.

Human Duck Typing

Besides the case of a developer who can flexibly move between languages/frameworks due to his core knowledge, what about the developers who have strong knowledge in multiple areas? I personally know some guys who are ridiculously versed in both PHP and Java, or .NET and Ruby, or both C# and Scala, etc. What do you label those people as? I don’t think that you do, but that’s just me.

If our expertise were like a base class, we could only ever have one (in most languages), but I think many of us can agree that inheritance is overused. If expertise were like attributes that a person could have, then we wouldn’t really care what they labeled themselves as, because we’d only be concerned with the fact that they can speak the language we want them to. That is exactly why “duck typing” in programming languages can be so useful, because from a programmatic perspective it allows us to not be considered with what something is, but what it can do.

When a company puts out an ad for a “Ruby developer”, the guy who has multiple different technical personalities, one of which is Ruby, could then apply for that job, and everybody wins. The company had to choose a specific attribute to ask for up front, but if they were really smart, they’d be interested in a lot more in the long run. In some ways this can also be paralleled to claims-based identity. The identity provider could have a whole ton of information on a user, but the relying party only requests the bits it needs. Likewise, a developer can contain a whole slew of technical prowess, but an employer is only “demanding” a few primary ones.

Wrap This Up For God’s Sake

If you strip out all of the ridiculous analogies and ramblings, all I was trying to say is that as a developer I love sharing ideas with other people and gleaning from them parts of their technical personalities (read my other post here). I feel like this is what makes me a better professional, and keeps my interest in the industry fresh. I appreciate other developers who have a similar interest in learning, and take the approach with their career to try to be as well-rounded as possible without sacrificing the expertise in the areas that make them valuable. At any given time we’re obviously going to have a stronger slant towards the technologies we’re using, but that doesn’t mean we have to settle ourselves in that bucket in terms of conversation. Be what you need to be for your day job, but be all that you can be for your community.

FYI, I realize that was disgustingly cheesy, but it was just too awesome an opportunity for me not to close it like that :)

12
Nov

TechEd EMEA Presentations

Yesterday I gave two presentations in Barcelona at TechEd EMEA: Developing Data-Centric Web Applications and Introduction to ASP.NET MVC. I had a fair amount of requests for my decks, so I’m posting them up for all who care.

PowerPoint Decks:

1) Developing Data-Centric Web Applications

2)  Introduction to ASP.NET MVC

By far, my favorite part of both sessions was when I unveiled my new personal mascot: Giraffe Dog (G-Dog for short). This little guy will be accompanying me around all future presentations. Why you ask? Because he is just way too cool not to!

funny-giraffe-dog.jpg

02
May

If You’re Cool And Live in Sydney, London, or San Francisco…

I’m going to be doing a fair amount of traveling in the month of June, and I’d like to take advantage of it by meeting up with some of the local developer community in each city. I’ll be hitting up Sydney, London, and San Francisco (in that order) and I know by looking at my web stats that I have a pretty good reader-base in all three locations. My specific itinerary looks like this:

  • Sydney - June 1st-June 8th
  • London - June 17th-June 21st
  • San Francisco - June 24th-26th

If you live in one of the three aforementions cities and are currently reading this and would be interested in getting something together, please feel free to email me. Instead of setting something up formally, I figured it would be a lot cooler (and more DIY) to have something pulled together impromptu by the local folk. We can chat about .NET 3.5 Enhancements and rant about the local sports teams to our hearts content.




September 2010
S M T W T F S
« Jun    
 1234
567891011
12131415161718
19202122232425
2627282930  

Categories