Hello, my name is Joel, and I am a Developer Advocate at Facebook on its open source team. And while that has not always been my official title at Facebook, I believe I have always been a developer advocate in both heart and spirit during my time at the company.
A Little Joel History
I clearly remember being on my father’s IBM PC AT in the mid 1980s, flipping through the IBM command reference and saying “Hey, fdisk looks pretty cool. Let’s try that”. Seeing my father’s anger, I knew technology was the path for me. I graduated with a degree in Computer Engineering and have been a software engineer, technical writer, standards editor and chair, documentation engineer and now, most recently, a developer advocate. I have always enjoyed helping people and trying to ensure others can be successful.
What is a Developer Advocate?
The first question that generally comes my way when I tell people my title is “What exactly is a Developer Advocate?”. In fact, this is generally the first question I ask candidates when interviewing for a developer advocacy position, as part of the core skills role in our interview loop.
You may have heard terms like “Developer Evangelist” or “Developer Relations”. Technically, there may be subtle differences between all three of these, but to avoid squinting really hard, I consider all of these relatively interchangeable. If you really want to know, check this out.
I am a believer in the pop-culture version of Occam’s razor, or the law of simplicity, where the simplest explanation is usually the right one. A developer advocate is exactly what its title implies — an advocate for developers.
Of course, during normal conversation or maybe during an interview, people go well beyond that simple (but correct) description. Here are some of the definitions I like, starting with my favorite:
- As a developer advocate, I basically consider my job as a story teller. By that I mean, I need to understand a given landscape and the technologies we have in it, so that when I talk to the community to see what their pain points are or what they are interested in, I can provide them credible insight. And if our offerings are not sufficient, I can give them alternatives AND also bring those issues back internally to see if there can be some way to solve those pain points. I also advocate internally as well by helping provide opportunities for developers inside the company to showcase their awesome work. Success can be measured on 3-axes — leadership, brand, and community. Your leadership has increased both the external usage and internal roadmaps of the projects you are advocating for. The brand of the company, open source program or project is seen as positive on social media, GitHub, etc. You have cultivated a community for the projects you are advocating for where you are creating content people utilize and the community themselves are leading content as well.
- It is not a developer advocate’s job to sell something. It is a developer advocate’s job to empower developers so they realize that a project is so good that they themselves will go out and advocate for it.
- A developer advocate basically comes down to being a champion for those that use the products we develop.
- A developer advocate wears many hats. Docs, samples, partnerships, evangelizing, etc.
- An advocate serves as a liaison between internal constraints and external needs, having to balance both.
- A developer advocate is the one who shines the light on a project.
- A bridge between an internal engineer or PM and the external community.
I believe it is super fair to say that a developer advocate does not necessarily have a one-size fits all role. A developer advocate can wear many hats from writing documentation, establishing partnerships, creating and presenting technology demos and more. One developer advocate may do one of these really, really well. Others may dip their toes into a bunch of them. But the common thread is that an advocate keeps the needs of developers top of mind.
What makes a success developer advocate?
A developer advocate has several traits that lead to success. This includes the ability to work across many cross-functional (XFN) teams, to have empathy to the needs of a community and being able to express those needs in tangible terms, to showcase technical aptitude in a credible way, and more.
A successful developer advocate can go both deep and broad. They can own a technology stack but also run programs that span an entire open source program office. For example, one can advocate for all things machine learning, but also run a media program that is utilized by other developer advocates on the team.
A successful developer advocate is able to quickly ramp up on new technologies, sometimes with no background in the space previously, and be able to understand how those technologies may fit into the overall open source ecosystem.
What do I do all day?
Now that you know the role of a developer advocate, what does that tactically mean on a day to day basis? A developer advocate tends to be wholistic when it comes to a project and that boils down to three main tenets:
- Establishing narratives
- Creating content
- Community Engagement
There are two types of narratives that developer advocates work on. A project-specific narrative and what I call a pillar-specific narrative. The former is coming up with the story on how a project will help you. What does the project give you that is new or an improvement? The latter is coming up with the story on how projects relate to each other. How does this new project released relate to other projects that we have to create, for example, a complete stack?
Content is king. Without content, your project will not be used effectively, if at all. It all boils down to having enough content to allow a new user to easily get up and running with your project. The saying “One chance to make a good impression” is so applicable here. The content should include one or more of the following: a detailed README, a website with documentation, tutorials, videos, media, an interactive demo, sample code, SDK, etc. A developer advocate creates or helps facilitate all of the aforementioned types of content.
Without a community, a project cannot be successful. That is one developer advocacy truth of which I am certain. The community does not have to be large, but it does have to exist and be relevant. A developer advocate helps create and engage with a project’s community, both pre-launch and post-launch. The pre-launch community are those that are directly involved in the project (e.g., engineering team, comms, etc.) before and upon launch. A developer advocate works with that community to ensure that a project is given every chance to be successful when a project goes live. The post-launch community are those that will be directly affected by the project after launch. This is obviously those externally that will benefit from the project. But this also includes those internally that will need to be aware of the response and needs of that external community. A developer advocate works to bridge both of these audiences.
Community engagement can also include partnerships with other developers or companies where a project may have a positive effect on another project or effort, or a project collaboration may make sense for all parties. The impact here could be anywhere from localized to industry-wide.
Developer Advocacy Myth busters
There are those that hear that someone is a developer advocate and immediately false impressions take hold:
A developer advocate is not technical
This is clearly false, and a common misconception. Many developer advocates have backgrounds in engineering, particularly software. I am one of those advocates. In fact, due to circumstances such as team dynamics or headcount constraints, many software engineers become de-facto advocates for their project. And a developer advocate has to be technical in order to properly understand the depth of a project, how to convey its benefits to the community and bring back ideas for improvements. Also, developers in the community can spot fraudulence pretty easily, and that would totally undermine the value that an advocate brings to a project.
A developer advocate attends conferences for a living
Many developer advocates go to conferences, yes. And this is necessary for community engagement and project promotion. But it is clear, based on the tenets of a developer advocate described above, that conference attendance is only a small part of the role. There is so much work done by an advocate before a conference is even considered, including creating content and community planning.
A developer advocate is a salesperson
There is a belief that the primary role of a developer advocate is to sell a project to the masses. In other words, be an outbound representative. Yes, an advocate does promote projects. That said, I submit that the primary role of a developer advocate is to be an inbound representative. Go back to the definition of a developer advocate — an advocate for developers. A developer advocate listens to the needs of a community and recommends appropriate solutions. Only when a project clearly meets those needs should a developer advocate recommend it. Hopefully that is the project that the advocate has helped bring to life. However, a developer advocate, in good conscience, may recommend a solution not created by the represented company, and then bring back the reasons why that had to be done — and hopefully roadmaps and plans are modified so that a different recommendation can be made next time.
It Takes a Village
Hopefully this provided a bit of insight into the role of a developer advocate. We love technology. We love helping people. And we love helping your project become as successful as possible.
Have a look at this example project plan. It truly takes an XFN team to bring a project to life. I always look forward to working together to do just that.