What you need to change culture

Jeff asked this in the comments:

Do you have experiences moving an organization to a culture of “it’ll probably work/we’ll deal with problems as they happen” from “you haven’t convinced me yet/what if it doesn’t work”?

What if you’re trying to effect change in your organization? Where do you start?

Here are five things that can help you implement a fail-fast, fail-often culture:

  1. Find out who your supporters are
  2. Focus on implementing working solutions to problems
  3. Use rough consensus
  4. Get management support for implementing solutions
  5. Manage the irrational well

I’ll take each of these points:

1. Find out who your supporters are

You do need to assess if you really are alone in wanting this change. Talk with people! Because if you really are completely alone in your opinion, you might want to reconsider whether this is the right time, or place, for the change.

2. Focus on implementing working solutions to problems.

“Working code” is a good metaphor for this. You want to offer possible ways to try out a fail-fast way of working, maybe by focusing on small projects or just your own work first. Prove that your way is better!

Stating your pre- and post-conditions around the change is a powerful tool (see, life is just like code!). But we’re hacking people’s behavior, and the organization’s ability to recover from failures.

And accept that maybe you never get everyone on-board. But at least your own work will benefit from the changes.

You must also make sure your solution solves a relevant problem. Assessing relevancy of problems is a whole other topic. It’s likely the most important question someone working in IT needs to answer before making changes. We’ll talk about that in a future blog post!

3. Use rough consensus

Cultural change affects everyone in an organization. So, to make it happen, you need most, but maybe not all, of the team to support it. Once you propose tests to try things out, or you’re implementing new policies, you’ll need a process for deciding what to do next, when something isn’t working and when you’re done.

In my keynote, I referred to the IETF’s model of rough consensus. They refuse to define a method for determining what exactly this means, to avoid gameifying the decision making process.

Identifying a chair, or project leader who is responsible for articulating the “sense of the group” is critical. This avoids letting a single vocal person paralyze decision making.

Also, there needs to be some kind of back channel that records opinions. Mailing lists with searchable and linkable archives are great for this. Corporate email hidden away in personal inboxes are a waste. Collaboration tools like wikis or other kinds of shared documents on the web can be critical for building consensus. And they are underused.

4. Get management support for implementing solutions

Nothing kills revolutions in business faster than management opposition. If you want something to change, part of your work is convincing your manager or boss that the change is important and necessary.

Present evidence of the problem and clear thinking about the solution you’re proposing. Maybe you come up with test output, customer complaints, or concrete examples of how much better things will be after the change.

If you’re the boss, you need to support the people who are making these changes. Give them room to make some mistakes, and help them out when they face inevitable opposition from their teams.

5. Manage the irrational well

When I listed my first three points to a colleague last week, she pointed out that I’d completely overlooked irrational situations.

Change can inspire fear. When a person is afraid, they can get irrational and oppose anything that might threaten them. Managing irrational people is a skill that you can learn.

There are some books on this, like Crucial Conversations Tools for Talking When Stakes Are High, Second Edition. In the end, you just need to practice talking with people, and talking about difficult subjects.

The first step is recognizing the early signs that a person is feeling afraid, and finding ways to accommodate or work around their feelings. No two people or situations will be exactly alike, but there are recognizable patterns and learnable responses.

Epilogue

While writing this, I enjoyed this brief interview with Steve Jobs about collaboration.

I also enjoyed this article: Design Principal. In it, the firm’s leader talks about when to say no to a client – with a “four Ps checklist”: People, Project, Profit, Plate. Along with prompting questions. Great food for thought when tackling big changes projects.

Getting real about post-mortems

I talk a lot about post-mortems, started thinking about this a long time ago, and I’ve run quite a few.

I tend to think about meetings in general as post-mortems, as typical meetings tend to be for talking about what’s been done, and what we might do, rather than *actually doing work*. But we can change our meetings to be better.

In the slides from my keynote on Sunday, I posted some specific information about how to operate post-mortems.

The key points for conducting the meeting were:

  • Set expectation for 100% participation
  • Designate a note keeper & time keeper
  • Everyone shares a success, failure, something to do better
  • Vote anonymously on what to do next
  • Communicate meeting notes out

There’s great research into each one of these items. Some of it comes from “Effective meetings” curriculum, taught by Intel University. Fast Company had a great “meeting myths” article back in 1996 that still holds true (and references Intel’s meeting culture). The bit about anonymous voting comes from research into group dynamics and how people say different things depending on who is listening and what the social pressure is to lie or tell the truth.

How do you run your post-mortems? Anything you’d add?

I’m keynoting today at SCALE10x

Slides (as of this moment) are here: Mistakes were made. I changed quite a bit of the beginning and end, given how big the audience is. Previous talks, we’ve usually ended with a fun “omg, here’s the craziest story I know” session. I imagine we’ll get a little bit of that today.

Postgres folks will note a relevant picture on slide 13. :)

This is my first keynote! Thanks so much to SCALE for inviting me. There were at least 1500 registered attendees as of Friday, so looking forward to a big crowd.

I am a feminist hacker: Reflections on the first AdaCamp

I had a wonderful time at the first AdaCamp, held in Melbourne, Australia on January 14, 2012.

I didn’t take notes during most of the sessions, and spent a lot of time listening and thinking.

The two important things I took away from the first AdaCamp were about context – my context, and the camp itself.

My context

I’ve been part of free and open source community since 1994, when I started reading the linux kernel mailing list and compiling my own kernels to support experimental features and drivers. I was welcomed into my mostly male offline community of developers, sysadmins and hackers. I had a male psuedonym when I was online in technical forums. I used a female psuedonym on mailing lists and collaborative writing projects I was invited to back in the early days of alt.* threads that spilled over into specialty LISTSERV mailing lists.

I’d grown up in a very small town, where your reputation is everything. It was incredible, strange and liberating to be able to represent all the parts of me, separately and freely, online.

So, when I got to AdaCamp I felt apprehensive. I’ve had the option of separating out the parts of me online and in free and open source community for so long, and I was struggling with what part of me exactly should be at the forefront here. Being a woman is a pretty important aspect of myself. Addressing it in parts felt wrong, but integrating it all seemed like an oversimplification.

So, I tried to make myself useful by making coffee and sorting out our wireless situation. Then we all got together in a room. I made a few jokes with the people at my table and then fell silent.

Mary and Val opened the day with a short introduction and an explanation of why they thought it was important to have conversations about open tech and culture in a feminist context. And then we started going through the introductions.

I was so terrified to introduce myself that I ran out to work on the wireless network and missed out on most of the introductions. At least we had wireless working after that. :)

It seems so silly to me now that I chose to walk out of the intros. Val didn’t let me off the hook when I got back, and I had to briefly introduce myself to everyone. And the reason why I’m spilling so many words on this point is that I want to let you all know how difficult it is to change your context.

I have identified as a feminist for as long as I can remember. But I’ve nearly always been a feminist in the company of men. If I were to introduce myself again, I would say:

I am a feminist hacker. Right now, my hacking is mostly on people and systems. I believe women and men should be treated equally, but I know they are not. And I want to help solve problems of inequality faced by women, primarily through my work in free and open source software, but also in the workplaces where many of our fellow hackers end up.

Context of the camp

There were too many fantastic conversations to count. I met so many new friends, and came away with new respect for the work Mary and Val are tackling.

Two big sessions for me were a frank conversation about hiring, and an expansive brainstorm about the things women have in common between free and open source, open culture, open hardware, creative commons, remix culture and other “open stuff”. I’m looking forward to future conversations about both things!

During the closing session, many thoughts were shared about what made a day spent talking about so many difficult problems still feel inspiring.

One comment stuck with me – we all shared a context of feminism. With that point settled, it made getting into the depths of many other conversations much easier and interesting. We got to skip over many feminism 101 topics, and have spirited debates and exchanges of ideas in a feminist context.

I hope I can attend the next event!

And you can support the Ada Initiative by donating here.

Thinking like BJ Fogg

So, I participated in BJ Fogg’s 3 Tiny Habits program last week. And now I’m running every day.

This isn’t a huge stretch for me – I ran cross country in high school, was a runner all through my 20s, and only in the last couple years have I sort of just let the running slide.

So, last month I decided I should start running again. Friends of mine are running and encouraging me to sign up for races. But, I just couldn’t do it. It was too dark, or my running clothes weren’t ready, or … I made up every kind of excuse.

I signed up for the 3 Tiny Habits thing thinking that maybe I’d learn something to apply at my new company, or maybe I’d manage to run just once.

Instead, I got up every morning, ran 2 or 3 miles every day, and LIKED IT. I was excited. And when Monday came around again, I WENT RUNNING.

My tiny habits were: do 1 pull-up right after getting out of bed, put on my running shoes after finishing my morning coffee, and walk outside after lunch. What I found was that after two days, doing all three things felt normal and putting on my running shoes was just enough a change to my routine, that I walked outside and went for a run.

So, the insight behind what made this work is mentioned elsewhere. I wanted to mention instead how I’ve shared what I learned at home.

BJ Fogg talks about “hot triggers” and how you can use them to influence behavior. The context figuring out exactly how to get people to do things like donate money for a good cause. Or, as in the example, how Facebook gets you to use their product.

What I’ve done with it is help my husband figure out how to break through a wall of stress. It was a couple tiny changes – taking a planner home in the evening, and opening it after we sat down to coffee first thing in the morning. It was just enough to get him back into some habits he’d started six months ago, and was incredibly calming.

An under-appreciated part of the experiment is that you give yourself a mental reward when you complete the habit. Something like saying “Victory!” to yourself, or giving yourself a pat on the back. I thought of it as the coach-y version of self-soothing you might be taught by a psychologist.

And what did I get out of that? Tons of smiles from my husband. :)

The great thing about the techniques I learned from “3 Tiny Habits” is that I am still applying them! And they were simple and effective enough that I can pass them along to family and friends.

I probably should report out at the end of the month. I’m on the road for the next 10 days, so it’s a real test of whether I can stick with habits even when my routine is completely thrown off. What’s great though, is that I feel confident I can do it.

Many thanks to BJ Fogg for sharing his research and doing it in such a practical way.

Podcasts recommended to me in January 2012

Wow. I asked on twitter about podcasts people were listening to these days, and got a TON of responses.

Here’s the list (with the ones I subscribed to have ✓′s):

Thanks to @gnat, @thesethings, @sogrady, @leinweber, @cwebber, @dbrewerpdx, @frobisher, @myfreeweb, @funkatron and @tmarble for the suggestions!

Where to find me at #LCA2012

I’m going to be pretty busy while in Melbourne and Ballarat for the next 10 days.

Here’s my itinerary:

There’s a rumor that Stewart Smith and I might do a Q&A about databases in the cloud. If it happens, it will involve lots of pessimism and swearing.

Drop me an note if you want to meet up! I’ll be in Ballarat until early Friday morning.

Then I fly back to LA to give a keynote at SCaLE that Sunday (blog post about that coming).

Packing list for LCA 2012

I leave in two days for Linux Conf AU, in Ballarat, Australia! This is my second LCA, and I’ve given talks internationally at least 10 times. For the past six months, I’ve used a short checklist to help make sure I don’t miss the important things (ticket, passport, underwear!).

Today, I took a little more time to prepare and share what I’m taking with me.

This is based on Tantek’s SXSW Packing List. I share this list under Creative Commons 3.0.

Caveats:

  • I generally do not wear jeans or slacks to conferences, and when I do, my pants do not have pockets. They’re bulky, uncomfortable on long flights and, frankly, don’t look as good as a skirt. So, I’ve adjusted some of the stuff in the list for that wardrobe choice.
  • I generally do not wear t-shirts to conferences I speak at.
  • I am going without a smartphone at the moment. My last one was stolen in a Vancouver, BC coffee shop in early December 2011. I’ve taken it as an opportunity to simplify, and so far, I feel better.

Night before

Lay out your outfit for the next day.

  • Underclothes (bra, underwear), socks and a tank-top slip. – I found these Dynamic nylon/spandex slips that go under sweaters and dresses. Super versatile, cheap ($16?) and look great. Having trouble finding them online, but Sloan sells them in Portland.
  • Dress – Something simple that will be comfortable on the plane, like this Urban Outfitters knit drape dress.
  • Leggings – black, probably bring two pair and again, these look great under a dress or sweater and can be taken off when you transition from 30F to 30C weather. I found the best value fleece leggings at Ipnosi.
  • Boots – black, zippered are my favorites. I’m going to another conference immediately after LCA back in the US, so I need something other than sandals for the trip.
  • Hooded jacket – I’m taking a green hooded duck canvas jacket with zippered pockets. Great with a dress, and nice, low-germ substitute for a germ-rich airline blanket during the 10+ hour flight.

Backpack

  • A backpack – I have a NorthFace Surge (have had three of these). They will often dip below $100 in certain colors. The laptop area is a little big for the Air, but overall, this is a solid, spacious pack. I’ve put 10 days worth of stuff for a conference and holiday in Japan with this pack. Has a nice bonus pocket in the bottom and useful double zipper on the front for stuffing random documents and quick access to a Kindle, a few inner pockets for separating tools, pills and etc..

Here’s all the stuff that goes into my backpack!

Essentials

  • Passport and Visa (if necessary) – And you might need a Visa where you’re going, so check before you leave! A visa for a 3-month trip to Australia is usually fast and easy.
  • Wallet – I bring ID, I try not to bring keys with me since my neighbors have keys and my husband picks me up and drops me off at the airport.
  • Ear plugs – Essential for dorm accommodations and getting stuck in airports.
  • Small, unlined notebook – I doodle, and leave notes for people. Nice if there are perforated pages in the back so that the binding of the book doesn’t fall apart after ripping out pages.
  • Pens and a pencil – Pencil is more durable in the rain (hail, Portland!)
  • Burts Beeswax Lip Balm – Planes and hotels are so dry!
  • Small bottle of lotion – Washing hands and filtered air ends up leaving my face and hands chapped.
  • Small Camera – I have a Canon Elph. Bring an extra SD card in case your existing one goes corrupt!
  • e-reader – I have a Kindle, but any e-reading device will do. I’m bringing Liespotting: Proven Techniques to Detect Deception as my research project for the flights.
  • Book – I’m also bringing a The Graveyard Book for taxi-ing and lift-off. A thick newspaper might also work here.
  • US-based Phone – I currently have an LG-VX5600 with no data plan on Verizon. I pay $10/mo on a family plan that has something like 300 texts and supports at least 300 minutes per person.
  • Laptop – I’ve got a 13″ Air. Loving it so far.
  • Music storage device – maybe an iPod/iTouch.
  • A paper envelope – for storing receipts and stray bits of paper with notes.
  • Ziplog bags – for liquids getting through the airport, packing away nicknacks, temporary storage for food, an easy water cup and dealing with anything that might explode in transit.
  • Handmade bags and enclosures for tech gadgets – I made two pouches to hold cables, devices and power converters. I hate having lots of stray items rolling around in bags. This helps me not lose things and maintain a little more order. Having a sewing machine makes this easy – I made two items last night for the trip! :)

Secondary contents

  • Ocular backup – I talked my eye doctor into giving me a set of disposable contacts for last-minute scuba dives or impromptu 2-6am clubbing where glasses would just be silly. I also always bring a spare pair of glasses and my prescription.
  • Unruled pad of paper – For taking notes in sessions and bigger sketching
  • Energy bars – two or three for the plane. I prefer Clif bars and Lara bars. Builder bars (20g of protein!) are good if you’re going to have a series of breakfasts that are all carbs.
  • Peppermint gum – coffee, carbs == bad breath
  • Hat – Good for runs in hot, sunny weather, or instant camouflage in crowded rooms.
  • Anker Astro2 8400mAh External Battery – Includes a flashlight. Great for charging any of your devices and making friends.
  • John’s Phone – a simple phone that can be used most anywhere. Doesn’t support texting, which may be an issue. :) It’s a quad-band phone that supports 2G / GSM 850-900-1800-1900 Mhz. The only things it *doesn’t* support are pure 3G and CDMA networks. My plan is to get a Telstra SIM at the airport when I arrive. Suggestions welcome.
  • Ethernet cable – the dorm rooms at LCA in ballarat don’t have wireless.
  • earbud headphones
  • Small laptop/shoulder bag – A tiny bag to just carry your laptop. Much more convenient in the evenings and brunches.
  • Universal power adapter – I’ve used this particular model in five countries. I can’t say that it’s my favorite – if I had thought about it earlier, I would have gotten an AU power converter plug a couple weeks ago!
  • Sandals – something to change into after landing in warm weather!

Carry-on bag

I use an eBags Motherlode eTech Mini. I’ve had three of them, and the worst part is eventually the zipper dies. They have a lifetime warranty policy, but I travel enough that I’ve just bought a new bag rather than wait for a repair. But I’ll be testing that next month when I’m home for a while. :)

For the carry-on

  • Empty Water bottle + carabiner – so important when you’re in dry, air conditioned climate for weeks.
  • Energy bars – I take about 2 per day of the trip
  • Stain remover – Great suggestion from Tantek, and essential when you’re on the road perpetually.
  • Woolight liquid detergent – great for hand-washables and dry-clean-only dresses. And way cheaper than $200 to get five days of clothes cleaned in a hotel laundry.
  • Sunblock and swimsuit – Always bring a suit regardless of the weather. Nice bottom layer in a pinch.
  • Fleece pants – excellent for sleeping and laundry day while travelling.
  • Pumas – pair of walking/running shoes for any occasion.
  • 6 pairs underwear, socks – and however many bras are appropriate
  • Workout gear – depends on your body type, but I bring 2 sport-bras, short fast-drying yoga pants and a fast-drying technical top. Much easier to clean than cotton. In unfamiliar or cross-country terrain, I bring a separate pair of running shoes and a plastic bag to protect everything else from the dirt.
  • 2 dresses, 2 skirts, 1 pair pants, 4 tops, 1 sweater – enough outfits for three talks, a keynote and an evening out!
  • Lip gloss, lipstick and eyeshadow – I stick with a Shiseido slightly-sparkly lip gloss, MAC red lipstick for evenings and a black/white combo eye shadow. I use the black for eye liner and the white for accents.
  • Bathroom kit – includes: toothbrush, toothpaste, brush, shaver, nail clippers, face moisturizer, deodorant, hair product, vitamin C, advil and a multi-vitamin.

Tech pre-work

  • Set up a perma-logged in IRC session for yourself. I use irssi in a screen session on a cloud-hosted virtual machine.
  • Set up bitlbee to login to your IM in the same session. This is awesome for people who don’t use IRC leaving you notes while you’re offline.
  • Check out the wiki for any events shaping up and add those to your calendar or TripIt plans.

Print your boarding pass

24 hours before your flight, be sure to:

  • Log on to your airline’s website
  • check-in online
  • print your boarding pass
  • put it in your backpack

Night before

  • Collect devices and chargers: phone, Kindle, laptop, usb power supply. Maybe also tablet. Pack spare batteries in checked luggage.
  • Confirm in wallet: enough US cash for two meals, credit card, debit card, identification. If you have status on an airline, bring the card for cutting in line.
  • Confirm how you’re getting to the airport, and the time you need to be there.
  • Confirm how you’re getting from the destination airport to your hotel or first stop.

Morning of

  • Shower and put on clothes laid out the night before
  • Put: laptop, kindle, phone, notebook, keys, any reading material, wallet and IDs in carry on. Include:
    • power cable(s) and supply(s),
    • video adapter(s) connected to your external monitors
  • Arrive at airport 90 minutes early
  • Join the #lca.conf.au IRC channel

Have a great flight!

Landing

  • Pick up a SIM for your phone – for Melbourne, that’s at the nearest Telstra store, and there’s one in the airport.
  • Take public transit into town – There’s almost always a bus or train that will take you into the downtown of a major city. Melbourne has a skybus that leaves every 10 minutes from the terminal right into downtown!

And your adventure begins! :)

Support the Ada Initiative

I support the Ada Initiative because biology doesn’t explain: why there aren’t more women in computer science, why I don’t have more women colleagues who hack on databases, or why we don’t have more women contributing to open source projects.

You can support the Ada Initiative, too.

I wrote a few years ago about how I thought we might best get more women involved. Four years later, my tl;dr version is: make friends with women. Imagine if every male developer could name 10 women that they considered friends among their colleagues. People they trusted, hacked with and built new companies with.

But grassroots efforts alone can’t solve the lack of women’s involvement.

My story of involvement with open source and computing starts with friends who shared the fun with me in college. They invited me to Marathon parties, late night hacking sessions with new processors, pranking coworkers whose system images weren’t quite as secure as they’d advertised…

I love free and open source culture, IT security culture and all the people that I’ve met over the past 13 years. My life is so incredibly enriched and joyful as a result of the people who share what they learn with me.

Despite my love, there’s trouble in paradise. We could be better. And one thing I wish for is more women in my open source communities.

Over the years, I’ve been part of efforts to increase the number of women involved in the projects I’ve founded – Open Source Bridge (more than 50% managed by women, >30% speakers women), Legion of Tech (1/3 of the original board members were women), and Code-N-Splode (all women’s programming and speaker development group).

Now, I’m an advisor to the Ada Initiative. I’ve watched over the last year as Mary and Val have worked to focus their mission and identify exactly what they think will encourage women. They have to balance their experiences and the resistance to cultural change endemic to businesses, organizations and the loose organizations around open source.

It’s fucking hard work. And they’re doing a great job.

Ada Initiative is the organization I wish would have existed 13 years ago. It’s the voice of experience and a catalyst for change that we need inside our communities. It’s a place for women to go for advice and help when things go right — or when things go wrong.

So, what can you do?

The Ada Initiative needs money. They need corporate support. They need individual contributions.

If you, or your company, can contribute and keep the Ada Initiative going for another year, contribute today. Mary and Val have done the hard work of getting started. Now they need your help to keep going.

Puppet Faces: defaults and ‘puppet node clean’

Puppet Faces are an extendable API for tricking out your Puppet instances. (“Faces” is just short for “Interfaces”.) Just a couple days ago I wrote about my survey of puppet + ec2 provisioning tools.

The problem I’m trying to solve, which I don’t feel like I’ve solved well, is how to give a type to a new system at bootstrap time, without using DNS. The type variable maps to a node manifest group, and determines the personality of a host – is it a database, webserver or development instance?

What I’d like to do is pass a type to puppet at install time and have the puppetmaster and the agent remember that mapping between host and type.

I did it with a really simple Facter plugin, install scripts named by type (passed in to puppet node install), and a file created by the install script in /etc/puppet.

Then, I wanted to be able to see which hosts were configured with which install type. Facter was aware of the type, so this seemed like it should be pretty easy…

I wrote a quick and dirty Face that pulls information out of $varlib/nodes/*.yaml on the puppet master. I imagine there are better ways to do this, but in the absence of documentation or someone to tell me not to do this, I forged ahead!

There were two things that I spent quite a bit of time chewing on before figuring it out:

  1. If you want to make an :action in your Face the default, you just add default in the body of your :action block. I had to dig through a few cloudpack files before I found it!
  2. If you are creating and terminating hosts frequently, you may end up with a bunch of certs and other annoying metadata laying around. To clean it up, the Puppet Node Face has a command you can run:

    # puppet node clean [hostname]

    You’ll probably need to be the user that’s running puppet for this to work — it affects things that the puppetmaster owns in $varlib.

    If you’re doing this with code, it’s:

    Puppet::Face[:node, :current].clean('hostname')

I put a little patch into a recent version of cloudprovisioner that invokes clean during a terminate. It’s quick and dirty, and only for AWS.

The resources I’ve found useful are:

And to a lesser extent, these blog posts were helpful for filling in a few gaps: