Tuesday, November 01, 2011

More on specialization

My recent post on specialization has ignited a bit of argument with people on one side saying that I've "come out against learning" and specialists who didn't like my use of their UI/database specialties as a poor example (if I die in a suspicious UI/database related incident, my post is to blame).

The point of the post was that we should encourage "multi-learning" or more cross-specialization without seeking to homogenize all specialization.  The point of the "anti-specialists" is that a graphics programmer should learn more about physics programming.   There are benefits, personally and professionally, to doing this.  There are common solutions in both and insights that crossing boundaries can create.  I agree.

On the other side, many deep specializations take, as Malcolm Gladwell wrote, over 10,000 hours of practice and an innate skill to achieve mastery.  I use the example of musicians because as a untalented amateur musician, there is no way I am going to become skilled enough to even write 10% of the music that a game needs.  However, having worked side-by-side with them and learned their workflow, I can still help them do their job.  Having learned about mixing and composition a bit, I have widened my world and appreciate game sound tracks a bit more.

We often specialize far too much.  For example, some studios have specialized QA to the point where a programmer just has to hand off barely compiling code and someone else integrates it.  QA should be the more the responsibility of everyone creating the game.   Everyone on the team should care about quality.  It shouldn't be a role.

We should also learn more about every surrounding role, every day.  We each shouldn't be just a specialist cog in a development machine.  We should be "game developers" first and [fill in the blank] specialists second.  How many games have you seen or worked on where its apparent that one area of specialization dominated and ignored the rest of the game?


Unknown said...

Yeah nice idea. I agree to it. Similar is the case with software engineering. I advocate just like you that we should be more like developers and less like concrete and independent things. I advocate Agility and you shared nice thoughts on it. Did i get you right?

H-P said...

I agree totally to this. The "everybody should be able to do everything" part is often intepreted that everyone should be equally capable on doing everything.

What I most love to see in my team is part of developers who can work well together and but also each have some unique quality which makes them a top professional in their field. Where I see the cross-functionality coming into use is more into mindset level, being able to find the best solution and ways to work together as a team and being prepared to do whatever is best for team even though it means that they couldn't be all the time doing the thing they are best in.

And this comes from perspective of having worked in both games development and more traditional software development, in which of both the specialization is as integral if working on cutting edge products.

Of course, if someone can say that it is possible to have a team where everyone is holistic specialist and even knows such team, give me a word and I'll invest all my money to that team and become a billionare in no time. ;)

But all in all, good post Clint, and I can't agree more.

Clinton Keith said...

Muhammad, sounds right.

H-P..Great comment....thanks!!