Great Expectations: Not just a Dicken’s Tale

Disclaimer: What you don’t know, can hurt you.  

My expectation for you, as the reader, is that these guidelines will help you to take a more intentional approach to both setting and clarifying expectations.  

Clarifying expectations – What do I even need to do? 

When I was a new manager, I had an employee who was relatively new to the workforce. I will refer to them as Wally, not their real name. I had the expectation that Wally would be able to deliver on engineering tasks which another team needed done. The previous manager had not stated the person wasn’t meeting expectations as part of the transition. As the project was executing there were clear signals (to me) that this employee wasn’t meeting expectations (e.g. not giving status updates on progress made, not treating the project with urgency). This was clear to me, but not clear to Wally. What was the gap? I hadn’t set clear expectations with Wally (e.g. you need to send updates on your progress to stakeholders daily) and the other team’s lead. A couple weeks in, and I was having an expectations conversation. This is the challenge of expectations. My expectation, which was implicit is that a person should understand the importance of proactive communication and execute as quickly as possible on a project. 

Expectations – they’re everywhere! 

Expectation [ ek-spek-tey-shuhn ] – n. 1. a belief that someone will or should achieve something. 

Each job that you will hold in your life will come with expectations. Some expectations will be written down (explicit), most will not (implicit). Your job as an employee is to understand these expectations, the spirit behind them, how they apply to your role, and meet (and hopefully exceed) these expectations. 

Why are expectations so important? 

Expectations make and break relationships, this includes work relationships. Think back to the last person who consistently didn’t meet your expectations. What happened to that relationship over time when that person consistently didn’t meet expectations? 

As a manager, your role is to provide clear expectations to employees on how to be impactful and grow impact over time. Clear expectations are good, because the context in the expectation helps create enough structure for an employee to understand how to be successful.  

So, how do you hone your expectations: 

  1. Ask your manager –
    • your manager should have clear expectations for your role and level at the company. At larger companies some of these expectations are generalized for your role and level as a leveling guide or career ladder document. Whenever I have a new employee start on my team, I first ask them to read through and evaluate which areas they have demonstrated for their role and level, and identify where they are exceeding, meeting, or not demonstrating areas. This identification of not demonstrating an expectation is not punitive, but rather to illuminate which areas we can focus on demonstrating in the future (I.e. setting up goals). 
  2. Align to written current and next level role expectations
    • Expectations for a more senior engineer may have statements like the following: “autonomously deliver large-scale and ongoing business impact across a team, product capability” 
    • If they have been in their current level for a sufficient period of time, I ask them to look at the next level expectations and do the same identification (exceeding, meeting, not demonstrating). This can then feed into promotion readiness discussions. These role and level expectations merged with business needs should result in a goals-type document.  
    • A couple of clear examples:  
"In order for our team to scale successfully in the next quarter, I will interview 2 candidates a week, providing written feedback which clearly articulates where they are meeting / not meeting the rubric for the role / level" 
"I will execute the XYZ project as the technical lead and launch it by end of Q3, this will involve me working with the profile, search and detail page teams (both mobile and backend), aligning on a design, running status update meetings (to identify risks), and send stakeholder update emails"   
  1. Align to unspoken organization norms
    • observe others who are successful in your role (at your company or in your org) – the hardest expectations to meet are unspoken (unwritten) ones. A company may have a strong set of principles that define behaviors which are rewarded, e.g. Amazon LPs. 
    • These principles though can have different priorities depending on the organization or leader. So, what is defined as a principle for the company may not be the prioritized principle of the organization or leader. Let me give a specific example, as these leadership principles (LP) have some tension built into them that isn’t always apparent. The principles of deliver results and insists on the highest standards can be at tension with each other. If you are in a v1 product team where time is of the essence to launch the product, deliver results (getting it done) may be prioritized over insists on the highest standardDeliver results then will be rewarded as compared to someone who might demonstrate insisting on the highest standards (with less results delivered). If you are having difficulty these unwritten expectations or what is rewarded in an org, find one of the influencers / strong performers and ask them for what are the most rewarded behaviors. 

How are they used by your manager? 

Expectations are a tool like anything else, to facilitate alignment between your manager and yourself. When you have strong alignment on expectations (and goals) with your manager, and then you execute against those expectations well, trust is built. Notice, I didn’t say that rewards would follow, that doesn’t always happen in the immediate term as the impact of the project might not turn out to be as big as anticipated, etc. (More on that in a later blog post.) However, trust is the lifeline of employee / manager relationships. The converse of not meeting expectations doesn’t necessarily result in performance management and end in termination, but in loss of trust.  

Why is trust so important? 

Many times, as a manager, I need to assign a big project opportunity and more often than not, I give those opportunities to an employee who has earned my trust. So, by not meeting expectations, and therefore not earning my trust, the employee is losing out on the opportunity to own a critical project. A specific example: imagine there is a two week timeline to deliver a feature, should I give the project to someone who I know will own the project and unblock themselves to meet the deadline, or a person who might have equivalent experience, but makes excuses of why things aren’t able to get done (e.g. too hard to do in an unfamiliar code base)? The question seems rhetorical, but the decision making for the above situation is something which managers face all the time.  

How do I build trust in an ambiguous situation?

As a manager, I have learned through the years that my leaders can’t read my mind. So, how do I manage the situation of discerning their expectations? (this applies to most senior level folks as they need to identify the most important problems to solve)

Over communicate. When I have a new manager, I turn up my verbosity level, as I tend naturally more towards terseness. I demonstrate how I think by writing the following: context of the problem, potential solutions and trade-offs, (if I’m not solving it individually) how I am coaching someone else through solving the problem, and when we should have enough information to move forward with executing. I then share that doc with my manager.

Why do I do this? I’m not looking for approval from my new manager, I’m looking to provide my manager with enough context to show them how I am thinking through the problem in order to develop trust. By over communicating in the two to three months after joining a new manager, often I find this develops a strong amount of trust which leads to greater and greater autonomy for me and my team. Additionally, if there is some failure of logic in my thinking or some missing context, they can provide that, and I can learn about those hidden expectations from them.

I liken this approach to showing your steps for math problems in school. Two people can have the same correct answer, but the teacher may grade down one of the students’ homework or test, because they didn’t show the work. They didn’t articulate how they came to the correct answer, so it could have been luck.

What should I do? 

Think about a few of your work or personal relationships. Ponder expectations that you have of the other person, and what expectations they might have of you. If you have a close enough relationship with them, ask them if your expectations assessment is accurate (are you missing any?). The results could be unexpected, and help you grow.  

Easy (best) instructions for enabling local AI development on mac.

Setting up SSH tunnel from mac to PC

Colab has security measures to prevent you from putting in any IP address in the Local Connections Settings dialog. These instructions mention that you can use gcloud command to point to a different machine using local port forwarding. However, it doesn’t show you how to do this for a mac to window set up (and maybe you don’t have gcloud installed). So, if you have a Windows PC with a GPU that you would like to run Python notebooks using colab on your mac (macbook), simply follow these instructions below:

  • On Windows PC (Win 10 or 11)
  • On Mac
    • Create ssh key (if you don’t already have a SSH public key which you use)
      • ssh-keygen -t rsa -b 4096 -C “<emailaddress>”
      • Should generate a public / private key pair in ~/.ssh (id_rsa and id_rsa.pub), the latter file is the public key
  • On Windows PC install
    • Copy ~/.ssh/id_rsa.pub (from Mac) to %ProgramData%\ssh\adminstrators_approved_keys (on Windows)
    • Set up permissions for administrators_approved_keys file
      • icacls administrators_authorized_keys /inheritance:r
      • icacls administrators_authorized_keys /grant SYSTEM:`(F`)
      • icacls administrators_authorized_keys /grant BUILTIN\Administrators:`(F`)
    • Restart openssh server through services or command line (net stop sshd & net start sshd)
  • Startup Jupyter on Windows
    • Type jupyter lab in a command prompt
    • Copy localhost connection string with token (starts with https://localhost::8888/lab?token=<token>)
  • On Mac
    • Start SSH tunnel
      • ssh -L 8888:localhost:8888 <windowsAccount>@192.168.1.xxx
    • Start up colab instance in browser
      • Click on “connect to a local runtime”
      • Paste in localhost connection string from above
        • Pro tip: I use google docs to share context across machines.
  • Troubleshoot
    • ssh -v or ssh -v -v -v (connection issues)
    • nc -z localhost 8888 || echo “no tunnel open” (test for liveness)