Skip to content

Commit b127b8b

Browse files
Koutekileohhhn
andauthored
Create Gnoland-TPM-audit.md (#40)
* Create Gnoland-TPM-audit.md * Update docs/Discoveries/Gnoland-TPM-audit.md Clarify Discord usage Co-authored-by: Leon Hudak <[email protected]> * fix audit typos * update spell-check-dictionary.txt AGAIN * fix audit typo AGAIN FINAL --------- Co-authored-by: Leon Hudak <[email protected]>
1 parent 843bc03 commit b127b8b

File tree

2 files changed

+250
-2
lines changed

2 files changed

+250
-2
lines changed

docs/Discoveries/Gnoland-TPM-audit.md

+245
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
# Summary
2+
3+
@kouteki
4+
5+
April 5, 2024
6+
7+
## Objective
8+
9+
As a new Technical Project Manager, understand how the Gno.land Core team operates, and provide a list of improvements to be implemented.
10+
11+
The audit has reviewed the following:
12+
1. Effectiveness of project processes
13+
2. Clarity and efficiency of communication channels
14+
3. Team's strengths and areas of improvements
15+
16+
Methodology
17+
1. Interview the Core team and external stakeholders
18+
2. Observe the team communication and meetings
19+
3. Review documentation, comm channels and project management tools
20+
21+
## Results
22+
23+
The main gaps and opportunities for improvement identified in the audit
24+
1. PR triage and reviews creating backlog and blockers
25+
2. Lack of roadmap
26+
3. Context switching
27+
4. Meeting ownership
28+
5. Jae's bandwidth for reviews and approval
29+
6. Communication gap between technical and non-technical personnel
30+
31+
Based on the findings, the list of proposed improvements we should focus on is the following:
32+
1. Improve the PR review process
33+
2. Introduce the roadmap
34+
3. Own the meetings
35+
36+
# Audit
37+
38+
## Communication
39+
40+
**Comm Tool Inventory & effectiveness**
41+
- GitHub is the primary communication and collaboration platform tool for the Core team. It serves great as a way to track engineering progress, discuss ideas and collaborate. There is a strong inclination to put on GitHub every idea, assets, findings (like this audit) as a way to run a fully open sourced project.
42+
- Signal is used internally by the Core team when communicating with Manfred and Jae. In rare instances Signal is used to contact Core team members outside working hours.
43+
- Slack is used internally for more structured communication between Core team members, as well as communication with the rest of the org. There's a plan to phase out Slack in favor of [Matrix](https://matrix.org/), which will allow us to move most Signal conversations to Matrix; no ETA for this at the moment.
44+
- Notion is used for cross-team project collaboration, and serves as a primary project board for non-technical teams.
45+
- Email is used rarely, primarily for company wide collaboration.
46+
- Hack.md is used primarily for document drafts before being published permanently on GitHub. Both being in markdown, it's a relatively straightforward transition.
47+
- Google Meet is where most of the internal meetings happen.
48+
- Discord is used for meetings which are open to the public.
49+
50+
**Gaps and bottlenecks in information flow**
51+
- GitHub is hard to track for non-technical collaborators within the company. We're forced to compromise and by keeping cross-team efforts in Notion, as well as logging top level OKR in Notion. This created overhead and potential disparity in the info on Notion and GitHub (at least until we find a way to automate this)
52+
- Notion, on the other hand, is unsuitable tool for project management for the Core team because GitHub offers way more value with less effort. It's also against the open source philosophy of this project.
53+
- The Core team does not effectively communicate their progress/milestones to non-technical people in the company in a way they would understand.
54+
- Signal is a chat tool, and inefficient when trying to have multiple conversations, but is essential since it's the main comms channel to Jae and Manfred. In all other scenarios Slack is the de facto online collaboration tool for the Core team.
55+
- HackMD VS GitHub - there are no hard rules when to use one over another.
56+
57+
## Current Processes
58+
59+
### Ideation
60+
61+
Ideation is primarily done async (GitHub issues, HackMD docs). Alternatively in online workshops and meetings.
62+
1. When a team member has an idea, they create a GitHub issue to explain the challenge and how they plan to solve it.
63+
2. If the issue doesn't get peer feedback, team member pings peers on one of the comms channels.
64+
3. If the issue still doesn't get peer feedback, it's consigned indefinitely to the GitHub backlog.
65+
66+
### Development
67+
68+
1. Every team member is more or less free to pick what they are working on.
69+
2. Once the work is started, the owner reports progress on a weekly basis.
70+
3. If the progress is not reported, however, the task drops off our radar, and there's no accountability.
71+
72+
### PR reviews
73+
74+
1. When a PR is ready for a review, the whole team is automatically added as reviewers
75+
2. There's no process on who reviews what. Team members choose randomly (~200 PRs are currently in the repo), or stick to familiar code.
76+
3. High priority PRs are mentioned in the comm channels, and put on agenda for the [weekly PR review](https://github.com/orgs/gnolang/projects/4/views/1) board.
77+
4. At least 2 reviews are generally needed, including at least 1 Core team member.
78+
5. If an issue needs Jae's approval, he is notified via comm channels, as well as on the weekly PR review.
79+
6. There is no special case handling for external contributors.
80+
81+
### Documentation
82+
83+
- [docs.gno.land](https://docs.gno.land/) is the public technical documentation repository that's regularly maintained.
84+
- HackMD is used to document weekly status updates, which are then deposited on [GitHub](https://github.com/gnolang/meetings/issues/36)
85+
- HackMD is used to update implementation partners on a biweekly basis, which are then deposited on [GitHub](https://github.com/gnolang/meetings/issues/37)
86+
- Town Hall updates are collected biweekly and posted on Notion, along with the town hall videos.
87+
88+
## Team Dynamics
89+
90+
### Team Structure
91+
92+
- Cross-functional team, with individual members serving as silos of knowledge
93+
- Composed exclusively of seniors
94+
- Geographically distributed between US (Ray) and EU (Miloš)
95+
- EU team reports to Manfred, US to Jae
96+
97+
### Communication
98+
99+
- Async: GitHub (issues and PRs), HackMD (private discussions), Slack, Signal (with Jae, Manfred)
100+
- Sync: Core team worldwide sync (weekly), Developer Call (biweekly), Gno dev chat (weekly), GitHub review session (weekly), 1:1 (weekly/biweekly)
101+
102+
### Conflict Resolution
103+
104+
Conflicts are resolved in a civil manner between participants. Escalations were needed solely for technical topics, and those escalations went to either Manfred or Jae, depending on the impact of the decision.
105+
106+
### Meetings
107+
108+
**Gno weekly world staff sync**
109+
110+
Result: a document containing progress done in the past 7 days
111+
Cycle: weekly
112+
Length: 1h
113+
Participants: Core team, DevRel
114+
Engagement rate (percentage of Core team attendees who actively participate vs those who just listen): 100%
115+
Optimal: Yes
116+
117+
**Gno dev chat**
118+
119+
Result: open ended discussion (coffee session)
120+
Cycle: weekly
121+
Length: 30min
122+
Participants: Euro Core team, DevRel
123+
Engagement rate: 30%
124+
Optimal: Yes
125+
126+
**Gno.land Developer Call (Core)**
127+
128+
Result: Progress update given by the Core team to the community, questions and concerns addressed
129+
Cycle: biweekly
130+
Length: 1h
131+
Participants: Core team, DevRel
132+
Engagement rate: 30-50%
133+
Optimal: Yes
134+
135+
**Gno.land Developer Call (Contributors)**
136+
137+
Result: Progress update given by contributors to the Core team and the community, questions and concerns addressed
138+
Cycle: biweekly
139+
Length: 1h
140+
Participants: Core team, DevRel
141+
Engagement rate: 30-50%
142+
Optimal: Yes
143+
144+
**Gno GitHub Review Session**
145+
146+
Result: Discussions and decisions made on specific PRs
147+
Cycle: weekly
148+
Length: 1h
149+
Participants: Core team, DevRel, Jae
150+
Engagement rate: 10-20%
151+
Optimal: No
152+
153+
___
154+
155+
**Observations**
156+
157+
- Overall the meeting frequency and length are optimum
158+
- There is opportunity to further improve the focus of some meetings. An example given by the team is the Developer Call; it has been restructured and agenda prepared ahead of time, resulting in better conversations and less time spent by the team.
159+
- The only immediate issue is the Gno GitHub review session. Participation rate is very low, more often than not the agenda put forward is not followed, and the meeting derails into conversation on 1-2 topics that may or may not be related to the agenda.
160+
161+
# Conclusions
162+
163+
## Pain Points and Areas for Improvement:
164+
165+
Based on the observations and interviews with the team members, I've put together a list of pain points and areas of improvement that I've identified as priority (in no particular order)
166+
1. **PR triage and reviews are creating a backlog and blockers.** Triage process exists, but it's not enforced. Reviews aren't prioritized by impact. Some engineers are reluctant to review code they aren't very familiar with. As a result, the team often randomly selects PRs to review, or chooses based on the zone of comfort.
167+
2. **Lack of roadmap**. The team wants to map their work against the roadmap, so they could understand which contributions are more relevant. The current roadmap is too high level and the feature set hasn't been locked in.
168+
3. **Context switching**. Overlaps with the PR issue & lack of roadmap. When a PR is reviewed after a 4-month delay, the PR author needs time to recall the context and resume the effort. And the lack of roadmap forces engineers to treat most issues equally, spending effort on trivial topics.
169+
4. **Meeting ownership**. The team is strongly against unstructured meetings and bike shedding. This mostly happens in ad-hoc meetings.
170+
5. **Jae's bandwidth for reviews and approval**. Overlaps with PR triage and reviews. The team feels it's hard to get Jae to approve or engage certain topics, and we need to be more effective with the time we have.
171+
6. **Communication gap between technical and non-technical personnel**. Core team's internal communication is optimal, as well as communication with other technical teams like DevX. However, most of the non-technical teams reported difficulty understanding the tech lingo. This also manifests in being unable to properly understand, track and prioritize requests to and from the Core team.
172+
173+
## Strengths
174+
175+
During the audit a number of team strengths were manifested. We'd want to reinforce these strengths as much as possible, or at the very least not harm them.
176+
177+
- **High sense of agency**. Core team members aren't just waiting to be told what to do; they pursue their own ideas to contribute to the project.
178+
- **Balance between tasks relevant to business and passion projects**. The team understands that we need to deliver business value and they are keen on having a roadmap that would help them prioritize their work.
179+
- **Well organized despite a lack of project framework**. This is a great indicator of the Core team's motivation and seniority.
180+
- **Good async collaboration**. Almost everything happens on GitHub. Online meetings serve as checkpoints. No DMs. Almost no unconstructive criticism.
181+
182+
183+
# Action Plan
184+
185+
## Improve the PR review process
186+
187+
Goal: Reduce the PR review loop to a state where there aren't any blockers to ongoing development and external contributors feel recognized.
188+
189+
**Short term**
190+
191+
Success metric: Reduce the non-draft PR backlog by 50% (Mar 26: 94 open non-draft PRs)
192+
193+
Week 1
194+
1. Each team member reviews their current non-draft PRs
195+
1. Close PRs that are no longer relevant
196+
2. If needed, update relevant PRs
197+
3. For blocked PRs leave a comment explaining the unblock criteria
198+
199+
Week 2
200+
201+
1. Set aside 2-3 days in the week for the whole team to review the non-draft PRs
202+
2. Take inventory of the remaining non-draft PRs at the end of the week
203+
204+
**Long term**
205+
206+
Success metric: PR review loop is <2 weeks for the initial review (surface scan, no deep dive into the code) for Core PRs, <1 week for external contributors
207+
208+
1. Define and implement the new PR review process, with special consideration for bugs vs new features, as well as priority.
209+
3. TPM takes ownership over the PR triage process, incl. getting Jae's reviews
210+
4. Update the PR Review Session agenda & take ownership of the meeting
211+
212+
### Introduce the roadmap
213+
214+
Goal: Align the Core team's development effort toward a common goal. Make stakeholders confident that were making progress and building something of value
215+
216+
**Short term**
217+
218+
Success metric: All Core team members and key stakeholders have signed off on the roadmap.
219+
220+
Testnet4 roadmap
221+
1. Align with the Core team on the Testnet4's feature set
222+
2. Define drivers for each Testnet4 deliverable
223+
3. Build and maintain a DAG-based roadmap that's able to inform all internal and external stakeholders of the progress, both on the strategic (epic) and tactical (issue/PR) level
224+
4. Communicate out the Testnet4 roadmap and its progress regularly
225+
5. Track the engineer progress against the roadmap, and help prioritize work relevant to the roadmap
226+
227+
**Long term**
228+
229+
Success metric: All Core team members and key stakeholders have signed off on the roadmap.
230+
231+
The road to mainnet
232+
1. Align with leadership and the Core team on what the next era/milestone should be on the road to mainnet launch
233+
2. Build and maintain a DAG-based roadmap that's able to inform all internal and external stakeholders of our plan on a strategic (epic) level
234+
3. Communicate out the road to mainnet on a regular basis
235+
236+
### Bridge the technical communication gap
237+
238+
Goal: Everyone knows what the Core team is building
239+
240+
Success metric: all stakeholders understand our roadmap, how they need to contribute, and feel they are regularly updated
241+
242+
1. Transfer ownership of meetings to TPM wherever it makes sense
243+
2. Reduce the number of input requirements from the Core team to a single document
244+
3. Maintain the Notion project board with a strategic Gno.land roadmap and external dependencies, and look for opportunities to automate the process
245+
4. Write and maintain artifacts that simplify technical information

spell-check-dictionary.txt

+5-2
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ devs
109109
roadmap
110110
Jae's
111111
OKR
112-
de facto
113112
HackMD
114113
Ideation
115114
async
@@ -128,4 +127,8 @@ TPM
128127
Nemanja
129128
kouteki
130129
Boltz
131-
Aleksic
130+
Aleksic
131+
unconstructive
132+
de
133+
Testnet4's
134+
facto

0 commit comments

Comments
 (0)