RSS

Category Archives: sdk

What is a Developer Advocate?

I wrote a bit about “What is a Developer Advocate?” back in October in the article Introducing the Rackspace Developer Relations Group and open cloud SDKs. Not a whole lot of time has passed since then but my thinking on it has evolved and I missed a number of things in that first pass. I’d like to take another crack at it and I still get asked this question often enough that it’s always fresh in my mind.

Definition

A developer advocate is someone who’s primary responsibility is to make it easy for developers to use a platform. In my case, I’m trying to make it easy for developers to use OpenStack and the Rackspace Open Cloud. I view the role as having a foundation of three pillars: development, advocacy, and community.

Development

gitI’m a software developer. I know when a platform isn’t as easy to use as it could be and how to improve it. You need to know the craft and have the respect of your peers. Without that the rest is moot. This is especially true in the meritocracy of open source. I think that’s why you don’t hear much demand for “technology evangelists” anymore. If you can’t speak to developers because you aren’t one of us, your arguments will fall on deaf ears. Naturally this involves all of the usual development activities like architecture, design, implementation, testing, and debugging. The product of this includes tools that make it easier to use your platform like SDKs, examples code, command line interfaces, and IDE plugins.

I contribute to open source. In an increasingly web service API driven world, the tools built on those APIs are often open source. I think it’s a natural fit. The tools are geared towards dev and ops and we need them to be open source so we can figure out just what the heck they’re doing when things go sideways. Working with open source communities and commercial organizations can be a bit tricky. Personally I’m walking the line between jclouds, OpenStack, and Rackspace. Hopefully, most of the time your goals will align but sometimes it’s just a matter of balancing the priorities between the differing concerns. Always remember to stay humble, helpful, and honest. The product of this includes helping other developers contribute, code reviews, having an opinion on community matters, and helping out in ways beyond your immediate concerns.

I’m a technical writer. I also stress documentation as a key developer advocate activity. Documentation is often done by developers but it’s particularly important to this role. When trying out your platform for the first time, the first place most developers are going to start is the docs. If you’re trying to make your platform easy to use then those “Getting Started” style docs had better be clear and concise. This will be one of the first experiences a developer has with your platform and you want them get on board smoothly. The product of this includes getting started guides, reference documentation, and detailed API docs.

Advocacy

micI represent third-party software developers. We’re out there trying to build the platforms and tools that people love to use, make developers productive, and make it worthwhile for them to invest time in learning our platform. When building this stuff, sometimes it’s easy to lose sight of the forest for the trees. Which is to say, we can lose sight of the very developers we’re building this platform for, if we get too focused on the details of the technologies. We need to keep the needs of the third-party developers foremost in our minds at all times to prevent that.

I represent my company, Rackspace, and its core values. Public speaking is definitely a requirement for the role. You need to be able to comfortably get up in front of an audience and let them know why your platform and its ecosystem are the best place to invest their time and effort. Focus on the benefits to them. My preference is to give workshops where you can get developers writing some code, doing something useful with the platform, and really demonstrating its ability. This goes back to the developer half of developer advocate. The product of this includes presentations, workshops, and demos.

I help lead technological change. It’s rare that a platform exists in isolation. Typically there are competing platforms all vying for market dominance. You’ll need to come up with strategy and tactics to encourage the adoption of your platform. To find out how well that adoption is going you’ll need metrics. This is a much broader issue for your organization so you’ll want to focus on the metrics important to your group, namely the adoption of the tools you’ve developed and what affects that.  I’ve really only just started working as a developer advocate so I haven’t done much strategizing yet. I suspect it goes pretty deep and if you follow it all the way down, you’ll probably wind up in a different role within your organization. The product of this includes plans, metrics, and reading, lots of reading to keep up with the developments in your platform space.

Community

Barreleye: Weird Fish With Transparent HeadI engage with the development community. Beyond the conferences you need to find other ways to reach out to developers. I think blogging and trying to write well is core to this. A lot has been written (one of my favourites) about the importance of writing for developers so I won’t rehash it. Then of course there are updates to GitHub, Twitter, LinkedIn, Google+, DZone, or whatever social media/code outlet might be relevant to your platform. However you choose to broadcast information, it needs to have a mechanism for feedback. We are beholden to developers and need to be able to get feedback from them. The product of this includes blog posts, comments, tweets, and other social media updates.

I help developers. As you’re making your platform easy to use there are going to be some rough spots. There are going to be occasions when you don’t get it right the first time. One of the first indications of problematic areas will be developers asking for help about some aspect of your platform. You need to be subscribed to the right issue trackers, forums, and Q&A sites like StackOverflow to catch these questions. You don’t necessarily need to answer the question right away. Give the community a chance to help itself. But be aware of the questions and examine each one to see if it points to an underlying or obscured issue. The Developer Support Handbook is a good book on the topic. The product of this includes answers and some deep thought about what the questions mean.

I keep developers up-to-date with what’s going on with our platform. I consider this to be important enough to warrant its own point, separate from engagement and help. It’s critical that you be able to keep developers current with respect to changes to your platform. I wrote about this in Keep Up-To-Date With Changes To The Rackspace APIs so I won’t go over it again here. The product of this includes API updates via RSS/Atom, email, Twitter, or what have you.

I host/sponsor/attend community events like meetups, user groups, and hackathons. Delivering presentations at conferences is great but I find conferences can sometimes get impersonal. Smaller groups are much more intimate and you can deliver highly relevant information tailored to that group. It’s more of a grassroots approach and has a significantly different feel than conferences so I include it here under Community. Even so, the product of this is similar and includes presentations, workshops, and demos.

I try to be as transparent as possible in all of the work that I do. All of this community activity translates into transparency. From the stream of GitHub activity to blog poststweets and events, it should be abundantly clear what I’m up to. Personally I find it more interesting to work out in the open like this rather than behind closed doors. If developers can see exactly what you’re doing to improve your platform for them, they can trust you because there’s simply nothing hidden.

All of these activities help build a community around your platform. This is crucial as a community can make or break your platform. Having a thriving community can also make it easier to use as there will be far more help to go around than you or your team could possibly provide. This will help you scale as your community achieves self-sufficiency.

What a Developer Advocate is Not

Because the role touches on so many aspects, it’s easy to get diverted from the primary responsibility so it’s worthwhile to mention what a developer advocate is not. A developer advocate is not training, marketing, sales, or support. We work closely with the development community so other groups will naturally come to us for help and advice. Go ahead and help and advise them but just don’t go too far off course. You can’t let that distract you from making your platform easy to use for developers.

Coda

The Developer Advocate and the Developer Relations Group sits at that pivotal point between developers and the platform. As anyone who has developed software or done design for any length of time can tell you, it’s difficult to make something easy to use. It’s also something that’s absolutely necessary. Making your platform easy to use is the most important thing you can do to drive developer adoption.

This is my take on what it means to be a developer advocate. It’s been bouncing around in my head for the past few months and it’s good to get it out. Writing it all out like this makes me fully realize just how challenging and expansive the role can be. However, it’s not like you’re doing this stuff all at once (although occasionally you are). With the help of a great team and the support of management, it’s definitely doable.

If you’re a developer advocate, I’d love to hear what you think! Did I miss the mark on anything or miss something completely? How would you break the definition down?

If you’re a developer, what do you expect from your developer advocates?

 
Leave a comment

Posted by on December 28, 2012 in jclouds, rackspace, sdk

 

Introducing the Rackspace Developer Relations Group and open cloud SDKs

ToolkitI’m proud to help announce and to be a part of the Rackspace Developer Relations Group as a Developer Advocate. The group has been around for a little while now and I only joined them a few of months ago but we’ve had our heads down building Software Development Kits (SDKs). Well now we’ve got a killer Java SDK and PHP SDK for the Rackspace open cloud ready to go and we’d like to let the world know. We’ve been introduced on the official Rackspace blog but I wanted to throw my 2 cents in here too.

What is an SDK?

The documentation for our SDKs begins with this Introduction, that page does a great job of defining Software Development Kits so I’m just going to highlight a numbers of things here. An SDK consists of the following components:

  • A set of language bindings that provide a language-level API for accessing cloud services (as opposed to forcing developers to use the REST/HTTP APIs directly) in a manner consistent with language standards
  • A Getting Started document that shows how to use the API to access the Rackspace public cloud
  • A detailed API reference document
  • Tested sample code that you can use as a “starter kit” for your own cloud applications

In effect we take a lot of the grunt work out of using the OpenStack and Rackspace APIs. Developers can get down to business in the language of their choice without having to worry about writing all of the “plumbing” code to access the REST/HTTP APIs directly. Our sample code and documentation accelerate their understanding of how to best utilize the SDKs so they can get up to speed quickly. The cloud is still relatively new and people need all the help they can get.

As you can probably tell from the other content on this blog, the Java SDK that I’ve been working on is powered by jclouds. Our PHP SDK is developed by Rackspace as an open source project.

For the official announcement checkout Rackspace Announces Open Cloud SDKs.

What is a Developer Advocate?

This is still a relatively new role in the software industry and people often ask me this question. My current answer is that I build and promote tools to make it easier for developers to create software on OpenStack and the Rackspace open cloud. I also ensure third-party developers have a Fanatical advocate within Rackspace.

The meaning of “Developer” is two-fold. First of all, I myself am a developer. Right now I’m building SDKs, writing sample code, and producing documentation that use the OpenStack API to communicate with the Rackspace open cloud. Being a developer and cutting code is essential to the role. The open source world is a meritocracy (rightfully so) and code and documentation speak louder than just flapping your gums. The second meaning refers to third-party developers creating software on OpenStack and the Rackspace cloud. And that brings us to…

The meaning of “Advocate”, which is also two-fold. Most importantly I’m an advocate within Rackspace for those third-party developers building solutions on OpenStack and the Rackspace cloud. This too is essential as those developers need a voice within Rackspace. Customers are at the heart of everything Rackspace does and this is just a natural extension of that. The second meaning refers to the fact that I also advocate for the tools I’ve built and OpenStack and the Rackspace open cloud too. Like any other developer, I want my software to be used and get feedback on how to improve it.

I love both the breadth and depth of this job. It covers a lot of ground. Here’s a sample of what we do:

  • design work
  • writing code
  • debugging HTTP layer issues
  • documenting
  • blogging
  • presenting at conferences
  • promoting our ecosystem
  • talking with developers
  • and the list goes on.

We also get the opportunity to dive deep into technical or customer issues. And sometimes it all happens on the same day.

What does the Developer Relations Group do?

The introduction on the Rackspace blog does a fine job of answering this so I’ll just highlight a few things here.

  • Lower developers’ barriers to entry
  • Help developers succeed
  • Increase developers’ ROI

We’ll achieve this through producing SDKs and Developer Advocacy. While doing so we need to be humble and helpful to the open source community at large. It’s not always easy balancing a businesses needs with those of an open source project but, if done in an open and transparent way, in the end it’s worthwhile. You’ll have a project/product that’s more featureful, has better adoption, and is more resilient to changes in the market.

Coda

Clearly I’m excited to be a part of this new group at Rackspace. There’s still a lot more work to do but I’m looking forward to it and that makes the mountain that much more fun to climb. Please give our SDKs a try and let us know what you think at sdk-support@rackspace.com.

 
Leave a comment

Posted by on October 15, 2012 in jclouds, openstack, rackspace, sdk

 

SDKs at the OpenStack Grizzly Summit

GrizzlySDKs are a vital resource for any ecosystem and SDKs for OpenStack are proliferating. The OpenStack Grizzly Summit has a few sessions dedicated to SDKs that I wanted to highlight.

  1. On Monday @ 11:00 am I’ll be leading the session SDK Documentation Discussion. Some of the topics/questions we’re going to address are:
    1. What SDKs are you using and why?
    2. How do we track SDKs that support OpenStack?
    3. Where do we track SDKs that support OpenStack?
    4. What criteria do we use to allow an SDK to claim OpenStack support?
    5. When documenting the SDK API at the function level, do you duplicate info from api.openstack.org or do you just link to it? Are there other options?
    6. What’s missing from the documentation of the SDKs you’re using?
  2. On Tuesday @ 11:50 am Rob Hirschfeld from Dell will be leading the session Quantum Fog! Networking for Programmatic Overlays
    1. Fog is the leading Ruby abstraction library for the OpenStack API and it’s embedded in several ecosystem products.  With the addition of Quantum, there is a need to extend Fog’s models to comprehend cloud networking.
  3. On Thursday @ 3:20 pm I’ll be leading the workshop Control the Clouds: Developer Experience with jclouds
    1. jclouds is the leading Java cross-cloud toolkit for the OpenStack API and already has a broad adoption base. In this workshop, you will learn how to write code that can control any cloud with jclouds.

Coda

Contributing to and supporting an open source SDK should not be taken lightly. The OpenStack community needs to consider throwing its weight behind a select number of SDKs to in order to provide the best developer experience, the highest possible quality/support, and to limit fragmentation. Please join us at the sessions above and let’s find out how the OpenStack community can achieve this.

 
Leave a comment

Posted by on October 10, 2012 in jclouds, openstack, sdk

 
 
Follow

Get every new post delivered to your Inbox.