summaryrefslogtreecommitdiff
path: root/conflict.mdwn
blob: bb298cb48172e446240fe7ddc08ac772491efd1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
# First conflict with SmartHome

I sleep well, and I get up a bit later than usual, feeling very refreshed.
I spend a bit of time in my own kitchen, drinking tea and reading the
news. I used to love reading the paper on paper in the morning. I no
longer get the paper on paper, since it creates incredible mountains
of waste at home. Instead, I have a tablet computer in my kitchen on
which I read my favourite online news sites. The tablet is
intentionally not configured to have access to IRC, email, Twitter, or
other social media accounts. Reading social media in the morning isn't
relaxing, so I do that at work instead.

I get to the office ready to tackle SmartHome's RPM fetish. I log into
my work computer, and send Robin a private message on IRC. "Hey,
Robin, do you have a quarter of an hour to help me sketch a response
to shoot down a request from SmartHome to switch to RPM? If you're in
the middle of something, finish that, I can start on my own."

In a minute, I hear Robin's combat boots stomping towards my office.
She throws open my door, not bothering to knock. Oh good, I've upset
her. Robin steps into my office and stands in front of my desk. In
addition to black leather boots, she's wearing cargo trousers, and a
photographer's multi-pocketed vest over a thin, green, army sweater and
a uniform dress shirt. It's one of her favourite outfits, on days when
she doesn't expect to have to deal with customers in person.

"What is going on? RPM packages? Who's having a painful brain fart?"

Robin is a dear friend, but it's taken me a lot of effort to get used
to her habit of not bothering with social niceties when she's upset. I
know she's not upset at me, which helps, but the loud voice, and the
wording easily puts the other on the defensive. While I've gotten used
to it, we've also made sure Robin avoids this behaviour in front of
others, including the Team. 
Originally she said she felt like a fraud when she hid her
true feelings, but I convinced her that it's OK.

"Robin, you're more upset than this deserves. Please take three deep
breaths, and sit down." Three deep breaths works, it causes a
physiological reaction that calms one down, and we've done this enough
times that it's also a psychological trigger for Robin. Robin
breathes, sits down, and says, in a normal voice, "OK, so what's going
on?"

I explain about Sam's email from yesterday. "Clearly, we're not
switching to RPM. We've built our system based on .deb packages, But
we need to explain to SmartHome why we're not switching. I thought
we'd outline a response together, and I'll flesh it out and reply by
email. Here's what I have in mind so far."

I stand up and walk to my whiteboard. Whiteboards are an essential
tool for our work, so we all have them in our rooms.

"First, we'll point out that RPM and .deb are functionally pretty much
equivalent, right? RPM can do per-package digital signatures, but .deb
gets the same benefit from APT repository signing. And so on. Are we agreed?"

"Of course. We've told other customers the same thing. I'm now
thinking we should write a small white paper on why we use .deb and
why we're not switching, so we're prepared for this the next time
someone asks."

I nod. "Good idea, I'll put it on the list to do between clients. Or
better yet, since we need it for SmartHome, we'll write it for them,
and bill the hours to them. The contract says we can reuse that kind
of thing in the future."

Robin also nods, and shifts to a more comfortable position in the
chair.

"Next, I'm not going to go deep into the detailed differences between
the two packaging formats, since they don't really matter. I think the
other big point is the cost in time and quality of switching. It's not
just about the format of individual packages, we've built our platform
entirely on top of Debian, and switching to RPM would mean we'd need
to switch to something like RHEL. And then everything changes, since
the systems are quite different, for all they're built from the same
upstream components. Things like system wide policies differ, and
figuring all of those out is many months of work. Agreed?"

Robin nods again. "Agreed. Can we sell SmartHome some training on how
to make .deb packages?"

I smile. Robin's past her anger now. "That's a good idea. I'll
suggest that to Sam, in case their developers are hesitant about .deb
packages. Who should give the training, you?"

"I think I'm going to be busy enough. Would Nina be OK?"

"I think so. I'll check with her. We're agreed then."

Robin stands up and leaves, I sit in my chair and flex my fingers over
the keyboard, and hit on "reply" for Sam's mail.

"Dear Sam, we had a little discussion with Robin about switching to
RPM and I'm afraid it's something we advise against. Let me explain
why..."

-----------------------------------------------------------------------------

The following morning, Nick comes to visit. He uses the doorbell, and
I happen to be closest to the door so I open it.
He stands there with his hat in his hands,
looking as nervous as a teenager picking up a date from their home for
the first time.

"Hi, Nick, how can I help you?"

"Hi, Anna, I'm here to see Nina. Is she in?"

"Why yes, I believe she is. Come in and we'll see together."

I'm intensely curious. Nina has basically never had a visitor before,
and Nick seems much more nervous than a professional visit would
warrant. What's going on?

We walk together to Nina's lab, and knock on the door. In a moment,
Nina opens it. She sees Nick.

"Hi, Nick, I'm glad you came, Thanks, Anna, I invited Nick to talk
over a few things with him."

"OK, I'll leave you two to get on with it, then." I nod at Nick, and
walk to my own room. An hour or so later, I need to go see Robin about
something, and I choose the route past Nina's lab. The door is open
and I can hear Nina explain about the trunks. She's not trying to sell
them, just proudly presenting them geek-to-geek,
going over very technical detail.
I don't stop, not
wanting to disturb the two, and continue to Robin's room.

"Hi, Robin, did you know Nick is here visiting Nina? They're talking
in her lab?"

Robin grins. "Anna, you old matchmaker. What did you do?"

"Nothing! It wasn't me and you can't prove otherwise. This took me
completely by surprise."

Robin is still grinning. I can tell that she thinks I'm trying to get the
two young ones to become interested in each other. Not without
justification, as I've done something similar before, though never in
a professional context. And not this time.

"So what are they talking about?"

"She's telling him about trunks, and he seems interested."

"Hah. A geek date, maybe?"

"We'll see. Anyway, I wanted to ask you about the SmartHome
situation."

We discuss for a few minutes, and then I walk back to
my office, carefully avoiding Nina's lab. I sit down and process
emails for a while, until someone knocks at my door. It's Nina.

"Hi, Anna, I'm going out for lunch with Nick. I'll be back in a couple
of hours."

"Sure, Nina, go ahead." I hesitate a moment. "Please excuse an old
lady, but what's going on?"

Nina smiles her crooked smile. She can read me and knows I am curious
if there's something going on between her and Nick. "Oh, nothing, I
just felt the, er, urge to spend some time with Nick. He's a smart
guy, under the surface."

I smile back at Nina. Her answer has told me nothing useful. "Go on
then. See you later."

-----------------------------------------------------------------------------

Robin has called together a workshop to discuss porting our framework
onto SmartHome's hardware platform. It's half a day, with her, Andy,
and Bert. I tag along to get a feeling of the situation. Turns out
the three have already figured out a battle plan, based on an initial
spike and previous porting for earlier clients.

Robin stands up in in front of the whiteboard, and goes into full-on
lecturer mode. "OK, our kernel porting has gone well, we have a
booting kernel, and a CI that can build and install a kernel from our
git server, and test that the kernel boots and interacts with the
outside world. The hardware is similar to most of the embedded ARM
devices we've worked with before, even if it's a new SoC. There's a 3G
modem for communication."

Bert lifts his hand. He's still young enough to remember when he was
in school. "Is the hardware supported by Debian?"

"Not yet, but apart from the kernel it should be only a few packages
we need to tweak, to get a core Debian system running on the box.
After that, it should be plain sailing. We'll create an image using
debootstrap and our own wrapper, flash the device with the new image,
and boot into a real Debian system, albeit with a custom kernel. The
usual thing, in other words."

I stand up. "Looks like you have things well in hand. I'm old enough
to have learnt that the universe likes to throw nasty surprises even
in the simplest things, so I'm going to assume it'll take a while
before we actually have Debian running on the SmartHome hardware.
That's OK, but please do the work in tight weekly sprints so we can
demonstrate progress often to the client. And ourselves."

"Will do." Robin's also been doing this work a long time and knows
things will always be more difficult than one foresees. "And we'll
prepare patches to send to Debian for everything that's generally
useful, I assume."

"Yep, that's the way. The less we have to keep maintaining ourselves,
the better. Also, if others can benefit from our changes, it's the
right thing to share them."

-----------------------------------------------------------------------------

Robin and Andy are at the SmartHome office, in the meeting room
already well-known to us. With the Team's IoT platform porting to the
client hardware platform underway, it's time to present a plan to the
client for how to re-architect and re-implement their applications.

Robin has her laptop connected to the projector, and stands at the end
of the big, oval meeting table. She's wearing dark blue trousers, a
white shirt with a tie, and a dark-coloured vest. This is a business
meeting with a client, so she's skipped her usual comfy, army-surplus
chic. Andy is likewise dressed in a suit, though without a tie.

The SmartHome engineers are slowly dripping into the room, in ones and
twos. They are talking with each other, about other things they're in
the middle of in their own jobs. Among the final ones, a couple of
20-somethings, dressed in loud Hawaii shirts and ripped jeans, enter
the room, stop, and look at Robin.

One of them pokes the other in the arm, and speaks, not loudly, but
loud enough to be heard over the quiet discussion of the others. "See,
I told you she's lesbian. Look at her outfit."

The room goes quiet. Most of the engineers squirm in their chairs and
look uncomfortable. Robin looks up, stands up, puts her arms behind
her back, and stares at the two who came in. "What's your name?"

"Er, I'm Anders." The guy seems to realise he's crossed a line.

Right at that moment Sam walks in. Robin looks at him. "Hi Sam, we
have problem. Anders here thought it would be funny to make comments
about my sexual orientation, and the whole room heard it. Please
handle it."

Sam looks at Robin, then at Anders. "Anders, you idiot, what did you
do?"

Anders looks surprised. "I merely said she looks lesbian. You know,
woman in a suit and tie and so on. Also, she's always so aggressive,
telling us what to do." Robin keeps her face as stony as she can,
but it's clear she's fuming.

Sam shakes his head. "I'm afraid I'm going to have to ask you to leave
the meeting. I'll talk with you after the meeting. Our contract with
the Team is clear, your behaviour is unacceptable when we work with
them."

Andy is calm. Andy is always calm. Andy calmly does not take crap.
"It's not just against the contract. It's wrong. It's not how
professionals treat people."

This doesn't make Anders any calmer. "Come on Sam, look at her! No
woman would wear that unless she's a lesbian. And if she is, what's
the harm in saying it? Don't I have any freedom of speech here
anymore? And all you others, you're with me, right? Are we going to
let an uppity woman treat us like this?"

The others are clearly not willing to stick their necks out to help
poor Anders. Robin is still fuming.

"Boy, listen very carefully. My persona, sexual orientation, or
anything else outside the work I'm supposed to do here for your
employer are completely outside the scope of allowed conversation for
you. Even a junior should understand that."

Anders turns around to face Robin. "Oh yeah? Says who?"

Robin smiles a little, a tight smile that bends her mouth only a
little, and does not reach her eyes. Her voice is steady, slow, and
cold. "The contract your employer signed with us, to start with. Basic
politeness to end with. The contract says that your employer is
responsible for making sure all their employees behave professionally
when working with us, and if lapses in professionalism aren't dealt
with in a reasonable way, we can walk away and leave the project. But
SmartHome will pay our fee anyway."

Robin takes a breath, and frowns a little. "Would you like me to
insist that Sam fires your ass? I think that would be a reasonable way
of dealing with you?"

Sam takes Anders by the arm and pulls him towards the door. "Anders,
you shut up now, and wait at your desk. You're in trouble now." Anders
starts saying something. "No, shut up, I'll talk to you later."

Anders leaves the room. He's talking loudly to himself, clearly now
very angry. He can be heard in the meeting room, until Sam closes the
door.

"Robin, I apologise for that. I clearly haven't made it clear to all
of us
inside SmartHome what we expect from them in this project. Do you want
to continue your presentation? Or is it better if we reschedule until
later in the week?"

Robin is quiet for a while, and looks at Andy. "I think we'll continue
with the presentation. But first, I'd like to say that I don't require
anything more than basic professional courtesy from those I work with.
I'm sorry for what happened today. It's relatively mild compared to
some of the things I've encountered in my work life, but I'm not
willing to endure any disrespect anymore. I hope the rest of you can
understand that, and that we can work together."

The engineers still look a little uneasy, but the general atmosphere
eases up a bit. Robin presses a button on her laptop, and the first
slide of her slideshow shows up on the projector screen. It's a cute
kitten.

-----------------------------------------------------------------------------

Back at the Team office, Robin and Andy come straight to my office. I
can see Robin's upset.

"What's wrong?"

"There was a confrontation at SmartHome. Andy, perhaps you should
tell the story, I might get upset all over again."

Andy briefly tells what's happened. Although the presentation went
well, in the end, and nothing further was said of the situation with
Anders, it's clearly going to be a problem in the near future.

"I see. Robin, I'm sorry, you were right to be hesitant about taking
on SmartHome as a client."

Robin shakes her head. "It can't be helped. And for the record, I
don't like how things went down today. Not sure Sam handled it
properly."

Andy stands up, and puts his hands in his trouser pockets. "I feel I
must say something, and that is that Robin didn't do anything wrong.
The guy was way out of line, and it was right to ask his boss to
handle the situation. Sam should've taken Anders out of the room, and
tell him to sit out of the meeting."

I nod, and look Robin right in the eyes. "Andy's right, you didn't do
anything wrong. It was Sam's job to handle the situation. He handled
it badly, that's not our fault. That said, and please don't take this as
any kind of attack or complaint against yourself, I wish it would've
been possible to handle this entirely privately. It might have
resulted in less confrontation."

After an impressive grimace, Robin agrees. "Maybe I should've done
that. But I wasn't feeling like giving the boy a break. However, even
so, I'm not out for his neck. Would it be possible for you to let Sam
know that I'm OK if Anders isn't fired?"

"Thanks, I'll tell him. Do you want him to be kept out of the
project?"

Robin shrugs. "I don't really care. I doubt he'll be offensive again,
but he'll resent me for the rest of his life, I'm sure. Anyway, I
doubt he's the only sexist jerk there."

"In that case I'll tell Sam that Anders can stay in the project too.
Let's hope he's learnt his lesson and that he and others don't take
that as an excuse to be jerks, since they see get to keep their
jobs anyway. Robin, you've had a rough day, you should probably go home and
relax. You too, Andy."

The two go, and I call Sam. Some things are better handled via voice,
instead of email.

"Hi, Sam, I heard there was an incident today involving Anders."

Sam's voice is sombre, but not angry. "Yeah. I've had a talk with him.
How's the situation at your end?"

I keep my voice sombre as well. No point in being excited right now.
"I just heard from Robin. She agrees that if Anders promises to behave
himself in the future, he can stay on."

"I just told him that he's going to be formally fired tomorrow."

"That won't be necessary." I take deep breath, intentionally making it
noisy so that Sam hears it even over the phone. "Between you and me,
Robin could've handled this privately, but then so could you, Sam.
It's enough of a mess, so I think, we at the Team think, it's gone far
enough. Don't you agree?"

"Well, I'm glad to hear you say so. I'd like to keep Anders. He's one
of our rock stars. I'll call him tonight."

I make a grimace of my own, though not as bad as Robin's. Rock star is
a term we've learnt to loathe. It tends to be a harbinger of attitude
problems.

"Just tell him that he's getting off with a warning, and that he
shouldn't expect anyone from the Team let sexist behaviour or other
harassment to pass. Not even as a joke."

"I understand. I'll call him now. If I wait until the morning he might
spend the night getting angrier, and do something stupid."

We hang up. It's getting late, but I have one more chore to do, and
I'd better get to it while I still have things clearly in my mind. I write
a description of the incident in our company internal blog, which acts
as an internal knowledge base. This will let everyone in the Team know
what has happened. It also means we won't forget it, and we can use
this as a data point when considering brogrammer clients in the
future.

-----------------------------------------------------------------------------

I wander around the offices, and spot that Andy is still there. He
sits at his workstation, and seems to be reading news sites.

"Andy, do you have moment?"

He is a little startled. Clearly he was deep in his thoughts.

"Sure."

"I wanted to talk with you privately about what happened today. You up
for that?"

We go into my office, and I close the door behind me. I'd rather not
be overheard or disturbed for this. 

"Could you briefly go over what happened after Anders was thrown out?
The presentation, and how it went, and how SmartHome took it?"

Andy gives a sketchy summary of Robin's talk. It's what we'd discussed
beforehand. SmartHome was dependent on a central cloud service, for
storing measurements and logs, and for controlling the devices, even
though everything is also stored locally on the hub device. The hub even has
a local database, a real one, not just Sqlite. A database with 11
tables with overlapping data and no unique key to match things between
tables. No access control between tables.
Multiple differenet applications updating the table concurrently.
A pretty mess. The engineers
hadn't liked having their work described that way, but at least most
of them warmed up to the suggestion of having a program provide a simple
HTTP API to the database, with access control, and a much simpler data
model.

"Thanks. How did Robin do?"

"She went a bit softer on them than we'd planned. I guess she didn't
want to be harsh after Anders."

I nod understanding. "OK, sounds like it went reasonably well. I
would've been fine to postpone the presentation by a day or two, to
let everyone calm down, but sounds like Robin and you did it well."

Andy finally goes home. Even he shows signs of it having been a long,
stressful day. Nobody likes confrontations like that. Except maybe the
kind of macho brogrammer jerk that Anders seems to be like.

I do a final round around the office, and find everything to be dark. I get
my things, turn off the remaining lights, and go home. It's dark, and
wet. The street is old cobblestones, shiny, and there's more rain
coming down softly. The stones are slippery, but I'm dressed for the weather.
It's late enough that it's long past rush hour, so while the streets
aren't empty, there are only occasional cars. At the same time it's not
early enough for the party folk to be out and about. Small groups
of teenagers roam the streets, but aren't making a nuisance of
themselves. I guess the rain dampens their enthusiasm for mischief.
It's one of my favourite times to enjoy the city.

I round a corner and almost run into someone. He grabs me by the
shoulders.

"Anna, is that you? God, it's been years! How are you?"

It's Russ. My ex. Well, one of my exes. In a previous life many years
ago we were going out, but it ended. In fact, I was expecting him to
propose, but instead he broke up with me. It was rough on me, but I
got better. We've not seen each other since. But hearing his voice,
and seeing his surprised-happy face brings up pleasant memories. I
guess I really have gotten over the breakup. I smile.

"Russ! It's you! It's been years.
I'm good! Except it's been a lousy day at work just today."

"Oh dear. Do you want to talk about it?"

That's classic Russ. I nod, and he walks with me to a pub close by.
It's a pub in the English style, in Helsinki. Not my usual kind of
place, but it's quiet and dry, so it'll do. We have drinks, and I pour out a
suitably pseudonymised version of the day's events. It feels good, I
don't often get to talk with a sympathetic friend about my work. He
makes the right kind of noises, and tells about his own life. We
carefully avoid touching on the breakup. I do that to avoid ruining
this evening. I can take it up with him whenever, today I just want to
enjoy good company.

Which I do, for longer than is sensible, and with a glass of whisky too
many maybe. When it gets time, we leave, shake hands, and go our
separate ways. Younger me would've gone home with him. Younger me did.
I've learnt to be sensible since. Russ is very nice tonight, but he
hurt me once. If he's grown and I can trust him to not hurt me again,
we can consider things, but not now. I'm such a romantic.