Zach Holman, a former GitHub engineer, writes about software workflows, remote work, Git, deployment, and giving talks.
Commenters list it among favorite blogs and recommend his talk on talks and his long UTC and time zones post.
I generally like GitHub Flow (https://guides.github.com/introduction/flow/) because it gives you isolation for individuals, but with only one ceremonial branch (ie. master). It might not be sufficient if you have formal release and QA cycles where you need to batch a bunch of changes to push to a staging environment, but all else being equal I prefer to optimize for branching, merging and deploying to production quickly. And with current cloud and/or containerized setups, it becomes possible to have on-demand staging environments (or even using ngrok with dev workstations!), but YMMV.
The main cherry I like to put on top is to always rebase before merging then merge with --no-ff (which is the default with GitHub PR merge button). This gives linear history for purposes of git bisect but preserves the topic branch structure so you don't have to read the tea leaves of the individual commits to piece together the overall development timeline. That one little piece goes a long way to addressing the concern that "rebasing destroys history" (which I don't agree with anyway, but that's the topic of another post).
This might not be worth it for certain types of contributors who are not programmers by trade, but for career programmers I believe mastering git and rebase in all its flavors (-i, --onto, pull --rebase, etc) pays big dividends that your team will appreciate more as the years go by. For git beginners maybe you start without rebasing, then learn the ins and outs of…
One thing to look out for is remote-first companies, not just remote-ok companies. Zach Holman has a good post on this: https://zachholman.com/posts/remote-first/
If you're one of few people in the company working remotely (or worse: one of few in your team), you get cut off really easily. Remote practices won't be up to scratch (because most people aren't using them), meetings will happen in person and dialing you in will be a chore, and things won't work as well. You'll hear about major events by email that everybody knew about last week from office chatter. This isn't to say it'll be a disaster, but it'll be less effective, and less fun.
Companies where everybody works remote by default meanwhile are a different ballgame. Everybody understands how remote interactions should work, and that's what gets used to get everything done. People are good at using the tools and processes required to pull this off well, and the company will be better at managing solutions to the downsides of remote work (by flying everybody into a summit to see each other in person every 6 months, for example, or covering coworking space costs). You're no longer the great developer they want _despite_ you working remotely - you're now one of many people, all working remotely, and all working together on the same playing field.
Higher level tooling doesn't prioritize this.
That's an excellent point.
It's deep in the DNA of GitHub, unfortunately. I'm always reminded of this contrast:
> Look, I don’t give two shits about my Git commits. [...]
> From GitHub’s perspective, individual commits become less valuable because the atomic unit is the pull request.
Utter Disregard for Git Commit History
https://zachholman.com/posts/git-commit-history/
(The problem with this "unit of change" theorizing is obvious, especially considering GH only recently added a squash-merge feature.)
vs. Torvalds on GitHub PRs:
> Git comes with a nice pull-request generation module, but github instead decided to replace it with their own totally inferior version. As a result, I consider github useless for these kinds of things. It's fine for hosting, but the pull requests and the online commit editing, are just pure garbage.
https://github.com/torvalds/linux/pull/17#issuecomment-5654674
Lots of very useful suggestions, but I'd also add:
a) Be patient with yourself. Whether it is therapy, medications, etc. these things take time. Months, at the very least.
b) You may have to switch multiple therapists, after investing a few weeks with each (multiple sessions). This is exhausting. But stay the course. Hard as it is.
c) Medication: You may have to try different drugs; they may not work. They most likely will have side effects even if they are not helping. This process is also draining.
Therefore, in addition to patience, if you can, let someone else know you are trying & going through this, so that they can remind you to be patient. To give yourself & the process time.
Edited to add:
This essay [1] by Zach Hollman, is really really great for a very personal, insightful, reflective assessment of how hard it is, and what a battle it can be.
[1] http://zachholman.com/posts/the-depression-thing
Zach Holman has a great article about it: https://zachholman.com/posts/fuck-your-90-day-exercise-window/
And keeps an ongoing list of companies that offer extended exercise windows: https://github.com/holman/extended-exercise-windows
As somebody who has personally experienced every aspect of the stock option lifecycle (which fortunately worked out for me), I would never take a job at a company [1] if they didn't have an extended exercise window. The 90 day expiration period creates a massive gap between the risk/reward of equity for founders and the risk/reward of equity for employees, when the whole point of giving equity is to align those.
1: Assuming it was the type of company that compensated people with stock options
Zach Holman recently blogged about this:
I saw GitHub’s valuation move from sub-$10M to more than $2B; beyond that, GitHub is turning a decade old this year. Traditionally, this would be a great point where lots of little companies get spun off from this created wealth, and employees and former employees would be able to help with that.
In reality, I can probably count on one hand the number of people from GitHub who are in a financial position to become true angels. This is far from a problem unique to GitHub; the entire industry is concentrating its cash in a select few.
https://zachholman.com/posts/slow-exits
HN discussion: https://news.ycombinator.com/item?id=13655855