News for hackers. Stuff that matters.
Re:The art of interrupting software engineers by jdlshore on Tuesday July 30, 2019 @12:40AM (#20562180)
There seems to be a lot of misunderstanding about this article.

First, you have to understand the context. This person is talking about an Extreme Programming team. Speaking as someone who wrote a book about XP, here are some things that are true about by-the-book XP teams:

1) All production programming is done in pairs, all the time.

2) Everybody sits in a shared team room at dedicated "pairing stations."

3) The atmosphere is highly collaborative and friendly, and there's always a low buzz of conversation in the room. Interruptions are normal and expected, as the team's overall performance is valued more highly than individual performance. Due to pairing, interruptions tend not to interrupt flow.

4) Requirements are conveyed verbally, not through written documents. Stories are short "reminders to hold a conversation," not fully-fleshed out.

5) The team values feedback and wants frequent conversations with their on-site customers (including the product manager) to confirm that they're on the right track, particularly about nitpicky details that are difficult to anticipate in advance.

Given this context, the author is talking about how he, as a product manager, does his job of providing business context and customers' points of view.

This material is not meant for people who aren't on an XP team. It's good advice for product managers who are.

Re:The art of interrupting software engineers by taneq on Tuesday July 30, 2019 @01:32AM (#20562336)
I didn't even get halfway through that description of an XP workplace before the little voice in the back of my head started screaming and it still hasn't stopped.
Re:The art of interrupting software engineers by lioeters on Tuesday July 30, 2019 @09:09AM (#20564453)
Haha, me too, the voice in the back of my head pleaded, "Make it stop..!"

Already from the article title I started to have this reaction. As a software engineer, nothing kills focus and productivity faster than interruptions. From the perspective of a manager, I can understand - and really appreciated the respect and consideration that went into the article and the recommended approach.

However, every point in the description of an XP workplace sounds like torture. Paired programming, in a shared room, always a "low buzz of conversation", requirements not written but verbal only.. To be fully engaged and productive, I need the exact opposite.

Re:The art of interrupting software engineers by ohwaitnvm on Tuesday July 30, 2019 @06:23PM (#20569812)
I'm an engineer at Pivotal, having returned after a few years at startups, both practicing XP and not. The part about verbal-only requirements couldn't be more incorrect. Stories might start as a title and a sentence or two description, but more often than not here they get written up with gherkin-like Given/When/Then sets of acceptance criteria with additional details/considerations noted down.

Regardless of that issue, XP isn't for everyone, and there's nothing wrong with that. I like it though, that's why I'm back. :)

EDIT: Also, I don't know him, but our writer here seems to think a lot about how he interacts with his dev team, which I appreciate, but think maybe he got into his own head about it a little bit too much here. But I also don't really mind interruptions.

Re:The art of interrupting software engineers by lioeters on Wednesday July 31, 2019 @11:44AM (#20575349)
Thank you for the perspective! Pivotal does sound like an exciting place to work.

> [Stories often] get written up with gherkin-like Given/When/Then sets of acceptance criteria with additional details/considerations noted down

Very interesting to hear, especially in contrast with the "verbal only" approach mentioned along with XP.

For my personality type, I work best when there are requirements/acceptance criteria clearly specified in writing. Even better if the logic is written in a DSL that all stake-holders can create together.

> I also don't really mind interruptions

Yeah, I see that software engineers come in all colors, and some are able to multi-task while fielding questions and interactions all the while. And others, like me, need more isolation / insulation to maintain silence and solitude to be able to focus and be productive.

I suppose that's a challenge for methodologies like XP. In order to be effective, it needs to take into account the different working styles and personality types that exist in a team of any size.

Re:The art of interrupting software engineers by ohwaitnvm on Wednesday July 31, 2019 @02:30PM (#20576928)
Yeah I'm not sure where verbal-only came from! We definitely do less upfront specification of say a whole project or months of work - we'd probably call that waterfall style and suggest that likely so many things contained therein will change or be outright wrong that it's better to have just a rough outline, and build definition as work gets closer to being actionable or executed.

I think the interruption thing is interesting - at jobs where I was solo, I probably minded it significantly more. With constant pairing, different interruptions can be handled in different ways. Two-second questions can be answered by the non-driver while the driver continues to focus. Five minute answers should probably stop both members, but having two brains allows you to bounce back into context through re-merging your mental model of where you left off.

Thinking about this though, I realized that in pairing you have internal interruptions as well - if one person needs to use the bathroom or take a phone call, the other can choose to keep working and maintain context. When the breaker returns they can reload their mental models much more easily. Or you can both take breaks and you've already got a built-in ping-pong opponent ready to play :)

Re:The art of interrupting software engineers by lioeters on Wednesday July 31, 2019 @04:43PM (#20578331)
> having two brains allows you to bounce back into context

Wow, I never thought of pair programming like that. It sounds nice actually, to let another brain keep the ball rolling while one is busy with something else.

It makes me realize that a big part of my reluctance (preconceived notions about pair programming) is due to having worked alone for most of my career. I never experienced the kind of "mind meld" you describe. I'll remember to keep an open mind about collaborative working methods!

Re:The art of interrupting software engineers by irrational on Tuesday July 30, 2019 @01:46AM (#20562390)
This sounds like the most horrifying work environment I can imagine. I have to assume that all XP developers are extroverts, because as an introvert this would be a living nightmare.
Re:The art of interrupting software engineers by afarrell on Tuesday July 30, 2019 @02:59AM (#20562662)
I'm extrovert as hell and I like pair programming...but not having "what are we going to do" written down, combined with a constant hum of conversation in the background sounds awful.
Re:The art of interrupting software engineers by atoav on Tuesday July 30, 2019 @03:27AM (#20562783)
Depends how hard the problem is you are working on? I could totally imagine solving easy to medium problems in that environment. For hard problems I’d probably leave the room and think alone till I have something worthy of discussion
Re:The art of interrupting software engineers by afarrell on Tuesday July 30, 2019 @05:33AM (#20563310)
Me: “What was the problem again? I forgot.” 5x times until my pairing partner just does it himself while I try to stay focused and follow along.
Re:The art of interrupting software engineers by afarrell on Tuesday July 30, 2019 @08:10AM (#20564075)
To clarify, I'd be fine with pairing 8 hours a day, but I'd want:

- Some sort of sound barrier so that I couldn't parse the background conversations.

- To be able to decide "what is our current plan?" and to write that down. Of course you'd change to a new plan in light of new information.

Re:The art of interrupting software engineers by havocheavy on Tuesday July 30, 2019 @11:28AM (#20565763)
Think of the last time you were in a conversation with 1 person in a busy restaurant. Was it distracting to hear others having conversations? Did it propel your conversation at all, or maybe give you something to talk about? When people talk about the buzz of activity in a busy place, it's really closer to a situation like this.

Individuals doing solo work are often distracted by background noise, and even I do! But in pairs, it doesn't seem to have quite the same effect in my experience.

On the planning part, I know a lot of pairs that set up small daily roadmaps to stay on track. Totally normal, and also totally ephemeral as well. Usually an updated plan is drawn every day since the pair might change.

Re:The art of interrupting software engineers by afarrell on Wednesday July 31, 2019 @08:44AM (#20573933)
> Think of the last time you were in a conversation with 1 person in a busy restaurant. Was it distracting to hear others having conversations?

Yes. Its an unpleasantness I endure if I’m not trying to work through anything which is an intense use of my Working Memory.

Re:The art of interrupting software engineers by plinkplonk on Wednesday July 31, 2019 @01:08AM (#20571830)
"constant hum" is quite the understatement. It is often close to a dull roar (from personal experience with "pair all the time in an all-agile open office environment". I quit and went on to better things).
Re:The art of interrupting software engineers by _betty_ on Tuesday July 30, 2019 @04:29AM (#20563058)
Menlo innovations do pair everything and find most their employees are introverted and like it.

The theory is that introverts don't dislike social interaction but unsafe social interaction. It's why you're generally more social with friends and family.

Re:The art of interrupting software engineers by JustSomeNobody on Tuesday July 30, 2019 @09:08AM (#20564446)
That's only one type of introvert. The type of introvert that I am wants to be in his own head as much as possible. So even family and friends wear me out after an hour or two and I have to find a place to just be in my head for a while. I love my family and friends and enjoy them, just the experience of being social exhausts me. I don't draw energy from other people.
Re:The art of interrupting software engineers by sebbyy on Tuesday July 30, 2019 @08:09AM (#20564072)
I'm an introvert and I like XP.

Left the company for a usual startup setup with your own Macbook, pull requests, and things.

I miss the almost zero friction collaboration.

As a pair. Either of us will point out each other mistakes and suggest an improvements to what we're doing in real time without the ping-pong of pull request.

If both of us can't figure things out. We can just scooch over to other pair workstation, sit in the other chair, use the mouse and keyboard to show part of code we have issue with, point to the monitor, and ask questions.

Re:The art of interrupting software engineers by coblers on Tuesday July 30, 2019 @02:35AM (#20562564)
I'm relatively outgoing and it still sounds horribly draining
Re:The art of interrupting software engineers by rev12 on Tuesday July 30, 2019 @09:24AM (#20564573)
> 4) Requirements are conveyed verbally, not through written documents.

I can't even begin to imagine the sheer amount of meetings and "chats" that would need to take place on a regular basis just to keep things moving along.

I admit to knowing very little about XP but this sounds like my own personal hell.

Re:The art of interrupting software engineers by ahartmetz on Tuesday July 30, 2019 @04:07AM (#20562957)
4) sounds like a recipe for disaster if the product is large enough. Nobody can remember everything. Heck, I start writing a text document when something gets too big for myself.
Re:The art of interrupting software engineers by twic on Tuesday July 30, 2019 @06:17AM (#20563469)
Having followed the process as described, i'd agree. If a project runs for more than a few months, you forget why decisions were made. I don't think XP in general has a great story about how to deal with this.
Re:The art of interrupting software engineers by technion on Tuesday July 30, 2019 @08:55AM (#20564348)
I'd be less worried about "forgetting" and forever worried about a manager just saying "you obviously forgot (something I just decided)". I mean it happens even when there's documentation I can pull up and say "well actually..", I'd hate to imagine otherwise.
Re:The art of interrupting software engineers by JustSomeNobody on Tuesday July 30, 2019 @09:11AM (#20564466)
I love email for this. That way I can always pull up the email and say, "this is what we decided." I follow up all meetings with email(s).
Re:The art of interrupting software engineers by jacques_chester on Tuesday July 30, 2019 @05:02PM (#20569132)
Yes, this is one of my pet peeves.

Pivotal R&D has struggled with maintaining context. For multi-megaSLOC codebases with many moving parts, organic memory begins to fall a bit short.

Different teams deal with this differently. Some write design notes, some keep architecture design records. But IMO it's one of our weaknesses.

Re:The art of interrupting software engineers by lazerwalker on Tuesday July 30, 2019 @04:36AM (#20563093)
An answer there would likely be smaller teams. For context, when I was at Pivotal (on the consulting side, years ago) a team of 4-5 pairs would be considered quite large.

Also a problem that's solved by the combination of pairing and frequent communication. You don't need full context on anything yourself, as long as the combination of you, your pair, and anyone you can grab within arms reach can fill in the blanks.

Re:The art of interrupting software engineers by lonelappde on Tuesday July 30, 2019 @09:05AM (#20564426)
We invented books because human memory storage is phenomenally expensive. Why throw them awaym
Re:The art of interrupting software engineers by JJMcJ on Tuesday July 30, 2019 @12:56PM (#20566750)
"The dimmest ink is superior to the brightest memory" - so said Benjamin Franklin or maybe someone else.
Re:The art of interrupting software engineers by _betty_ on Tuesday July 30, 2019 @04:32AM (#20563076)
I find requirements start changing as soon as there is a conversation about them or a user interacts with a feature.

This practice is just saving time writing down behaviour that won't be implemented.

Re:The art of interrupting software engineers by afarrell on Tuesday July 30, 2019 @08:13AM (#20564089)
But if you don't have a few paragraphs of your assumptions written down, how do you keep the 3 other people aligned on your basic assumptions and direction?

What do you do when people forget things?

Re:The art of interrupting software engineers by _betty_ on Tuesday July 30, 2019 @05:08PM (#20569184)
4) Requirements are conveyed verbally, not through written documents. Stories are short "reminders to hold a conversation," not fully-fleshed out.

There's still something written down, just not massive amounts.

Personally i try break stories down smaller to avoid the need for large tasks which helps. I also try minimise the time between story creation and story development.

Otherwise I just communicate a lot.

Things get differently from what I invisioned, sometimes they're worse sometimes they're better.

Re:The art of interrupting software engineers by peteradio on Tuesday July 30, 2019 @09:39AM (#20564715)
You artfully interrupt them and always keep watch on what other people are doing!
Re:The art of interrupting software engineers by onion2k on Tuesday July 30, 2019 @03:40AM (#20562832)
This material is not meant for people who aren't on an XP team. It's good advice for product managers who are.

It's on the engineering blog of a company trying to hire a ton of developers at the moment and it reads like the most toxic work environment imaginable to anyone who doesn't have that context, so perhaps the author and the team who approve blog posts should have made that MUCH clearer.

Re:The art of interrupting software engineers by twic on Tuesday July 30, 2019 @06:16AM (#20563460)
> This material is not meant for people who aren't on an XP team. It's good advice for product managers who are.

No, it isn't. A PM should be having these conversations - briefly! - in front of the rest of the team in the standup, and in more depth in a weekly planning meeting.

If a PM feels a need for updates more often than that, then that is a problem of theirs that they should work in in their one-on-ones with their manager, not something they should dump on their team and then blog about.

It's sad that a PM at Pivotal has gone adrift like this, but it's tragic that this shitty advice has made it to the company's blog.

Re:The art of interrupting software engineers by tuxxy on Tuesday July 30, 2019 @05:30AM (#20563298)
I've been reading a lot on focused work and this sounds like the exact opposite of what's supposed to happen. I can't recommend Cal Newport's book "Deep Work: Rules for focused success in a distracted world" enough.

He goes through a lot of psychology and science of how people work better when they're not distracted. It seems that all of the "Extreme Programming" guidelines go quite the opposite of what the science, per Cal Newport, suggests.

He also points out that collaboration is perfectly acceptable during deep and focused work, but this doesn't sound like how it should be at all.

Re:The art of interrupting software engineers by kd5bjo on Tuesday July 30, 2019 @07:20AM (#20563781)
I can second the recommendation for Deep Work, but it’s not the end of the story. Richard Hamming points out in You and Your Research that the researchers who were open to distraction tended to do a better job figuring out what to work on. In Programming as Theory Building, Peter Naur argues that the primary focus on a programming team should be developing a shared understanding of the problem space in which the program will operate.

While I’ve never worked in an XP team, the description here sounds like it’s primarily focused on making sure the individual members of the team aren’t accidentally working against each other. For projects that aren’t reliant on the sort of insight that Deep Work is teaching us to generate, the team cohesion may be able to make up for the hit to individual productivity.

Re:The art of interrupting software engineers by JustSomeNobody on Tuesday July 30, 2019 @09:03AM (#20564401)
> 1) All production programming is done in pairs, all the time.

I stopped right there. My personality is such that being social exhausts me. Don't get me wrong, I like people, I just can only do social for short bursts and then I have to recharge. There are people who get energy from other people, so this might work for them, but not for me.

Re:The art of interrupting software engineers by pflenker on Tuesday July 30, 2019 @02:10AM (#20562453)
As someone who has never worked with XP, does XP really encourage proactively _pushing_ business context and customer POV all the time?
Re:The art of interrupting software engineers by rramadass on Tuesday July 30, 2019 @03:23AM (#20562759)
The whole XP (eXtreme Programming) movement came out of the Consulting domain. "jasim" in this thread explains the context where it makes sense. The company i had worked for had jumped on the XP bandwagon when it came out (we even had Kent Beck, originator of XP himself come out and do presentations!) but i never saw anything unique about it. It was merely a systematic way of working much more closely with the Client and doing rapid implementation iterations towards the known requirements which all experienced Engineers/Managers/Companies were already doing. Except it wasn't a dogma with them but adaptation of a sane process to a context. I always thought of XP and its successors as marketing by successful Consultants rather than any true insight.

You might want to take a look at the original short book "Extreme Programming Explained" by Kent Beck and form your own opinions.

Re:The art of interrupting software engineers by mikekchar on Tuesday July 30, 2019 @03:54AM (#20562895)
I depends on who you talk to. IMHO, the most important thing is that every single story has to have "business value". In other words, it has to have something where if you put it up on a board and said, "My team did this today", anybody in the management structure would say, "That's wonderful news". I also feel that you should try to have stories that average between a day and two days in length -- so it's pretty darn tough to think of ways to meet both criteria. These days, I'm unable to due pure XP, but I often find that if I manage to build a backlog like that, then it barely matters what else I do: it's going to be successful.

The main thing is that every single change needs to be vertical in nature. You are never making stories where you say, "I'm going to add this functionality to a library. Later we'll add the UI and finally, we'll add the data to the DB schema and then ship". But it means that you need to design your software quite differently in my experience.

Even just from the DB level, you need to have things set up so that you can make very quick changes safely. You need to be able to change the schema, do migrations and make sure that rollouts can be done safely -- and it needs to be done on the order of an hour or so. That probably seems impossible to some people, but it's one of the reasons you can't really take a legacy project/team and say, "From today we are doing XP!"

Similarly, you need to be able to make changes to your infrastructure quickly. So if you have some big set of microservices and each small change requires a signoff from some group somewhere: well, it's not really going to end well. You need to be able to make that change and get everything working end to end in hours, not days/weeks.

One of the things that a lot of people have difficulty with XP is that it's generally incompatible with nailing communication specs to a wall. One day, I may need to add something to the API. The next day I need to be able to change that API. If someone comes to me and says, "You need to know everything you want this API to do for the next 3 months so that we can have a sane versioning system", I'm totally screwed. I don't know what I'm going to need next week let along 3 months (or whatever) from now.

For a lot of people, this stuff is just way too different to deal with. XP comes with the subtitle, "Embrace change". It literally doesn't work unless you decide to go whole hog on it. I've been successful introducing it to some teams, but on others I don't even try.

To try to answer your question a bit more closely... it's probably not what you imagine. It's not like you have people telling you how everything is going to work all the time. However, you are constantly thinking about it. Sometimes you'll have developers say, "I want to work on X" and you'll respond, "Why? How are we going to give value with that work?" And then they think about it and say, "Well, what if we altered the work flow here. That would allow us to remove this stuff. And then if we added this, it would mean that we don't need that library any more", etc, etc, etc. And instead of telling management that today "We removed some technical stuff" or "We got rid of some old libraries", we say, "We improved the workflow for the customer which enabled us to simplify the code at the same time".

Re:The art of interrupting software engineers by pflenker on Tuesday July 30, 2019 @04:16AM (#20562998)
I am a huge fan of attaching a "business value" to everything the team does. I also see the value (for everyone involved) to frequently collaborate and think about these things. But where the article proposes to ask all the developers for updates three times a day, I prefer the approach where the developers "pull in" their product managers when they need them, instead of the product managers "pushing" their views onto them multiple times a day.

This is why I was asking - I still don't fully understand if this is a "XP thing" or not.

Re:The art of interrupting software engineers by repolfx on Tuesday July 30, 2019 @05:22AM (#20563257)
I don't know what I'm going to need next week let along 3 months (or whatever) from now.

Doesn't this reflect some much deeper problem with the product planning or management? If you literally can't plan even a week in advance that suggests there simply is no plan, and even the most scatterbrained business environment doesn't change that fast.

I'd say customers being able to stick to a coherent story about what they want for more than a week would be a key need in any successful IT project.

Re:The art of interrupting software engineers by mikekchar on Tuesday July 30, 2019 @07:26AM (#20563819)
There is a difference between not knowing what I need for an API next week and not knowing (vaguely) what I need for the business. My backlog stretches out about 4 months at the moment, but I don't do technical design until much, much later. But as a sibling post rightly points out, not all of the stories on my backlog are going to get done. 4 months is a long time and the business is hopefully gathering more and more data about what it needs. Frequently opportunities arise that overtake what I have in my backlog. Since I always have more in my backlog than I can actually do, that means that the stuff on the bottom drops off. If I were to estimate, I would say that about 1/3 of my 4 month backlog is practically 100%. It drops off to 0% by the end.
Re:The art of interrupting software engineers by pflenker on Tuesday July 30, 2019 @06:49AM (#20563613)
Not necessarily. The idea here is that the customer has an idea about what he wants, but has only a vague idea about what he actually _needs_, and no idea about what is technologically possible.

Methods like XP embrace that by allowing requirements to change over time, to account for the customer accumulating more knowledge about all three areas.

Re:The art of interrupting software engineers by repolfx on Tuesday July 30, 2019 @07:22AM (#20563799)
But you can nail those things down before coding begins, just through talking with them. You don't need to literally change the code completely every week - iterating a plan is much easier than iterating a codebase!
Re:The art of interrupting software engineers by pflenker on Tuesday July 30, 2019 @08:39AM (#20564242)
Not necessarily, and it really depends on the customer and on the software. You feed the learnings from one iteration into the next - it's not intended to change the code completely every week, but to allow maximum flexibility in the backlog.
Re:The art of interrupting software engineers by afarrell on Tuesday July 30, 2019 @08:14AM (#20564098)
But with 2 weeks of coding, you can save yourself an hour of planning.
Re:The art of interrupting software engineers by lonelappde on Tuesday July 30, 2019 @09:04AM (#20564412)
When do they stop and think?

When do they write documentation?

They solved the problem of breaking flow by banning flow in the first place?

Re:The art of interrupting software engineers by klohto on Tuesday July 30, 2019 @03:43AM (#20562850)
I love this, makes me want to join team that practices this.

What is your book name? I would like to buy it.

Re:The art of interrupting software engineers by jdlshore on Tuesday July 30, 2019 @11:23AM (#20565682)
The Art of Agile Development. It's published by O'Reilly and quite a bit of it is excerpted on my blog at https://www.jamesshore.com/Agile-Book/ .
Re:The art of interrupting software engineers by klohto on Tuesday July 30, 2019 @11:57AM (#20566124)
No chance of hardcover?
Re:The art of interrupting software engineers by jdlshore on Tuesday July 30, 2019 @04:34PM (#20568834)
The hardcopy print edition is available from Amazon or directly from O'Reilly, if that's what you mean. There's a link to the Amazon listing at the URL I gave you.

As far as I know, there's only one type of printing, and that's a lay-flat softcover.

Re:The art of interrupting software engineers by DonnyV on Tuesday July 30, 2019 @10:33AM (#20565152)
This sounds like hell.
Re:The art of interrupting software engineers by Graham24 on Tuesday July 30, 2019 @08:38AM (#20564238)
I'd rather work on the bins.
Re:The art of interrupting software engineers by systemtest on Tuesday July 30, 2019 @04:21AM (#20563025)
When I read "pairing stations" I gagged.