artsy / README

:wave: - The documentation for being an Artsy Engineer
Creative Commons Attribution 4.0 International
1.1k stars 120 forks source link

RFC: Host one Codebase Refinement per quarter in 2022 #458

Closed patrinoua closed 2 years ago

patrinoua commented 2 years ago

Proposal

Treat code as a product: One that needs to grow by planning and refinement.

In the same way we collect feedback for product and our people at artsy, we could collect feedback for our code.

We provide feedback to our people every quarter and this helps everyone develop. A similar approach to our code base could further improve the code base and dev experience.

Instead of doing that on a product team level we can address it by which repositories people work on: Those who work mainly on eigen can suggest improvements to eigen, those who work on force can suggest improvements for force and so on.

Once per quarter, and in the same way we do Hackathon, we could dedicate 3 to 4 days for our codebase refinement.

Reasoning

Plus a lot of the reasoning in Matt's RFC about Hackathon applies:

Formatting

We could have

  1. A brainstorming meeting
  2. A planning meeting where we select some of the ideas that came up on the brainstorming
  3. Jira boards for each repo where we add everything that has been decided upon
  4. A few days to execute
Screenshot 2022-03-29 at 14 10 31

Additional Context

8 April 2022 Update

After the positive feedback we've started collecting some of the ideas here. Feel free to contribute! :)


Resolution

After the positive feedback we decided to do this.

We have started collecting some the ideas here, feel free to contribute!

While this RFC proposes one refinement per quarter we haven't finalized the cadence of it.

Level of Support

  1. Overwhelming positive feedback.

Next Steps

We will use the next Hackathon slot (end of June) as a first iteration and by the end of the first refinathon we will discuss outcomes, and decide on the cadence. @patrinoua will be the DRI for these discussions.

kajatiger commented 2 years ago

There are not enough ❤️ emojis that I can give to this RFC. I am so into this!!!!

damassi commented 2 years ago

In the absence of a FE platform and Internal Tools team while simultaneously staring down an increasing pile of tech debt in a few different areas, this may be the missing piece we've been looking for 👍 I also suspect people very much like working on this kind of thing (regardless of skill level) so also agree that it'd be great for morale.

damassi commented 2 years ago

My one question is: What about Future Friday? Since that occupies a lot of this sort of space. However, I don't think FF is good at generating momentum in the same way that an organized event is, and in general only a few people publicly participate.

sweir27 commented 2 years ago

This sounds exciting/intriguing! When we were discussing the quarterly hackathon idea, someone raised that we could use the time for other things besides hackathon. So if it achieves similar goals and we're excited about this, perhaps we could use the next hackathon slot to try it out?? (cc @mdole as the DRI 😄)

patrinoua commented 2 years ago

My one question is: What about Future Friday? Since that occupies a lot of this sort of space. However, I don't think FF is good at generating momentum in the same way that an organized event is, and in general only a few people publicly participate.

Future Friday is great for addressing smaller issues that can be decided by upvoting in some of the dev channels. But with one day every 2 weeks it's not really possible to address what this RFC suggests.

mdole commented 2 years ago

I support this idea and I like the idea of trying a refine-a-thon! One thing that might help make it successful is some preliminary work to define and focus the time.

For example, if we just say "we're going to spend 3 days on refinements!", that could mean many different things to different people. One person might spend it on internationalization, another on Force routing, and a third on cleaning up Cohesion helpers.

Those are all valid uses of our time, and our codebases would be better for them, but it sounds like the goal as stated in this RFC is more about consistency and standardizing conventions.

With that in mind, we could devote some time (perhaps at various practice meetings?) to getting more specific before we begin. Instead of "refinements", it could be "Gravity: Migrate the Artwork model to Postgres (😅)" and "Volt: Make the Shows route React" etc. etc.

Basically, I think it would be great to pick out some of our highest-priority/biggest-scope tech debt and attempt to tackle that. Defining what exactly that means will take some time and leadership!

kajatiger commented 2 years ago

it could be "Gravity: Migrate the Artwork model to Postgres (😅)"

Only this ☝️ would already be enough reason for why we need the refine-a-thon and I think almost everyone in engineering thinks that this is urgent and needs to be addressed. Thanks @mdole for making the RFC more haptic by giving such a great example for what we could do.

I think similar to the hackathon, we should collect ideas beforehand for the refine-a-thon and then form little temporary teams for the projects. We could also create a manifest of code-values before in order to align the goals/outcome of each refine-a-thon... The manifest would define what things like consistency, security, accessibility, good design, expandability etc. mean to us with examples in where it is done well vs. where it still needs to improve.

patrinoua commented 2 years ago

@mdole I love the name of "Refine-a-thon", thanks! 😄

And I 100% agree that some preliminary work is necessary.

This is why I added a planning session, but something before that would also be nice to have.

We could have a couple of things:

A notion page for each repo where people add things. example We could also send out an email once per month with a google form questionaire where ask people which repo or repos they work on and to provide feedback, what they liked, what could be better, things they'd like to add etc, which we could later use to further populate our repo-notion pages.

After having collected ideas from people we could use the planning session to upvote things we'd like to tackle and have volunteers to address them, same way as we do in a hackathon.

fladson commented 2 years ago

Love this idea, thanks for raising it. I will try to add some tech debts to the notion board.

patrinoua commented 2 years ago

After the positive feedback we've started collecting some of the ideas here. Feel free to contribute! :)

patrinoua commented 2 years ago

Resolution

After the positive feedback we decided to do this.

We have started collecting some the ideas here, feel free to contribute!

While this RFC proposes one refinement per quarter we haven't finalized the cadence of it.

Level of Support

  1. Overwhelming positive feedback.

Next Steps

We will use the next Hackathon slot (end of June) as a first iteration and by the end of the first refinathon we will discuss outcomes, and decide on the cadence. @patrinoua will be the DRI for these discussions.