Skip to content
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

Prioritizing the grind #136

Merged
merged 31 commits into from
Feb 1, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
11e35e2
yarn upgrade
drainpip Dec 8, 2023
ccee188
first draft - collaboration before efficiency
drainpip Dec 8, 2023
03fbc03
Draft 2: collaboration before efficiency - Fixing grammar and run-on …
drainpip Dec 8, 2023
56a1a39
Bump gatsby-remark-autolink-headers from 6.12.1 to 6.13.0
dependabot[bot] Dec 25, 2023
97b013e
Bump gatsby-transformer-remark from 6.12.1 to 6.13.0
dependabot[bot] Dec 25, 2023
88431eb
Bump gatsby-plugin-feed from 5.12.0 to 5.13.0
dependabot[bot] Dec 25, 2023
6a257f2
Bump msgpackr from 1.6.1 to 1.10.1
dependabot[bot] Dec 28, 2023
5ef05e9
Working through predictability
drainpip Jan 8, 2024
07b59a0
Bump follow-redirects from 1.15.1 to 1.15.4
dependabot[bot] Jan 10, 2024
2a6a825
Merge pull request #143 from drainpip/dependabot/npm_and_yarn/follow-…
drainpip Jan 22, 2024
da40877
Merge pull request #142 from drainpip/dependabot/npm_and_yarn/msgpack…
drainpip Jan 22, 2024
8e0bfd0
Merge pull request #141 from drainpip/dependabot/npm_and_yarn/gatsby-…
drainpip Jan 22, 2024
2a536b2
Merge pull request #140 from drainpip/dependabot/npm_and_yarn/gatsby-…
drainpip Jan 22, 2024
f66bb44
Merge pull request #137 from drainpip/dependabot/npm_and_yarn/gatsby-…
drainpip Jan 22, 2024
bc1c378
Bump gatsby-transformer-sharp from 5.12.0 to 5.13.0
dependabot[bot] Jan 22, 2024
d80d998
Merge pull request #139 from drainpip/dependabot/npm_and_yarn/gatsby-…
drainpip Jan 22, 2024
10269ca
Update section title
drainpip Jan 29, 2024
817d1df
First pass at human before employee
drainpip Jan 29, 2024
c6a436a
Cleaning up some grammar.
drainpip Feb 1, 2024
9c7cb82
yarn upgrade
drainpip Feb 1, 2024
386ca73
yarn upgrade
drainpip Dec 8, 2023
578f477
first draft - collaboration before efficiency
drainpip Dec 8, 2023
a84d587
Draft 2: collaboration before efficiency - Fixing grammar and run-on …
drainpip Dec 8, 2023
92c0f0c
Working through predictability
drainpip Jan 8, 2024
b5cf9a1
Update section title
drainpip Jan 29, 2024
a1fd30a
First pass at human before employee
drainpip Jan 29, 2024
4825009
Cleaning up some grammar.
drainpip Feb 1, 2024
48bb6b1
yarn upgrade
drainpip Feb 1, 2024
962feed
rebase
drainpip Feb 1, 2024
30e5c1b
Merge branch 'prioritizing-the-grind' of https://github.com/drainpip/…
drainpip Feb 1, 2024
c057ae7
Fixing lockfile
drainpip Feb 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions content/blog/prioritizing-the-grind/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
---
title: 'Prioritizing The Grind'
description: 'It really is easy to let the day-to-day grind get away from you. I think I have a few simple rules that help me make decisions about daily events quickly and maintain the values I like to think bleed through for the team to stay engaged and happy.'
date: '2023-12-12'
image: ''
isSeries: false
seriesSlug: ''
seriesBlurb: ''
seriesEnded: false
tags: ['management']
---

As someone that was employed to write code, I tend to think in code. Repeatable processes help me when situations become tense, or chaotic, as they often do as humans struggle to build with software. The day-in-day-out grind can cause you to trip up or take shortcuts that are detrimental to your team's health. There are some things that come up quite often due to the natural tension between a company and the engineers it employs, generally you could categorize most of this down to "trying to get more with less".

Software developers tend to be more expensive and slower to deliver than their counterparts in equally technical, or complex, positions. Anything at scale is hard, basically, software doubly so simply because its so darn good at scaling to the moon and back. Making sure you're prioritizing the right things while you're actively building software, rather than planning or thinking more strategically, is critical. If you don't, your project will at best be more difficult than it needs to be, at worst turns into whatever they're calling Twitter.

### Collaboration before efficiency

<!-- prettier-ignore-start -->
<!-- CODE BLOCK - START -->
```js
if (collaborationEvents.length > 0
&& teamSize < TEAM_MAX)
{
doCollaboration()
} else {
focusOnEfficiency()
}
```
<!-- CODE BLOCK - END -->
<!-- prettier-ignore-end -->

It's important to ask questions about simple things. Why do we have teams of people working together? I think a single person working on a thing has the capability of being quite efficient. There's no communication overhead, no one to convince about how things should be done. As soon as you add one more person the potential for efficiency goes down, but what two people are capable of working together exceeds what they could each do alone. When working on a team, you should lean into the strength of a team: collaboration toward a shared goal before focusing on efficiency.

Oftentimes a task will come across a team that is obviously suited for an individual with a skillset that matches up perfectly with it. Potentially the most efficient decision would be to assign it to that person and let it get done quickly. And the next time, and the time after that. This works until that person is out sick, or has left the company. Perhaps this is a skill some or all of the others on the team want to learn, whether it's for personal / career development, or just for fun. Sometimes it's the opposite, no one wants to do it because of the drudgery or complexity. Having more people level up on work that interest them, or share the burden of something no one wants to do always yields vastly improved results.

In a teacher/student environment we have a win-win situation. Teaching someone is not only rewarding on its own, but the thing you're teaching is further solidified with a deeper understanding while you're teaching it. Someone learning something new and fulfilling is a powerful way to improve their morale while increasing the number of people that have that skill on your team.

If before you had an individual quietly fixing something that constantly breaks, or needs manual intervention regularly, you can break this cycle by adding more people to the process. The person that held it all together gets help, sometimes this can prevent burnout or employee retention in a serious way. Bringing more people into a situation like this can also give you unexpected results: a process that wasn't automated gets automated away because fresh eyes see a similar problem from the past.

Fostering this environment will empower your team to continue this collaboration without being told to do so. People will automatically jump in to help those that need it, or offer their support to teach those that want to learn. This starts to become a fun place to go to work every day. It creates a cycle of more capable and happy individuals which leads to the feeling of rampant creation anyone that's been on one of these teams will recognize immediately.

There is an upper limit to how expensive collaboration is on a given team. Communication scales exponentially for every new person on a team which can cause everything to grind to a halt. There are also best judgement calls you will make regularly about critical fires that come up that take precedence, as long as this is not the norm this is totally normal. Efficiency is important, but not if it kneecaps your team every day away from what will help them grow and work on what they feel is important.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Learning how to find the upper limit, or how to notice when you're approaching it is a tough skill to learn. Do you have "flags" that you watch for? Could those be made into a pseudo code?

while(
engagement && perceivedProductivity &&
learning &&
deliveringValue 
) 

Or 🤷‍♂️

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question, I'll think of ways to talk more practically about it.


### Predictability before speed

<!-- prettier-ignore-start -->
<!-- CODE BLOCK - START -->
```js
do {
performWellDocumentedTaskList();
} while (criticalInterruptTasks.length < 0)
```
<!-- CODE BLOCK - END -->
<!-- prettier-ignore-end -->

Prioritize consistency over moving as quickly as possible

long term planning is impossible without predictability

even in startup like situations, where speed is actually critical and not some arbitrary timeline, having predictability is a super power because you can maintain over the long term

anti-crunch

frequent checkpoints and demos

### Outcome before activity

<!-- prettier-ignore-start -->
<!-- CODE BLOCK - START -->
```js
processes.filter(
(process) => !process.match(findBusywork)
);
```
<!-- CODE BLOCK - END -->
<!-- prettier-ignore-end -->

Know why we're building the thing, share the why of how we're building the thing

Flow vs red tape

Counting points vs demoing features

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these points you'll elaborate on?

I think points vs demoing features could be a whole section

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah the short-hand stuff is just for me to remember what I was thinking when I first thought of it. Most of the things I put up can be expanded, in fact most of my blog posts are just expansions of previous paragraphs or sentences from older ones...


### Humans before employees

<!-- prettier-ignore-start -->
<!-- CODE BLOCK - START -->
```js
switch (whatsHappening) {
case 'LIFE_HAPPENED':
takeCareOfLife();
break;
case 'ALL_GOOD':
keepChuggingAlong();
}
```
<!-- CODE BLOCK - END -->
<!-- prettier-ignore-end -->

real life happens at a constant frequency, it should be allowed to, projects and deadlines can always be shifted

maintain a strong two-way street in both directions to ensure you always have a good story to tell

gaining the trust of your people any time it's made clear your priority is their wellbeing, not the company

teams become solidified around shared struggle

Take the side of your people vs. the company

you're not a family, don't try to be one, be compassionate humans and allow everyone the space and separation from work whenever they need
Loading