what does “in-person” mean for teams that aren’t all in the same location

I’ve been on a hybrid/distributed team for a long time. Immediately before the pandemic our team worked in the following arrangement (everyone worked 5 days a week regardless of location). Since this team was originally all in NY, I was very conscious of the language I used so NY wasn’t “the center of the universe.”

  • 3 people full time in the NY office
  • 2 people in another office in a different city
  • 1 person in yet a third office in a different city
  • 1 person in the NY office three days a week
  • 1 person in the NY office two days every three weeks
  • 1 person full time in her home office

During the pandemic we all worked from somewhere in our home. Some people had nice home offices. Some people worked from a creative arrangement in the middle of their apartment. I used language about myself like “I’m leaving work now” even though I was moving two feet away.

Right now, the NY office is doing a “back to the office” pilot and my team consists of

  • me physically in the NY office
  • one of my teammates physically in the NY office three days a week on a different floor (we weren’t on the same team when the pandemic started so our seats aren’t currently near each other.) It’s a pain to move so waiting until the department shuffles everyone’s seats for that.
  • everyone else at their home offices (I think everyone except the two of us choosing to be in the pilot has an actual home office)

Last week, I was using a bunch of different conference rooms in the NY office to test the new webcams and such. When I wrote up the experience, I used the phrase “in person.” One of my teammates immediately called me out on that. Which I appreciate. I certainly wasn’t thinking of the NY office as being the center of the universe when it was only myself and one other person from our team there. (at one of the meetings; the others I was the only one in the NY office for.) I was thinking “in-person” with reference to myself.

This got us talking and me thinking about various terms that can be used and various sensitivities that can exist around them. I’m using WFH in the comments column for brevity. If you don’t like that term, substitute another in your head to get to the gist. It’s hard to fully qualify every time. Especially in a discussion about terms and subtleties.

TermComments
in-personEveryone works in person regardless of location.
homeThis doesn’t usually bother people. However, it isn’t always home. I worked for a week from a hotel. In some companies, a person could be working at Starbucks. It varies. I do like that this term is part of the WFH abbreviation. One of my remote teammates said she prefers home office or remote over home.
home officeI like this term when talking about people who actually have a home office. However, it is a term that has sensitivities to me because it includes an assumption that one has a space for a home office. (My WFH area is smaller than a cubical and not anywhere near as conducive to work.
onsiteThis is a location. If there is only one onsite location and everyone is WFH, it could work. However, in my case, there are three “onsite” locations involved so it doesn’t clarify much.
remoteDepending on the context, this could be a good term. In some ways, it has the same problem as “onsite.” However, it could also mean simply that people aren’t all together if not viewed from the lens of a common location.
distributedI like this term because it shows that there are varying locations. And it doesn’t make assumptions about a primary site.
teleworking or telecommutingI like that this is location agnostic. But it also implies that you aren’t at an office. Whereas distributed could mean any location.
virtualThis term assumes that it is replacing an in person thing. It also treats the activity as an alias.If I’m having a meeting, I’m having a meeting. It doesn’t matter if we are in the same room or on Zoom or whatever.

Finally, my teammate brought up this episode from The Big Bang Theory

Sheldon-bot : Can you tell me the specials this evening?

Penny: Sheldon, I’m not waiting on you.

Sheldon-bot: Obviously. I don’t even have water yet.

Penny: Because you’re not here.

Sheldon-bot: That’s discrimination against the otherwise located. I’m going to have to go over your head. Manager, manager. Oh, Lord, look who it is.

why java records aren’t quite immutable

A new type called a “record” was previewed in Java 14 and released in Java 16. One of the benefits is that it creates immutable objects. Kind of.

An immutable record

This is record is an immutable object. Since it is a record, it is automatically final and has no setters. All is good.

public record Book (String title, int numPages) { }

A mutable record

There there is this record. Do you see why it is mutable?

public record Book (String title, int numPages, List<String> chapters) { }

The problem is that records use shallow immutability. The caller can’t change the “chapters” object to a different reference. The caller can change the values in the “chapters” to their heart’s content. That means this object is still mutable.

Here’s an example showing that the code prints [1, 2, 3] and therefore changes the list of chapters.

List<String> chapters = new ArrayList<>();
chapters.add("1");

Book book = new Book("Breaking and entering", 289, chapters);

chapters.add("2");
book.chapters().add("3");
System.out.println(book.chapters());

Making the record actually be immutable

It’s pretty easy to make the Book record actually be immutable. In fact, it only requires three extra lines! Records have a compact constructor which takes care of the setting fields for you. However, you can choose to change that behavior. In this example, I rely on the default set of “title” and “numPages”. However, for “chapters”, I choose to make an immutable copy to prevent changing the list.

public record Book (String title, int numPages, List<String> chapters) {

    public Book {
        chapters = List.copyOf(chapters);
    }
}

Now the test program fails with an UnsupportedOperationException. Much better. A real immutable record.