-
Notifications
You must be signed in to change notification settings - Fork 0
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
Changes from 3 commits
11e35e2
ccee188
03fbc03
56a1a39
97b013e
88431eb
6a257f2
5ef05e9
07b59a0
2a6a825
da40877
8e0bfd0
2a536b2
f66bb44
bc1c378
d80d998
10269ca
817d1df
c6a436a
9c7cb82
386ca73
578f477
a84d587
92c0f0c
b5cf9a1
a1fd30a
4825009
48bb6b1
962feed
30e5c1b
c057ae7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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. | ||
|
||
### 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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 |
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.
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?
Or 🤷♂️
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.
Good question, I'll think of ways to talk more practically about it.