Hacker News new | ask | show | jobs
by ath3nd 662 days ago
For a developer, arguably "flow state" is arguably the most important thing. Provided, that is, that requirements are clear and people are in sync what should be worked on.

What do you think is the most important, if not flow state?

2 comments

Well, you kind of assumed it away in your second sentence, but alignment is more important than individual productivity. And unfortunately, meetings, interruptions, and other communication are the best tools most teams have for that.
> And unfortunately, meetings, interruptions, and other communication are the best tools most teams have for that.

In my experience, once people know each other well (whether via direct face to face communication, or via observing each other's slack messages and PRs), it's much more efficient to put things in writing.

Then everything is in the open, for everyone to see and discuss/comment on. People can go back over previous decisions, people can see the context over why something was done, people can check previous votes. And, most importantly, people can do so when they need to do so, preserving their individual flow state.

By the way, when I said "flow state", I also mean the team's overall flow state, not only ICs.

E.g if we break down a feature in two parts, can we efficiently sync so the parts we make fit well together. Do we pair program, do we each take our chunks, how often do we sync and how, that's also "flow". My point is that "flow" here is still the most important thing for developer productivity. If you want to be doing your own part of the task, but I keep interrupting you with "hey, got 5 min", obviously something is wrong in our flow.

What is more, I can't be convinced that allowing these interruptions is the proper way, the price of achieving flow. I see that more as a symptom that we didn't agree on the ground rules, and that's where our flow goes wrong. Maybe we can batch the multiple 5 min interruptions into longer planned sessions, with agendas, where we go over your concerns and questions, which you spend the time to formulate and put on paper. That way we have a focused time with an agenda and we both can prepare for it, and there are no context switches for the rest of the workday.

I think the problem is that you consider "alignment" a thing on its own, but to me it's merely one of the components needed to achieve a good flow. In experienced teams where members are attuned to each other's communication styles, and respectful of each other's time and attention span, alignment doesn't necessarily need to be attained by meetings and interruptions.

Hence my point still stands that flow (individual and team) is the most important thing for developer productivity (and happiness)

Team and organizational productivity.

Teams are not a simple sum of independent productivity of individuals. (If they are, it implies they don't need to be a team, since nobody is dependent on anyone else)

You say that like it's not possible to have a balance—have enough meetings and communication to properly coordinate the team, while still leaving each individual enough uninterrupted time to get plenty of flow-state work done.

The posters above advocating for flow state aren't saying anywhere that they don't want to have any communication with the team. They're saying they need the flow state to get their own work done. That's fully compatible with agreeing, as a team, that there are certain times when you don't interrupt your teammates short of an emergency—and other times when everyone's fair game, and still other times for regular scheduled meetings.

So many of the "quick calls" could just as easily wait until tomorrow, or a scheduled block of "interruptible time" at the end of the day. Saying "But I need to interrupt you now!" during a time designated for deep work means that you're optimizing for your individual productivity rather than the team's; instead, you could write your question down for later, and switch to a different task for the time being, or work around it, or research it yourself, or a dozen other possibilities.

While that is true, good team members don't interrupt each other and make sure they maximize both their individual and team interactions.

"Hey, you got 5 min" all the time is a symptom of bad communication and bad team flow. It means lots of things are not clear, often, things that can be put in a knowledge base, or batched into a longer conversation.

The price we pay as an organization when team members switch context is high, and if your culture is a culture of constant context switch, then it's not a good culture. Let's not normalize interruptions as "the price to pay" for being in a team. We can be in a team with better dynamics than that.