Course Review: Docker for Java Developers

This post will go over a course Lynda.com (company owned by LinkedIn and by extension Microsoft) to learn about Docker for Java Developers.

Lynda.com Course

Docker

Java 

Usefulness And Overview

Currently, the course topic is relevant. The paradigm of “containerization” or releasing your software as self-contained collections of related packages and dependencies called “containers” is catching on quickly across services in the industry. Even though this says it’s for Java developers, it’s not really Java specific. All the concepts and commands used are language independent to a certain extent. The part that the course missed out on was Kubernetes, a fast growing solution from Google related to container management.

Is this particular course a good use of your time to learn about Docker? Maybe. A lot of the content was easily found in documentation or by searching online. If you like information presented in sequence with context, yes, this is a good choice. Otherwise, it may be tedious or too shallow in topic coverage.

The course follows a mini-lecture with demo format. You can copy the course materials and follow along with the demo. The course starts off assuming you don’t have Docker set up. The content begins with installation and follows a simple web app through containerization, deployment, release and scaling. It further goes through monitoring options and maintenance commands.

Course Details

  • The instructor introduces Docker by showing you the download websites and how to install on various operating systems.
  • He introduces the course material by showing how to use git to clone the course materials and use them.
  • The first use of Docker is to create a container with the sample application and use the start and stop commands along with options. List running containers as well.
  • Next, the website is deployed using the container and various health checks are shown. An important not here was how container health is different than application health.
  • The lecture shows how to automate the use of containers in a build and release flow.
  • Container sharing, tagging, and maintenance in a container store are shown along with best practices for tagging.
  • Next was a more complex application with multiple services with a container that needed to be started up in a particular order (application and database).
  • He went over the use of container contexts to allow running multiple instances of a container on the same host.
  • This then moved into more advanced use of containers including swarm mode with rolling updates, certificate rotation, auto-scaling, and fail over.
  • He went over container maintenance and use of the master node to manage other nodes in the cluster including the use of drain and pause commands.
  • Another advanced topic covered was storage nodes and how to use container independent storage or distributed storage solutions with containers.
  • As the last topic, he went over tools and other plugins for monitoring including the stats CLI tool, Prometheus and C Advisor.
  • He did not go over Kubernetes but recommended it as a future topic.

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.

Tales from the Git Keeper: Christmas is Canceled

This is a tale about how I had to work through Christmas as a result of mostly bad luck.

20180925_100433.jpg

Background

I was working at a large tech company on a new product that had been available less than a year. Since this was the first Christmas for this product, the company wasn’t sure what to expect for demand or cost of failure. I was working on this product for almost 2 years. There were 3 other people on my team. The most senior member was out for parental leave, the next was out on vacation, and the last had been on the team for 2 months out of college. To be clear, I was on my own for the first Christmas period of a reportedly hot, new product. What makes matters even worse is how the product generated scale. People could buy the product any time but it only generated traffic when it was registered to a new user. We could not predict when this would happen. We suspected it would happen for several million customers between 6 am and 3 pm on Christmas day in my timezone. This was projected to bring in triple to dectuple our existing load.

Week Before Christmas

The above circumstances should be a sign that risk needs to be mitigated. Unfortunately for me, this didn’t go quite as well as it could have. Why:

  1. The range of projected traffic was several orders of magnitude wide. This means we could have gotten 10 requests per second or 1000. That was the best estimates.
  2. When running scaling tests, we could generate a specific number of requests but no way of understanding what data should be in the requests. Should it be 10 requests with 10 different customers or 10 with the same customer? It turns out that made a massive scaling difference to my services.
  3. The company created tier-1 SWAT teams to resolve issues across the product before paging the product specific engineers. These people had generic sets of instructions for common problems. What this didn’t include was how to manage scaling for the database we were using. As it turns out, the prescribed action was exactly the opposite of what should have been done.
  4. Finally, the company actually had no idea of the impact of failure. We just assumed all failure was bad.

On a personal note, I decided to schedule going to a friend’s house just for the Christmas dinner. I was away from family and thought I’d be able to spare 3 hours for dinner when I was assured nothing should go wrong. I even though it would be an uneventful Christmas where I could relax, eat, and be happy. I was wrong.

Day of Christmas

7 am: Paged awake and told to get on a conference call immediately.

NOTE: Once in a conference call or chat, you need to be constantly available and are asked for updates every 5 min regardless of how boring, tense, or upsetting it is.

7:10 am: I join a chat room with my manager, my skip manager, the SWAT team engineer, the SWAT team engineer’s manager, and my director. That’s right: 2 engineers and 4 managers.

7:30 am: Figured out the problem. For those who are technical, we had an SQL database with a limited number of connections and all connections were timing out due to long running queries. This means that all requests were taking really long and failing. This is one of the reasons why people don’t like using SQL in large scale systems. The only way to recover from this is to stop traffic to the SQL database until the connection pool is no longer thrashing and then gradually increase traffic until you start seeing connection timeouts again. Reduce traffic and keep it throttled to just before connection timeouts start. Normally, you should determine this rate of traffic before a massive event so you don’t have to do it on the fly.

7:35 am: I go to the chat window to explain my findings.

Chat with Manager, Skip Manager, Director, SWAT Engineer, SWAT Manager

Me: Hey, I found the issue.

SWAT Eng: Yes, me too. I’m scaling up the service.

Me: NO DONT

Me: DO NOT SCALE UP

Me: It will make it worse!

SWAT Eng: I can’t cancel the scale request. But what’s wrong? It’s running out of connections. That means we should scale up.

Me: No, the database is running out of connections, not the hosts. Scaling up the hosts is effectively DDOSing the database. You need to scale down.

Skip Manager: Can you explain why?

Me: I can but later. We need to scale down.

Director: Just scale down.

7:40 am: Finally take my face of my dining room table where it slammed after seeing them scale up. I next described what was happening to the service and how to recover. The SWAT engineer and manager left the room since I was now on point to handle this.

8 am – 1 pm: Repeatedly scaling down and up to find the safest traffic level. Each scaling action took 30 min and an additional 10 min of monitoring. All throughout I needed to give detailed reports to the managers in the room.

1 pm: We reached a stable state where services were running at maximum capacity but they still couldn’t keep up with load. Skip Manager correctly identified a possibility of improving database performance to increase throughput. He started taking a snapshot of the database to make a read replica. A week later, that snapshot still hadn’t completed.

3 pm: I hit the point of emotional breakdown after not eating, washing, sleeping, and realizing I couldn’t go to Christmas dinner. I may have curled up in a ball and cried for a few minutes.

3:15 pm: Me and the managers worked on identifying database optimization and attempting them. We finally gave up after realizing we couldn’t make any changes to a live database due to resource contention.

4 pm: Inhaled some instant ramen. This was the first food that day.

6 pm to 7 pm: Casual chatting about our favorite old video games and movies while waiting for SQL EXPLAIN and long running query analysis.

7 pm – 8 pm: We admit that we cannot scale further and no amount of SQL work can be done without a read replica. Additionally, I started making another snapshot in hopes that we could get two working at different times to minimize data loss.

8 pm – 8:30 pm: Excuse myself for 30 min to shower.

8:30 pm to 9 pm: We connect with other teams to determine impact to customer. Turns out, there was none. No one noticed or cared. Good to know I worked a 16 hour day under high stress for no reason.

9 pm to 11 pm: We created lists of items to monitor, action items for after the Christmas traffic, data we needed for recover, and how to communicate to partner teams what the outage was. We agreed to come back online tomorrow morning at 7 am to see how the snapshots were going and to check on the issue.

Day After Christmas (AKA Boxing Day)

7 am: Get up and run to my computer so I’m not paged for being late for check-in.

7:05 am – 8 am: Confirming that nothing has changed, no one cares that we have crashed and burned, and the database replicas are not done yet.

8 am – 9 am: Discussion with managers what to do now.

9 am: Repeating previous attempts to improve indexes on the database and search for slow queries now that the traffic has decreased. Also collect data for the reports to be filed during the next business day.

12 pm: We throw in the towel and decide to re-baseline the entire system when we get in to work after the holidays.

Christmas “Gifts”

Much like Ebenezer, I also learned a few things through this Christmas trauma:

  • Being on call sucks. Before this I was okay with being woken up at 2 am once in a while or working a few hours on weekends. No more.
  • Being a manager sucks. My managers shielded me from the verbal impaling going on in the manager level meetings but I heard about it.
  • I learned where my breaking point was in terms of working on something stressful for an extended period of time. Then I kept working past it. Don’t do that.
  • After this, I told people to f*ck right off if they couldn’t prove their problem was causing financial loss. No way am I going to waste my personal time on something that doesn’t matter again.
  • There is a large community of sleep-deprived, beer drinking engineers commiserating over this and similar experiences all the time. Be nice to them.
  • When a big operational event is planned, have a backup so the primary can shower, eat, and cry in a corner if they need to.
  • While it didn’t erase the trauma, trading my Christmas and half day of work for another week of paid time off was something I asked for and enjoyed taking.

Two years later…

Me: I quit.

Manager: Left the organization. Still at the company.

Skip Manager: Quit.

Director: Left the organization. Still at the company.

SWAT Engineer: Quit.

SWAT Manager: Left the organization. Still at the company.

The Service That Failed: Deleted. It was rewritten 1 year later.

No one involved in this incident stayed on the product longer than 2 years after the event. Not even the service lasted.

An Independent Venture: Customer Number… 0

Finding customers as a freelancer or contractor starting out is hard. These are some failed attempts at getting customers and what I learned.

 

Prospect 1: Work For Free

The first prospective client I spoke with was through a Slack networking channel. He saw when I posted I was looking for freelance work and asked me to join his other Slack channel that pooled freelancers. He said his team posted for freelance work needed on projects and those in the channel could claim the work.

This sounded fine. Until he described the work he needed me to do. For free. He mentioned that since I wasn’t an expert, he didn’t want to pay me. We spent some time negotiating  a lower fee with specific deadlines and expectations. It didn’t pan out and I got the impression he just didn’t want to pay for the work.

Prospect 2: Online Course Instructor

The second prospective client was found through Upwork. This position was for teaching a few lectures on common topics like Git, Test Driven Development, and DevOps. This sounded like a piece of cake. When I contacted the hiring department, we agreed upon expectations as well as pay. They asked me to do a sample lecture on a topic of my choice as an interview for the position. I did well on the interview. They sent me a contract to sign. And I never heard from them again. Sadly, I never got the contact info of the department that had reviewed and approved my interview, otherwise this might have turned into actual work.

Prospect 3: StartUp Chats

On several different occasions, I’ve met with CTOs, CEOs, or COOs of various startups to discuss potential freelance work. All of the startups are in the same position: they have a good base of engineers, they can’t afford to hire more, and they need a few more people temporarily to get their project to the next milestone. For each of them I described what specific work I could do on their project, for how long, and for what rate. Every single one of them said “I can definitely find a way to have us work together.” No, I didn’t really believe them but at some point one of them might be telling the truth. One of them was a friend of mine and he kept me updated on the contract progress. He was slowly suffocating under a mountain of work to the point where he didn’t even had time to list enough of it to create a freelancing contract. I’ve chosen to assume that all of the startups have similar challenges and won’t sweat the loss. On the other hand, I also gave them my contact information rather than getting theirs. This meant I couldn’t follow up with them. Now I know I always need to get a business card.

How did I meet these people?

Learning From Failure

I don’t see these failed attempts at landing clients failures since each time I learn something new. With the first client I learned that people will ask me to work for free and I need to be firm on saying no. With the second client, I learned that talking to hiring departments is a waste of time if my contract will be with a different department. With all the startups, I learned the importance of following up. A little nudge is enough to get you a lot of work.

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.

When To Quit: Motivations And Fears

Have you ever been alarmed at seeing your coworkers leaving your company in droves? Or hearing about it at other companies? Should you be quitting too? Here I’ll go over factors that impact whether to quit and how to determine if your fears of quitting are justified.

space rocket launching
What quitting looks like to me represented with a photo by Pixabay on Pexels.com

Read The Signs

If you’re not one of those people constantly on the look out for another step up, you probably don’t think of quitting your job regularly. Here are some signs that might tell you it’s time to consider it:

  • You dread going to work or come home feeling really drained regularly.
  • You don’t feel emotionally invested in your work.
  • You haven’t changed positions or jobs for the past 5 years.
  • When people ask you what you like about your job, one of the first or only things you say is:
    • I really like the people.
    • My manager never puts any pressure on me.
    • I mean, the benefits are good.
    • I can’t complain.
  • You wish you could learn new skills on the job.
  • You keep telling yourself you’ll get that promotion next year.
  • You remember how your team was so much better before.
  • People start telling you about other great positions (not recruiters or managers).
  • You’re bored at work all the time.

Just because your favorite thing about your job is the benefits, people, or stability doesn’t mean your job is bad. It means there may be a lack of engagement. This leads to low skill growth and decreased desirability for future positions. If you are near retirement, this is okay. If you’re early or mid-career, this might mean you’re going to have a hard time finding another job. If you’re not engaged in your work, your work quality is probably not your best. This can lead to all kinds of bad feelings both from within, like guilt or despondency, and without, like people thinking you’re a lazy procrastinator.

But If I Quit…

There are so many reasons that come up when you think of quitting. It could be small, like not wanting to miss your favorite coffee shop, or big, like being worried about visa sponsorship. First, it’s okay to have these worries. Second, write them down and try to prioritize them in order of biggest worry. This is going to be a useful way to prioritize traits in your next job.

Example:

  1. Fear of being deported due to lack of visa support. This turns into: Confirm with recruiter and/or HR that visa support will be provided.
  2. Fear of getting a longer commute, meaning more stress, money, and time. This turns into: Ask about commuting support, work from home options, and potentially only look at companies within a certain distance of your home.
  3. Irritation at having to rollover your HSA. This turns into: Look up the HSA rollover policies and see if it’s worth rolling over your balance or just reinvesting within the same HSA.

Fears can be used to identify completely reasonable concerns with quitting. You can turn them into achievable requirements for your next position.

No You’re Biased

Let’s talk about cognitive biases. Here’s an example of an internal stream of thought along with some biases identified within it:

Okay, so this job isn’t going as well as you thought but you’ve already spent the time and effort to get it, why not give it a little more time? [Loss Aversion]. On top of that, you’ve contributed so much code, documentation, process, and team development effort here [IKEA effect]. Is it really that bad? It would be much nicer if things stayed the same, right? [Status Quo Bias]. After all, this is a great job because you chose to take it[Choice Supportive Bias]. In fact, you have this job and there are tons of people that would want it [Endowment effect]. Certainly, all your coworkers seem to like it here so you should too [Bandwagon effect]. They all understand that this company works a certain way and that’s how we stay successful [System Justification]. In the end, it’s going to be so hard to choose from all the available jobs that you might as well stick with this one [Default Effect].

First, what’s a cognitive bias? In short, it’s an irrational way of thinking that leads to decisions or actions not based in reality. Here’s another way to think of it: your brain is doing the best it can to ensure your success and sometimes that means making decisions based off of fear instead of reality. How do you combat this when this happens unconsciously?

In general, you can counter biases by broadening your view and working to look at things objectively (note: this isn’t easy). Let’s see some examples:

  • Endowment effect and Choice Supportive Bias: You think your job is great because it’s your job. Counterpoint: First, any job could be your job, which means any job could be great. Second, your job isn’t unique. There are other jobs almost the same as your current one. So, is it so scary to leave your job for another that offers you the same status?
  • Loss Aversion: Also known as the Sunk Cost Fallacy, you tell yourself you’ve already spent so much time and effort here that you don’t want to leave that all behind. Counterpoint: What about the time and effort you’ve spent on your career? You’re not leaving that behind. Or the time and effort you’ve spent building a network with your coworkers? That also stays. The effort put to your job isn’t lost, it’s just a piece of a larger whole that is your career.
  • IKEA Effect: This sh*t is yours. You built it with your bare hands over multiple late nights and with extreme sleep deprivation. You can’t just leave it. Counterpoint: The thing is, you’re going to ideally retire at some point and there goes your work. Know that you can’t hold on to it forever. Secondly, think of all the work you’ve ever done in your entire life. Your work contributions are not limited to this specific job and those contributions don’t go away after you start working in another segment of the limitless pool of work that needs to be done in this world. No one can take your achievements or accomplishments from you even if you quit your job.
  • Bandwagon Effect, System Justification, and Status Quo Bias: These ones are interesting because they are all related to the fear of being different, standing out, and going against the norm. This can cause fear of social rejection. Counterpoint: Broaden your view to include not just your coworkers and bosses, but all workers in your sector. Do they think your job is great? Take a look at Glassdoor. Is your managerial structure great or abusive? Is it really worth keeping the status quo when only some people think your job is the best and your managers are driving you into the ground?
  • Default Effect: This one is also interesting because it could signal another problem. On one hand, you could be lazy. Or, you could be immobilized with stress when thinking of changing jobs. If you’re just lazy or thinking that it will be fine if you do nothing, you can try to broaden your view and collect data on your job vs. others to get a more objective perspective. However, if you are in a job you don’t like and can’t change because of anxiety, you might need to get help from someone who can coach you through the change.

In all these cases there are a few generic ways to gain objectivity:

  • What would you say to a friend in your situation?
  • What would you say to a stranger in your situation?
  • Ask your friend to look at the data you’ve presented and see what they conclude (try not to lead them to a decision)
  • Ask a stranger the same you asked your friend
  • Whether good or bad, there are tons of posts on Yahoo!Answers and Reddit by people trying to figure out this very thing

Why ask strangers and friends? The difference can be useful because you might be able to see the biases in action with the differences. Additionally, friends know your strengths and weaknesses better than a stranger so they will respond in a way tailored to you. A stranger doesn’t know you and will give the most general answer.

Where do I find this stranger? You’ll unfortunately want to reach into your network and find an engineer you used to work with, an old boss, someone you met at a networking event, or even a career coach if you’d like a more formal evaluation.

The bottom line is that your brain is going to try to protect you when you are stressed. Sometimes the decisions made in a time of stress are not the best long term so work on collecting more information to support them.

ISO: Another Pond

Here are a few reasons why you should always be considering changing jobs.

  • Does your current position build skills on the job that will make you more appealing to the market? If you’re using 20 year old technology or you haven’t learned anything new in the past few years, you might be hurting your career by staying.
  • Do you have benefits supporting continuing education? Some companies pay for master’s degrees or additional certifications.
  • Are you supported in trying new roles? Maybe you don’t want to be an engineer and instead want to try out project management. There are companies that support this transition and others don’t.
  • Promotions. Every place has a different way of promoting. If the job you’re at doesn’t have a good promotion track, you can look for a place that does.
  • Money! When you change jobs, there’s a new opportunity to negotiate a higher salary than you currently have. In the tech market, you can expect a 20% salary increase or more with each job change. That really stacks up after a few job switches.
  • You can grow your experience and diversity of thought by being in a different work environment.
  • Even if you’re not looking for a job for yourself, by finding out about potential new jobs you can be a great resources for friends and coworkers who do want to switch. When you do favors for others, they tend to return them. This could lead to an even better opportunity further down the line.
  • Do you want to travel the world? Some companies offer relocation benefits for internal transfers to international offices. You could live in a different country every few years and round out back at home if you want.

Show Me Numbers

I’ve mentioned being objective and rational a lot. Numbers and hard data make it clearer whether you benefit from quitting. Here are some numerical data you can collect and compare.

  • Money: what do you make now vs. what you could be making
  • Happiness: This might take a little work. Count the number of days when you’re happy or not. You can also check out some mindfulness practices here. Think of what your ideal is and compare.
  • Skills: List the skills you want to learn vs. the skills available to learn at your job.
  • Location: Measure the commute times between your current workplace and what your ideal commute times would be. You can also measure parking costs or time on public transit.
  • Family: Compare parental benefits if you’re planning to start a family.
  • Benefits: Look at health benefits, 401k, stock awards, commute reimbursement, fitness benefits, or anything else you have or are missing.
  • Networking: Consider the people you are working with. Do you want to have more or less experienced people? Do you want more diversity in your workplace?
  • Future: Do you want to move to another country? Does your current position support that or have other options like remote that would let you travel?

Taking these pieces of data and putting them into “current position has” and “want but current position doesn’t have” will help show the gap between your current and ideal position. Prioritize them and determine what you would jump ship for.

This Is Fine

It is okay to like your job and want to stay. In fact, it’s great if you’ve found a job where you think you’d like to stay for a long time and feel has the right setup for long term career growth. That is an enviable position. Potentially even more enviable than someone who’s “conquered” the FANG interviews and probably has a stupidly high salary. Everyone chooses their own path and because you’re the only one who reaps the benefits, it doesn’t matter what the rest of the world is doing. Happy quitting (or staying and enjoying your current job).

Book Report: Remote: Office Not Required

Remote: Office Not Required Cover

Book link

Book site

Summary

If you’ve thought of working remotely or having a remote team, this book is right for you. If you’re dubious about the benefits or if you want to build a case for remote work, this book will go through all the concerns, benefits, excuses, and best practices for successfully building a remote work team and culture. This is the book you wish your managers read before they told you they wouldn’t support working from home.


Remote Work Is Good for Humanity

Why now?

Why is remote work such a big topic now compared to before? 20 or 30 years ago, the only options for remote work were via landline telephones. This meant only audio information and a huge amount of data loss. Today, we have personal computers and smart phones that allow us to have a visual and audio communication with anyone, anywhere.

So, why haven’t we all switched? Learning to use technology for large scale communication and productivity is hard. On top of that, older generations may be hesitant to adopt a work policy that makes them obsolete. Finally, there is a lot of fear in losing control of your workforce when you can no longer see them.

Environmental Benefits

  • Reducing long commutes by supporting remote work prevents excess greenhouse gas emissions.
  • Allowing remote work prevents population growth around already crowded metropolitan areas and reduces long commutes for everyone.

Personal Benefits

  • Commuting makes people fat, stressed, and miserable. Not commuting will make you happier in the short and long term with the bonus of saved time.
  • By not commuting, you save gas money and maybe don’t even need a second car or any car at all.
  • Promoting asynchronous communication through remote work allows people to have more flexible schedules. You can take time to pick up children from school, take that afternoon surfing course, or finally accept your night owl sleep schedule.
  • Why wait to go to your retirement city when you could live there now? Remote work allows you to live where you want sooner than retirement.

Employer Benefits

  • It is harder to poach remote employees for a few different reasons: you can’t be lured away by in person conversations, employees working remotely are happier with their job, and employees want to hang on to their remote positions.
  • Employers don’t need to maintain a full scale work space for it’s employees, including no need for cleaning staff, utilities, rental fees, concerns about sufficient parking, etc.
  • The workforce is disaster ready for any disruption to a single geographic area.
  • Remote workers broadens the talent pool. It increases employee happiness and retention.

Work Culture Benefits

  • When the cost of meetings becomes higher, you suddenly have more efficient meetings.
  • Remote work allows for variety and customization in your work environment. This boosts creativity, accommodates diversity, and create a culture of inclusion.
  • Having remote workers increases the diversity of the workforce and creates a better product through that diversity.
  • By removing the social engineering and politics present in onsite offices, such as causal drive by conversations, employees are valued for their skills rather than their politics.

Fear Of Change and Loss Of Control

This section will be pairs of excuses (fears) and counterpoints to address those fears.

Excuse: We can’t suddenly ask the whole company to work remotely.

Counterpoint: We can start by having some remote teams or even slowly shortening our in-office work week to work out the kinks first.

Excuse: Great ideas only happen with in person collaboration

Counterpoint: First, this isn’t true. In fact, being out of the office offers more opportunity for creative thinking because moving to a different setting can often prompt new ways of thinking. Secondly, even if this were true, we can only work on a couple of great ideas at a time. In that case, we only need to meet to generate “great ideas” once or twice a year.

Excuse: People are just going to slack off more

Counterpoint: We need to accept that people are going to slack of and be lazy no matter where they are. If their work isn’t engaging, they won’t want to do it. If your employees are slacking, it’s about lack of engaging work, not about where they are working.

Excuse: Remote workers are a security vulnerability.

Counterpoint: There are many products and services available to protect employee devices regardless of location including drive encryption, multi factor authentication, and remotely wiping devices.

Excuse: We need to be available during certain hours for our clients.

Counterpoint: The same person doesn’t need to be available during those hours so you can set a rotation such that at least one person is available during those hours. You can also set expectations with the clients about hours of availability.

Excuse: If I let some people work from home, everyone will want to.

Counterpoint: If there is something all your employees want to, is it really such a bad thing to give to them when you can maintain productivity?

Excuse: Not all jobs can be done remotely so none of them should be remote.

Counterpoint: Every job inherently has different responsibilities, privileges, and access to resources. Remote-friendly is just another characteristic of a particular job role and shouldn’t be denied just because all roles at a company aren’t remote.

Excuse: Without face to face interaction, we lose our culture.

Counterpoint: Company culture isn’t about face to face interaction. It’s about how we deal with tasks day-to-day. If you have a communicative culture, you can still have that remotely but it’s written or video communication instead.

Excuse: But we spent money on this office building.

Counterpoint: That doesn’t mean you need to keep spending money on that building. Second, consider renting it out to recover some of the money lost. Finally, with increased productivity of your workforce, you’ll be able to cover the costs of that building.

Remote Pitfalls

Self-discipline: You do need to be able to self-motivate into doing work you need to do. On the plus side, working remotely means you’ll have more energy to motivate yourself and will likely be more engaged in your work.

Loss of face to face time: You need to learn to communicate effectively in writing and verbally. This means you need to replace your facial expressions, nuanced hand movements, or interpretive dance moves with written or spoken word.

I’m not “mom” between 9 am and 5 pm: Living in the same place where you work can confuse your family. Making sure you aren’t rushing to your children or pets every 5 minutes and training them not to bother you in your “office” time will be needed for this to work.

Cabin Fever: Employees need to be able to choose different work arrangements to ensure they don’t get cabin fever. Employers can offer budget for shared work spaces like WeWork or provide incentives like a fitness reimbursement to ensure employees are staying active.

What is life?: Working remotely from home can blur the boundary between work and life. Each individual can come up with ways to create an invisible boundary, like a home office, a particular computer, or, as an example from the book, a different set of slippers for work time.

Writing Really Matters: As a remote employee, most of your communication will be written either for person-to-person communication or through documentation. Really work on those writing skills and try to showcase them in writing samples such as cover letters or statements of interest.

Remote The Right Way

There are a few things you and your team will need to learn to ensure remote work goes smoothly. Some of these things are the responsibility of the employee, others require a cultural change from management.

No ASAP: People will no longer be easily available at all times. Change the team culture to avoid needed answers ASAP and prioritize when they ask for in person responses. This can also be read as “learn to unblock yourself”. Ways of achieving this are having excellent documentation and FAQs for your team or ensuring there is some wiggle room in deadlines so people don’t feel pressured to be unblocked ASAP.

Partial Overlap: A lot of people will have different schedules. Target a 4 hour overlap between collaborating teams. This might mean some time zones are out of reach for candidates.

(Screen) Sharing is Caring: Always share your screens in meetings or record screen casts to communicate visual ideas. Do not allow in-person meetings to fail to share screens.

More Sharing is Caring: Ensure common instructions and all decisions are recorded in an easily accessible location so no one is blocked on waiting for information.

Virtual Water Cooler: Employees need a way to interact with each other outside of work topics and a way to “productively waste time”. This means setting up slack channels, for example, for off-topic conversations.

Intentional Face Time: Plan to create an opportunity for all employees to meet up with each other in person once or twice a year. This can be a conference or an all-hands with extended time for planning or team-building. The cost of this event will be covered by what you save not maintaining offices.

Measure Done, Not Time: Measure worker productivity by work accomplished and not time in the office. Performance reviews should value skills that are remote friendly such as written communication and independent decision making.

Be A Good Manager: Managers are no longer managing butts in seats. They have to take more time to get to know their employees, get a sense of how they are doing, monitor work being done, and minimize interference unless actually needed. In short, managers need to be good managers.

Reimbursement and Relaxation: Make sure there are clear reimbursement policies for home office setup with guidelines on good ergonomics for a home office. Encourage employees to pursue interests outside of work by reimbursing gym memberships or travel.

Not A One Man Show: Do not try remote with just one person. Make sure there is an entire team trying remote work to see whether it is effective. Additionally, have the manager of the team work remotely to understand the challenges his or her employees may be facing. Using contract positions to see how remote work might look like before supporting remote with full-time employees is an option as well.

Explicit Content: Be explicit and clear with expectations to everyone on the team and everyone the company works with. Tell clients what to expect for regular work times and out of hours response times.

Remote Interviewing: You will need to have an in person interview at some point but, up until that point, you can use remote friendly screening techniques. Using small remote tests such as writing samples or Hackerrank coding tests will show some of the basic skills an employee will need.

Motivation: Encourage engagement by allowing employees to pursue their work interests. Managers should watch out for procrastination or low quality in a former high performer as this will indicate lack of engagement in work, not a decline in worker quality.

Bad Juju: It is harder to sense bad juju building up on teams that are remote. Managers will need to keep a close eye out for potential misunderstandings and frequently check in with employees to see how they feel about their team dynamic.

Level The Playing Field: Ensure remote workers are given the same opportunities as onsite workers for collaboration. Keep track of all decisions and notes, even if they were hallway conversations. Prioritize a working A/V system over a quick sync up without the remote workers included.

End Road-Blocks: Seek out and remove incidents where employees are blocked on another person on system. Don’t require permission for vacation. Have an automatic reimbursement process. Define clear procedures for handling critical events.

Recommended Reading From This Book

Summary of Working Outside The Box: A Study of Growing Momentum in Telework

Article date: January 21, 2009

Remote working is a way to save costs across all industries, specifically on real estate costs. To successfully work remotely, a significant portion of employees must be able to do their job fully remotely for extended periods of time.  There is a misconception that remote workers will get distracted but teleworking can actually improve engagement, allow employees to control distractions in their environment.

Today there are a few crises that companies face that will push them towards embracing remote work. As companies are growing more quickly than the job market can provide skilled workers, they need to look elsewhere. Relocation is expensive so remote work provides access to a wider candidate base. Another problem is supporting an increasing cost of living in metropolitan areas. More people coming into an area increases housing costs and commute times. Supporting remote work will keep real estate costs low and prevent growth in the cost of living, and by extension salaries. The last problem is disasters. With different locations, if one location experiences a disaster, the others will still be able to keep your business going.

Listed benefits of teleworking:

  • Cost savings in employer assets and maintenance
  • Commute cost savings
  • Continuity during disasters
  • Retention and attraction of talent
  • Lower carbon dioxide emissions
  • Lower traffic congestion
  • Better job satisfaction
  • Improved work/life balance
  • Maximized geographic resources
  • Innovation in the workplace
  • Access to skills previously unavailable

IBM

  • 40% of workers are remote
  • Allowed working couples the flexibility to keep working rather than force 50% of the workforce to leave to take care of children
  • Immune to business real estate cost hikes due to availability of remote work options

Government

  • Government uses some telework but not optimally
  • 1 day per week doesn’t allow for full benefits like real estate savings

How to do teleworking well

  • Update how you evaluate employees to focus on work done instead of time spent
  • Establish career development goals to prioritize skills valuable in remote work
  • Move as much training online as possible
  • Set clear expectations on reimbursement policies for home offices
  • Regularly check in with employees to avoid a hidden crises in the company
  • Establish HR codes for each remote position to plan real estate and budget
  • Automate administrative functions to ensure no one is ever blocked
  • Implement ongoing telework training with coaching and guides for manager