Thursday, January 05, 2012

Developer Relations, or the lack there of...

I don't claim to be a marketing genius. I'm also not a manager, nor a customer service rep. I'm a software developer. And I've spent the better part of my career developing APIs for other developers, sometimes from other companies, to use. This, of course, means that I'm also using APIs from other companies, and sometimes the company I work for, to provide the functionality for my APIs. I'm the middle-man of information.

So what does this have to do with developer relations? Where I work, I get to see the breakdown between two parties: Marketing/Management and the Community. When we talk about the community, different companies have different messages to different stakeholders. But I'm focusing right now on Android. Within the large-scale Android community, there is the Android Development community. This is a group of highly-dedicated and very vocal enthusiasts who grasped Android like a child may cling to a blankey. And they make sure they show everyone they know all the latest "features" they've convinced their devices to do. They "sell" the devices to their non-techie friends, who just want a phone that their nerd friend can fix for them if it breaks. For Android, the tipping point was hit long ago, and the Android Development community is thriving, spewing it's messages across numerous Android News website, a multitude of forums, and any social network they can get to with their Android devices.

In recent times, we saw HTC come under fire for it's locked bootloaders. And the very vocal minority raised their voices again, and started shouting from the bleachers. And this shouting became so loud that HTC was forced to acknowledge them. This vocal minority's voice is heard by more than just the people reading the tech blogs and latest trends. It's heard by friends and families, who look for ratings about devices (which get down-ranked if they're "locked", etc) and HTC gave in, promising to unlock their bootloaders in the future.

This repeated itself again with ASUS and the Transformer Prime. The vocal minority is powerful.

So let's take a step back and look at why these companies are so blind-sided by the community, a community which both fosters and coddles these companies, as well as scolds and shuns them.

Developer Relations. Or, in the case of most of them, the complete lack of...

It's one thing to have some highly-paid engineers who interface with companies like Epic Games, Zygna, etc, to ensure high-quality games for the devices at launch. But it's something entirely different to deal with the Android Development community.

He's a prime example: ToastCFH - He is one of the leading Android community developers for HTC devices, a member of both TD (CyanogenMOD) and TeamWin. He brought the EVO 4G community a way to S-OFF their devices, he gave us fastboot, he gave us CM6 and CM7. Working with Shinzul, they gave us WiMAX on AOSP ROMs.

You'd think that HTC, Samsung, LG, Motorola (maybe not, they hate the community)... All these guys would be lining up trying to get him onboard.

But if you think that, you're thinking clearly, instead of with your management hat on.

What would be his role? We don't just pay someone to tell us how our community works. We don't need some random person to "help" us with the community.

Umm, yeah. Yeah you do. Unless you really DO enjoy getting the vocal minority screaming at your facebook page for days, and all the bitching and badmouthing that comes when you release a new product. Maybe that's your thing... seems to be Motorola's thing.

What do you do with him? Well, for starters, you give him upcoming devices, and no source code, just the release binaries. And you give him the proper internal channels to get questions answered. And you let him do his thing. If you're thinking about offering the community some "bone", you ask his opinion. You make sure he's spending adequate time in the forums, helping new users and solving issues. You give him certain amounts of information he can release about an upcoming product to "raise the excitement" in the community for it.

Why? Let's look at the one thing you understand. Dollars. Let's assume a total pay of $100k (including the cost of benefits). And let's say you make $100 per device sold... He needs to sell 1000 devices. Well, if CyanogenMOD is already available for it, or clearly being developed and supported when the device ships, you can easily count that as 500 or more devices sold. Twice a year? Great, there's you pay. You've broken even. All the good will that comes in the forums is icing on the cake.

And how much risk exposure does it give you? Only the information you've given him. Heck, you can actually get away with being less open if people feel they can get the levels of support for the device with ROMs like CyanogenMOD that they expect from the community. And he can help prevent extreme levels of stupidity (see: SBC for the EVO 4G, aka Smart Battery Charging) by trying to stop ideas, and pushing back on people who develop kernels with it as "really dumb".

Use his respect, and you'll gain respect. Of course, if you abuse his respect, people will lose respect for both of you. Any person is only as good as their reputation for being honest and open.

Think about it.


Monday, October 17, 2005

A new strategy

Well, it seems that trying to use the DDK samples is more painful than just learning the API calls, so my next step is to dive into the wonderful world of driver development from scratch, something I feel FAR more comfortable in doing. Microsoft should learn to put more meaningful comments into their code, instead of comments which state the obvious.

For example:

// BUGBUG set this to number of miniports
#define MAX_MINIPORTS 3 // Number of maximum miniports.

Now, I don't claim to be the worlds biggest genius, but I think I figured out that MAX_MINIPORTS should be set to the maximum number of miniports. Maybe explaining WHAT the "3" miniports are would have been FAR more useful, but then again, maybe the author doesn't know either.

Sunday, October 16, 2005

Kernel Streaming Drivers

Microsoft should run for government. The Windows Driver Development Kit contains a full help system, going into great details about developing Windows Driver, including the Kernel Streaming system. From a documentation standpoint, this information is highly accurate, detailing precisely what each function may do, giving specific details to how the system might behave, and clearing discussing how you might want to do things. Or not. It's got a lot of useful information, don't get me wrong. But between the documentation they include for their samples "Use the build command to build these samples" and the extensive lack of information about where the drivers you may be developing actually FIT into their diagrams, they hand over a large stack of unhelpful information. I'm left with the visual of the man in the hot air balloon who gets lost, lands, and a farmer is there. The pilot asks the farmer where he is, and the farmer replies "In the middle of a field of crops." Although the information is 100% perfectly accurate, it bears little actually assistance to the pilot. They need to move some of their publications team from the PlatformSDK team to the WinDDK team. The PlatformSDK is actually rather well documented.

Tuesday, October 11, 2005

Development Practices

TDD, Extreme, CI, Buddy-builds... What's up with all the methods and "design patterns"? Do I wanna "refactor" my code? No, I'd rather write it correctly the first time, thanks. For an industry which got this far without all these methods, you'd think we couldn't get "Hello World" done right without a 12-person development team, test engineers, a release manager, a build team... Hello? Is this design by committee? So I'm switching to a new method. It's got the acronym, it's got the industry backing, everyone who's actually USED a compiler has used it...

STT Development. Shit Thrown Together.

Works for me.

Monday, October 10, 2005

New-fangled technologies

Ok, so I'll give this new-fangled "blogging" a try. I know, as a software nerd, I should be all over this kinda crap. But I'm not. It's too "high-level hoity-toity" for my taste. If it doesn't run in ring 0, it's probably not worth working on. Unfortunately, it's too early in the morning for me to think up any good rants, and even if I did, a cat is currently determined I'm not gonna type peacefully on the laptop.

Since this is my first blog entry, I'll give you an idea of who I am in regards to a "software nerd" and you can make the call. My PC is upstairs, running 64-bit Windows. I'm working on a laptop in bed. From my bedroom, I can hear the two servers running under a table in the other room. One is a virtual server, so it runs 6 different machines. The other is a simple file server. When buying a house, one of the requirements was a location which supported high-speed internet. Most people worry about other things, like the roof not leaking (this one doesn't), or the walls still standning (which they do). Me? Gotta have that high-speed internet. I'll take a cardboard box, if it's got high-speed internet. Is there life without the internet? I somehow doubt it.

Visual of the day: Me, cheese-wizz, and a g-string. Hey, blame my cow-orkers, they thought it up. I'd rather not even picture MYSELF in a g-string. And cheese-wizz is kinda nasty. Easy Cheese, that's different...