System Design Interviews

As I network through tech I frequently hear newcomers ask how to answer system design questions. I’ll try to clear that up in this post.

Why am I being asked to design a parking lot?

If you’re comfortable writing code and work on multi-component projects, then you might be familiar with maximizing reuse without high coupling. In an interview, they will test this with an object oriented design questions. In a service-oriented world, we are now being asked to do this with systems.

These concepts are inconsistently taught across all programs. Unlike a for loop, interviewers can’t always expect a candidate to be familiar with systems and services. Unfortunately, the interviewers are given a checklist and if it contains system design, they ask it. More bad news: the recruiters aren’t told what’s on the list. As a result, you and your interviewer have different ideas about what’s going to be asked.

How To Learn This

Question and Answer Format

Question

Questions will be phrased as: “design a system to XYZ”, “design a pre-existing software system”, “draw the architecture for XYZ”. Examples:

  • Existing software: Uber, Lyft, Facebook Messenger, Amazon retail website, Google Search, DNS, Expedia, Docker, GitHub, WordPress, any website you can think of.
  • Interview problems: Parking garage, generic search engine, inventory management system, hotel guest management system, log aggregation

Anything can come up here depending on how prepared or creative the interviewer is.

Boxes and Lines

The answer is going to be boxes and lines.

Boxes_and_Lines

Approaching the Question

Clarifying Questions and Requirements

If you’ve done any preparation or any interviews, you will know you need to ask clarifying questions and get the requirements. Treat your unimplemented solution as a black box and try to describe the inputs and the outputs. Take Twitter for example:

  • Are tweets text only?
  • How will customers get data out of the system? Browser, phone, REST API?
  • Can a customer send one tweet at a time or many?
  • Do users have accounts or is this anonymous?
  • Is user following enabled?
  • Are there multiple feeds or one giant aggregated feed of tweets?

You might be thinking “Do you even know how Twitter works?” If you are, good. You need to make sure you and the interviewer are on the same page. You can’t come up with a design that has every current Twitter feature so make sure to scope it down to a few specific features. Saying “I’m going to implement user accounts, tweeting text only, and retrieving messages without the follower system as my first round” is extremely helpful. The interviewer will know that you are aware that there are more features and are choosing to defer than rather than forgetting them. This also makes the problem easier. If you don’t specify which aspects you are implementing, you and your interviewer will have different ideas about a good answer.

Note: These interviews are 45 to 60 min. It’s better to start small and then discuss enlarging the scope with the interviewer than the other way around.

Always identify the data.

The data tells you a lot about the design. What data is being sent? What data is being stored? Does the data need to be sorted? How quickly does the data need to be available? This provides another way to get requirements. Example:

  • How will data be searched? Maybe we start with hashtag search only.
  • Can anyone see all tweets or are some tweets restricted viewing? We can start with all public.
  • When we search for tweets, do we return all of them that match or only the top 100 most recent? Let’s do all of them at first for simplicity.

The Boxes

What are the boxes? Don’t be thrifty on the boxes. Boxes are more easily grouped than separated. You can do a “discovery” style and follow a single piece of data through the system.

For example, a customer hits the “Tweet” button from their browser. This goes to some server, the TweetManager. The tweet needs to be stored and show up in the user’s page and the global feed (as per requirements of no custom feeds). The tweet also needs to be searched later by hashtags (as per requirement of hashtag search only). This tells us we need a place to store the whole tweet, TweetStore. We might also need to store user information that can reference their tweets, UserStore and maybe UserManager. Somewhere else, we need to support hashtag searches, SearchTagManager and/or HashTagStore. Finally, we can throw in notifications for fun and have  NotificationManager. Here’s what that looks like:

Twitlines

  1. The user tweets and the tweet is sent to the TweetManager (here we assume that the user is logged in and is who their cookies or headers say they are).
  2. The TweetManager stores the Tweet in the TweetStore. At this point it is linked to the user that posted it.
  3. The TweetManager sends the hashtags in the tweet along with a reference to the tweet in the TweetStore.
  4. The HashtagManager adds the tweet reference to the list of all tweets related to that hashtag in the hashtag store (this creates a link to the tweet store).
  5. The TweetManager sends a completed message to the notifier which then shows everyone logged in that a new tweet has been posted.

We also have Login and ‘A’ which is searching by hashtag.

Note: This is a simplified example. I would strongly discourage using this answer in an interview because it doesn’t scale, has high latency, and will likely result in data inconsistency.

Hey, Where Are My Tables?

You may be tempted to say one of your boxes will be a SQL database and start describing your schema in detail. Don’t. Don’t do this unless the interviewer asks you to go into details. If you focus on details, you won’t have time to answer the whole question. However, having them at the ready doesn’t hurt in follow up questions.

Grouping

It turns out I have 3 storage boxes and 3 service boxes. Do they all need to be separate or can some be together? There are many driving factors for doing this:

  • Minimize coupling: you should minimize lines between two boxes for a single “trip” through the system
  • Follow the K.I.S.S. rule: you should not have to fan out to turn one tweet into 5 calls to other boxes
  • Asynchronous vs. Synchronous: know which lines need to be blocking and which can be done asynchronously. In some systems, the different types of calls go to different boxes (not always).

A simple grouping might be all the logic in one box and all the data in another:

Group

Scalability

Scalability is challenging. In these questions, you can either predict how to scale the system or you can do this exercise repeatedly:

  1. A significant political event is happening. A few key individuals are sending out tweets through the event. Everyone on the planet is trying to search for tweets with the event hashtag at the same time.
  2. Identify what will break first and how it will break. If it breaks, does it break only the overloaded part of the system or other parts too? In this case, the hashtag manager can actually be scaled to tolerate the number of requests. However, the data store (no matter what store you use) will be in trouble.
  3. Discuss or draw a way to solve this. The most common answers to this are asynchronous communication with queuesreplicas, and some form of sharding.

Often you need to do one or two examples to show you understand what scaling is and how to alter a system to support more traffic.

New Features

You’re feeling great because you drew boxes and lines. You came up with your own scaling answers before the interviewer asked. Then the interviewer throws a giant wrench into your answer: I want you to implement followers, identity verification, and malicious account detection.

If you only have 5 minutes left, feel free to verbally explain while waving your hands at your diagram. Throw a quick machine learning trained fraud box and a service that requests identity verification through a third party vendor. Usually when these features are requested near the end of the interview it isn’t about implementing them but about discussing how you can grow your solution. If you can’t discuss the solution, it might look like you copied it from a book.

Follow Up Questions

  • Why is this data here and who can access it?
  • How long does it take to complete one customer request?
  • Why are these two components separate or together?
  • Can you make this more generic or into a platform? How would you covert this into a Software as a Service product?

I Did All The Right Things And All I Got Was This T-Shirt

I’ve had too many interviews where the interviewer was stubborn, critical, condescending, dismissive, and basically an asshole. It’s almost impossible to succeed in these cases unless you fit their mold perfectly and even then it’s not a guarantee. Here are some signs that it might not be your answer that’s at fault:

  • Your interviewer is flipping between high level criteria and specific technologies (i.e. we need a customer service but please use AWS lambda)
  • Your interviewer is telling you where to draw your lines without explaining why
  • Your interviewer is repeatedly cutting you off when you try to ask clarifying questions and replies with “just implement it the way it is”
  • Your interviewer says “uhhh” a lot and doesn’t seem to know where he or she is going with the question
  • Your interviewer changes the question halfway through: did I say architecture? I meant library
  • You were incorrectly leveled by your recruiter (surprise!) and you feel deeply in over your head.

Leveling?

All companies put their applicants into buckets that are highly variable but sort of follow this structure:

  • 0 to 2 years of experience: entry level
  • 2 to 5 years of experience: mid level
  • 5+ years of experience: senior level
  • 12+ years of experience: principle or CTO level

Highly variable by company, geographic area, job role, and how the recruiter feels that day.

I think it’s unreasonable to ask an entry level applicant a design question because they may or may not have encountered them. If an applicant is on a border of experience levels, they may ask this question to see which bucket they fit in. Finally, as above, recruiters and interviewers don’t talk.

In Conclusion

Just don’t draw a single box with a SQL database schema as your answer. Good luck!

 

Defensive Interviewing

If you’ve interviewed anywhere in tech, you’ll hear the advice or instructions to have questions ready for your interviewers. Which questions do you ask though?

Hopes and Fears

Everything boils down to what you want to happen and what you don’t want to happen.

Hopes

  • Belonging
  • Achievement
  • Trust
  • Growth
  • Variety
  • Money – this one is salary negotiation so I’ll skip it

Fears

  • Exploitation
  • Rejection and isolation
  • Boredom
  • Stress

Now that we’ve got the heavy stuff out of the way, how does that translate into interview questions?

Belonging / Rejection and Isolation

A sense of belonging contributes to happiness. A sense of happiness contributes to productivity. Thus, you will be more successful if you feel like you belong. Even when your job is really bad, if you feel like “you’re all in it together”, it’s easier to pull through.

Questions:

  • What is the diversity of your team?
  • Are there people like me on the team?
  • Who will be my mentor when I join?
  • What are some social activities we will do as a team?
  • What communities for technical and non-technical topics exist at the company?
  • Do you feel like you could be friends with some of the people you work with if they weren’t your coworkers?
  • How often will I have 1 on 1s with my manager?

Scenario one: a diverse group of people who welcome new members with an automatic support network of a mentor and bond through shared interests. Scenario two: a monochromatic team of humorless people you can’t identify with that leave you to struggle alone and generally don’t talk to each other. Take your pick.

Achievement, Growth, and Variety / Boredom

Boredom is bad. Boredom is similar to stress. You disassociate and (eventually) become depressed or destructive. Work that slightly exceeds your skill set is ideal for maximum engagement and learning (according to Emotional Intelligence by Daniel Goleman). You can keep things interesting through promotions, new skills, or role changes. Additionally, if you want to climb the ladder, make sure there are at least a few rungs.

Questions:

  • What does promotion look like here?
  • How long does someone like me stay in this role before being considered for promotion?
  • Do you support 20% time or time to grow professionally via hackathons, conferences, or tech talks?
  • Does this company encourage moving between teams if there are other opportunities available?
  • Does this company support role changes and what does a successful role change look like?

Trust / Exploitation

People typically know when something they are going to say will put people off. The managers and recruiters of the world know this and choose to omit or mislead when it comes to that information. Instead of trying to catch them in a lie, probe to fill out the truthiness of their answers. This was taught to me as “peeling the onion”. In this metaphor, the more you peel the onion, you might get more onion or, I don’t know, a radish.

Questions:

  • What tasks are you working on right now? Ask for specifics.
  • What would you say is the key success criteria for your job? Why?
  • What is an example of the first project (not task) I will be working on? How is this important to our customer?
  • How involved will I be in designing new features and choosing team priorities? How often will I get a chance to influence project direction?
  • How many people with my role are on the team? (the more there are, the more reliable their answers)
  • If I am interested in working on something in particular, how would I go about getting assigned to the project? Give me an example of when you did this.
  • When something goes wrong, what is the recovery? Maybe a bug is pushed or a customer says the feature was done wrongly or a service goes down. Is there a retrospective? Does it get fixed right away?
  • Who is responsible for operations, customer contact, and project planning?

This is probably the hardest one to detect. Often, teams want to hire someone to do the housekeeping, like bug fixes, legacy maintenance, mindless migration, and minor management activities. You need to ask questions to confirm there is enough “meaty” work for you and housekeeping is spread evenly or kept to a minimum.

General Red Flags

  • Your manager has been in the company or sub-org for less than 6 months. This usually means they haven’t been through a performance cycle and there is a risk that they aren’t sure what it looks like for you to do a good job. If you don’t know how to do a good job, you might not be rewarded for the work you do. However, after about a year to a year and a half, most managers figure it out.
  • You are being hired for a “generic” position. This is basically job roulette. It’s worked out well for me in the past but it’s also opportunity for you to be placed where no one else wants to be.
  • There are a lot of buzzwords. If something sounds good but doesn’t tell you anything specific, they might be trying to hide something. “We do machine learning” is the equivalent of saying “we develop software”. It generates excitement but doesn’t tell you that you’ll actually be a code monkey for the scientists who do the “real” machine learning.
  • “We have no operations.” This is very job dependent. I’m talking about services, cloud, and larger software applications. If you have no ops, you have no usage or no customers. On the other side, you might have a lot of ops but someone else deals with it. This is an organizational anti-pattern and guarantees someone will strongly dislike you on that ops team. Not fun.
  • “We are a rapidly growing team.” This can genuinely be exciting if you are joining a team of smart and capable people coming together to create a new great thing. Or this could mean the managers are throwing bodies at a problem in such a way that creates stress, confusion, and general unhappiness.

It’s Too Late

If you’ve found yourself in a job where it didn’t live up to your expectation, first, figure out which questions to ask next time you interview. Second, tell someone it wasn’t what you expected and firmly ask to be placed somewhere that meets those expectations. Third, as soon as you can, decide whether you want to stay or go. Be intentional about what job you are choosing to do. By taking responsibility, you give yourself control over your situation and who doesn’t like control?

Good luck interviewing!

Dot Your I’s, Cross Your T’s, And Get Paid

An independent professional in my network recommended I watch a talk by Mike Monteiro called “F*ck You, Pay Me” when I asked for advice on contracts and client relations. Whether you’re freelancing, consulting, part-time, or full-time, the advice given applies to any contract you sign related to your professional skills. Below is a summary of the video and I’ll also cover how this can apply to a full-time position.

Read More »

Tales From The Git Keeper: The Wild Goose Offer

I interviewed for a job and got an offer. I only learned the terms of the offer a week into the job. Maybe “job” is a strong word since I also wasn’t getting paid.

sign pen business document
Photo by Pixabay on Pexels.com

The Beginning

A recruiter and I start talking and decide I’ll interview for a position. The phone screen goes well. The in person interview goes well. The recruiter tells me they are putting together an offer and I dedicate the rest of my mental energy trying to decide whether I want the job or not.

The recruiter is part of one of those third party recruiting companies. Normally this would be a “bad recruiter” but this time we became sort of friends. The fact that neither of us worked for the company trying to hire me was actually a bond rather than a divide after this mess.

The day I interviewed was the 26th of a random month in the year, say December. On the 3rd of the following month, January, I was leaving the country for a 2 week long trip.

Make Me An Offer

On the 28th, two days after my interview, I was called up by the third-party recruiter to tell me they loved me and wanted to extend an offer (her words, not mine). They appeared willing to meet all of my unorthodox demands, like part time hours and flexible vacation. All I needed was the HR department to extend the official offer.

Both parties were aware of my upcoming vacation and assured me the offer would come in on the 1st of January, 3 days before my departure. Just one thing: I needed to apply to the position officially through their Workday site. Workday, like every other HR related software solution, is no fun to use. Whatever, I can jump through hoops, I thought. Even hoops where I’m given a random string of numbers as my user name. Thanks Workday.

According to the company HR contact, my application via Workday would cause a cascade of recruitment dominoes, triggering NDAs, pay set up, offer details, and various other employment necessities. With my application done, I narrowed down my list of things to negotiate depending on the offer details and waited.

Your Offer Got Lost In The Intranet

As the days passed and my suitcase was getting packed for my trip, I suspected I should have my offer but didn’t. I emailed the third-party recruiter for an update. You might wonder why I was still talking to the recruiter. Why wasn’t I talking directly to the HR contact? The answer is simple: I was never put in touch with the HR department. My only conduit to the Borg was via this recruiter. Luckily, we enjoyed working together and continued to bond over how dysfunctional the company was.

Back on track: the recruiter responded in less than 5 min with minimal punctuation that this was not okay and I should have had my offer days ago. At least I knew they didn’t secretly change their mind and ghost me. This triggered an investigation on the HR side to figure out where my offer was and why I didn’t have it.

A Canary Can’t Fail If There Are No Canaries

Background: a “canary” is a software term to describe a simple test or check to show something is working, at least basically. It comes from the phrase “canary in a coal mine.”

As I was on my cross-continental flights to a tropical paradise, the recruiting and offer debacle was beginning to unravel. The first hitch: most of the HR department was out of the office on a retreat or conference out of town so they weren’t as available to respond to candidates requesting their offers or third party recruiters trying to figure out where the offers were. The second hitch: the IT department decided the best time to migrate to a brand new HR system (i.e. Workday) is the week that the HR department is out of the office and not around to detect errors.

The message routed to me via the recruiter: “We just migrated to Workday and something went wrong so we aren’t sure where your offer is.” I requested they send a PDF version so I could at least review legal terminology, employment restrictions, and negotiate sooner rather than later. This seemed reasonable to me and my recruiter friend so we waited with the expectation that this offer would come along in an hour or two.

Do You Really Need An Offer?

By this point I’d already decided my trip was more important than the offer and proceeded enjoy the tropics. Every once in a while I’d ping the recruiter for an update on the offer that hadn’t come in and she’d say she didn’t know what the hold up was. This went on for a few days, bringing us to the 8th of January, a week after I was supposed to have my offer.

The HR contact, now in a long and confusing email thread with me and my recruiter, sent me my “offer”: a number describing my pay along with a annual bonus tier. I mean, I guess that’s a offer, in a sense. However, a job is more than pay. What about moonlighting policies? At will employment? Vacation? Health benefits? Anything? At this point I still had my wish list of negotiation points but nothing to negotiate against.

My recruiter and I chatted over a call when I had reliable Wi-Fi and agreed this wasn’t much of an offer in terms of details. There wasn’t even anything to sign, no legal agreement laid out. I discussed with her my negotiation criteria and she said she’d make it happen. She thanked me for my patience, responsiveness, and lack of complaint while the company was unresponsive, off track, and generally a mess.

I Could Be A Murderer

During the last days of my vacation, around the 18th of January, we agreed that I would start on the 30th of January. This seemed fine. I spent some time in limbo until the 25th when I realized I hadn’t been asked to do a background check. Who in the world is going to ask for a background check? People who are paranoid and want to make sure they aren’t immediately ejected from a new job because of an HR mix up.

I gently reminded HR that my start date was less than a week away and was there a criminal background check I needed to fill out? Response: Well, shit, you mean you didn’t get it already? I guess we have to manually trigger that Workday workflow and since none of us know how Workday works, it will take a few days.

Background checks can take up to two weeks and this was 5 days before my start date. I mean, I don’t mind if you don’t do a background check. I also don’t mind if you push my start date back. Could you just get your shit together?

Am I In The Right Place?

After the vacation ended, a sort of verbal agreement fell into place about my offer. I had given my start date and it seemed to be on track. Except for one thing: why hadn’t I signed an employment agreement? I’m not saying I like signing things but every other employer had one that outlined all the ways I could be fired immediately. Or sued. Or burned at the stake. It seemed important.

Right up until the day before I started, we still hadn’t figure out whether I needed to sign something or not. The HR department claimed I had accepted my offer in “the system” and I maintained that I had never signed a thing, though I’d be happy to do so once something came my way. As it turns out, the system had a few more problems.

When I started, they expected me the week after. That just meant that I had to fill out real paperwork for proof of eligibility of employment instead of the digital versions I was supposed to have gotten a week before I started. No big deal.

Oh, and you won’t be able to access any of your benefits. Hold on: I haven’t signed an offer, I’m not technically active in your system, and I have no benefits. Is this volunteer work or employment?

It’s just the new system, don’t worry about it.

Day 2

My second day of work, the HR department set up a meeting with me and my manager to discuss my strange obsession with the lack of employment agreement. I told them I develop software outside of work and wanted a guarantee that there would be no legal intellectual property infringement or that my software wouldn’t default to their ownership. The answer: “We have no such restrictions here and never have. Even if we did have them, we wouldn’t pursue them.”

Uh-huh. I didn’t believe it but couldn’t do anything about it. Well, on the plus side, I still hadn’t technically signed anything so I’m fine. Right?

Welcome to Company X

I’d decided to let go of this “signing a contract” business and move on. Until my second week. Workday blasted me with an email storm about all this legal bullshit I needed to sign. You are restricted in the software you develop outside of work. You will be immediately terminated on violation of the following work policies. You must fill out proof of employment. You can’t drink at work. All those signature requests finally came in, a week after I started.

I was pissed off. What kind of HR department doesn’t know the legal bindings of an employment at their company? And directly contradicts them? All I could do was send a passive aggressive email to HR and my manager explaining to them how there were legal documents I needed to sign and I likely didn’t see them because of the incompetence of HR and the poorly timed migration to Workday. Boo.

Volunteer Work

Finally, all this offer, recruitment, and legal agreement stuff is put aside and I got down to work. One, then two, then three weeks went by and I was getting the hang of things. Everything seemed fine. Until I got a few credit card bills and went to check my bank account where I had set up direct deposit pay. No money. Okay, maybe I hadn’t been here for a full pay period yet.

I checked the pay schedule on the HR site, which was a rabbit hole adventure through SharePoint, Workday, ServiceNow, and custom internal sites. It looked like I was due pay for 2 pay periods, almost 3. Huh. Well, it looks like I’m not getting paid.

I sent a message to the HR department through their online ticketing system and got this response back: “Your paycheck will be in the store.”

Background: This job was in the technology department of a retail company with several physical stores. Unfortunately, or maybe fortunately, I don’t work in a store. Either way, this begged the question: if I don’t work in a store, where is my paycheck?

What about the mail room? Surely, if they said “store” maybe it just meant “employee location”. I went up and down the building floors in search of something that looked like a mail room. I found something like it near the IT department but I don’t think they even knew of me in the system. At this point, that’s not surprising.

Finally, with a week gone by of me searching for my paychecks, I went to my manager.

Manager: Are you okay if we cancel today’s 1:1?

Me: Sure, there was just one thing I wanted to ask you about though.

Manager: Okay.

Me: I’m not getting paid…

Manager: What!? We are getting to the bottom of this right now!

*Walk to the team Admin*

Manager: Hi Admin, we have a bit of a problem *looks at me*

Me: I’m not getting paid.

Admin: Oh my God! That’s awful!

Manager:  Do you know anything about that?

Admin: I don’t really handle pay or anything. You’d have to talk to HR *turns to neighbor* Have you heard anything like this?

Neighbor: What is the problem?

Me: I’m not getting paid… I mean, I set up direct deposit over a month ago and I haven’t received anything.

Neighbor: Oh… you know, when I joined a year ago they sent my first few checks to the reception desk. Nobody told me about it and it took a while to find where they went. It might be worth checking there.

Manager and Admin: What? Why would they do that and not tell anyone?

Neighbor: *shrug*

Me: Well, I’ll go check and if not, we can escalate to HR.

In retrospect, this whole interaction was a little funny. How many times had I said “I’m not getting paid?” and it seemed like my coworkers were genuinely concerned about this problem. I went to the reception desk on another nondescript floor of my office building and asked if they had any mail for me. Voilà: there were all my employment checks, ready to be dropped into my bank account and swiftly redirected to pay my credit card bills.

By the end of all this, I was finally getting paid, I knew the legal parameters to my employment, and I had a firm distrust of HR and related software systems.

What I Learned?

  • There is always a legal contract to sign that should be presented before employment no matter what HR and related systems tells you
  • Always check your first pay period and verify you get your pay instead of waiting and draining your savings to cover bills your pay should have been covering
  • Dealing with incompetence creates a bond through struggle, even with a recruiter

 

Why Use LinkedIn?

This post will be about how I’ve used LinkedIn in my career and how recruiters on LinkedIn or otherwise can be used as a tool as well.

What Is LinkedIn?

If you are a working professional, you’ve probably heard of LinkedIn. At least for the English speaking, North American job markets. Like other professional job searching sites like Glassdoor, Hired, and Indeed, LinkedIn allows you to upload a resume and makes it searchable by companies and recruiters. Similarly, you can search and apply for jobs. It’s different for its social networking. I think of it as “Facebook for work “. It’s a lot less awkward to share your LinkedIn details than your Facebook profile. LinkedIn is a Microsoft acquisition. Back when that happened we bemoaned the data they’d be taking from us. Now, we’ve more or less forgotten.

Using LinkedIn To Your Advantage

Fishing For Jobs

By frequently updating your profile, you show up in more search results. This will boost you in “recently updated” results. The other way you show up in search results is keywords in your descriptions. Make sure to put a buzzword filled description for your work histories.

A “Living” Resume

Several companies often take a snapshot of your LinkedIn profile instead of a resume. This means you don’t need to spend time fiddling with font size and margins to fit that extra internship on one page. This is another reason to make your profile detailed. Since there aren’t any length restrictions on your LinkedIn profile, it’s a good opportunity to add more information about your past work.

Following Up

When a prospective recruiter, manager, or client meets with you, get their LinkedIn details. This is a great way to follow up because you can stalk them to get a better picture of the company they work for and their work history. Just a reminder: following up is a great way to improve your chances of landing a a client or job.

Other Uses Of LinkedIn

Recruiting

You can use LinkedIn to recruit old coworkers or find people to be your referral bonuses but I don’t. Occasionally if I know a position will help someone, sure, I’ll shoot them a message. I don’t want to turn into a part-time recruiter.

Job Searching

For a site that’s strongly advertised as a job hunting tool, it’s not the most diverse. You can only search for on-site, full-time positions. You can search for jobs in Remote, Oregon but not remote working positions. Sites like Remotive and We Work Remotely are better for jobs you can do anywhere. Even Remote, Oregon.

Watching Companies Or People

Watching people or companies is useful if you track company performance for investments. You may also be looking for information on lay-offs or massive hiring initiatives. You could also follow business leaders that inspire you for opportunities to hear them speak or read books they’ve published. This is a way to understand trends in your industry and adapt to them… only if they’re a large enough company to spend money on social media specialists.

Getting Industry News

Like watching companies or people, you can get news digests for your industry. Sometimes I’ll take a look and get a simple digest of information. It’s a mix of study results, platitudes from leaders, and gossip. This is a good source of water cooler topics.

Joining Groups

Half the time I forget this is a feature because of how hard it is to make use of it. There are alumni groups for schools and companies. The idea is to be able to refer jobs to group members and potentially mentor people. As with any internet social media groups, they vary widely. Group conversations are more fun on a casual forum like slack so I use that instead.

How LinkedIn Is Getting Me Closer To My Dream Job

LinkedIn can help get you a dream job. It’s not the best fit because I’m looking for remote, part-time, or freelance work. It can still be useful. Some of those irritating features helped connect me with work I wanted.

Following Up

Following up is really important. I think this is the third time I’ve said this in this post but it’s worth reiterating. Your potential clients aren’t going to contact you if they’re busy (which they often are) or maybe they a client for a few months down the line instead of today. LinkedIn in as a great way to take a name and turn it into a picture of a person or company along with a way to contact them and see what they’re putting out there. It also allows you to see their connections and find more potential clients. Typically, people in similar business or career stages cluster. So, what if this person was a “miss”? You can also check out their company to see what things you should avoid.

Call My Bluff, I Dare You

Recruiters are like a fungus: they bloom, you wipe them out, they lie in wait, and return with equal or greater power later. At first, I ignored them or declined connections. After a while, I wondered what they would do if I asked for a part-time, remote contract. When I did, a lot of them backed off and didn’t come back. However, there were a few who started a discussion.

I think of these as the “good” recruiters. They didn’t give up when I gave them these difficult requirements, they started to ask why I needed them and what types of negotiation I’d be willing to do. I started building potential work schedules in my head: 20 hours per week onsite, 30 hours per week remote, or fully remote 3 month contract. Surprisingly, they went out and came back with jobs meeting these criteria. Not only that, they frequently followed up to tell me how the search was going and which companies were interested in my work proposal.

The takeaway: if you can come up with a job worth talking to a recruiter for, they might find it for you.

What Doesn’t Kill You Slowly Grinds Away Your Sanity: Psychological Burnout

Often you will hear people say that someone is “burnt out” or “I was really burnt out on [project/team/company].” Casually, this means you are exhausted or temporarily stressed on a team. This often is thought of as a passing condition. Unfortunately, there is a more formal type of burnout called “psychological burnout” or “occupational burnout.” Here I’ll talk about what this is, how it can ruin your life, and how to fix it.

IMG_20181023_092942
Top: this is your brain. Bottom: this is your brain crushed by burnout.

What Is It?

Burnout is a pathologic syndrome in which prolonged occupational stress leads to emotional and physical depletion and ultimately to the development of maladaptive behaviors (e.g., cynicism, depersonalization, hostility, detachment).

https://www.sciencedirect.com/topics/nursing-and-health-professions/burnout-psychology

This is a fairly formal definition and doesn’t include a few key points:

  • This type of burnout can last years
  • You may develop long lasting mental health problems such as depression, alcoholism, and eating disorders
  • It can take months or years to recover
  • By the time you notice your “maladaptive behaviors”, it’s already happened to you

You May Have Psychological Burnout If…

We are all different and the signs of this type of condition are different per person too. On top of that, we have such poor mental health support (in North America) that we don’t recognize these problems as repeated exposure to stressful situations. Remember, these “symptoms” are a stress reaction, not a personality trait.

What To Look For:

  • No matter how hard you try to stay optimistic, you can’t see anything going well and you constantly fall into cynicism and criticism at work or elsewhere.
  • You take a lot of breaks at work to get away from work with activities like eating, drinking, or over-exercising.
  • Your week follows a pattern like this: work Monday to Friday, sleep Saturday to Sunday.
  • You become more resentful of people asking you do to things even if they are simple.
  • You start blaming yourself for not working hard enough, not being tough enough, or not being smart enough to overcome the challenges you have at work.
  • You enter a protective combat mode: you are argumentative and defensive about any changes or comments related to your work. When you look back on what caused it, these are usually no attacks on you but you can’t stop yourself from reacting that way.
  • You feel isolated. This can be emotional isolation: no one is there to help you, you need to fix this all on your own, your coworkers or boss don’t have your back. Or physical isolation: you start working from home more, you don’t want to participate in any team activities, you stop responding to emails or chats messages.
  • And much, much more…

The worst part is the slow creep: you won’t notice a big, sudden change. Instead, you’ll find yourself here without knowing how and you’re not sure how to get out.

Causes

When we talk about burn out in the casual sense, it’s usually caused by a tight deadline, late nights, or the frenzied kind of work we associate with “crunch time”. Interestingly, this isn’t the same as what causes psychological burnout.

This is how I sum up the cause of psychological burnout:

You put effort into something and you got no result (or not the one you expected).

Here are some examples of how that shows up:

  • You are asked to write a design or build a feature and just as you are halfway through, it’s cancelled
  • You put up a code review and no one reviews it for days or weeks
  • You prepare a proposal for a new feature, project, initiative, anything and it’s brushed aside by your manager or team
  • You write a masterpiece of an email reporting some fabulous result or finding and no one responds
  • You ask questions or make comments in team meetings and they are ignored

Some other causes you’ll see listed on medical websites call out other things like dysfunctional teams, lack of control, or boredom. To me, these fall into work that’s not getting the result you expect. If you are trying to talk to your team and they don’t respond, that’s effort wasted. If you find out your project was cut because you have no say in your team road map, more effort wasted. I find that any action by the team or company that sends the message of “you did all this work and we don’t care” is hugely damaging. It makes sense that people withdraw, start thinking nothing they do matters, and, of course, “develop maladaptive coping behaviors.”

When It’s Too Late

Too late to me means you’ve gone so far into your emotional hell that you start to see your relationships, productivity, and physical health suffer. “Too late” doesn’t mean you can’t get better, it just means that you will need to make a significant change in your lifestyle to recover from your new and horrible condition. Here are a few examples of what too late looks like:

  • You a few beers after work to get rid of the unhappiness built up during the day
  • You can’t remember the last time you slept well and find yourself self medicating with pot, alcohol, sleep medication or other substances to get to sleep at night
  • You’re are late to work because you can’t get yourself out of bed anymore
  • Your coworkers and managers tell you you’re angry and critical
  • Your friends are telling you to quit or they’re not talking with you as much because they’re tired of your work rants
  • You’ve been to visit your doctor to either get anti-depressants or increase doses
  • You have other minor physical problems building up: regular indigestion, random aches and pains, sprains, headaches, frequent colds or flues

These signs differ for each person. Some choose to drink while others over-exercise. Some will get angry and others consider self-harm. Either way, substance abuse, uncontrolled emotion, mood altering prescriptions, and a decline in personal relationships mean this is now taking over your life and something needs to change.

How To Recover

How did this happen? It’s complicated. A lot of different pieces came together at the same time to create this situation. To solve it, it’s also going to take a lot of different pieces coming together to work to get you better. Here are a few of the bigger things you can do to find your path to recovery:

  • Go to therapist or counselor: this person will help you identify the situations leading to burnout and track your improvement or lack thereof over time
  • See a doctor for mental health evaluation: you may have stress induced depression, anxiety, ulcers, or insomnia that needs medications and management with a physician
  • Take a break: take time off for as long as you can. By taking time off, you will see how unhealthy your life has become and seek better opportunities.
  • Change jobs: consider changing teams, managers, or companies depending on what you learn from introspection and counseling
  • Change careers: many people choose to change careers to escape the damage of burnout. Going back to school, choosing to invest in family, or becoming a travel blogger are common escape routes.

Make sure you do something. If you choose inaction, you’re damaging yourself physically, mentally, and potentially financially (medical bills, being fired).

Finally, find things that counteract the cause of burnout:

Do things that turn your efforts into rewards.

It’s Not That Bad Yet

If you’re reading through these signs and think “I’m putting effort and not seeing results but I’m just frustrated, not a depressed alcoholic” then you’re in luck! You can avoid the worst by getting away from your situation early. When you start to see people ignoring, cancelling, brushing off, or otherwise not returning anything on your effort, evaluate whether or not it’s worth staying where you are. It’s not just about wasting your time, it’s about damaging your motivation and joy in working. You can use mindfulness to identify what is going well and what isn’t to get yourself moving in a better direction.

Lightning Talk: Mindfulness To Find Your Dream Job

I did a 5 minute lightning talk at a women in tech conference. Here’s the blog version.

20180925_093905
Measuring Your Heart

Everything that irritates us about others can lead us to an understanding of ourselves.

Carl Jung

As Carl Jung points out, we can learn a lot about our likes and dislikes by paying attention to the things that irritate us. That is more or less how this works.

3 Simple Steps

Step 1: Collect

Before we can answer any questions about what we like or dislike at work, we need to collect data. According to The Paradox Of Choice, a book that explore our biases when remembering experiences and making choices, we judge whether we like an experience based on our feelings at the end. If you had a mostly bad day at work but the last hour or two were great, you might think you had a great day. For that reason, I recommend using mindfulness to collect data based on small tasks or events in your day rather than trying to decide whether you like your work at the end of the day, week, or month.

How does this work?

Trigger

Building habits is hard. According to The Power of Habit, the best way to build a habit is to associate it with an existing trigger. For example, your trigger might be checking your phone or going to the bathroom. Every time you do this, take a second to use the mindfulness technique to record data about your feelings about your job.

Mindfulness

If you’re not familiar with mindfulness, don’t worry: this is really tiny aspect used as a focus tool. First, you need to remove distractions. I use physical sensation to draw attention to right now. Hold fabric between your fingers and rub them together to really pay attention to the texture of the cloth. You can draw one finger along the inside of another finger to generate a sensation that grabs your attention. Bringing focus to a physical sensation is all you need to temporarily dislodge yourself from the barrage of thoughts about everything else but now.

Once you have your attention, do a “body scan”. This is reading your own body language. Are your shoulders tensed or relaxed? Are you breathing slowly and deeply or quickly and shallow? Are you fidgeting or balling your hands in fists? A lot of these little things are easily noticed if you take a second to pay attention and tell you how you’re feeling.

Record

Each “record” should be a pair: what were you doing and how did you feel after. These can be as detailed or sparse as you want. As you repeat the exercise, you will be able to adjust according to what data is most useful to you.

Examples:

  • One on one with manager: happy, relaxed, confident
  • Meeting with stakeholder: tense, crossed arms, needed to take a walk
  • Publishing code review: godlike
  • Release war room: why do I do this job?

Step 2: Categorize

Next we categorize the data. There can be 2 or more categories and they can be whatever you want. My favorite is “good vs. bad” but other useful ones are “stressful vs. calming”, “energizing vs. draining”, or “empowering vs. demotivating”. Depending on what you want to change or understand, you can adjust your categories. This technique can be used to sort your activities into groups like “helps promotion vs. busy work” or “builds skills vs. menial tasks”. These can be used to stay on track for career goals.

Example:

Good

  • Publishing code review
  • Figuring out root cause of bug
  • Successful release to production
  • One on one with manager

Bad

  • Team retrospective
  • Meetings with stakeholders
  • Writing integration test for legacy features
  • Release war room

Step 3: Interpret

Finally, figuring out your dream. I can’t promise this will get you the best job in your next career change but if you do this regularly, it will make you more aware of what to change now and look for in the future. How does that work?

From the example above I can see a few trends:

  • I tend not to like meetings
  • I have a good relationship with my manager
  • I enjoy releasing code and moving code along in the development process
  • I enjoy solving problems
  • I don’t like being in high stress situations like war rooms or situations that may be otherwise delicate like retrospectives
  • I tend to prefer solo tasks
  • It looks like I prefer smaller meeting sizes
  • I might have a good relationship with my manager but not my team based on the retrospective being in the “bad” column
  • I might not like partner teams if the war room and stakeholder meeting both fell under bad
  • I probably like our development infrastructure since I liked publishing my code review and releasing my code

If you see the complex ones with “might” and “probably”, you might need better data around those events.

Now, I have this blurb to put on my LinkedIn profile:

I am looking for a position that values independent workers who work closely with their core teams. I enjoy working for managers who empower their engineers to stay focused on their project work. I prefer written communication to meetings and I’m strongly in favor of remote work. I am passionate about devops and development process excellence. I gain great satisfaction from a job were I can problem solve when digging into the root cause of issues.

It sounds like my likes and dislikes at work make me a perfect devops, quality, or infrastructure engineer on a remote team that values independent workers. When I first did this exercise and saw this data, I was on a team that prioritized frequent collaboration across multiple teams and mandated feature development over process or product improvement. This might explain why I wasn’t so happy there.

This also leads to key terms for a job search:

Independent, single manager or fewer managers, written communication, devops, operational excellence, remote, debugging, quality

Here’s an random job for a Remote Security Engineer at Elasticsearch. Let’s see how many of those traits I can find (I’ve bolded the relevant parts):

Engineering Philosophy

Engineering a distributed system that is easy to operate via elegantly designed APIs is a challenge. It requires software development skills and the ability to think like a user. We care deeply about giving you ownership of what you’re working on [Independence]. Our company believes we achieve greatness when they are set free and are surrounded and challenged by their peers. At Elastic, we effectively don’t have a hierarchy to speak of [Less multi-manager meetings]; we feel that you should be empowered to comment on anything, regardless of your role within the company.

What You Will Be Doing:

  • Evolving the security features of Elasticsearch.
  • Implement authentication, authorization, and other security protocols within Elasticsearch.
  • Build the foundation of security for the Elastic Stack using knowledge of cryptographic primitives and security trade-offs.
  • Prototype new ideas and experiment openly.
  • Collaborating in the open with the Elasticsearch team, Elastic Stack users, and others supporting open source projects.
  • Working with the community on bugs and performance issues and assisting out support engineers with tougher customer issues. [Debugging]

Tally this up: remote, independent, few multi-manager meetings, quality (comes with security), and debugging with customers. This basically meets everything but the devops requirement. Before I did this exercise, I wouldn’t have looked for or considered this job. It looks like a much better fit for my likes and dislikes than my job at the time was.

Finally, you don’t actually need to leave your current job to “find” your dream job. If you bring this data to your manager, you can have a conversation to improve your current day to day work.

Examples:

  • Hi Manager, I really enjoying improving and augmenting our development infrastructure. Is there any bandwidth for me to spend more time on tasks like this?
  • Dear Manager, I find the stakeholder and war room meetings with Team X are very chaotic and distracting. Do you think you could help me push for a conference call so I don’t need to be in the room and be less distracted?
  • To the Manager whom it may concern, I understand that you’ve been placing me in leadership positions for several new products. While I think this is a great compliment for the trust you have in me, I want to work with you to make time for doing what I love at this job: crushing bugs and solving problems.
  • Meetings suck. Please make them stop.

How you phrase these has more to do with Crucial Conversations than anything else. At the very least, you communicate what you want more of or less of.

Brush Twice, Floss Once

How often should you do this? I recommend 5 to 10 consecutive business days with a handful of measurements per day to get a good sense of your average work day. Be careful of the time frame you choose. If another significant life event is going on or something else is changing, you may be measuring your reaction to that other thing instead of your reaction to your job.

Tools

Tools for setting triggers:

  • Phone alarms
  • Calendar reminders
  • Apps like Dailio

Tools for measuring:

  • Coloring or tagging your calendar meetings with categories describing your reactions to them
  • Apps like Dailio
  • Pen and Paper

Tools for interpreting:

  • Pen and paper
  • Apps, once again, like Dailio

Happy Self Quantifying.