The Subtle Art of Being A Developer Advocate
Tags: devrel, career, writing, discuss
Published: 2021-04-21 10:32:00

A few years ago I wrote this article called "[What the heck is a developer advocate?](https://www.freecodecamp.org/news/what-the-heck-is-a-developer-advocate-87ab4faccfc4/)" which tried to help people in the tech industry understand what this role entails. Yet, I still get tons of questions on Twitter about this role.

{% post https://dev.to/wassimchegham/what-the-heck-is-a-developer-advocate-4l2a %}

##### This article is also available in other languages 
- 🇯🇵 [Japanese](https://qiita.com/kamimi01/items/17fe79dc5522648e2a1d)

In this post, I am going to try to demystify the role of a Developer Advocate by giving, this time, concrete examples of tasks and activities I do on my day-to-day job working as a Senior Developer Advocate at Microsoft, and as someone who's been doing developer advocacy since 2015.

> ##### Disclaimer: 
> Views expressed in this post are my own and do not represent my employer nor my colleagues.

Let's first shed some light on the difference between a Developer Advocate and a Technology Evangelist.

## Developer Advocate and Technology Evangelist

There is a certain confusion between Developer Advocacy and Technology Evangelism. Let's look at both terms' definitions.

According to Wikipedia, the term "tech evangelist" was invented by Apple as part of their initiative to persuade developers to create apps for Macintosh. The verb "persuade" is very important because it implies that an Evangelist would try to convince developers to adopt a certain technology without necessarily listening, or caring about their needs or opinion.

This is exactly the opposite of what Advocacy is all about!

"Advocacy" is an old concept that comes from the Medieval Latin word "advocare" which means "to add a voice". The term "advocate" comes from Old French word "avocat" which means "a lawyer". So, an Advocate literarily means someone who "pleads a case or a cause", who "argues that something needs to be changed or improved".

Applied to the tech industry, these two terms may seem quite similar but the subtle difference lies in the fact that a Tech. Evangelist role is done one-way only (outbound), and a Developer Advocate role is considered two-way (outbound and inbound). In other words, a Tech Evangelist would typically be interested in convincing developers that certain technology is what they need. A Developer Advocate would typically be interested in listening to developers' needs and providing them with the most adequate help. A Developer Advocate also collects developers' feedback and advocates for them internally.

This is why the two titles should be used wisely.

However, I want to take a step back to highlight that beyond the theoretical definition, it turns out that in practice there are always some exceptions to what the job titles may entail. I know some of my friends whose job title was Tech Evangelist, but the work they did was more of a Developer Advocate (and vice-versa). What really matters is not the job title but rather what you do to help developers be successful.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7gu61d6gy428zj4y83zz.png)

## Developer Advocates and Marketers

Whenever you ask a Developer Advocate to define their role, each one of them will give you a different answer, which is confusing. That's common. But, have you ever wondered why? The main reason for this is that many companies tend to hire Developer Advocates to do different kinds of tasks, from sales to communication and, most commonly, Marketing. Why Marketing? Because companies usually spend between 5 to 12% of their revenue on Marketing, and when they need to reach to more developers, they usually would hire someone as a "Developer Advocate" (or any other variation of this title) who reports to marketing (or business unit) and is driven by marketing and sales KPIs (Key Performance Indicators). Most importantly, in this situation, this role is usually led outside of the product engineering team, which might be problematic (more on this below).

Don't get me wrong, there is nothing bad with companies using marketing and sales to reach out to developers, but doing this under the Developer Advocacy titles umbrella isn't doing anyone a favor. Either way, this usually turns out to be a bad move because not all developers are great at marketing (or sales) and end up not performing well. Developers have excellent ingenuity and creativity but some of us may lack basic business marketing skills. Why do you think most successful startups are founded by at least 2 people? If I were good at Marketing or Sales I would have done a better job promoting my own open-source projects, yet you've never heard about [xlayers.dev](https://xlayers.dev). Do you?

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t79tsnseb70spzk8y936.png)

When reaching to developers, Marketing teams should collaborate with Developer Advocates to help them tailor the message for developers. Why? Because Developer Advocates are, before anything else, developers themselves and speak the same language as other developers.

In many other cases, companies simply ignore the true meaning behind Advocacy and end up making their own definition, based on their business needs. That's why almost no Developer Advocate understands what their role is or should be. I hope this article would help somehow!

## Developer Advocates and Developer Relations

Put simply, Developer Relations is the umbrella term for the teams including Developer Advocates, Community Managers, and any team whose responsibility is to create and foster communities of developers. Some larger companies, as we do at Microsoft, also include teams responsible for documentation, events, and social media.

So, a Developer Advocacy team is a tiny subset of Developer Relations.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5d20yko6tc28sy7s0or4.png)


## What's my role at Microsoft?

As Developer Advocates, we may not agree on what we do or should be doing, but we all agree on one common definition:

"Our role is to act as the bridge between internal engineering teams and our developer community. We also advocate for developers internally".

Before I describe the work I do at Microsoft, let me give you some context: I was hired because of my JavaScript skills and my close relationship with the JavaScript developer community. I currently work as part of the JavaScript advocacy team. Our team belongs to the Developer Relation organization which is part of the Azure Engineering department at Microsoft.

My day-to-day job is to advocate for JavaScript developers internally at Microsoft, act as their voice during product team meetings or internal studies. Externally, I support and gather JavaScript developers' feedback so we can improve our products and services. Basically, I help JavaScript developers be successful using Microsoft Clouds, services, and open-source developer tools.

You've probably seen that Microsoft is raising the bar for its products and to achieve this, the company is investing in Developers and open-source. That's why our **Developer Relations team's mission is to empower developers to achieve more**. Our larger Developer Advocacy team (or Cloud Developer Advocacy, as we refer to it internally because we are also helping DevOps teams) is composed of multiple sub-teams focusing on different developer communities such as Rust, Java, Python...etc, but also audiences like students, academia, and startups.

The mission of the Cloud Developer Advocacy team is to win the hearts and minds of Developers through authenticity, community, and technical engagement.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tebfywwy2jxt22tdi1yd.png)

## What my typical day looks like as a Developer Advocate?

> The tasks I am going to disclose below are the activities "I" regularly do. My team members may or may not do the "exact" same activities.

### Creating content

I participate in writing technical documentation and content in different formats used by engineers worldwide. This can be as simple as updating existing documentation or creating full documentation like the [Azure Static Web Apps documentation](https://docs.microsoft.com/azure/static-web-apps/?WT.mc_id=javascript-0000-wachegha) that my team and I collaborated on with the Microsoft documentation team.

Other content also includes creating and hosting workshops for developers, coding challenges as well as snackable content that I regularly publish on Twitter.

Here are a couple of recent examples:

{%  twitter 1377940304712585217 %}

And this one:

{% twitter 1281704000572858375  %}

### Public speaking

Probably one of the highly visible activities that most Developer Advocates are notorious for is public events. That's also part of my work, giving technical talks, and keynotes at international conferences and events. Basically going where the developers are. This also includes live streamings, podcasts, and similar types of mediums.

### Building tools in the open

Besides the work I do for my company, I am also an active member of the open-source community, and most of the work I do for my employer is done in the Open as well. This means that my job is also to help developers be successful using the tools that help them use and integrate Azure with their products and applications. My recent tools include https://www.hexa.run, the [Nest.JS libraries for Azure CosmosDB](https://github.com/nestjs/azure-database), and [Azure Storage](https://github.com/nestjs/azure-storage). You can check my other open-source work at [wassim.dev](https://wassim.dev).

### Product feedback

Continuously improving the products and services that developers use is one of our team's core missions. I spend the majority of my time interacting with developers and engineers through social media, or at online or onsite events. I get tons of requests from developers who are asking questions, reporting issues, or asking for feature requests. I always try to help them first, if I am familiar with the product. For major issues or popular feature requests, I create a work item on our internal dashboard and collaborate closely with the product team to improve the experience based on the feedback gathered from the community. 

This is really where, as a Developer Advocate, I can advocate for JavaScript developers and act as their voice internally. A recent example of this is with the Azure Static Web Apps product where I spent the last year and a half contributing to the product and helping the engineering team designing part of the service, providing critical feedback, trying early access features, and implementing the CLI developer tool. 

### Shipping products

One other aspect of being a Developer Advocate that many people probably ignore is that as Developer Advocates, some of us also contribute to creating and shipping products, either for internal or external use, or both. For the last 6 months, I had the opportunity to create, lead and ship the [official Azure Static Web Apps CLI](https://github.com/Azure/static-web-apps-cli) to allow developers to run and debug their apps locally. 

I think that's something that every Developer Advocate should be doing because it's essential to understand how a product or a service is designed, implemented, know its strengths and weaknesses. That a knowledge that we will have to have if we need to better help developers.

### Being the Customer Zero

A good amount of my time is spent improving Azure products and services, and working with Azure engineering teams across the company to try out new features, provide feedback about JavaScript developers' expectations. The products I've worked on during the last 2 years were: Azure Functions,  Azure Storage, Azure Cosmos DB, Azure IoT, Azure Static Web Apps, GitHub Codespaces, and npm. Acting as "customer zero" is a really great way to have a tremendous impact on a product before it gets released. One example of this is Azure Static Web Apps: my team and I are working closely with the engineering team to help provide the best developer experience for the Web developers community who will be using this service.

### Constantly learning

Since JavaScript is widely used in many different areas, the technical stacks that I usually focus on include Node.js, TypeScript, Serverless, IoT architectures, databases, and hosting. I also must be honest, I've also been fascinated by the Rust programming language and I am planning to start learning it in the near future! Luckily my colleagues on the Rust Developer Advocacy team have built this [5 hours free guide about Rust for beginners](https://docs.microsoft.com/en-us/learn/paths/rust-first-steps/?WT.mc_id=javascript-00000-wachegha). It looks like a good start for me! 

### Creating and improving official docs

As a Developer Advocate, I also spend some time creating comprehensive technical guides for many Microsoft Clouds services. One of the latest guides that my team and I worked on for 4 months is [the Node.js Learn Path](https://docs.microsoft.com/en-us/learn/paths/build-javascript-applications-nodejs/). The good thing about our official documentation is that is open and anyone can help improve it. We also regularly participate in this and send Pull Requests to improve and update the docs at [http://docs.microsoft.com](http://docs.microsoft.com/?WT.mc_id=javascript-0000-wachegha).

### Helping others grow

Another aspect of my job – well it's not part of my job description per se – but it's really important to me: that's helping people around me grow and be successful. As someone from a minority group, who's succeeded in the tech industry, I genuinely care about diversity and inclusion. So helping others grow professionally and personally is part of who I am. 

I do internal mentoring through an official mentorship program at Microsoft. Externally, I am mentoring people from the community who are new to programming and want to switch careers, and also people who want to start contributing to open-source. I obviously can't disclose all the details but I basically help and advise my mentees about programming, tech, and career growth.

### Business and OKRs

Let me just be clear, every company's goal is to do business. Your company isn't simply paying you to work on open-source, or travel to events. It's investing money in you and is expecting an ROI (Return on investment). But we all know that the ROI of a community and relationship building is not that easy to measure or quantify. 

We are continuously reviewing and updating our team's OKRs (Objectives & Key Results), strategy, and planning to align with the company's broader strategy while giving everyone on the team the freedom to connect with developers in authentic ways, have meaningful conversations, help them solve their problems, and being their advocate.

## Final thoughts

Engineers' main responsibilities are to own, design, implement, and ship products, and for those who want to share their experience with the developer community, they are able to do it. Developer Advocates are not different than engineers except that their responsibilities are not working full time on products but help the engineering teams reach out and listen to developers' needs in order to create the best experience for everyone.

# Developer Advocates are engineers who love to learn in the open.

That’s my story. If you like or agree with what you've just read, our team is hiring. Check out our page https://aka.ms/awesomejobs ❤️

---

#### Bonus: The Developer Advocate Iceberg

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tbwn6178yb7do2e8bhk8.jpg)

---

Feel free to reach out on Twitter at [@manekinekko](https://twitter.com/manekinekko) if you are still curious about Developer Advocacy. You can also follow my work at [wassim.dev](https://wassim.dev). I also blog at hashnode [follow me there](https://hashnode.com/@wassimchegham/joinme).

---
_Assets used in this blog are licensed under the Adobe Standard License._