Proposing a Developer Advocacy Role

Introduction

OpenCraft has managed to attract many clients, and continues to do. This was accomplished by the awesome team of developers in each cell and the cellular structure.

As always, the priority of OpenCraft’s developers has been the clients. Moreover, the cell’s structure and the cell members’ responsibilities and roles also ensures client prioritization and efficiency maintenance.

Yet, using this structure, OpenCraft hasn’t had the same success with developers lately, for some chose to leave and others are considering it.
Most cells are being affected by many issues, mainly revolving around burnout, overcommitment, and cell responsibilities.

There have been efforts of discussing the issues for a while now; however, the discussions are still far from being resolved. But it’s important to consider the following commonly agreed on points which have been the result of different forum thread conversations.

  • Internally accelerated epics are planned solutions, but have been on hold.

    These internally accelerated projects are intended to resolve issues which are common among different cells. Due to capacity issues in the cell, those projects, such as the Workflow Manager, have been on hold and are currently still being postponed in some cells. This is being caused mainly due to the prioritization of client work.

  • It’s difficult to reach a decision or consensus in the forum thread discussions.

    Most of the cell members are already way too busy to participate in forum discussions during a sprint. In addition, reaching a consensus is more and more difficult as the team grows in size because most team members should be participating in the discussions. Members also don’t have enough time during their sprint to read books regarding similar situations, consider existing or propose new solutions, or discuss their problems.

  • The cell roles are not as effective as they should be towards the health of developers and their work-life balance.

    Fulfilling the role’s responsibilities requires a large commitment of hours. Increasing the amount of commitment required from cell roles would affect client work and reduce a cell’s capacity for client work, which is currently an ongoing problem. In addition, some members are not as interested in cell responsibilities and would not prefer to increase their commitment towards their cell roles.

Prioritizing OpenCraft’s philosophy and the clients have brought us so far. But, we need people to look out for OpenCraft’s developers, especially when some of us are pre-occupied by client work and other responsibilities.

Although there are multiple cell roles that monitor the developer’s mental health and commitment, per sprint, those roles do not have the necessary time to properly address the mental health and commitment issues that are present among the developers.

However, those roles are affected by the cell, thus, its capacity and clients. Accordingly, I’m hoping to introduce a new non-cell role — the Developer Advocate.

Developer Advocate Role

Role Definition

Many tech companies hire Developer Advocates to advocate for their platforms by helping end developers use their products.

A Developer Advocate is someone whose job is to help developers be successful with a platform or a technology; someone who truly advocates for developers and makes them their top priority.

In its definition, the Developer Advocate would seem to only serve the Open edX platform and its community of developers, possibly OpenCraft products such as OCIM as well.

However, OpenCraft is a community of developers as well. We need someone to advocate for the success of OpenCraft’s developers with OpenCraft as well.

This results in two different responsibilities the Developer Advocate would have, towards internal developers and external ones.

Role Towards Internal Developers

A Developer Advocate’s main responsibility would mainly revolve around the well-being and success of the OpenCraft’s developers. At the moment, this includes the following responsibilities.

  • The development of the internally accelerated epics.

    For the past year, internal accelerated epics have been on hold. This presents a large issue because those epics are the key to the solutions being presented for the occurring state of chaos.

    Accordingly, the Developer Advocate’s responsibility is to continue the development of the internal epics outside of cells.

    Ideally, cells would have capacity for the development of internal accelerated epics. This would allow the Developer Advocate to assign tickets to cell members.

    However, in case cells do not have the needed cell capacity, the Developer Advocate would be required to continue the development on the epics.

  • Representation of developers issues obstructing them from success.

    Members have limited capacity to keep up with forum discussions. Currently, the handbook suggests checking the forum once a week for the very reason.

    Accordingly, the Developer Advocate should organize meetups, online or in-person among OpenCraft developers, to discuss issues/problems regarding their success and health.

    In addition, the Developer Advocate should represent those members in online discussions. Developers with issues can be identified thanks to existing cell roles, such as Sustainability Managers.

  • Thinking of and proposing solutions for ongoing developer success related issues.

    Most of the members in OpenCraft are preoccupied to think of any solutions for developer success issues, especially when they are burnt-out or don’t feel heard.

    Accordingly, Developer Advocates should read books, articles, and researches regarding possible solutions.

    It’s also important for the Developer Advocate to organize brain-storming meetups with developers to discuss possible solutions.

    The Developer Advocate should ensure these solutions address the developers’ issues. The solutions should also, then, be discussed in online discussions.

  • Improving documentation and different processes.

    A large responsibility of Developer Advocates is to ensure the developer’s success with different processes, platforms and technologies.

    That is done through refining documentations and processes.

    Improvements are also possible through the development of internal tools and software which might not be related to internal accelerated epics.

Role Towards External Developers

The advocate’s role towards external developers is textbook. It consists of the following responsibilities.

  • Helping on online platforms developers who are using the Open edX platform.

    The Open edX team already provides help to developers through Slack and the Open edX forum.

    OpenCraft firefighters reserve 2 hours of their time, every sprint, for Community Relations which involve helping other developers use the Open edX platform.

    However, that time is not enough to investigate large issues other developers are facing.

    Accordingly, Developer Advocates should be able to provide the necessary support the Open edX community needs to use the Open edX platform.

  • Advocating and educating developers about the Open edX platform and OpenCraft software.

    There are many competitors to the Open edX platform.

    The success of the platform requires its success in the community, to encourage developers to utilize it, contribute to it, and provide it as a tool for other clients they might have.

    Accordingly, the Developer Advocates should be responsible for preparing media, such as instructional videos, blog posts, online and in-person meetups, and conferences.

    The media prepared should encourage developers to set up their own Open edX platform, or use OpenCraft software.

    Developer Advocates should also educate other developers regarding internal processes and improvements to them. After all, other companies might be facing similar issues.

Addressing Possible Concerns

Scaling, budget, and OpenCraft’s philosophy are three different points which were discussed in previous forum discussions regarding the problem and some proposed solutions.

Accordingly, the following sections are intended to address some of those concerns.

Scaling

Scaling is an important thing to consider, especially since the problem at OpenCraft is caused by it.

Initially, it’s important to start off with a single developer advocate in order to see the possible impact a Developer Advocate could have.

Ideally, each cell would, later on, have a Developer Advocate representative.

Budget

The budget for the role would have to be handled by OpenCraft.

It should be considered an investment in the well-being of the OpenCraft developers, which indirectly results in more efficiency.

Moreover, it should be considered an investment in the marketing of the Open edX platform and other OpenCraft tools towards external developers.

This adds the possibility of future partial funding by edX for external developer advocation.

OpenCraft Philosophy

OpenCraft’s philosophy believes in decentralization instead of specialized roles.

This thread is not intended to discuss this philosophy or how it is affected developers at the moment.

However, it is important to state that, regardless of the philosophy, developers need someone to look after them. The role is a non-cell role and non-decentralized, so that the Developer Advocate and the developer’s well-being are not affected by the cell’s capacity and clients.

The role is not a solution for everything going on, but it is a step towards dedicating our resources to find more solutions and implement existing ones.

I’m hoping, through this proposition, the need for such a role has been significantly expressed. And if such a position is made available, I’m hoping it expresses my care for this position, regardless my qualification.

Let me know please what your thoughts are. Please do share any criticism you might have.

Log the time on: SE-4834

6 Likes

@team please create a ticket for Sprint 256 to read the post I created.

You can clone my ticket.

Would love to hear your thoughts.

1 Like

Thank you for proposing this @nizar ! I’ve created a ticket from yours for next sprint.

1 Like

Read it, think it’s a great idea. +1. Including having you, @nizar, as the first assignee.

My only concern is that you’ll likely find you want more time to work on it than is available, which might be an issue. It affected me as BTR chair, and to some extent continues to do so as Community Liaison. If you think you can manage the limitations and still be effective, then great.

2 Likes

Thanks for the interesting proposal, @nizar. Would someone be doing this full-time? Or what’s the minimum number of weekly hours that should be allocated to this role?

1 Like

First of all, I’m glad you both had the chance to read it and I’m glad you found interest in it.

In order to address that, I made sure to include responsibilities towards the internal developers, OpenCraft developers.

Always progressing an internally accelerated epic will help provide work for me and provide solutions to problems we have, or might face later, on in the company.

In addition, keeping an eye on the developers inside OpenCraft and creating meetups to discuss problems they might be facing which is affecting their success will require significant effort; not to forget any readings or meetups I might have to do to brainstorm/formulate solutions to some issues we might have.

This should keep me occupied even when there isn’t much to do towards the edX platform and its community.

I’m hoping that would be somewhat of a full-time role, by that I mean 25 to 30 hour commitment peer week.

The reason I am suggesting such a full-time role is to ensure that developers, their issues, and the solutions worked on (such as the internally accelerated projects) are always someone’s top priority.

Also, a full-time role would allow development on the internal projects, even when there is no capacity for those projects inside cells.


I hope those answers address your concerns/questions. :smiley:

2 Likes

That’s what I had hoped for Community Liaison… but found otherwise. I think you should expect Opencraft to give you something between 20 and 32 hours a month. Which is why I’m bringing this point up.

Ah thanks for clarifying! Yeah, that might be the case.

I hope it isn’t though… The current problems really need more attention and the solutions definitely need more resources directed towards them.

I know that budget will be a tough point, but I’m hoping my previous explanations as to why low capacity leads to roles not being fulfilled properly and low capacity prevents us from exploring and discussing solutions would indicate the need for such a role with a high budget.

If having such a role proves to be effective in helping us address burn-out faster, ensure developers are comfortable in OpenCraft, and work on internally accelerated projects, then OpenCraft will have opportunities to scale even more, which would allow us to attract more clients and revenue.

I’m hoping those reasons are worth exploring such a role with such a commitment. :crossed_fingers:

2 Likes

So, normally the Developer Advocate is assigning tickets to cell members, but if the cells are full, the Developer Advocate will personally do the coding? That seems like the Developer Advocate’s own time commitments and work will vary depending on factors outside of their control (the cells) which could make it hard to plan their work. It would also be inconsistent if it’s sometimes coding, sometimes not. What about having the Developer Advocate always do a little bit of coding personally on those epics, so that they’re always moving forward, and assigning larger tickets to the cells as availability permits?

I don’t see how this helps - if they don’t have time to read the forum posts, they won’t have time to attend meetups? (And if you assume that reading is a more efficient way of disseminating information than meetings, this could even make it worse.) How often would these meetups be? More like every six months, or every sprint?

121s around a specific topic can be helpful, but in general research shows consistently that brainstorming doesn’t work nearly as well as coming up with ideas independently.

To me, the “internal” and “external” roles seem somewhat different, so I’m curious if there are any additional reasons to assign them to a single person, and what you’re thinking about how they would decide to “balance” those two roles?

3 Likes

Interesting! Certainly resonates with my personal take on the subject.

Sorry I did not properly convey my point of view regarding that section. I 100% agree with what you said.

You suggestion regarding having the Developer Advocate always do a bit of coding and assign larger tickets to cells as availability permits is what I was hoping for.

That was my intention, but you did a much better job clarifying it and justifying it, so thank you!

The intention behind that point isn’t to help members catch up with forum discussions or reading threads that are started on the forum.

The intention behind that point is to help members deliver their problems and ideas in a clear and descriptive manner.

Personally, I rely greatly on acknowledging the opposition’s perspective to form more detailed ideas and convince others. I need to clearly describe my thoughts, with the necessary amount of detail, receive the opposition’s perspective on my thoughts, with necessary amount of details, and then form an argument which might convince others.

Unfortunately, most of the discussions taking place at the moment on the forum do not contain enough details/clarifications regarding the different perspectives members have.

For example, lately, on the Cell merge? Serenity + Falcon forum thread, different members having been discussing a cell’s rigidity at OpenCraft. Those suggestions are briefly clarified, and the briefly acknowledge the opposite point of view.
All the perspectives shared are valid, but they are still blurred lines. The only thing we know is that there is a value in both rigid and fluid cells, but discussions rounds need to take place before we have a clear understanding where rigid cells work, in OpenCraft, and where they don’t, same for the fluid cells.

Accordingly, the role would help collect the different opinions, move those discussions at a faster rate, and deliver propositions that acknowledge both opinions and help resolve the issue.

It depends. Usually problems members are having can be identified from the “bi-weekly checkup”. A poor sprint rating (below 5) would require clarification whether the problem the member is facing is caused by OpenCraft’s process or personal issues.

If the process is the problem, then the member can either choose to express it through an email (with good clarification) or through a meetup.

This would also be the case for Sprint Retrospectives and end of sprint updates.

Thanks for sharing that link! In order to better clarify; my intention is for the advocate to keep track of possible suggestions different members might have.

The developer advocate would then have a large collection of different problems, suggestions, and how each would or wouldn’t be appropriate.

By collecting the different problems and ideas developers would have and creating a proposition that would acknowledge all the problems and ideas provided, solutions proposed would be more “complete” and would be delivered faster as well.

The “internal” and “external” roles are very different, especially on the long run. Developer Advocate roles usually need to focus on a single product’s community because they need to keep up with things going on in that community.

Ideally, each role would be assigned to a different person. OpenCraft and the edx-platform are two different communities and require two different advocates.

In addition, later on, each OpenCraft accelerated project would have its own Developer Advocate who can contribute to the project, voice developer issues and concerns, and educate other developers about the project.

However, in the current state, I do not expect OpenCraft to create two different roles, especially if they have no external budget.

Regarding the “balance” I have in mind, it’s governed by strict capacity limits for each role, with the priority of ensuring the success of internal developers first.

Personally, I’m more interested in developer advocacy for the Open edX platform or the open source OpenCraft projects, but a developer advocate for internal developers is more important at the moment.


I’m realizing now that I didn’t do such a good job clarifying some of the points in the proposition. I apologize for that.

Thanks for asking awesome questions, though! I really hope I clarified my point of view in a better way.

2 Likes

@nizar Thanks for suggesting this, and for spending time refining and discussing the ideas. There are a lot of elements in what you suggest that can be very good investments for OpenCraft to make. Communities definitely require care, and assigning time to it and prioritizing it is important.

We are indeed part of two main communities, Open edX, as well as our own team, so it makes sense to think of the support needs of both. We do already have some roles taking care of the Open edX community – community liaison, forum moderators, etc. It would be important to see how those roles all fit together. You’re participating to the roles refactor that @braden is leading on https://tasks.opencraft.com/browse/MNG-2415 - so maybe once this has been discussed in the context of that PR this sprint, you could then take a follow-up ticket the following sprint, to implement what your proposal will have become, as a handbook PR?

It would also be good to get the opinion of anyone involved in a related role - you could use the fact that everyone in the team will be reviewing the outcome of MNG-2415 via SE-4838, to get the opinion of specific people, by asking people on the PR from MNG-2415.

Note that I would be ok with experimenting this role a non-cell dedicated / full time one - a bit like the project manager role we are discussing. But it’s unlikely that we would have budget to have one per cell - more a shared resource between several cells.

And I agree that it’s important that this role would dedicate at least half of its time to developing for its “clients” – which are the community members (of OpenCraft, Open edX). Besides the budget aspect, it was my biggest issue with having a full time community liaison @adolfo - the fact that it would remove the element of developing for users/clients.

For the meetups (I think you mean 121s?), they are a good tool, but to be used with caution, to not end up shifting the discussions to a private space. When I do 121s, I make sure to proactively push to the public space any issue raised in that context. It’s easier to bring things up this way, but the next step should be to figure out how to have that conversation publicly - at least within the team.

And last, this role should probably not just help the developer team members at OpenCraft imho - but all team members, including non-cell, and yes even management! :slight_smile: If we want to take care of a community, it’s best to consider all its members. Same for Open edX?

5 Likes

That would be awesome! I’d love to.

Would it be possible to work-ahead on this if I have enough time during this sprint?

Sure, that sounds good to include in the pull request description if @braden leads MNG-2415 in a similar direction.

I am also hoping to create tickets in an upcoming sprint for all members to review the handbook PR, if possible. This would give members who have been involved in related role(s) to provide insight regarding those roles.

That’s awesome :smiley:

That’s understandable.

Hopefully, if the role is proven to be effective though, we can have multiple Developer Advocates based on the number of cells we have in the future. This is a little bit too early to discuss though so, until then, having a DA as a shared resource should be just fine :+1:

Yes!

I already have in mind some work which would benefit the internal developer’s success at OpenCraft.

Now that you mention it, though, the DA could also help the external developers’ success as well by contributing to the Open edX platform (helping out with epics, bugs, and other ideas).

The goal is to take all the points (issues and ideas) raised in the 121 and push them to the forum in an organized manner, where issues are clarified and the different ideas are expanded on in an argumentative fashion.

I have a couple of ideas in mind, but I’m not sure which would be most successful.

  • Having normal 121s where issues and ideas are discussed and mentioned.
    Those 121s would then be uploaded to Google Drive and would be publicly accessible.
    It’s also possible to transcribe those 121s to be able to quote them in the future.

  • Streaming 121s where issues and ideas are discussed and mentioned.
    Similar to the previous 121 proposition but with streaming instead of uploading recordings to Google Drive.

  • Host a podcast to discuss forum discussions, stuff in the works that help developers, issues with OpenCraft, and possible solutions.
    Those podcasts would be publicly available and might have transcripts which can be quoted later on.
    A similar style might be effective for Open edX.

The final two suggestions are a bit of a stretch. However, they would help external developers indirectly by learning about our problems and how we’re working on solving them.

I’m sure other small companies might face similar struggles, so publicly available streams or podcasts, and blog posts about our problems and how we’ve solved them would help contribute to the community as well.

Unfortunately, it’s a little bit difficult to mention in a future handbook PR the exact method of public communication which would be effective. It depends on the community we’re dealing with.

True! I kind of overlooked that part, my bad.

Yes, the DA should ensure the success of all parties with the platform/technology being used.


If I have some time during this sprint, I’ll try to get started on the PR.

I do have one final question though, @antoviaque.

At the moment would you consider having two different DAs (for OpenCraft and Open edX), or might there would be a plan to do so in the future if the roles are proven to be effective? It would assist in the PR I might work-ahead on.

1 Like

Here’s an idea, @nizar.

The Community Liaison role shares so many similarities with what’s being described as the “external developer advocate” that I figure it is pretty much the same thing. From the above discussion and elsewhere, let’s add the following to the mix:

  1. The Developer Advocate role will encompass both external and internal communities,
  2. The Developer Advocate role will be full-time,
  3. We’ll only have budget for one non-cell Developer Advocate,
  4. You have done a good job of covering for me as Community Liaision in the past,
  5. As I inherit LabXchange client ownership, it’s clear I won’t have time to be Community Liaision simultaneously.

What do you say? Care to incorporate/inherit it? I can think of noone better to take it over, at the moment.

1 Like

I’ll add the Community Liaison responsibilities to the responsibilities towards external developers in the pull request, in case there’s a plan to have two different DAs, for each community.

I’d love to incorporate/inherit it, if my responsibilities are towards both the external and internal communities. I hope they are :crossed_fingers:

1 Like

@nizar Thank you again for working on this - I think we agree on the essential so far. :+1:

Yes, it can be useful to have something more concrete to review. That said, for timing, keep in mind that we’ll need to organize and schedule the proper availability for this – ie make sure that the transition is planned and not too disruptive on your cell. So I would remain reasonable on the time commitment on this for now, and see with the epic planning manager when this would be best to do. CC @tikr

Yes, I think it makes sense for now to have one role encompassing both aspects. We can always see what our needs are in the future, but since @adolfo you’re also fine with regrouping both on one person/role and pass it on to @nizar, that sounds like a great first step, to see how it goes? It will already be good to have someone dedicated to this area, we’ll likely learn a lot from trying this out.

3 Likes

@nizar Congratulations on inheriting the Community Liaison role :slight_smile:

I just finished the last batch of adjustments for capacity planning for October. We have 35h for Community Liaison and 10h for automation, which would give you a total of 45h for October to put towards work related to the new DA role. For the rest of your time we’ll need you on client work (Campus in particular).

Depending on how the capacity situation develops, we may be able to progressively increase hours for the DA role in Nov and Dec; we’ll get more clarity on that in the coming weeks. But in any case, it should be possible to at least maintain 45h/month for the DA role in Nov and Dec.

CC @antoviaque @adolfo

4 Likes

Some of the proposals here would be useful; thanks @nizar.
There are many unrelated ideas: community relations, internal check-ups, accelerated epics, process improvements, problem solving, OSPR, …
I’m only interested in the part about having someone actively fixing the problems that affect the team. In my opnion the role should be only about about that.

I wrote more comments but I don’t have time to post them cleanly and there are already many ideas and opinions.

For now I’ll just mention:

  • discussing ideas shouldn’t be too formal: if someone wants to speak about an idea or a problem, speaking freely with someone is a fast and natural way. Participation is discouraged if you require people to: fill a form, schedule a task, participate in a public podcast, open a PR, ask the sustainability manager for budget, arrange a public survey, follow a checklist, post Internet-facing announcements, record a video, etc.
  • I think private discussions are fine, because not everyone wants to be discussing all issues like we’re doing now (lots of metawork and processes discussions in forums)
2 Likes

Thanks \o/ :smiley:

My proposition is for making the DA role a non-cell role.

I’m not sure how long transitioning into the role will take, especially since there isn’t a ready pull request to the handbook, yet.

Changes, yet, need to be done to the handbook. Once the pull request is approved and merged, a plan for transitioning out of serenity needs to be done.
The transition out of serenity will need to be looked into, in depth, so that I don’t affect the cell negatively, while assisting in the resolution of different issues going on.

I’m hoping to target the pull request for the DA role early next sprint and have it ready for the team’s review so that we can start looking into the transition to assist with the on-going issues.

@adolfo would you be interested in picking up the review for the DA handbook pull request?

Also, @adolfo starting which sprint would you like me to pick up the Community Liaison’s role’s responsibilities? Please note that a specific transition time is needed because I need certain permissions, such as Open edX forum mod and to be given permission to the Open edX organization where the meetings are being kept-track of.

I understand, but it’s difficult to eliminate those responsibilities at first. I need to convince others that such a role is effective, while not putting all the “costs” of such a role onto OpenCraft.

So such responsibilities are essential, at first. Once I prove the need for such a role exists, I would have a better argument towards splitting the responsibilities across two different DAs, one for internal issues and the other for external ones.

I assure you, this will be my priority :smiley:

You’re right, anyone should be able to schedule a ticket to talk to me about issues during their sprint or mine. I’ll take that into consideration while updating the handbook :+1:

The formality is my role, I should be discussing issues brought up with others in a formal way.

I’ll work on creating a process that works for me and others, so that it isn’t that formal :crossed_fingers:

Yes, you’re right. Some discussions need to be private.
It’s HR 101. I’ll take that into consideration as well.

The points discussed can then be summarized by a DA in a proper way while maintaining the person’s anonymity if they choose.

We value openness and transparency at OpenCraft, and by delivering the points discussed in a proper way we can ensure that while ensuring the member’s privacy.

I’ll also include that in the handbook pull request.

@nizar Keep in mind that we need to ensure that this doesn’t affect Serenity negatively - currently capacity is causing many of our ongoing issues, we need to avoid making it worse. So we should start from when Serenity can afford it - maybe with setting two dates? A first date where you move to the role part time, and a second one where you become full time? That might allow to get started with this earlier.