fleetdm / fleet

Open-source platform for IT, security, and infrastructure teams. (Linux, macOS, Chrome, Windows, cloud, data center)
https://fleetdm.com
Other
2.93k stars 409 forks source link

Add concisely to handbook and link from new team member onboarding: "Why this way?" #4821

Closed mikermcneil closed 2 years ago

mikermcneil commented 2 years ago

How?

What?

i.e. terse philosophy and minimally viable explanation for each of these things so that everyone is 100% in sync on what they are and the reason why:

mikermcneil commented 2 years ago

@Desmi-Dizney expanded and softened some points, added clarification

mikermcneil commented 2 years ago

@Desmi-Dizney added checkboxes, additional bullet. I’m done editing now

Desmi-Dizney commented 2 years ago

@mikermcneil do you mind if I make some of these things more concise? I don't want to chop it up if you're committed. As it is right now, to me, it comes off as a wall of scary text. How would you feel about this linking to a keynote for the details?

mikermcneil commented 2 years ago

@Desmi-Dizney Agreed, thoughts:

That work? If no good, we can grab a quick call to discuss, just Slack me

Desmi-Dizney commented 2 years ago

@mikermcneil This isn't quite what we had discussed but here is an example of one of the bigger sections being scaled back. Thoughts?

Why wireframe-first? Wireframing is called “drafting” at Fleet and is worked on in Figma. Anyone can make a wireframe suggestion, and wireframes are easy to contribute without being code literate. Drafting is completed for each change. It can be thrown away after changes. Coding first leaves verbiage that is difficult to update if it ever gets done at all. It allows you to simplify the creation and testing of error messages. Iterating in wireframes first lets us do all this for: Error messages Layouts Flows Interactions Help text Button text Forms URLs API parameters API response data…and more

mikermcneil commented 2 years ago

@zwass Couldn’t find the recording in a Google search, so I think no video exists, but I did find this Forbes article someone wrote about my talk at Apigee’s conference which might be helpful (it has a link to the slides from the talk): https://www.forbes.com/sites/danwoods/2015/10/19/dont-get-ubered-apis-hold-key-to-digital-transformation/?sh=78ea5302182c

9F8977DA-80C8-4D61-A038-E8463C117E79

mikermcneil commented 2 years ago

@Desmi-Dizney Thanks! Reads like a good start. Want to do the same for the others, then get a PR cooking to figure out structure?

Zach and I are working through some big picture decisions for how Fleet scales, so there will be edits and clarifications, but we can go ahead and get this into the handbook bit by bit as it’s ready, since it reflects where we are at today. Everything is in draft

Desmi-Dizney commented 2 years ago

https://github.com/fleetdm/fleet/issues/4821

Why do we wireframe first? Wireframes, or drafts are created in Figma to create wireframes. Anyone can make a wireframe suggestion, and wireframes are easy to contribute without being code literate. Drafting is done per change. wireframes can be thrown away after changes. Coding first leaves verbiage that is difficult to update, if it ever gets done at all. It allows you to simplify the creation and testing of error messages. Iterating in wireframes first lets us do all this for: Error messages Layouts Flows Interactions Help text Button text Forms URLs API parameters API response data…and more

Why mono repo?

One repo keeps all of the relevant work in one place. The only exception is when working on something confidential. One repo means that there is less to get lost. One repo pools GitHub stars to reflect Fleet’s actual presence better.

Why organize work in team-based kanban boards?

Kanban boards provide a uniform layout across all teams where anyone in the company can look to see what other teams are working on and have coming up. The different columns on the boards allow us to create a game plan for our to-do list for each 3-week iteration. These boards allow anyone in the world to contribute.

Why 3-week cadence?

Fleet product is released every 3 weeks, so everyone in the company is synced up to this same schedule. Other companies use a 4-week release cycle, but we like to move a little faster at Fleet to get more done. Everyone knows when the new release is, so they also know when their work is due.

Why agile?

See: https://agilemanifesto.org/ Collaborating and pushing for the next release creates the best product and culture.

Our values and mission.

See: https://fleetdm.com/handbook/company

Why the emphasis on training?

Investing in people makes them better and faster contributors. Creating a culture of helping others results in people feeling more comfortable and confident even if they aren’t familiar with osquery. A sharp focus on training means things are written down.

Why handbook-first strategy?

Watch: https://www.youtube.com/watch?v=aZrK8AQM8Ro For more details, see: https://about.gitlab.com/company/culture/all-remote/handbook-first-documentation/ Documenting in the handbook allows Fleet to scale up and retain knowledge for consistency.

Why not continuously generate REST API docs from javadoc-style code comments?

It looks cheap. Those using open API still are embarrassed by their docs. Generated documentation via tools like Swagger/OpenAPI has a tendency to get out of date and becomes harder to fix to make it up to date. There is less control over how to add annotations to the doc. It has less visibility/ accessibility/ modifiability for people without Golang coding experience. Fully integrating with swagger's format sufficiently to document everything involves more people on the team learning about the intricacies of swagger (instead of editing in markdown that looks like any other markdown in the docs/website)). Autogenerating docs is not the only way to make sure docs accurately reflect the API. Generated docs become just as out of date as handmade docs, except since they are generated makes them more difficult to edit and therefore gated/siloed. Adaptability is efficient. Using markdown allows anyone to edit our docs. Replacing markdown files with code comments makes API reference docs harder to locate and edit.

Desmi-Dizney commented 2 years ago

Added Why this way to the people section of the handbook. See: https://github.com/fleetdm/fleet/pull/4894

Desmi-Dizney commented 2 years ago

@eashaw How would I edit the onboarding to add the link for this?

eashaw commented 2 years ago

@Desmi-Dizney You can make a PR to the onboarding template https://github.com/fleetdm/confidential/blob/main/.github/ISSUE_TEMPLATE/onboarding.md

Desmi-Dizney commented 2 years ago

added link to https://github.com/fleetdm/confidential/pull/1086

mikermcneil commented 1 year ago

Closing the loop here with where this landed on the site: https://fleetdm.com/handbook/company/why-this-way#why-do-we-use-a-wireframe-first-approach