mb

A photo of mb bischoff in a red lip and leather jacket.

mb bischoff (she/they) makes  apps,  posts, &  podcasts changes

rss subscribe mb

Tagged #work

Lickability Blog: Tooling at Home 

While there are lots of great guides on how to work remote from companies like Notion, Zapier, and Slack, we thought share some of the specific tools we’re using to make this easier for our team. Hopefully, if you’re a newly remote employee or manager, you’ll see something here that can help smooth out a part of your workflow.

I wrote a new blog post over on the Lickability blog about the new tools we’re using to work from home better and some tips about how we’re using them. 🛋

#apps #coronavirus #lickability #software #tech #tools #work

How to Treat Ex-Employees

Fire Pit from XOXO

It’s Julie’s last day at work. She’s already turned in her laptop to IT, sent her goodbye email to the team, and is wrapping up her last knowledge transfer meeting. Tonight, there’s a goodbye drinks with the whole engineering department at that bar everyone loves across the street from the office. You’ve followed all the processes as a manager to offboard this person correctly, and wished them good luck at their shiny new job with more stock options and a higher salary you just couldn’t match. “Good for her,” you think, as the night winds down over a final round of cocktails. But wait – you’re not done yet.


When you’re a manager, the way you treat the people that were on your team matters almost as much as how you treat the people that are. Your ex-employees are the people out there talking the most about your company and your team. They’re the people that get DMed when a new recruit is trying to find out what it was really like to work for your company and for you. And handled really well, ex-employees are often great folks for you to tap in a few years for the new team or company you’re working on, when they’re ready for a new challenge.

How should you treat the people you used to work with, so you won’t leave a bad taste in their mouth? Here are a few do’s and don’ts I’ve picked up from my own ex-managers over the last decade or so. Disclaimer: this advice won’t apply to every situation, including if an employee left or was pushed out on bad terms.

What to Do

Let them leave with dignity. A CTO I really respect taught me that letting people take the time they need to say their goodbyes and tie up loose ends, without rushing them out the door, pays dividends. He gave me the great advice to spend my last day on the job having coffee with everyone that had an impact on me, thanking them, and exchanging contact info.

Remember that it can be emotional to process endings, even if it was their choice, and last days can be full of paperwork and tears. It’s okay if they need to come back the next week and pick up a few more things, or need building access for a final meeting after their technical last day. Don’t be a jerk or make mean-spirited jokes about how much they must want to stay. Not cool. You want their last memory of this place to be a positive one: handshakes, hugs, and well-wishes.

Keep in touch (if they want to). Some of your reports or teammates probably view you as one of their mentors, and it can be hard to abruptly lose that guidance when they switch jobs. In your last 1:1, ask the person departing if they want to stay in touch after they get settled in their new role. If they do, set up a recurring reminder to check in with them every few months or a few times a year on their career over coffee or lunch. If they blow you off or don’t seem interested, take the hint.

Let them hang around. It’s natural for folks to miss some of their coworkers, the office, and aspects of the culture when they quit. So if you see them coming by for lunch or after work to hang out with some pals, say hello and be cordial. Obviously, also be aware of the security / guest policies of your company and make sure those are being followed. The benefits of knowledge-sharing (of things they’ve learned in their new role) with your team far outweighs the risk that they’re going to “steal all your people” or whatever other irrational fear your lizard brain has cooked up. Chill out; it’s nice to see their face again.

Take their feedback seriously. They likely understand and care about your product a lot. So it might not be long before you see a tweet or email from an ex-employee about the thing they used to work on. They might be reporting a bug or airing a grievance. While it might not be the most polite way for them to give this feedback, it’s still useful. This person is essentially doing free QA on a system they’re very knowledgeable about. If you see something like this, shoot them a message asking for more details and thanking them for the report. Stay classy and fix the issue if you can! You’ll make them feel heard and respected while helping them and lots of other users too. Win-win.

What Not to Do

Don’t blame them. A few weeks after an engineer leaves a team, there will be a bug that someone will blame on them—their code, their oversight, their fault. Resist this temptation. Your team has code review, unit tests, and architecture meetings to prevent this type of singling out of developers. Remind them that every issue is a shared responsibility, and focus on fixing the problem instead of dredging up historical evidence of whose fault it was. Don’t let folks blindly rewrite systems just because “only Jim understood how this worked.” Work to build a shared knowledge base and set of documentation so that no one person is completely indispensable.

Don’t make them work for free. There’s often a temptation to message ex-employees with “quick questions” about esoteric code or systems that they worked on after they leave the company. Please don’t do this. If you absolutely need these answers, hire this person at their consulting rate and pay them for their time and labor. This kind of arrangement is super common, and your company should hopefully already have a boilerplate agreement for this scenario. If not, now’s the time to draft one.

Don’t erase them from history. This isn’t Eternal Sunshine of the Spotless GitHub. It’s unprofessional and petty to remove folks as contributors to your open source projects (especially if they want to contribute in their spare time) or scrub their bylines from your engineering blog. I’ve even heard of bosses ignoring their former employees at conferences and industry events or blocking them on social media. This is a really bad look. Don’t be a jerk to people who worked for you.

Don’t ask them on a date. I wish this went without saying, but it doesn’t, because I’ve heard of this happening. If you had a crush on your employee and the only reason you weren’t asking them on a date is because of the HR policies in place to prevent that, now is not the time to flirt with them. The power imbalance that existed between you doesn’t magically disappear because they work somewhere else. This is a really bad idea, and you should do some soul-searching and work on your boundaries if this is your first impulse.


Many managers think a lot about how they treat their team, but very few I’ve spoken to have a philosophy about those who leave it. Treat your ex-employees like they’re professionals that helped you build and ship great things, because that’s exactly who they are. If you’re consistently nice and professional to the folks you’ve worked with in the past, it’ll help build your reputation as the kind of person that’s great to work for.

#firing #hiring #management #work

Professional Ghostbusting

Ghostbusters

It’s scary how much email I get at work. Despite Slack’s best efforts, much of the business world still “runs on email.” In 2019, the inboxes in my life are brimming with messages from new leads, existing clients, potential vendors, folks trying to network or ask for advice, and lots of transactional bullshit: newsletters, password resets, and spam. I’m sure your inboxes feel just as overwhelming. So it’s no surprise that folks (me included) sometimes get behind on responding to their email.

But today, I’m writing about a particularly pernicious form of email non-response and how to stop it: professional ghosting. The mid-2000s millennialism “ghosting” refers to abruptly and intentionally cutting off contact with someone you’re dating without warning or justification. You stop responding to their flirty texts and date asks and don’t tell them why. In fact, you don’t tell them anything. You’re a ghost. The word gained popularity in 2015 along with the rise of Tinder and a bevy of other dating apps where “leaving people on read” has become commonplace. Professional ghosting is basically the same thing…except it’s at work, so there might be money involved.

Imagine this: you’re in an email back-and-forth with a client who has hired you to design a new website for them. After they’ve paid a deposit and you’ve started the project, you have a question about how big the logo should be. You dash off a quick email to the client to ask them. And you wait. Maybe you figure it will take them a business day or so to respond. But then you hear nothing for days. Days turn into weeks. Radio silence. You’ve been (un)professionally ghosted.

Why does this happen? It’s not always just that folks are busy. It’s often a more specific kind of anxiety and friction that causes this particular supernatural phenomenon. Maybe something in your email raised follow up questions, maybe more stakeholders behind the scenes need to be consulted, or maybe it felt like things were getting more expensive or more complicated, even if you didn’t directly say so. Professional ghosting happens when the ghoster can’t immediately respond because they’re missing something and scared to admit it for fear of looking unprepared or under-resourced. And then it’s too late, new emails are already pouring in and yours has lost priority.

While this trend of ghosting in work contexts isn’t new, it does seem like it’s on the rise. Both anecdotally in my work and industry-wide, more employees and companies are noticing ghosting behavior from their colleagues, bosses, and reports. How can we fix it? Let’s fire up our proton packs and figure it out. I ain’t afraid of no ghosts.

Advice for the Ghosted ☠️

Here are a few things I’ve done while being ghosted at work that have helped me bring back some dead threads.

Follow up. I know it might feel like you’re nagging someone to email twice in a row. But if you’re in a professional relationship, and you’ve been interacting with someone who’s vanished, they’d likely appreciate a friendly follow-up after a few days. I’ve resurrected more deals than I can count with one well-timed follow up. Use a CRM system or an app like Boomerang for Gmail to automate this.

Make responding easy. Bold the questions in your email and keep them as easy to respond to as possible. Discuss complex or sensitive matters by phone or video chat. Your goal should be that your email is the first one your recipient opens, because it’s got a great subject line and they know exactly what you want and how to give it to you. Use self-service calendaring tools like Calendly to avoid being ghosted in the midst of a long scheduling volley.

Track opens. This is controversial from a privacy perspective. But on crucial business communications like bills or contracts, I think it’s appropriate to have view tracking in place. If you know your client is seeing and opening your invoices, it can give you peace of mind that they’ll pay them on time. And if they don’t, you can let them know they don’t have a good excuse to be late, because you see that the invoice was opened the day after they received it. 👀

Advice for Ghosts 👻

If you ghost on the job, these tips might help you get a little better control of your inbox…and your humanity.

It’s never too late. Looking at your flagged emails you realize that your skin is turning a pearly, translucent shade of white. You see a list of nice people you’ve ghosted with accompanying timestamps, some of which are months ago at this point. Take a deep breath. It’s not too late to respond to these messages. You’ve got this. Wish them a happy new year and throw in a “sorry for the delayed response” like the professional, living, breathing adult human that you definitely still are.

Ignorance is bliss. It’s okay to say “I don’t know.” In fact, it’s liberating. If one of the reasons you’re ghosting a colleague or business partner right now is that you’re just not sure about something in their email, start there. “I’m not sure how to answer this. Do you mind if we schedule a 15-minute call on Monday and figure it out together? Here’s my availability.” Sometimes that admission of uncertainty all it takes to bring that thread back from the ether.

Set realistic expectations. If you know you’re prone to ghosting, don’t use an email client that lets you snooze emails; it makes it too easy to delay indefinitely. If your Fridays are always filled with meetings, don’t tell someone you’ll get them something by “end of week.” Your time and attention are valuable just like your correspondent’s, and as long as you let people know when you can realistically respond and (mostly) stick to it, it’ll be fine.


I wrote this blog post for myself as much as for anyone else. If you’re ever waiting for a message from me, feel free to link to this piece in your polite follow up. I swear I won’t mind. None of us are perfect at this stuff. We’re all human, even if we sometimes ghost each other.

#advice #email #work

Activist Engineering

You’ve been there. You’re sitting in a meeting and your boss, a product manager, or an executive is talking about Q2 goals. They’re laying out a roadmap of the features that are going to be “coming down the pike”. All of a sudden you see it. An innocuous bullet that makes your blood boil: “Auto-invite friends”, “Re-engagement notifications”, or “Disable ATS”.

The particular feature isn’t important. What matters is that you’re the engineer that’s noticed this capital-B Bad Idea. You know why it’s a problem. This time it’s not just the technical debt or the time it’d take to implement. This idea is bad because it trades a worse product for a better “business”: revenue, eyeballs, impressions, you know the drill.

You have a choice in this moment. You can stay quiet and hope it goes away or point it out, question it, and even argue against it. But so often, engineers fold. They ignore their conscience and their gut in the interest of a steady paycheck and an easier work day. Avoid conflict at all costs, especially when that cost could be their job. “Just keep your head down and do what you’re told”, they think, while they twiddle their thumbs as bad product decisions whoosh by. Sure, they complain about it over drinks with coworkers and in one-on-ones, but they don’t say anything when it counts.

We’re better than this. As software engineers and designers, we’re in the room when decisions are shaped, and the only ones who have the power to actually execute them. It’s our responsibility not to forsake the people who trust the apps we make with our silence. To stand up and refuse to implement unethical systems and dark patterns. And even more, to educate stakeholders on the real human costs of their business decisions: the time, attention, money, and trust of their customers.

It’s harder, yes, and riskier. But they can’t build it without us. We get a say. Even if it’s not in that meeting, we can think about the goals they’re trying to accomplish and propose alternatives. We don’t have to hide in our sit-stand nap pods and eye-roll while we engineer a worse world. We can do more than write code. We can research and present better alternatives. We can write memos and make slide decks to convince them of our position. We can be activist engineers.

Even though these bad ideas may buttress the metric-of-the-week, they’re at the direct expense of consumer trust and customer satisfaction. They’re a tax on our company’s reputation. We have to push the people making the decisions to measure more than just the number they’re trying to increase. Look at reviews, net promoter score, social media mentions, and team morale. All of these trends matter to the long-term health of the company, and should be treated as such.

This requires long-term thinking and the kind of organization that’s receptive to it. In many companies, quantifiable short term gains are valued more than long-term, qualitative investment. The best companies resist this temptation to make a quick buck and build upon a lasting mission and principles. But even in companies with lofty vision statements, things can go awry. A bad quarter can send the company’s hard-won principles out the window to make room for the growth hackers.


In other disciplines, engineers wear an iron ring to remind them of their commitment to their profession. Though we may not be part of the Order of the Engineer, we can learn a lot from their obligation:

As an engineer, I shall participate in none but honest enterprises. When needed, my skill and knowledge shall be given without reservation for the public good. In the performance of duty, and in fidelity to my profession, I shall give the utmost.

Of course, not every idea you dislike is a bad one, so spend your reputation thoughtfully but forcefully. Make your dissent count, but don’t be a jerk.

Our job as software engineers is to build things that make the world (or a corner of it) better, things that solve problems. But that’s not our only job. It’s also to be gatekeepers: to prevent ideas that we know are harmful from being realized. What’s the worst that could happen: we get a reputation for giving a damn?

#activism #code #politics #programming #tech #work

Reviewing Code: A Checklist

You’ve been there. A 10,000 line pull request lands in your email and you don’t even know where to begin. No description provided.

Should you start by installing it, running the test suite, or should you just start scrolling though while your eyes glaze over from the red and green stripes? Is this developer really looking for feedback or are they on a deadline and pressuring you to say “lgtm”. Will your one innocuous comment ignite a flame war?

Code review, or more generally peer review, has a long record of finding defects in not just software engineering, but in science, academia, and many other industries. While some argue about the specific percentages of issues that it finds compared to an automated test suite, or others method of testing, code review is an incredibly useful tool in any software teams arsenal against bugs and poor software architecture. But only if it remains a sharp one. Laziness can creep into code review very easily if you’re not careful.

Jason Brennan has written two great pieces on the topic of diligently writing and reviewing pull requests, and I’ve used his series as an inspiration for my own system. I’ve also found it’s handy to have a short-form checklist to go over when performing code reviews to remind myself what I’m going for. Maybe it’ll help you and your team too.

For the engineer drafting the pull request

  • Provide a screenshot, GIF, or video of the change if possible. People like pictures.
  • Explain what changed and why.
  • List step-by-step how to test the changes.
  • Link to any relevant task(s) or ticket(s) in the bug tracker.
  • Link to any existing documentation that could make the change easier to understand for the reviewer.
  • Mark any areas that are work in progress or require follow up.
    • Note anything that is waiting on other departments or team members.
  • Call out any legal, security, or privacy concerns.
  • If any third-party dependencies have been added, explain what they are and why you chose them.
  • Double check that the code is styled, documented, and tested to your team’s standards.
  • Mention people who would be interested in the changeset:
    • Engineer(s) who wrote the old version
    • Designer(s)
    • Product manager (if they’re interested)
  • Give the diff one final pass yourself before asking others to take a look. You might catch a few silly things like typos in comments.
  • Annotate particularly tricky sections in the diff to make what’s going on even clearer. Maybe even turn these into code comments.
  • Get a coffee and wait for the constructive criticism to roll in.

For the reviewer

I find it’s helpful to do these in order if you can.

Most importantly, remember that the engineer on the other side of the screen is a person. Try not to be curt or hurtful in your comments.

The Pull Request

Start here to build an understanding of what you’re about to be diving into.

  • Let your teammate know that you’re reviewing their work however’s customary: a comment, a message, making yourself the assignee.
  • Read over the pull request description and any linked documents to understand the nature of the changes.
    • Ask questions about anything you don’t understand or if there isn’t enough detail to properly review.

The Product

Does it work as you’d expect? You can write lots of pretty code that doesn’t work.

  • Checkout the pull request locally.
  • Confirm that the project builds and compiles.
  • Look for any new warnings or errors that have been introduced.
  • Run the unit / integration tests to look for any new failures.
  • Follow the steps provided to test the changes or determine a testing plan for it and run through those tests, noting any issues in your comments.
    • Test things that the original engineer might not have considered like errors, failures, other inputs.
  • Look for significant changes in performance.
    • Profile the changes if performance seems to have regressed.
  • Run the application in another language and region to check for internationalization and localization issues.
  • Confirm that the changes are fully accessible to customers with disabilities.

The Code

Alright, it’s time to start looking at the code, line by line.

  • Deleted code
    • If code was deleted, was its functionality adequately replaced or is what it provided no longer required?
  • Added code
    • Does the new code introduced conform to the teams’s standards for style, documentation, and testing?
    • Does new code make sense when read? Is anything too clever or inexplicable?
    • Is new code safe?
      • Does it have the potential to crash or hang?
      • Are there any obvious race conditions or concurrency concerns?
    • Is new code fast?
      • If not, can you suggest optimizations?
    • Is it well-designed and well-factored?
      • If not, try to propose alternative solutions or schedule a time to whiteboard with the engineer.
    • Is it well-named?
      • Are the names of types and functions obvious and unambiguous?
  • Modified code
    • Do you understand why the modifications were made?
    • Do the modifications improve the factoring, design, or performance of the software?
    • Do the modifications change any of the fundamental assumptions that the original code made?
  • Dependencies
    • Make sure to understand the implications of new dependencies on third-party code, including their licenses.
  • Assets and Resources
    • Do all assets and resources exist in all the right formats and sizes?
    • Are they finalized and ready to go into production?
  • Configuration changes
    • Do you understand the effects of these changes and how they can be rolled back?

Adding a system like this to my own pull request reviews has helped me catch a lot more, but I’m sure there are still things I’m missing. If you have ideas about how this checklist can be improved, pull requests are welcome!

#advice #code #code review #programming #work

The Idea Guy

A few years ago I was tasked with helping to recruit interns for The New York Times iOS team1. I traveled around to top-tier engineering programs at universities all over the northeast talking about the Times’s engineering culture and to students about what they wanted to be when they grew up.

One of these interviews stuck with me. I asked a junior what he saw himself doing in five years, and I’ll never forget what he said.

“I want to be the idea guy at a startup”.

I wish I could have stopped the interview right then and there. I wanted to tell this guy that there is no Santa Claus, that the Easter Bunny isn’t the one hiding the eggs, and that no such role exists or ever will.

Ideas are everywhere. They’re a multiplier. They’re not a thing you make, and they have have no intrinsic value. We certainly don’t need a whole person for them at a company that’s just starting out.

Some nights I wonder where that guy is. I’m scared to look through my notes and check up on him, but I sincerely hope that he’s found some way to bring his ideas into the world — something to do or to make.

I wish we hadn’t separated those two concepts in English. ‘Faciō’, one of my favorite Latin verbs, encapsulates both concepts in a beautiful way. Anyway, back to doing. The ideas will come.

  1. By the way, they’re still hiring. If you want to work there, or at Tumblr for that matter, email me

#advice #startups #work