Archive for the 'Uncategorized' Category

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.




March 2010
S M T W T F S
« Feb    
 123456
78910111213
14151617181920
21222324252627
28293031  

Categories