-
Notifications
You must be signed in to change notification settings - Fork 5
feat(developer guides): create initial guides for hiring developers, … #29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…getting hired, and working with multiple developers
|
I feel like it might be good to summarize the two main ways that a developer can contribute to an existing site when hired under the "hiring a dev" section and what an owner needs to do help set that up. The two ways being pushing to a github vs pushing straight to the server. |
|
Agreeing with Moif; a short explanation between what the key differences are especially security-wise in terms of a developer having access to a shared repository vs a developer having direct access to one's webserver I think might be really beneficial, and probably emphasizing the importance of it given I've met a couple site owners who very quickly toss over SSH credentials because they think making a repository on Github is too much work but don't understand the security implications of doing that. I do actually have a copy and paste message I wrote (...5 years ago now...) that has the steps outlined on how a site owner can create a private repository, push their code there, and invite a developer in as a collaborator in about ~6 steps that I can throw in if that's also helpful? Though I'm not sure if that's more useful on these pages or on a more general page since hiring a dev isn't the only situation you'd create a private repo for. (thinking emoji) |
|
Good idea, I did briefly mention it but yes I do think it's a good investment to make sure people are clear especially hearing your example of people handing over SSH keys willy nilly min If you'd like to send that paragraph sure, otherwise I'll try cook something up myself! We could also stick it in a general page, I'll mull it over where best to go |
|
My copy and paste (slightly edited to be more general and not have my email) is:
|
|
Oh, yeah, definitely nthing that. Honestly, I think regardless of how we structure the info that we should push it more as the recommended way of handling collaboration? And recommend fairly strongly against just handing over SSH credentials. |
| @@ -0,0 +1,53 @@ | |||
| # Getting Hired (for Developers) | |||
|
|
|||
| Thank you to [itinerare](https://github.com/itinerare) for providing the basis of this guide! | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is thoughtful, but I think fine to omit-- and keeps the docs cleaner. At the end of the day, it's a group effort anyhow!
| In fact, the ToS is so important that we recommend not working with anyone who does not have one, or who refuses to agree to yours. In fact, it is so so important, we are going to have an entire section dedicated to it: | ||
|
|
||
| ### Terms of Service (ToS) | ||
| The purpose of this document is manifold. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it might work better to move the last couple sentences from the prior section here and tweak it to be a bit more formal; something like...
| The purpose of this document is manifold. | |
| Having and upholding a ToS is so important that we strongly caution against working with anyone who does not have one, or who refuses to agree to yours. As a thorough ToS is so vital, the following section outlines what it should accomplish in this context and provides some recommendations. |
| However, it’s not practical to be responsible for its maintenance in perpetuity, especially if it breaks as a consequence of others’ actions, updates, etc. | ||
|
|
||
| !!! warning | ||
| Note that this does not necessarily preclude you from taking on additional work to maintain it, including for pay, just absolve you of the obligation to do so. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should probably be moved from a callout back to plain text... I'm not sure it needs to be in one, but perhaps more importantly, the one after it is really important and shouldn't be "upstaged", if that makes sense.
| 2. **Toyhou.se:** This platform has a section for seeking services. | ||
|
|
||
| !!! warning | ||
| Be extremely cautious when hiring developers from third party platforms. Ensure the developer has relevant experience. We personally DO NOT recommend hiring developers without prior Lorekeeper experience, as the learning curve can be steep. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Be extremely cautious when hiring developers from third party platforms. Ensure the developer has relevant experience. We personally DO NOT recommend hiring developers without prior Lorekeeper experience, as the learning curve can be steep. | |
| Be extremely cautious when hiring developers from third party platforms. Ensure the developer has relevant experience. We personally **do not** recommend hiring developers without prior Lorekeeper experience, as the learning curve can be steep. |
Formatting nitpick here, but the message is solid.
|
|
||
| ## The Golden Rules | ||
|
|
||
| These are written in absolutes, but they are just guidelines to help you and your hired devs work effectively together. Feel free to use as many or as little as you like, whatever works best for your team! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| These are written in absolutes, but they are just guidelines to help you and your hired devs work effectively together. Feel free to use as many or as little as you like, whatever works best for your team! | |
| These are written in absolutes, but they are just guidelines to help you and your hired developers work effectively together. Feel free to use as many or as little as you like, whatever works best for your team! |
| - Define clear tasks for each developer. Set deadlines as needed. | ||
| - Use a shared repository separate from your production site (e.g. GitHub). | ||
| - Use a kanban board or similar tool to track progress and tasks. (ex. Trello, GitHub issues, Discord threads, whatever works for your team) | ||
| - If possible, limit access to your live site to only those who absolutely need it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe server/live site? To be clearer... I'm not sure this is the best way to go about it, but I think it's worth a little additional specificity.
|
|
||
| #### Environments | ||
|
|
||
| Most Lorekeeper projects will have at least two environments, it's good to at least be familiar with the concepts: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tweaks for formality/formatting nitpicks...
| Most Lorekeeper projects will have at least two environments, it's good to at least be familiar with the concepts: | |
| Most Lorekeeper projects will have at least two environments that work occurs in. It's a good idea to familiarize yourself with them and what they're called: | |
| - Local / Dev — each developer works on their own machine. | |
| - Staging / QA / Testing — a shared testing environment. Many sites **will not** have a staging environment. | |
| - Production / Live — the site your users see and interact with. |
|
|
||
| --- | ||
|
|
||
| ### **For the Developers:** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it'd be good to add a little segue here...
| ### **For the Developers:** | |
| ### **For Developers:** | |
| The following are some best-practice recommendations for how work on a given project should go. As above, these are written in absolutes, but are ultimately just guidelines. Nonetheless, they are recommended for very good reasons! |
|
|
||
| ### **For the Developers:** | ||
|
|
||
| - All work happens in a hosted repository (e.g. GitHub), NOT the live site. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - All work happens in a hosted repository (e.g. GitHub), NOT the live site. | |
| - All work happens in a hosted repository (e.g. GitHub), **not** the live site. |
|
|
||
| - All work happens in a hosted repository (e.g. GitHub), NOT the live site. | ||
| - Use branches for every change, no exceptions. | ||
| - Nothing goes straight to “live”. NEVER MODIFY CODE DIRECTLY ON LIVE. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Formatting nitpick, but also I think it's a good idea to clarify what this means...
| - Nothing goes straight to “live”. NEVER MODIFY CODE DIRECTLY ON LIVE. | |
| - **Never send un-reviewed, untested changes directly to a live site**. |
| - Nothing goes straight to “live”. NEVER MODIFY CODE DIRECTLY ON LIVE. | ||
| Changes flow: | ||
| feature branch → pull request → review → staging (optional) → production. | ||
| - When possible, get features reviewed by at least one other person. It's not just about code quality, but also about shared knowledge. It makes it harder if only one person knows how something works. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a really good point!!
| - When possible, get features reviewed by at least one other person. It's not just about code quality, but also about shared knowledge. It makes it harder if only one person knows how something works. | ||
| - Small, frequent pull requests beat big ones that are hard to review. | ||
| - Write clear, descriptive commit messages. We recommend using the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format. | ||
| - Definition of Done = works as described, tested, and documented. Make sure you ask for clarification if something is unclear. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - Definition of Done = works as described, tested, and documented. Make sure you ask for clarification if something is unclear. | |
| - Something is considered "done" when it works as described, is tested, and is documented. Make sure you ask for clarification if something is unclear. |
| ## Branching Strategy | ||
|
|
||
| `main` — production-ready code. | ||
| `dev` — integration branch if lots of parallel work. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Personally, I also use develop (in a site context, so != core's branch) as what staging pulls from (as I use deploy workflows, so whatever goes to main goes to live); this suggestion is made with that in mind, but feel free to disregard if consensus isn't that that's a sound recommendation to make more broadly.
| `dev` — integration branch if lots of parallel work. | |
| `dev` — integration branch, especially if there is a lot of parallel work or you have a staging environment. |
|
Umpteen comments notwithstanding, really good work on the whole thus far; thank you for taking the time to put this together! |
…getting hired, and working with multiple developers
addresses issue #20