I want to address the topic of being a Developer Advocate. Several people in my area of the tech industry now hold the title of “Developer Advocate”. I have no problem with that title, and this post means no disrespect to anyone with that title (many of them are my friends). However, I am curious as to what it really means to be one. Then I wonder if I can apply that title to what I do for a living.
What is a Developer Advocate?
I recently looked up the word “advocate” online. It is defined as “a person who publicly supports or recommends a particular cause or policy.” At face value, this is someone who is actively engaged in supporting developers and their interests at companies. I assume that means enabling them and helping them do their best, be their best, make their work easier or more efficient, and hopefully more enjoyable. Is that correct? I can see the need to have someone in place for the developers. I am definitely not saying they aren’t needed. They are.
DevRel was started by developers, but it has expanded to include other roles, but the title still remains.
Rejected as a DevRel
I recently found out about a popular Slack channel made up of DevRel professionals recommended to me by several of my peers. My parody videos were shared on the channel and got a very positive response. I decided to apply to the channel myself to get connected with the group. After several weeks of waiting and wondering, I got a rejection email:
“Based on the description you left, it doesn’t seem like you’re actively working as a Developer Advocate or Technical Community Professional.”
My description was based on the actual things I do online around software engineering topics and performance engineering and observability. I figured if load testing companies have DevRel people in the group, I would fit in. Perhaps my description was not what they were looking for. Perhaps they are right. Maybe I am not a Developer Advocate. Or maybe that title is just not helpful because a lot more roles need advocacy. That got me wondering – what am I?
The Performance Advocate
Perhaps I’m just being a fish swimming upstream, but I think developers have enough advocates supporting them today. I have experienced developers who push causes and policies that I cannot support – those that result in poor performing applications, grossly inefficient systems, or a horrible end user experience – all for the sake of “good enough being good enough”. I’ll continue to be an advocate for the Performance Engineers to support the causes and policies that result in better software and less technical debt. I know, I know – we all say that everyone (including developers) want that. However, I have not experienced that discipline en masse from the developer community like I have from the performance community. I want a relationship with the developer, but I advocate for the performance engineer.
I was recently told by someone, “We are ALL developers”. I have to respectfully disagree. I may write code here and there, but that does not make me a developer any more than calling me a car because I am in a garage. I love the developer, but I will never be one of them. I want the developer to be successful, but not at the expense of losing the ideals and disciplines I advocate for, which may be different from theirs. It doesn’t have to be an “us versus them” situation, but there must be a balance in the ecosystem. Therefore, I remain the Performance Advocate, to bring that balance. Maybe I’m foolish, misdirected, uninformed, crazy, or all of the above.
The Need For Specialization
What about areas where specialization is required – like performance engineering? I see Developer Advocate titles in load testing vendor companies. Does this assume that mainly developers are doing the majority of load testing? In my opinion, that is not only wrong, but if it is right, it is not a good thing. Developers shifting load testing left is a good thing, but it is not the only thing and certainly not a replacement for all performance testing that needs to occur. What about other parts of the software lifecycle outside of developing code? Doesn’t there need to be at least a few advocates for the Performance Engineers, System Engineers, etc? Should everybody be lumped into the Developer category?
The same people who have been telling me for the last five years that developers CAN make good testers, and SRE’s CAN code and test and handle performance and security, and, and and…. these are the same people now talking about burn out rates and the need for platform engineering to relieve cognitive overload.
An even worse consequence I’m seeing in the market is the loss of fundamental skill sets and the missing context of things that should be known before ever attempting to optimize a system. Add to this the lack of BUSINESS context, and you just have a group of loosely coupled people putting together loosely coupled systems based on fuzzy requirements – and then we wonder why the end result doesn’t make end users happy. By making specialized skills sets a commodity, it lowers the competency and ultimately the product suffers in several ways: technical debt, poor end user experience, higher support costs. Overall, this leads to a bad reputation – which you can’t put a price on.