How to Run A Successful Brown Bag System

Software Engineering Professionals has a brown bag system that has been going on for over a year now. This post will describe how this successful system works.

Overview

Brown bags (also known as ‘lunch and learns’) are a great way to spread knowledge among coworkers. They are a way for managers and employees to present on topics they are interested in. As the name suggests, brown bags are held during lunch. People bring their own lunches, and kill two birds with one stone by learning and eating at the same time. Presentations or fishbowls are generally the formats of choice.

I think the biggest benefits of a well-run brown bag system are:

  • having a consistent way to share and learn about new things
  • sharing interest in cutting-edge topics
  • making everyone feel included
  • helping with professional development
  • giving people a chance to practice presenting

Implementation

As I have seen it, one person (the facilitator) organizes the brown bags. When she gets low on people presenting topics, she sends out an email to get more presenters with topics. Having one person in charge helps keep things consistent.

There is no voting system, people just vote with their feet. I suppose this might have worked well because there are around sixty engineers, so the odds of no one showing up are pretty low. SEP does two a week, on Tuesdays and Thursdays. Companies with more people could break brown bags down into cross-functional groups or buildings. As one of the points of doing them, it is nice to invite people that might be interested to spread knowledge well.

Holding brown bags on consistent days makes it easier for people to make plans to attend. A casual RSVP system helps to gauge interest. The facilitator sends out an email describing the session and asks for people to respond if they are interested. That way, if not enough people are interested, the brown bag can be deferred or cancelled.

For the facilitator, key actions seem to be:

  • email everyone about topics if you don’t have enough two weeks out
  • email presenters about topics when they are two weeks away, to remind them (ensure they can still do it, or get someone else) and to get a one paragraph description (so people know whether they should attend or not)
  • email everyone few days before the session to gauge interest
  • reminder email to people who said they would come a day before the brown bag happens

Finishing Up

Of course, this post has touched mostly on the implementation details of this practice. What has been understated is the great culture of learning that SEP has. Some people are willing to present monthly or even multiple times a month. Many brown bags were standing-room-only, and I would need to sneak into them. If you want to become known as more qualified about something and work in that area, giving a brown bag is a good way to spread knowledge of your interest and teach others at the same time. Often someone in the brown bag will know more than the presenter, and can add on to what the presenter is saying. Hats off to them for running this system well.

This post was really easy for me to write because it is a system that I am very familiar with. Hopefully it has some value for people who don’t currently have a lunchtime learning program or are looking for some tips on how to do it well. (Hint–ask yourself: what do I know that other people might not know? This might make for an interesting post.)

Many people reading this have been to brown bags. What do you think about them, and what did I miss in my description?

Redundant Communication Redundancy

I’m sorry I wrote such a long letter. I did not have the time to write a short one.

Abraham Lincoln

For a long time, I strove to be efficient in communication. I would carefully consider the right words for things, especially when writing. But I realize now that good communication should have some redundancy.

Most of the time, the point of communicating is to convey information. Of course, there are other reasons people might converse. Redundancy is nice because it gets the message across eventually. Communication is inherently a very lossy channel.

For example, in Permission Marketing, Seth Godin says “you have to run an ad twenty-seven times against one individual before it has its desired impact. Why? Because only one out of nine ads is seen, and you’ve got to see it at least three times before it sinks in.” (87)

You can apply this to your own communications. One tweet or one phone call or even one meaningful conversation probably won’t get the point across.

Good teachers are redundant. They might approach the same subject from different angles by giving an audio, tactile, as well as visual learning experience.

Most religious leaders are probably pretty redundant. How many ways can you express the same fundamental truths?

An interesting side effect of being alright with redundancy makes for more personable communication. I am not as worried about getting the exact right words at all times, because I know that with time, the errors will work themselves out. As a result, conversations are less curt, which enables both people to feel safe.

Interestingly, people change their minds over time. If you assume they still think and do the same things as when you last talked to them, you are likely incorrect. So while you might have the same conversation twice, you might just learn something new or say something in a way that the other person understands better than the first time you said it.

Instead of getting bothered at needing to repeat myself, I should welcome the opportunity to say how I feel and what I believe. (Perhaps this is for relatives who haven’t adjusted to my internal perception of myself.)

Even if you ask the same questions multiple times, you might hear something you didn’t the first time, or the other person might be in a different state of mind than the last time.

The other concept that this relates to is to just start explaining what I am thinking before worrying about whether it is the best way to express the ideas within. An article doesn’t need to be perfect before it can help someone. People who really want the value are ready to read past typos and poor construction.

So be mildly redundant. It might be more useful than you think.

Show Git Version a Heroku Repository Is Using

I tried git show and git log, but these operate on the local repository and defined remotes. In order to see what git treeish your Heroku repo is using, try:

$ git ls-remote git@heroku.com:APP-NAME.git
97ec101adde21cfaf7f8c3ed47656e  HEAD
97ec101adde21cfaf7f8c3ed47656e  refs/heads/master

To find out the Heroku git repository name, you can also try

heroku info --app APP-NAME

What Are Your Negative Gains?

I came upon a helpful tool for diagnosing why I sometimes do things that logically seem to be against my best interests. Odds are, you are probably doing it too without even knowing it.

The concept

The concept is “negative gain.” It is the positive reinforcement that one gets for doing behaviors that have negative results.

It is easier to make the changes you want once you are aware of what you get out of being the way you are. This is called the ‘negative gain’. It is what we give ourselves for unconsciously not choosing to be or do what we want out of fear of failing.

A negative gain provides a temporary compensation – a kind of second best – for finding an excuse not to do what we want to do, because our fear prevents us. Negative gains are false friends, because they seem to make us feel better in the short term, but turn out to be a sham as we realise we are failing to make things better for ourself.

We even feel worse when we keep on using the same old mechanisms of avoidance. Negative gains are different from 'rewards’ where we have chosen to be or do what we want. Examining some typical negative gains should make the concept clear…

Jim Barrett, Total Leadership

Examples

Negative gains come in all shapes and sizes. Let’s examine a few.

A single guy sees a pretty girl across the room.

Girl

He thinks about going over there to talk to her, but talks himself out of it instead. He doesn’t approach her.

The negative gain is not putting himself in a position to be rejected, to not have to make changes to his persona, to be comfortable with whatever default behavioral scripts he has accumulated thus far in his life.

However, there are clear negatives:

  • not developing the skills to cope with minimal rejection
  • not developing the skills of small talk
  • not increasing his social network
  • feeling like he chickened out
  • mild feelings of regret or disappointment
  • maybe missing out on some great times

At the time, it doesn’t seem all that poor of a decision, but inaction adds up. What is comfortable today is more comfortable tomorrow.

The difficulty comes from the fact that there is some positive feedback which reinforces the behavior. It’s easy to think behavior will one day magically change by itself, or that things aren’t that bad. But every time one does the behavior, it just reinforces that way of behaving.

Application

When you find a habit difficult to break or regularly find yourself in a situation that doesn’t seem to make much sense, you can analyze your thoughts to see what you get out of the behavior or environment. If it helps, imagine you were given an option to change right now and what thoughts might hold you back. I find it useful to journal to record the thoughts that you have so you can later process them objectively.

An unsatisfying job:

  • “The money’s OK at my job.”
  • “What if the next job didn’t work out?”
  • “I’d probably like the next job just as little.”
  • “Maybe it’s wrong for me to make more money.”
  • “My family wouldn’t approve of me quitting.”
  • “Well, I’d probably have to move. What a pain!”

A romantic relationship going downhill:

  • “The sex is pretty good.”
  • “I’d feel lonely if I wasn’t in a relationship.”
  • “My life is kind of exciting with some drama.”
  • “One of us will probably cry if we break up.”
  • etc.

Generally journaling reveals that some underlying beliefs will make it hard to change immediately. Why would I try to change jobs if I believe that I wouldn’t be happy in the next place anyway? Also present are many untested assumptions. Who knows for sure that I couldn’t find another job, or what could I learn to make myself more valuable?

After identifying things that psychologically and logistically prevent change, the next step is to explore the assumptions and change limiting beliefs. Maybe I need to change my deep-seated views about my own self-worth to make it alright to make more money. Maybe I need to talk to my family about changing jobs so that I know they support me and I can put my full effort into finding something that makes us better off. Sometimes constraints are just in my head.

Negative gains have some components that are both good and bad. Like the best villains, negative gains have properties that others can understand, which might garner sympathy. But sympathy is no way to live life. I want to address and fix that which holds me back, not merely work around it.

It’s difficult to change behaviors without having something to replace them with. By understanding what you get out of your current behaviors, you can understand how to break free of them.

Write-Copy-Fix-Refactor

Was writing some code the other day, and then wanted to have similar functionality in a different area of the codebase. I did not want to directly copy and paste, as I consider this to be a very recognizable code smell. Basically, copying and pasting is a clear indicator that there is similar structure that is not being realized. It is similar to making up really complicated equations and models for why planets in the sky do loop-de-loops, and then understanding that they all revolve around the sun. That understanding simplifies things.

However, it was tough to think about what needed to be abstracted out of the solution that I was going to use. What I did was to copy the original to another area, change it to work in that context, and then factor out the common parts as best as possible to a library function. I expect to use this function a few times, so this seems to make the most sense from a flexibility and maintenance perspective.

Copying allowed me to clearly see the similarities and the differences so that I knew where the seams were. Just doing it in my head was not as helpful. I was overthinking it, and came up with a couple of solutions at first that were suboptimal. Then, I said, “whatever, just get it done and I can refactor from there.” That seemed to be a better solution. Also, I felt that I did not overgeneralize the functions when I used this approach. This is a positive, as when I overgeneralize, the code becomes harder to work with in the future.

Note that I did indeed go back and reduce the duplication. :) Pushing it out to a nebulous “sometime” would have been quite ineffective. Instead, I promised myself “in half an hour.” I felt good about keeping this promise to myself.

I guess the lesson I learned was: use the materials you have to help you on your way. Whether this is temporary image files when you are preparing your website overhaul, or scraps of paper or whiteboard space, getting ideas out in physical form lessens the load on your mind. See also my post on streaming, which I still use on a daily basis.

Do you have any rules of thumb for this type of situation?