Jekyll2024-01-27T14:48:59+00:00https://ajahne.github.io/blog/feed.xmlHello Ajahneconst blog = ['learning', 'leadership', 'languages', 'life'];
Ajahne Santa Annaajahne.santaanna@gmail.comQuestions for Our First One on One2023-09-22T07:00:00+00:002023-09-22T07:00:00+00:00https://ajahne.github.io/blog/leadership/management/2023/09/22/questions-for-our-first-one-on-one<p>I believe that 1-1s with my direct reports are one of the most important things that I do as a manager and leader. At the top of that list is the “intro” 1-1, where I spend time connecting and learning about who they are, their likes, dislikes, motivations, aspirations, and favorite emojis 🙌!</p>
<p>In my time as a manager, no meeting has been more critical in building a strong foundation and I refer back to these answers often when providing feedback to people, looping back on growth opportunities, or finding helpful ways to support them! It is definitely an <a href="https://ajahne.github.io/blog/leadership/2019/07/24/essential-meetings-to-have-with-your-people-as-a-manager.html">essential meeting to have with your people</a>.</p>
<p>So…prioritize this discussion! But, how to run it?</p>
<h2 id="how-do-i-run-this">How do I run this?</h2>
<p>First, this is a conversation, not a checklist. These questions are meant to open up dialogue and not about speeding through to the finish line. For example, if you ask someone what motivates them and they talk about it, which leads to an example of a project that they are proud of…ask what made them proud…ask about the project!</p>
<p>The ultimate goal is to understand your teammate better! There are a lot of questions here and it might take 1 or 2 one-on-one sessions. That is FINE and I would encourage that! However, if you see that it takes 3 or more sessions or <em>weeks</em> to finish, then wrap it up, its important to be timely and focused!</p>
<p>And yes, definitely <strong>ask these questions in your own words</strong>…for example, I may not ask “what makes your grumpy” word for word, instead I may say “So, how do I know when you are in a bad mood?”, then talk about that and transition to “OK, so what are some things that may put you in a bad mood or make your grumpy”.</p>
<p>This list is <em>heavily</em> inspired by <a href="https://larahogan.me/blog/first-one-on-one-questions/">Lara Hogan</a>, <a href="https://www.amazon.com/Managers-Path-Leaders-Navigating-Growth/dp/1491973897">Camille Fournier</a>, and <a href="https://ajahne.github.io/blog/leadership/2019/07/24/essential-meetings-to-have-with-your-people-as-a-manager.html">my own experience</a>. Also, <a href="(https://github.com/ajahne/essential-manager-meetings/blob/master/templates/initial-one-on-one-meeting.md)">here is a handy dandy template</a>! Please let me know what works and doesn’t!</p>
<p>Lastly, it is never too late to have this conversation, even if you missed the “intro”, no worries. Carve out time and make it happen!</p>
<p>Let’s get it!</p>
<hr />
<h1 id="intro-1-1-questions">Intro 1-1 Questions:</h1>
<hr />
<h2 id="general">General:</h2>
<ul>
<li>How are you doing?</li>
<li>If someone is new to the company/team/squad/etc.
<ul>
<li>How’s the first week been?</li>
<li>What are you most excited about?</li>
<li>Any surprises since you have joined, good or bad, which I should know about?</li>
</ul>
</li>
</ul>
<p>These are good questions to ask when someone has just joined the team or company, a good starting point/ice-breaker-ish to help you get into the flow. Plus it helps you learn if there are any surprises, I once had someone mention they had not yet received their work laptop!</p>
<hr />
<h2 id="1-1s--support">1-1s & Support:</h2>
<ul>
<li>What makes 1:1s the most valuable for you?</li>
<li>What do you need from your team?</li>
<li>What do you need from your peers? (outside the team)</li>
</ul>
<p>These questions are invaluable. Particularly the first one. I typically ask a bunch of follow ups here.</p>
<hr />
<h2 id="working-with-your-manager">Working with your manager:</h2>
<ul>
<li>What do you need from your manager?</li>
<li>Are there any manager behaviors that you know you hate?</li>
</ul>
<p>I find these questions are very helpful to get answers to as it keeps me honest as a manager, holds me accountable. I want to be at my best so I can best support you! Please note in the second question, I know “hate” is a strong word, so sometimes I replace with this “don’t like” or something similar.</p>
<hr />
<h2 id="career--goals">Career & Goals:</h2>
<ul>
<li>What motivates you? What are your motivations?</li>
<li>What are your goals for this year? And for the next 3 months?</li>
<li>Do you have any clear career goals that I should know about so I can help you achieve them?</li>
</ul>
<p>There will definitely be follow ups here. Once in my first meeting, someone told me they wanted to be a staff engineer in the next 6 months while another said they wanted to be a manager one day. These questions help set the initial lighthouses to steer towards, helping me clarify and understand each person better. I find this is a solid foundation that sets up future <a href="https://github.com/ajahne/essential-manager-meetings/blob/master/templates/career-conversations.md">career conversations</a>.</p>
<hr />
<h2 id="the-way-you-work">The way you work:</h2>
<ul>
<li>When do you feel the most productive? (time of day)</li>
<li>Do you have a preference on when you would like to have 1-1 meetings?</li>
<li>How do I know when you are in the “zone”? (e.g. headphones on, slack messages on away”)</li>
</ul>
<p>I try not to interrupt folks as best I can - especially when folks are in their “maker mode”. I also try to schedule 1-1 meetings at days/times that work best for my direct report.</p>
<hr />
<h2 id="feedback--recognition">Feedback & Recognition:</h2>
<ul>
<li>How do you like to be praised, in public or in private?</li>
<li>What is your preferred method of communication for serious feedback? Do you prefer to get such feedback in writing so you have time to digest it, or are you comfortable with less formal verbal feedback?</li>
</ul>
<p>These set of questions are critical. It is better to know ahead of time before you are having a <a href="/blog/books/2023/03/15/crucial-conversations-chapter-notes.html">crucial conversation</a> or providing praise. When it comes to praise I want to provide it in ways that people can enjoy it and not feel uncomfortable. Regarding feedback, I want to make sure we are having open dialogue and I provide feedback in a way that someone will be most able to hear it. This is of the utmost importance to me.</p>
<hr />
<h2 id="grumpiness--mood">Grumpiness & Mood:</h2>
<ul>
<li>What makes you grumpy?</li>
<li>How will I know when you’re grumpy?</li>
<li>How can I help you when you’re grumpy?</li>
<li>Are there things that always put you in a bad mood that I should be aware of?</li>
</ul>
<p>These are great questions, I have found that it unlocks so many things and helps me learn my teammate so much better.</p>
<hr />
<h2 id="most-important">Most Important:</h2>
<ul>
<li>What is your favorite way to treat yourself?</li>
<li>What’s the your current favorite tv show/album/artist/sports team/videogame/other?</li>
<li>What is your favorite emoji?</li>
</ul>
<p>Take a moment to learn how folks treat themselves! I keep a list of different items and sometimes give things as gifts or just follow up to ask how their favorite book/tv show is going! With one direct report we still chat about our love for fantasy books even through we have not worked together in 4+ years! These questions are IMPORTANT! You never know when they will come in handy (I’m looking at you favorite emoji! 👀)</p>
<hr />
<h2 id="more-one-on-one-resources">More One-on-One resources</h2>
<ul>
<li><a href="https://github.com/ajahne/essential-manager-meetings/blob/master/templates/initial-one-on-one-meeting.md">Initial 1-1 Meeting Template</a></li>
<li>1-1 <a href="https://ajahne.github.io/blog/leadership/2018/09/29/one-on-one-meeting-dos-and-donts-part1.html">Dos</a> and <a href="https://ajahne.github.io/blog/leadership/2018/10/08/one-on-one-meeting-dos-and-donts-part2.html">Don’ts</a></li>
<li><a href="https://github.com/ajahne/one-on-ones">My 1-1 Github Repo</a></li>
</ul>Ajahne Santa Annaajahne.santaanna@gmail.comI believe that 1-1s with my direct reports are one of the most important things that I do as a manager and leader. At the top of that list is the “intro” 1-1, where I spend time connecting and learning about who they are, their likes, dislikes, motivations, aspirations, and favorite emojis 🙌!Crucial Conversations: Chapter Notes2023-03-15T09:00:00+00:002023-03-15T09:00:00+00:00https://ajahne.github.io/blog/books/2023/03/15/crucial-conversations-chapter-notes<p>Earlier this year I finally finished <a href="https://www.amazon.com/Crucial-Conversations-Tools-Talking-Stakes/dp/B09BK342ZW/">Crucial Conversations</a>. I had a coworker who was heavily into audio books, so I put in my headphones and gave it a shot! So, on mornings when taking the little one to school, I would listen to the audio book of Crucial Conversations.</p>
<p>Of all the books I have “read” on leadership and management, this one has had the biggest impact on both my professional and personal life. It has made me notice my own patterns in dialogue, helped me become a better listener, improved my own behaviors, and equipped me with additional skills to have challenging conversations with direct reports, family members, and peers that have resulted in better outcomes for all involved.</p>
<p>Given its impact on me, I had to take some notes! I revisit these often and hope you find some benefit in them as well. If you have not already done so, I highly recommend you read (or listen to) this book!</p>
<h2 id="table-of-contents">Table of Contents:</h2>
<ul>
<li><a href="#chapter-1-whats-a-crucial-conversations">Chapter 1: What’s a Crucial Conversations</a></li>
<li><a href="#chapter-2-mastering-crucial-conversations">Chapter 2: Mastering Crucial Conversations</a></li>
<li><a href="#chapter-3-start-with-heart">Chapter 3: Start with Heart</a></li>
<li><a href="#chapter-4-learn-to-look">Chapter 4: Learn to Look</a></li>
<li><a href="#chapter-5-make-it-safe">Chapter 5: Make it Safe</a></li>
<li><a href="#chapter-6-master-my-stories">Chapter 6: Master My Stories</a></li>
<li><a href="#chapter-7-state-my-path">Chapter 7: State My Path</a></li>
<li><a href="#chapter-8-explore-others-paths">Chapter 8: Explore Other’s Paths</a></li>
<li><a href="#chapter-9-move-to-action">Chapter 9: Move to Action</a></li>
<li><a href="#chapter-10-yeah-but">Chapter 10: Yeah, but…</a></li>
<li><a href="#chapter-11-putting-it-all-together">Chapter 11: Putting it All Together</a></li>
<li><a href="#chapter-12-afterword">Chapter 12: Afterword</a></li>
</ul>
<h2 id="chapter-1-whats-a-crucial-conversations">Chapter 1: What’s a Crucial Conversations</h2>
<ul>
<li>What makes a conversation crucial?
<ul>
<li>Opinions Vary</li>
<li>Stakes are high</li>
<li>Emotions run strong</li>
</ul>
</li>
<li>Crucial vs annoying / frustrating conversations? Crucial conversations can have an impact on your daily life.</li>
<li>Three options on crucial conversations: Can avoid; handle poorly; handle well</li>
<li>When it matters most…we handle it worst</li>
<li>When things get crucial - fight or flight kicks in</li>
</ul>
<h2 id="chapter-2-mastering-crucial-conversations">Chapter 2: Mastering Crucial Conversations</h2>
<ul>
<li>Avoid the fool’s choice (avoid thinking that you only have two bad options to choose from)
<ul>
<li>i.e. tell the truth or keep a friend</li>
<li>Fool’s choice: candor vs kindness</li>
</ul>
<blockquote>
<p>Dialogue: the free flow of meaning between two or more people</p>
</blockquote>
</li>
<li>Shared pool of meaning; work to add to the pool of meaning and help others in the group add to the pool of meaning. Do not need to agree with everything, but want to have all perspectives shared / heard.</li>
<li>Greater shared meaning = better the choice + stronger the unity.</li>
</ul>
<h2 id="chapter-3-start-with-heart">Chapter 3: Start with Heart</h2>
<ul>
<li>
<p>First principle - <strong>start with heart, start with yourself</strong></p>
<blockquote>
<p>work on me first, us second</p>
</blockquote>
</li>
<li>Motives degenerate, fix the problem of believing that others are what ails us</li>
<li>To work on us…work on me</li>
<li>Most talented, not least talented, that are constantly working to get better at dialogue</li>
<li>
<p>“Winning” is a dialogue killer</p>
<blockquote>
<p>Goals quickly change to “winning”. Avoid winning.</p>
</blockquote>
</li>
<li>Focus on what you really want
<ul>
<li><strong>Pause, take a deep breath</strong></li>
<li>Name the game and stop playing it</li>
</ul>
</li>
<li>Stop and ask yourself some questions
<ul>
<li>What do I really want for myself/others/the relationship?
<ul>
<li>Also clarify what you don’t want</li>
</ul>
</li>
<li>How would I behave if I really wanted this?</li>
</ul>
</li>
</ul>
<h2 id="chapter-4-learn-to-look">Chapter 4: Learn to Look</h2>
<ul>
<li>Reactions when crucial conversations are happening: silence and violence (signals when the conversation is not safe)</li>
<li><strong>Monitor yourself and your stress; how are your reacting?</strong> (Style under stress)</li>
<li>Look at content and conditions, watch for safety problems (e.g. is someone in the conversation getting quiet or reacting with sarcasm)</li>
</ul>
<h2 id="chapter-5-make-it-safe">Chapter 5: Make it Safe</h2>
<ul>
<li>Build up trust and mutual purpose</li>
<li>Others perceive you are working toward a common outcome and goals</li>
<li>Find a shared goal and you have a good reason and climate to chat</li>
<li>Is the conversation at risk? Ask two questions
<ul>
<li>Do they believe I care about their goals?</li>
<li>Do they trust my motives?</li>
</ul>
</li>
<li>Goal has to be truly mutual</li>
<li>Examine your motives</li>
<li>Start with heart ❤️</li>
<li>Maintain mutual respect</li>
<li>3 things: apologize, contrast, find a mutual purpose</li>
<li>Step out of the discussion and build safely</li>
<li>Contrast: don’t and do; what I didn’t want to do: clarify real purpose - explain what you didn’t intend then explain what you did intend</li>
<li>Contrast is not apologizing</li>
</ul>
<p>Four skills (crib)</p>
<ul>
<li>Commit to seek mutual purpose; start with heart - suspend beliefs that our solution is best and only one</li>
<li>“It seems like we are both trying to win, I am committed to stay in this conversation until we find a mutual solution”</li>
<li>Step out of context and find the ultimate goal you both want</li>
</ul>
<p>Summary</p>
<ul>
<li>step out to make it safe</li>
<li>Apologize when appropriate</li>
<li>Use contrasts (say don’t intend they say what you do mean)</li>
<li>Create a mutual purpose</li>
<li>Crib
<ul>
<li>Commit</li>
<li>Recognize</li>
<li>Invent</li>
<li>Brainstorm</li>
</ul>
</li>
</ul>
<h2 id="chapter-6-master-my-stories">Chapter 6: Master My Stories</h2>
<ul>
<li>Take charge of your feelings</li>
<li>You and only you create your emotions</li>
<li>Find a way to master them or fall hostage to them
<ul>
<li>Worst at dialogue - let emotions over take them;</li>
<li>Good at dialogue - suppress emotions and keep conversation going, but eventually snap and react with silence or violence;</li>
<li>Best at dialogue - act ON emotions, choose emotions to act upon and choose behaviors that create better results</li>
</ul>
</li>
<li>Path to action: see / hear -> tell yourself a story -> feeling -> action / behavior</li>
<li>The best “slow down” - retrace your path to action</li>
<li>Notice your behavior (are you in silence or violence)</li>
<li>Feel (identify your emotions)</li>
<li>Tell a story - analyze a story</li>
<li>See / hear - get back to the facts specific, objective, and verifiable: conclusions are subjective; watch for hot terms: e.g. scowl or sarcastic</li>
<li>Watch for 3 clever stories: victim (me), villain (you, them), helpless (look forward)</li>
<li>Don’t sell out, avoid telling yourself clever stories</li>
<li>Clever stories are incomplete</li>
<li>Fill in the missing details</li>
<li>Turn victims to actors, villains to humans, helpless to the able -> what would I do right now to get the best results, what do I really want</li>
<li>Summary: find your self moving away from dialogue, stop and notice what you are doing / feeling (i.e. am I silent or violent); analyze conclusions and stories; get back to the facts; watch for clever stories and tell the full story; what do I want and what would I do now to get there</li>
</ul>
<h2 id="chapter-7-state-my-path">Chapter 7: State My Path</h2>
<ul>
<li>Hearts need to be in the right place and are well prepared</li>
<li>Express opinion - now what?</li>
<li>Totally frank and completely respectful</li>
<li>Maintain safety - confidence, humility, and skill</li>
<li>Start with the facts</li>
<li><strong>Not trying to win the dialogue, gathering facts is the homework required for crucial conversations</strong></li>
<li>“I’m not sure you’re intending to send this message, but it comes across like…”</li>
<li>Rebuild safety try with contrasting; goal of contrasting is to be confident in what you want to express, not to apologize</li>
<li>After you share…invite others to do the same
<ul>
<li>Change “the fact is” to “my opinion”; soften it’s clear to me to I’m beginning to wonder if</li>
<li>It’s leading me to conclude; I’m starting to feel like you don’t trust me; I don’t think you’re intending this but…</li>
</ul>
</li>
<li>Invite the opposition…what am I missing here?</li>
<li>Learn to look when people start to resist (look at yourself and see what you are doing as well); more you care about something, the worst your behavior may be</li>
<li>Passion can be your own enemy</li>
<li>State your path; share facts l, tell your story, ask for others path, talk tentatively, encourage testing</li>
</ul>
<h2 id="chapter-8-explore-others-paths">Chapter 8: Explore Other’s Paths</h2>
<ul>
<li>Safety at risk - step out and restore it</li>
<li>If made a mistake - apologize</li>
<li>If unclear - use contrast statements</li>
<li>At odds - find a mutual purpose</li>
<li>Cure for silence and violence: curiosity - do your best to get to root of fear or anger</li>
<li>Be patient</li>
<li>Try to retrace the other person’s path to action</li>
<li>Ask, mirror, paraphrase, prime = power listening tools</li>
<li>Ask: what do you mean? I’d like to hear your opinions, don’t worry about my feelings, I’d like to know how you feel, what am I missing?</li>
<li>Mirror: suggest that while you are saying one thing, your tone or body posture suggest something else; manage your tone of voice and delivery, be calm; you seem angry at me, you seem nervous about confronting him, are you sure you’re ok doing it?</li>
<li>Paraphrase: put message in your own words: from what I’ve gathered…what I’m hearing is…do I have that right?</li>
<li>Prime: pour meaning into the pool first: “are you thinking the reason we are doing this because….”; act of good faith and not the first thing to do</li>
<li>“What do I really want”</li>
<li>ABC
<ul>
<li>Agree: when you agree; start with the agreement</li>
<li>Build: Absolutely and in addition to</li>
<li>Compare: when you differ</li>
</ul>
</li>
</ul>
<h2 id="chapter-9-move-to-action">Chapter 9: Move to Action</h2>
<ul>
<li>Making decisions: dialogue is not decision making</li>
<li>Decide how to decide</li>
<li>When line of authority is clear (e.g. there is a VP or manager, it’s clearer)</li>
<li>When not a clear line of authority? Openly talk about who decides and why</li>
<li>4 Methods of decision making:
<ul>
<li>command</li>
<li>consult</li>
<li>vote</li>
<li>consensus</li>
</ul>
</li>
<li>Important questions? Who cares about it? Who knows (who has the expertise)? Who must agree? How many people is it worth involving (do we have enough people to make a good choice)?</li>
<li>When needed; have a crucial conversation about decision making practice</li>
<li>Who does what by when and how will you follow up?</li>
<li><strong>Goals without deadlines aren’t goals, they are merely directions</strong></li>
</ul>
<h2 id="chapter-10-yeah-but">Chapter 10: Yeah, But…</h2>
<ul>
<li>Trust: deal with trust around the issue, not the person</li>
<li>Work on “me” first - make things safe; separate intent from outcome; exercise patience</li>
<li>Make it safe and state your path</li>
<li>If you want someone to take more initiative; give examples and raise the bar; talk your expectations out</li>
<li>Talk about the pattern, not just a specific instance (e.g. coming in late a lot, and someone says they will get better, then next time they come in late, it’s about keeping to their commitments, not just coming in late)</li>
<li>Ok to suggest you need time alone and then hold a conversation at another time</li>
<li>Do not suggest someone else take time, that can come across as patronizing</li>
</ul>
<h2 id="chapter-11-putting-it-all-together">Chapter 11: Putting It All Together</h2>
<ul>
<li>To get started: <strong>pick one skill to start or stay on principles</strong></li>
<li>Learn to look: “are we in or out of dialogue”; are we playing games or are we in dialogue.</li>
<li>Don’t have to be perfect to make progress</li>
</ul>
<h2 id="chapter-12-afterword">Chapter 12: Afterword</h2>
<ul>
<li>Not just the big moments, small moments matter as well</li>
<li>Learn / know yourself</li>
<li>You don’t have to solve the crucial conversation, sometimes you just have to bring it up in a safe way</li>
<li>How true emotions can feel, but how false they can be</li>
<li>Emotions can corrupt your view</li>
<li>Don’t be driven by a need to be right</li>
<li>Ask yourself “what do I really want”.</li>
<li>Use skills to develop habits, lives, and loves</li>
</ul>
<hr />
<h2 id="more-chapter-notes">More “Chapter Notes”</h2>
<ul>
<li><a href="/blog/leadership/books/2022/02/10/radical-candor-chapter-notes.html">Radical Candor</a></li>
<li><a href="/blog/leadership/books/2020/04/14/the-first-90-days-chapter-notes.html">The First 90 Days</a></li>
<li><a href="/blog/javascript/books/2019/03/31/refactoring-by-martin-fowler-chapter-notes.html">Refactoring (2nd Edition)</a></li>
<li><a href="/blog/leadership/books/2018/07/21/accelerate-notes.html">Accelerate</a></li>
<li><a href="/blog/leadership/books/2018/06/29/the-hard-thing-about-hard-things-notes.html">The Hard Thing About Hard Things</a></li>
</ul>Ajahne Santa Annaajahne.santaanna@gmail.comEarlier this year I finally finished Crucial Conversations. I had a coworker who was heavily into audio books, so I put in my headphones and gave it a shot! So, on mornings when taking the little one to school, I would listen to the audio book of Crucial Conversations.Recharging as a Manager2022-03-31T09:00:00+00:002022-03-31T09:00:00+00:00https://ajahne.github.io/blog/leadership/2022/03/31/recharging-as-a-manager<p>Recently I had a 1:1 with colleague I mentor, who was just promoted to management and was exhausted in their new role. Part of this exhaustion stemmed from building a new muscle, part of this was understanding how to delegate more, and part of this was learning how (when) to step away and not work until you burn out. The conversation made me think of how I’ve recharged throughout my career when I have felt worn out and I was inspired to put the proverbial pen (keyboard) to paper (blog post).</p>
<p>📝 A note before we jump in: if things are really bad at work (e.g poor fit, toxic culture, etc.), then it may be time for a change. Recharging will only be a temporary fix and not address the root cause. If you find that you have done some recharging and still feel the same way instantly upon returning to work/the day, then maybe a bigger change (career, job, role, getting a coach, etc.) is needed.</p>
<h2 id="before-we-recharge-have-we-first-charged">Before we (re)charge, have we first charged?</h2>
<blockquote>
<p>Is the sleep good? Getting that 8 hours? Eating good? Are things outside of work in a steady place?</p>
</blockquote>
<p>When my daughter was first born, I wasn’t getting any sleep. I recall going into a 1:1 with a direct report and the first thing she said to me was “you look tired” (ouch). I had tried to muster all the typical energy and excitement that I normally bring to 1:1s, but my report saw right through it. I really appreciated her candor. I was holding on by a thread. I realized I needed to focus on me and my family first. I changed some things up, modified my calendar (started days earlier as I was already up, but ended much earlier as well), worked to get a nanny, and luckily my wife and I got help from family.</p>
<p>After a fitful few months, things got much better (also sleep training is a life-changer), and I was able to ensure I had the sleep, routine, and schedule that I needed to bring my full self to work.</p>
<p>Lastly, I have found that nothing is more important in reducing stress, anxiety, and improving health, like consistently getting a good night sleep 😴.</p>
<p>🔌 So with that, here are some techniques that help me to recharge:</p>
<blockquote>
<p>While I outline some ways to recharge, this post could easily be called “managing stress as a manager”</p>
</blockquote>
<h2 id="️-do-something-you-lovejust-for-you">❤️ Do something you love…just for you</h2>
<p>I love Fantasy and Sci-fi books. Recently I have made it a habit of reading for 15-20 minutes a day, something that is pure pleasure. I find this to be a moment of bliss and something that I look forward to each day. What is something you can do each day that brings you joy?</p>
<h2 id="️go-for-a-walk">🚶🏾♀️Go for a walk</h2>
<p>Back before COVID, when I commuted to the office each day, I would carve out time in the afternoons to go for a walk. My office was located in Manhattan. I had an amazing walk route that would take me across the FDR and along the east river. I would take this walk sometimes before a big presentation, after a difficult conversation, or just to clear my head. This was a mid-day recharge.</p>
<p>While I no longer commute into the office every day, I have taken up morning walks. I can feel the difference emotionally and physically between the days where I start my morning with a walk vs the days that I do not get a walk in. Walks are a way where I find both a chance to clear my head and also get in a few steps.</p>
<h2 id="️-meditate">🧘🏾♂️ Meditate</h2>
<p>A previous manager I had swore by mediation. They used an app daily to reduce stress and center themselves. I have tried this out intermittently to great results.</p>
<p>Recently, I’ve used the <a href="https://www.calm.com/">Calm</a> app and have begun to find benefit here to help me sleep or just give me a quick mental break in the middle of the day.</p>
<p>Don’t want to do (i.e. pay for) the app thing? No worries. Have 10 minutes and a quiet room to be still in? That works as well. Sometimes, in the middle of the day after a wall of meetings and a whirlwind of work, I step away from the laptop, lay down with a warm compress over my eyes, listen to <a href="https://www.youtube.com/watch?v=y9yhdPuP8QE">green noise</a>, and take a few minutes for myself.</p>
<h2 id="️-exercise">🏃🏽♂️ Exercise</h2>
<p>Exercising is my personal super-charger. When I go days without exercising I get grumpy, I get depressed, and I lose confidence in myself. Carving out time to exercise can be tough when you have a busy job, family, and all those general adult responsibilities. I am also inspired by my wife who practices Brazilian Jiu Jitsu 🥋 to get up and get active!</p>
<p>What I have found works for me is to wake up just a little bit earlier (which is so hard for me as a night owl) and get in a quick bit of exercise of, sometimes 10-20 minutes (30 if I’m lucky). I have used <a href="https://www.fitnessblender.com/videos">fitness blender</a>, <a href="https://www.12minuteathlete.com/app/">12 minute athlete</a>, and nothing wakes me up quite like a good run!</p>
<h2 id="️-volunteer">🙋🏾♀️ Volunteer</h2>
<p>Wait, so on my “days off” you want me to do more work, Ajahne?</p>
<p>Whoa, not saying that, but rather, spending time doing something completely different or tangential from your main career can be energizing. Previously, I have <a href="/blog/leadership/2021/01/21/stay-technical-and-give-back-volunteer.html">volunteered to do mock interviews</a> or mentored aspiring engineers from non-traditional tech backgrounds. I’ve thought about gardening or helping out in my local community center. What might you do to turn off your “work brain”?</p>
<h2 id="-relax">🛀🏽 Relax</h2>
<p>Sometimes there is <em>nothing</em> better than doing nothing! Hit the couch, slump in your favorite chair or just stare out the window for a spell. My wife and I have definitely recharged our batteries on a Netflix binge or three 📺. One of my favorite ways to get a quick recharge is to watch some basketball (☘️), laugh at a sitcom (Abbot Elementary these days) or play a quick 15-20 minutes of video games (Elden Ring these days). I find just allowing my mind to not think about work to be a great way to reduce my stress levels.</p>
<h2 id="️-take-time-off">✈️ Take time off</h2>
<p>Finally, the vacation!</p>
<p>Wait, why did it take you so long to get here, Ajahne?</p>
<p>Well, I figured I could <em>start</em> off this post with vacations and time off, but in my experience, taking a vacation, while good in the moment, almost always leaves me feeling overwhelmed the first week I am back to work. If there is not a consistent method and support system to recharge your battery, you will quickly run out of gas. So yes, we all need time away, and I <em>love</em> vacations! It’s also important to have a sustainable injection of energy so your battery is not constantly running on 3% - waiting for the big jolt of a vacation.</p>
<p>One thing to do is look into what perks your company has that can help you revitalize. For example, <a href="https://jobs.dropbox.com/Benefits#:~:text=Our%20essential%20U.S.%20benefits%20include,options%20offered%20through%20Modern%20Health.">Dropbox has</a> a recharge program, monthly company wide PTO days (I’m writing this post of one of them, lol), and flexible PTO. Use your company benefits, you have earned them!</p>
<h1 id="-parting-words">✌🏾 Parting words</h1>
<p>I find it critical to find and do things that recharge me in a sustainable way so I can bring my best self in both my professional and personal life! While I outline some ways to recharge, this post could easily be called “managing stress as a manager” ⏬. Ultimately, make sure to invest in yourself. You cannot fully invest in others, if you are not investing in yourself first!</p>
<p>So…what can you bake into your day or week that will help give you the boost you need? 🔋</p>Ajahne Santa Annaajahne.santaanna@gmail.comRecently I had a 1:1 with colleague I mentor, who was just promoted to management and was exhausted in their new role. Part of this exhaustion stemmed from building a new muscle, part of this was understanding how to delegate more, and part of this was learning how (when) to step away and not work until you burn out. The conversation made me think of how I’ve recharged throughout my career when I have felt worn out and I was inspired to put the proverbial pen (keyboard) to paper (blog post).Radical Candor - Chapter Notes2022-02-10T10:00:00+00:002022-02-10T10:00:00+00:00https://ajahne.github.io/blog/leadership/books/2022/02/10/radical-candor-chapter-notes<p>While <a href="https://www.goodreads.com/quotes/95682-not-all-readers-are-leaders-but-all-leaders-are-readers">Leaders are readers</a>, I definitely have not read as much during quarantine 😩. I’ve been trying to get back into that as well as blogging more (🤞🏾). So with that in mind, I was dusting off some old blog entries from my drafts and stumbled upon my chapter notes for Radical Candor from 2019. While I do not agree with everything in this book, I do believe it has some insight to offer, particularly around “giving a damn” as a manager/leader and bringing your whole self to work. Please keep in mind that these notes are based on the first edition of the book (i.e. 2017) and I believe some things have changed in the newest version.</p>
<h2 id="table-of-contents">Table of Contents:</h2>
<ul>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#1-building-radically-candid-relationships">Chapter 1: Building Radically Candid Relationships</a></li>
<li><a href="#2-get-give-and-encourage-guidance">Chapter 2: Get, Give, and Encourage guidance</a></li>
<li><a href="#3-understand-what-motivates-each-person-on-your-team">Chapter 3: Understand What Motivates Everyone on your Team</a></li>
<li><a href="#4-drive-results-collaboratively">Chapter 4: Drive Results Collaboratively</a></li>
<li><a href="#5-relationships">Chapter 5: Relationships</a></li>
<li><a href="#6-guidance-ideas-for-getting-giving-encouraging-praise-and-criticism">Chapter 6: Guidance</a></li>
<li><a href="#7-team">Chapter 7: Team</a></li>
<li><a href="#8-results">Chapter 8: Results</a></li>
<li><a href="#getting-started">Getting started</a></li>
</ul>
<h2 id="introduction">Introduction</h2>
<ul>
<li>You are told all of your life “if you don’t have something nice to say, don’t say anything at all”, have a lifetime of training to undo</li>
<li>Management is hard</li>
<li>When people make mistakes over and over (and you do not give feedback or do anything to change it) you stop just thinking the work is bad, you start thinking the person is bad</li>
<li>As a boss, you sometimes just misread signals</li>
<li>Relationships are the core of your job</li>
<li>Relationships may not scale, but cultures do</li>
<li>At the heart of being a good boss, is a good relationship</li>
</ul>
<h1 id="part-1">Part 1</h1>
<h2 id="1-building-radically-candid-relationships">1: Building Radically Candid Relationships</h2>
<ul>
<li>leadership and management are like forehand and backhand, you need both to win</li>
<li>Bosses guide a team to achieve results</li>
<li>Three areas of responsibility: guidance (feedback/coaching, praise and criticism), team-building(hiring, firing, promoting, motivation), results (getting things done)</li>
<li>Relationships, not power, drive you forward
<blockquote>
<p>“Your ability to build trusting, human connections with the people who report directly to you will determine the quality of everything that follows” (p8)</p>
</blockquote>
</li>
<li>Two dimensions to move in a positive direction: give a damn, challenge directly</li>
<li>Be your whole self, show that you care personally
<blockquote>
<p>“It’s not just business; it is personal, and deeply personal”</p>
</blockquote>
</li>
<li>Telling people when work isn’t good enough, delivering hard feedback, holding a high bar for results</li>
<li><strong>Radical Candor = Care Personally + Challenge Directly</strong></li>
<li>Bring your whole self to work (how?)</li>
<li>Being a boss is a job, not a value judgment</li>
<li>Finding out what makes us get out of bed and what makes us wanna stay there</li>
<li>They may never repay you, but they are likely to pay it forward.
<blockquote>
<p>“Challenging others and encouraging them to challenge you helps build trusting relationships”. You care enough to point out when things aren’t going well and admit you are wrong and committed to fixing mistakes (pg14)</p>
</blockquote>
</li>
<li><strong>Good rule of thumb: leave three unimportant things unsaid each day</strong></li>
<li>Radical Candor is not front-stabbing, not an open invite to be a jerk, not schmoozing - remember <strong>you have to care about people</strong></li>
<li>Radical Candor is sensitive to context. Not what is said, it’s what is heard. It’s measured at the listeners ear. Only works if person understand that you care personally</li>
<li>Communication and how to give feedback and share perspectives differs by company, country, and culture - be aware of this and still push for Radical Candor (e.g. from experiences in Tokyo at Google the author encouraged “polite persistence”)</li>
</ul>
<h2 id="2-get-give-and-encourage-guidance">2: Get, Give, and Encourage Guidance</h2>
<ul>
<li><em>“Um” note to self: check to see if you are saying “ummmm” a lot, if so stop! Work to improve. Maybe speech coach?</em></li>
<li>Give operational feedback (what can be done to help fix, in example the author’s boss offers to provide a speech coach)</li>
<li>Do not personalize feedback, the boss said “makes you sound stupid”, not “makes you stupid” or “you are stupid” ➡️ “It’s not mean, it’s clear”</li>
<li>Contextualize comments, be personal and specific with your praise
<ul>
<li>“I admire that about you”</li>
<li>“To keep winning, criticize the wins”</li>
</ul>
</li>
<li>Most people prefer a “challenging jerk” as a boss over the boss whose “niceness” gets in the way in Candor</li>
<li>Do not just criticize, show that you care</li>
<li>It’s about the behavior, not the person. Do not personalize feedback. About what you did, not who you are</li>
<li>Avoid belittling comments</li>
<li>Not everyone is a jerk all the time or nice all the time</li>
<li>Leadership is sometimes about being willing to piss people off</li>
<li>Do not be insecure, not about being liked or praised, about being honest, direct, and caring</li>
<li>When giving praise investigate until you really understand who did what and why it was so great. <strong>Be specific and thorough with praise as with criticism. Go deep into the details</strong></li>
<li>On the path to creating a culture of radical Candor: start by getting feedback, not giving it</li>
<li>Worry more about praise, less about criticism - but above all be sincere</li>
<li>To criticize without discouraging, focus on the relationship
<ul>
<li>Ask for criticism before giving it</li>
<li>Be humble</li>
<li>Offer guidance in person (and immediately)</li>
<li>Praise in public, criticize in private</li>
</ul>
</li>
<li>Don’t personalize; the problem is not due to some unfixable character flaw</li>
<li><strong>Be more concerned with getting to the right answer than with being right</strong></li>
<li>Use “your fly is down” or “you have spinach in your teeth” as examples on how to tell someone something that may be uncomfortable. Better to tell them then to let them walk around with it.</li>
<li>Simple advice about criticism: “just say it”</li>
<li>Give a damn!</li>
</ul>
<h2 id="3-understand-what-motivates-each-person-on-your-team">3: Understand What Motivates Each Person on your Team</h2>
<ul>
<li>What motivates this person?</li>
<li>Rock stars and superstars</li>
<li>Rockstars are consistent, like rock of Gibraltar, superstars always looking for the next
<ul>
<li>Analyze when you have been each one? Self reflect first</li>
<li>Break down direct reports and see where they fall. Be honest. Avoid assumptions</li>
<li>Focus on growth</li>
<li>Job is not to provide purpose, but to know team well enough to understand how each drives meaning from their work</li>
</ul>
</li>
<li>Ask how each person derived meaning from their work (since I cannot guess, just ask)</li>
<li>How do I determine rock stars and superstars?</li>
<li>Excellent performance</li>
<li>Be a partner, not an absentee manager or micromanager</li>
<li>Recreation is essential for creation</li>
<li>Great to find people that love their jobs for 5,10,30 years! Not wanting to climb the corporate ladder is not a negative. Treat these people with honor, they keep the team stable cohesive, and productive</li>
<li>Avoid Peter Principle (it’s hard to): people getting promoted beyond their level of competence</li>
<li>Sometimes you promote people who are skilled and can do it, but do not want to do it at this time. Avoid this</li>
<li>Excellent performance/steep growth trajectory
<ul>
<li>When you find super stars, keep them challenged (nts: develop a plan specifically for that person); make sure they are constantly learning</li>
</ul>
</li>
<li>Steep trajectory is like a shooting star, lucky to have in orbit for a while, trying to hold on is futile
<ul>
<li>Don’t squash or block them, might be working for them one day!</li>
</ul>
</li>
<li>Google has people nominate themselves for positions: can this work in a smaller team? Need a committee to review “promotion packet” - manager is not on the committee; avoids promotions based on loyalty</li>
<li>NTS: how can we crowdsource more ideas?</li>
<li><strong>Do not conflate management and growth</strong>
<ul>
<li>Need a trajectory not just for managers or people who want to manage, but for individual contributors as well! (This is why the career ladder matters so much)</li>
<li>When management is the only path to higher compensation, everyone losses. People become bosses not because they want the role, but more about higher compensation. Can be miserable for all involved</li>
</ul>
</li>
<li>Managing the middle
<ul>
<li>No such thing as B-player and mediocre human being. Everyone can be excellent at something</li>
<li>Set and uphold the quality bar</li>
<li>Do not get sucked into Ruinous Empathy when managing people who are doing OK, but not great.</li>
<li>Accepting mediocrity isn’t good for anyone.</li>
<li>Author had a policy of having people who had not been performing well for two years take the lead on a major initiative - if they shine here, great, if not, it’s not a fit. If after 2 years someone not doing well, let them go</li>
</ul>
</li>
<li>Poor performance/ negative growth trajectory: part ways
<ul>
<li>When someone is not performing well, it is best for that person, you, and the team, to let them go</li>
</ul>
</li>
<li>Consider: have you given radically candid guidance, do you understand the person’s performance on the team, have you sought advice from others?</li>
<li>Better to have a hole than an asshole</li>
<li>Retaining people who are doing poor work, penalizes people doing excellent work</li>
<li>Low performance/steep growth trajectory; manager, look at yourself in the mirror
<ul>
<li>If you put someone in the wrong role, it’s your fault</li>
<li>Reasons it may not work: wrong role, new to role; too much too fast; personal problems; poor fit</li>
<li>NTS: examine team and identify these (if they exist)</li>
<li>Avoid permanent markers and labels</li>
</ul>
</li>
<li>Peoples performance changes over time</li>
</ul>
<h2 id="4-drive-results-collaboratively">4: Drive Results Collaboratively</h2>
<ul>
<li>Better results if (when) you lay down your power and work more collaboratively</li>
<li>Get buy-in from the team in decisions</li>
<li>Help people understand the why</li>
<li>Insist that people tell you you’re wrong</li>
<li>Have people challenge you.</li>
<li>Get it right is more important than to be right</li>
<li>“Get stuff Done” (refer to graphic)</li>
<li>Listen
<blockquote>
<p>“Give the quiet ones a voice” - managers job</p>
</blockquote>
<ul>
<li>Create a culture where the burden of listening doesn’t just fall on you.</li>
<li>Different ways to listen: quiet and loud</li>
<li>Quiet: allow for long pauses, do not respond, but let people know what you think sometimes</li>
<li>Loud listener: share opinions that you want to be challenged and get feedback on; state a point of view strongly and debate flaws</li>
<li>Create a culture of listening (check out hbr link)</li>
<li>NTS: create an idea box or a way for people to get their ideas out there. Once a week I (and maybe a committee) will review ideas submitted.</li>
</ul>
</li>
<li>Clarify
<ul>
<li>As the boss, you are the editor, not the author</li>
<li>Help people think through ideas before they have to debate them</li>
<li>Ok to bring problems, as well as, solutions</li>
<li>NTS: schedule another hack-a-thon</li>
</ul>
</li>
<li>Brainstorming sessions
<ul>
<li>The essence of making an idea clear requires a deep understanding not only of the idea, but also the person to whom one is explaining the idea (pg. 93)</li>
</ul>
</li>
<li>Debate
<ul>
<li>Create a culture of debate on the team</li>
<li>Debate is the rock tumblr, it polishes the stones (I.e. the ideas)</li>
<li>Duty to dissent</li>
<li>Pause for exhaustion/emotion</li>
<li>Have separate debate and decide meetings</li>
<li>Have a deadline to decide</li>
</ul>
</li>
<li>Decide
<ul>
<li>Do not make all the decisions as the boss, be sure to listen.</li>
<li>NTS: decide less, debate more</li>
<li>Challenge I see is that often people do not want to make the decision, they want to be told what to do? That is giving them the easy way out. They can be less vested and also complain and nitpick the decision. If you want buy in, help them facilitate making the decision</li>
<li>As a boss, do not decide for yourself, create a clear decision-making process to empower people closets to the facts to make as many decisions as possible</li>
</ul>
</li>
<li>When appropriate, you can go low level(I.e. spelunking)
<ul>
<li>Get to the facts</li>
<li>Sometimes go directly to the source</li>
</ul>
</li>
<li>Persuade
<ul>
<li>Emotion, credibility, logic</li>
<li>Must bring people on board to the decision making process</li>
<li>Decider must have credibility</li>
<li>Understand (and address) the emotion of the people who are listening to you</li>
<li>Credibility: know your subject matter, say “we”, instead of “I”; demonstrate expertise and humility</li>
<li>Logic: show your work;share how you got to it</li>
</ul>
</li>
<li>Execute
<ul>
<li>Minimize collaboration tax</li>
<li>NTS: explicitly have people bring problems to you in your next 1-1, make announcement during engineering meeting</li>
<li>As a boss make sure you are clearing a path for your people</li>
<li>Continue to balance between leading and executing personally; integrate the two; don’t get too far away from the work your team is doing</li>
<li>Block time to execute</li>
</ul>
</li>
<li>Learn
<ul>
<li>Consistency is the hobgoblin of little minds (ouch! Lol)! - Ralph Waldo Emerson</li>
<li>Be willing to try things, admit they didn’t work, and try something new</li>
<li>Learn and admit to your personal mistakes</li>
<li><strong>When the facts change, change your mind</strong></li>
</ul>
</li>
<li>As a manger, take care of yourself
<ul>
<li>(Return to listen, it’s a loop)</li>
</ul>
</li>
</ul>
<h1 id="part-2-tools-and-techniques">Part 2: Tools and Techniques</h1>
<h2 id="5-relationships">5: Relationships</h2>
<ul>
<li>Start with yourself, stay centered and take care of yourself</li>
<li>When everyone is able to bring the best of themselves to work, they are more fulfilled, they work better with one another, and the team gets better results</li>
<li>Lay down unilateral authority</li>
<li>Master the art of socializing at work</li>
<li>Sometime the greatest gift you can give your team is to let them go home!</li>
<li>Respect boundaries; Respect and openness</li>
<li>NTS: work to say “you all” instead of “you guys”</li>
<li>Recognize your emotions and master your reactions to others emotions</li>
<li>Acknowledge emotions: “I can see you’re mad/frustrated/elated/etc.”</li>
<li><strong>When someone is upset ask questions until you understand what the real issue is</strong></li>
<li>Do not add your guilt to people’s emotions, it may have nothing to do with you. Focus on them, not yourself</li>
<li>Telling people how to feel will backfire: do not say “don’t be mad, don’t be sad” or “no offense, but”</li>
<li>Some tips: keep tissue a short walk from your desk, excuse yourself to get the person water, keep water by your desk, go for a walk</li>
<li>Building relationships takes time and real energy, these relationships can give your work real meaning</li>
</ul>
<h2 id="6-guidance-ideas-for-getting-giving-encouraging-praise-and-criticism">6: Guidance: Ideas for getting, giving, encouraging praise and criticism</h2>
<ul>
<li>Guidance is the “atomic building block” of management</li>
<li>Important to build a culture where people feel comfortable providing criticism. As the boss, encourage and welcome it.</li>
<li>As the boss, the “feedback in private” rule does not apply to you (I do not completely agree with this, at least not in all cases)</li>
<li>Ask people to give you feedback in public, find someone who is comfortable challenging you and have them do it in a public setting</li>
<li><strong>Have a go to question to get feedback: “is there anything I could do or stop doing that would make it easier to work with me?”</strong>
<ul>
<li>Tips: count to 6; ask the question again; watch body language</li>
</ul>
</li>
<li>Your first job is to listen with intent to the criticism, not defend (or debate it!) - hard to do, learn how to master your response and emotions</li>
<li>Reward Criticism to get more of it (ie make a change as soon as possible, if change will take time do a small step towards it)</li>
<li>Hear the criticism and take action</li>
<li>Repeat what you heard back to ensure you understand it</li>
<li>Keep a tally each week: how much do people praise or criticize you</li>
<li>Make it not just safe, but natural to criticize you</li>
<li>Have management fix-it weeks, similar to engineering bug fix week. Get suggestions and that’s what you focus on</li>
<li><em>Giving impromptu feedback</em></li>
<li>Be humble</li>
<li>Technique: situation, behavior, impact. Describe what you saw, what the person did (good or bad), and the impact you observed</li>
<li>Left hand column: what you were thinking vs what was said?</li>
<li>Do not confuse objective reality with our subjective experience</li>
<li>Explicitly state what is good or bad: not “she is smart”, say “she just gave the clearest explanation I’ve ever heard of why users don’t like that feature”</li>
<li>Find help for people</li>
<li>Give feedback immediately; guidance has a short half-life</li>
<li>Don’t let scheduled meetings (performance reviews, 1-1s) be an excuse to not get impromptu in-person feedback</li>
<li>Praise in public, criticize in private
<ul>
<li>Group learning: most people will say they do not want to be praised in public, so say something like: “Not because I want to embarrass Jane, but to make sure everyone learns from what she accomplished and how she did it”</li>
</ul>
</li>
<li>Don’t personalize, avoid saying “you are”
<ul>
<li>Say “that’s wrong” not “you’re wrong”</li>
</ul>
</li>
<li>Track your guidance towards radical Candor</li>
<li>You can’t fix yourself once and for all, you have to manage yourself daily</li>
<li>Figure out how others experience your guidance</li>
<li>Listen challenge commit</li>
<li>Gender biases impact both men and women
<ul>
<li>Ask the women who report to you: do you see any gender biases in our organization? In my management? In leadership? In women in tech…what can we do to hire more? (NTS: I think the <em>everyone</em> in the organization should be focused on this)</li>
<li>Go back to page 158</li>
<li>Don’t use gendered language “abrasive”, “bossy”, “pushy”, “shrill”, “screechy”</li>
<li>Never just say “be more likable”</li>
</ul>
</li>
<li>Performance reviews
<ul>
<li>Don’t rely on unilateral judgment</li>
<li>Things I’ve learned/noticed that she mentioned: don’t schedule back to back, give yourself enough time to conduct them, write it down, potentially separate review from compensation, schedule regular checkins to ensure feedback is being addressed</li>
</ul>
</li>
<li>Peer guidance
<ul>
<li>Get people to solve problems together, not just talk to you as the boss</li>
<li>“whoops the monkey” is like celebrate the wins</li>
</ul>
</li>
<li>Skip level meetings
<ul>
<li>Goals: to help each of them become better bosses, make sure people on their team feel comfortable giving feedback directly</li>
<li>Share everything with their boss, not not who said it</li>
</ul>
</li>
<li>Goal to make things better, perfect is unrealistic</li>
</ul>
<h2 id="7-team">7: Team</h2>
<ul>
<li>Career conversations
<ul>
<li>Balance growth and stability</li>
<li>Three 45 minute conversations</li>
<li>Life story, dreams, 18 month plan</li>
<li>Build trust with the people who report to you: figure out best role for each person is suited for so team can achieve best results</li>
<li>Once a year, put together a growth management plan for each member of your team</li>
<li>Can email Russ directly</li>
<li>Growth plan: 3-5 bullets per person</li>
</ul>
</li>
<li>Hiring
<ul>
<li>Define team “fit” as well as “skills” in job description</li>
<li>Define company culture in three words</li>
<li>Should we add pre-screen questions?</li>
<li>Give people the opportunity to show the work without looking at who the person is</li>
<li>Use the same interview committee for multiple candidates</li>
<li>Casual interviews reveal more about team fit: walk person to the car, schedule over lunch, etc (may not be feasible in all situations, but an interesting idea)</li>
<li>Write down interview notes after meeting/speaking with the person</li>
<li>Debrief with team in person</li>
<li><strong>If not sky high on person, do not hire</strong></li>
</ul>
</li>
<li>Firing
<ul>
<li>Don’t want too long</li>
<li>Don’t make decisions unilaterally</li>
<li>Give a damn</li>
<li>Follow up</li>
</ul>
</li>
<li>Promotions
<ul>
<li>Be fair</li>
<li>Refer back to page 194 for the details</li>
<li>Reward rock stars, not everything is about promotions</li>
</ul>
</li>
<li>Avoid micromanagement and absentee management</li>
</ul>
<h2 id="8-results">8: Results</h2>
<ul>
<li>1:1 meetings
<ul>
<li>Employees set the agenda, you listen and help them clarify</li>
<li>Purpose: to understand what direction each person working for you wants to head in and what is blocking them</li>
<li>NTS: Pretty clear on a lot of the points raised as I am familiar with 1:1s</li>
<li>Feedback: <em>What could I do or stop doing to make it easier to work with me?</em></li>
<li>This is your time, but you don’t seem to come with much to talk about, can you tell me why</li>
</ul>
</li>
<li>Staff meetings:
<ul>
<li>Learn, listen, clarify</li>
<li>Learn: review key metrics</li>
<li>Listen: put updates in a shared document</li>
<li>Clarify: what are the one or two most important decisions and the single most important debate the team needs to take in this week?</li>
</ul>
</li>
<li>Think time
<ul>
<li>Block out time to think</li>
<li>Put time in your calendar and hold it sacred</li>
</ul>
</li>
<li>Big debate meetings
<ul>
<li>When having a debate, clarify it’s a debate meeting, not a decision meeting</li>
<li>These meetings help encourage a culture of debate</li>
<li>Walk around: get a sense of how things are going by just walking around the office</li>
<li>How and what you communicate as a boss matters, it impacts culture. You are under the microscope as the boss</li>
</ul>
</li>
<li>Culture: you know you’ve succeeded when it’s no longer about you
<ul>
<li>Culture is self-replicating</li>
</ul>
</li>
</ul>
<h2 id="getting-started">Getting started</h2>
<ul>
<li>Explain radical Candor</li>
<li>Share stories with the team, personal stories explain better than theory</li>
<li>Prove you can take it before you dish it out</li>
<li><strong>Ask people to criticize you</strong></li>
<li>Have career conversations, these are once a year (as defined here)</li>
<li>Take time to assess</li>
<li>After 1:1s, career conversations, and you’re getting guidance, assess and then (only then) start to add on to it</li>
<li>Staff meetings: reviewing key metrics, share updates, identify big decisions and debates</li>
<li>Encouraging guidance between members of your team</li>
<li><strong>Fight meeting proliferation</strong></li>
<li>Plan for the future of your team: do growth management plans</li>
<li>Walk around, do skip-level meetings</li>
</ul>Ajahne Santa Annaajahne.santaanna@gmail.comWhile Leaders are readers, I definitely have not read as much during quarantine 😩. I’ve been trying to get back into that as well as blogging more (🤞🏾). So with that in mind, I was dusting off some old blog entries from my drafts and stumbled upon my chapter notes for Radical Candor from 2019. While I do not agree with everything in this book, I do believe it has some insight to offer, particularly around “giving a damn” as a manager/leader and bringing your whole self to work. Please keep in mind that these notes are based on the first edition of the book (i.e. 2017) and I believe some things have changed in the newest version.Essential Manager Meetings: Three Month Catch Up2021-10-14T18:10:00+00:002021-10-14T18:10:00+00:00https://ajahne.github.io/blog/leadership/2021/10/14/three-month-catchup<p>One of the key meetings that I’ve done throughout my career with new hires or folks new to their role, is the “Three Month Catch Up”. This meeting provides an opportunity to conduct an informal checkin with your direct report on how things have been going, allowing you to learn and potentially course correct, while continuing to build empathy and trust. Please note, this post builds on the <a href="https://ajahne.github.io/blog/leadership/2019/07/24/essential-meetings-to-have-with-your-people-as-a-manager.html">Essential Meetings to Have With Your People as a Manager</a>.</p>
<h2 id="three-month-catch-up">Three Month Catch Up</h2>
<p><strong>Purpose:</strong> To conduct an informal “mini-review” of the employee’s first three months at the organization to better understand strengths, areas of improvement, and what this person has liked/disliked over the first few months.</p>
<p><strong>Overview:</strong><br />
For new hires, engineers new to their role (e.g. recent promotion), and especially junior engineers starting their first job, I have introduced a “three month catchup”. This meeting provides an opportunity to sit down with a new employee in a more focused session.</p>
<p>When things are going well this meeting helps to promote continued flow. When things are not going well it is an opportunity to provide constructive feedback in a more formal manner. At times I have utilized this meeting as a “mini <a href="https://ajahne.github.io/blog/leadership/2019/07/24/essential-meetings-to-have-with-your-people-as-a-manager.html#performance-reviews">performance review</a>”. If you are conducting frequent <a href="https://github.com/ajahne/one-on-ones">one-on-ones</a> (as I know you are!) then this meeting will be pretty straight forward with no surprises. However, I find it important to carve out time specifically for the employee to voice their thoughts on the new job/role in a more concentrated way.</p>
<p>One to two weeks before the meeting, I conduct a quick 10-15 minute overview discussion of the meeting, where we go over the agenda and topics. I then share the document with my report for them to fill out theirselves ahead of the meeting. Before the meeting both you and your direct report should fill out the form. Your direct report fills out the full document, while you as the manager fill out strenghts, development areas, and goals. This allows a two-way discussion.</p>
<p>The catch up, when conducted, is an opportunity for your direct report to discuss in more detail than a standard 1-1 how the first three months of their job have been.</p>
<p><strong>Agenda and topics:</strong></p>
<ul>
<li>Understand what your direct report has enjoyed and not enjoyed working on in the first three months.</li>
<li>Discuss strengths and areas of improvement. Start with self reflection, what does this person feel?</li>
<li>See the <a href="https://github.com/ajahne/essential-manager-meetings/blob/master/templates/three-month-catch-up.md">meeting template</a> for a detailed outline. Both parties fill out the form separately ahead of the meeting then discuss.</li>
</ul>
<p><strong>Frequency:</strong> One time, three months after start date with new hire.</p>
<p><strong>Meeting Length:</strong> 30-45 minutes.</p>
<p><strong>Additional Resources:</strong></p>
<ul>
<li><a href="https://github.com/ajahne/essential-manager-meetings/blob/master/templates/three-month-catch-up.md">Meeting Template</a></li>
<li><a href="/blog/leadership/2019/07/24/essential-meetings-to-have-with-your-people-as-a-manager.html">Essential Meetings to Have with Your People as a Manager</a></li>
</ul>Ajahne Santa Annaajahne.santaanna@gmail.comOne of the key meetings that I’ve done throughout my career with new hires or folks new to their role, is the “Three Month Catch Up”. This meeting provides an opportunity to conduct an informal checkin with your direct report on how things have been going, allowing you to learn and potentially course correct, while continuing to build empathy and trust. Please note, this post builds on the Essential Meetings to Have With Your People as a Manager.Want to stay technical and give back? Volunteer!2021-01-21T14:00:00+00:002021-01-21T14:00:00+00:00https://ajahne.github.io/blog/leadership/2021/01/21/stay-technical-and-give-back-volunteer<p>Last spring, on every other Wednesday for two months, I volunteered at <a href="https://www.pursuit.org">Pursuit</a> to conduct technical interviews for engineering fellows.</p>
<p>This was important to me for many reasons. In the tech industry there are not many people that look like me and I feel it is important to give back.</p>
<p>Furthermore, one of the most challenging aspects of being a manager is staying technical. Frameworks, languages, APIs, libraries, and more are always evolving. When you are in your day to day, how do you stay up to speed?</p>
<p>Well let’s talk a bit about staying technical while also giving back:</p>
<ul>
<li><a href="#why-its-important-to-stay-technical">Why it’s important to stay technical</a></li>
<li><a href="#why-its-important-to-give-back">Why it’s important to give back</a></li>
<li><a href="#how-i-got-involved-as-a-volunteer-for-pursuit">How I got involved</a></li>
<li><a href="#what-i-did-to-prepare">What I did to prepare</a></li>
<li><a href="#how-the-interview-process-went">How the interview process went</a></li>
<li><a href="#conclusion">Conclusion</a></li>
</ul>
<h2 id="why-its-important-to-stay-technical">Why it’s important to stay technical</h2>
<p>Our industry changes so rapidly, learn or die. Not physically, but career-wise. If you do not evolve, your career progression will stagnate.</p>
<p>What you do at work will not necessarily align with the current trends and ways of the industry. Many moons ago I worked on Adobe Flash when it was dying. In a past life, I was deep into Angular when React was eating the world. To prepare for interviews in 2019 and early 2020, with JavaScript as my strongest language, I still needed to take time to brush up on data structures and algorithms.</p>
<p>So staying technical is critical. As a manager? Even more so as our days are not spent coding or designing or architecting. But rather coaching, mentoring, executing, building teams, and setting direction.</p>
<p>For 6+ months, prior to volunteering, I was deep in the interview process with FAANGs, top tier tech companies, and high-growth startups. In working with Pursuit, I saw an opportunity to keep the learning going while also giving back!</p>
<h2 id="why-its-important-to-give-back">Why it’s important to give back</h2>
<p>To get to where I am I have stood on the shoulders of giants, had the support of family, armies of friends, professors, loved ones, coworkers, and mentors of all flavors. I would not be here without the support of others. I feel indebted and try as I can to pay it forward (and back) as often as I can.</p>
<p>And let’s keep it real, representation maters. Seeing <a href="https://www.pursuit.org/mission-vision">Pursuit’s mission</a> and passion to provide opportunities to the talent with the most need and potential to get their first jobs in tech and advance in their career, strongly resonated with me.</p>
<p>Throughout the interviews I met engineering fellows who were technically proficient, driven, hard working, and passionate about growing as software engineers. If by seeing someone in this industry who looks like them, I was able to inspire even in the smallest degree, then I would have done even more than I could have hoped for. Humbled I would be.</p>
<h2 id="how-i-got-involved-as-a-volunteer-for-pursuit">How I got involved as a volunteer for Pursuit</h2>
<p>I met <a href="https://www.linkedin.com/in/alexismmedina/">Alexis Medina</a>, the manager of volunteering, at a networking event for engineering leaders in NYC. A pursuit fellow gave an engaging presentation on their work, what they learned, and the impact it had. I was hooked.</p>
<p>I signed my name up as a volunteer and started from there. A few months later we figured out a time and what volunteer opportunities would best align with my skills. I decided to support them in their technical interview process. Looking to volunteer, <a href="https://www.pursuit.org/volunteer">reach out</a>.</p>
<h2 id="what-i-did-to-prepare">What I did to prepare</h2>
<p>For preparation, Pursuit provides the volunteers with an overview and a walkthrough of the interview process. There was a list of technical questions prepared by the Pursuit team for us to choose from. Questions like <a href="/blog/javascript/2020/02/04/how-to-remove-duplicates-from-an-array-in-javascript.html">this one</a> and <a href="https://leetcode.com/problems/longest-common-prefix/">this one</a> <em>(nah, these ain’t the real questions, I ain’t giving you those. I have been sworn to secrecy)</em>.</p>
<p>To make sure I was on point, I wrote up answers to each of the questions, following the same interview process as the fellows. Furthermore, I made sure I was familiar with the different ways to answer each question as well as the time and space complexity of optimal solutions.</p>
<p>The great part is that the fellows take programs in either JavaScript or Swift. So some of the candidates presented their answers in Swift, which I am not familiar with. I took this as an opportunity to brush up on Swift fundamentals. While I am no Swift expert, I can definitely knock out a “Hello World” or two and answer low level programming interview questions :).</p>
<p>As I was studying for interviews during this time I was already familiar with this process. However, as we were using Repl instead of white boards I wanted to make sure all of my code ran and compiled. No time to write unit tests, but I did think about how I would test my solutions.</p>
<h2 id="how-the-interview-process-went">How the interview process went</h2>
<p>Each week I was set up with two candidates to interview over Google Hangout. Given the pandemic, each one hour interview was conducted remotely. We spent a few minutes saying hello and then jumped right into it.</p>
<p>I presented the question to the candidate and we used Repl as our “white board”. I offered hints where appropriate, took notes on how they approached the problem, asked clarifying questions, and ultimately determined if they were able to solve the problem. There were guidelines provided by Pursuit on how to provide hints and what to look for, so I was all set there 😀.</p>
<p>At the end of each interview I submitted my notes into a form and checked in with the volunteer lead.</p>
<p><strong>What I enjoyed most about the interview process was meeting the fellows. Each one had a story, a reason for pursuing their passions</strong>. It was insightful to see how they approached each problem. As I was actively interviewing myself I could give pointers <em>(after the interview was completed)</em> and also reflect on where I could improve when I was in similar interview situations in the future.</p>
<h2 id="conclusion">Conclusion</h2>
<p>I found volunteering a highly rewarding experience. Not only did it allow me to give back in a way that aligned with my values, but it also helped me continue to stay technical while I was interviewing and embarking on a career change!</p>
<p>If you have the time, I highly encourage you to volunteer. You will both be able to stay technical, provide support, and most importantly give back! Check out <a href="https://www.pursuit.org">Pursuit</a> and don’t hesitate to reach out to me if you want chat more!</p>Ajahne Santa Annaajahne.santaanna@gmail.comLast spring, on every other Wednesday for two months, I volunteered at Pursuit to conduct technical interviews for engineering fellows.Update Jekyll and Ruby on macOS2020-10-22T09:00:00+00:002020-10-22T09:00:00+00:00https://ajahne.github.io/blog/tools/2020/10/22/update-jekyll-ruby-gems<p>So yeah, I always forget how to update my gems when I need to. I am not familiar with Ruby and only use it to power my blog. Two issues often occur:</p>
<ol>
<li>Gems get out of date and I just want to update to stay current and/or</li>
<li>I get security alerts from GitHub and need to (have to) update to stay secure</li>
</ol>
<p>The challenge? I <em>never</em> remember how to do it. So…to stop that I recently took a few notes 📝 while I fixed a GitHub security issue related to my blog. Below are some steps that I did while debugging and fixing issues. I plan to update this post over time as needed.</p>
<p>Similar to my write up on <a href="/blog/tools/2018/06/11/how-to-upgrade-git-mac.html">updating Git for macOS</a>, this is meant to be notes and helpful information, not the gospel. Use discretion if/when using 😀.</p>
<p><strong>TL;DR</strong></p>
<ul>
<li><code class="language-plaintext highlighter-rouge">bundle install</code> installs what is currently in the <code class="language-plaintext highlighter-rouge">Gemlock.file</code>
<ul>
<li>If any errors happen when starting Jekyll, run the above command above <strong>first</strong></li>
</ul>
</li>
<li>Update specific gems with <code class="language-plaintext highlighter-rouge">bundler</code> (e.g. <code class="language-plaintext highlighter-rouge">bundle update <GEMNAME></code>)</li>
<li>If you need to update Ruby run <code class="language-plaintext highlighter-rouge">rvm install ruby --latest</code></li>
<li>Make sure dependencies align with the <a href="https://pages.github.com/versions/">GitHub pages dependency list</a></li>
</ul>
<h1 id="jekyll">Jekyll</h1>
<p>Check Jekyll version</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>jekyll <span class="nt">-v</span>
</code></pre></div></div>
<p><a href="https://jekyllrb.com/docs/upgrading/">Update</a> Jekyll</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle update jekyll
</code></pre></div></div>
<p>Run Jekyll</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>jekyll serve
</code></pre></div></div>
<p>Run Jekyll with drafts</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>jekyll serve <span class="nt">--drafts</span>
</code></pre></div></div>
<p><em>More command options are listed <a href="https://jekyllrb.com/docs/configuration/options/#build-command-options">here</a></em></p>
<hr />
<h1 id="ruby">Ruby</h1>
<p>Check Ruby version</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ruby <span class="nt">-v</span>
</code></pre></div></div>
<p>Install the latest version of Ruby (using RVM)</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rvm <span class="nb">install </span>ruby <span class="nt">--latest</span>
</code></pre></div></div>
<p>Install a specific version of Ruby (using RVM)</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rvm <span class="nb">install </span>ruby-2.5.0
</code></pre></div></div>
<p>To see which version of Ruby is being used</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>which ruby
</code></pre></div></div>
<p>To view all rubies installed by RVM</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rvm list rubies
</code></pre></div></div>
<p>To set the default version of Ruby</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rvm <span class="nt">--default</span> use 2.5.0
</code></pre></div></div>
<p><em>Don’t forget to change 2.5.0 with the version number of the latest Ruby.</em></p>
<h2 id="ruby-bundler">Ruby <a href="https://bundler.io">Bundler</a></h2>
<p>Install the bundler</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem <span class="nb">install </span>bundler
</code></pre></div></div>
<p>Install a specific version of the bundler</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem <span class="nb">install </span>bundler:1.18.2
</code></pre></div></div>
<p>After updating Ruby you may need to update the bundler. To update:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle update <span class="nt">--bundler</span>
</code></pre></div></div>
<p>To install gems that have been previously installed based on the <code class="language-plaintext highlighter-rouge">Gemfile.lock</code>, run</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle <span class="nb">install</span>
</code></pre></div></div>
<p><img src="/blog/assets/images/update-jekyll-ruby-error.png" alt="jekyll serve before bundle install" height="100%" width="100%" /></p>
<p><em>Note: Previously when Jekyll did not not work (see image above), I ran the <code class="language-plaintext highlighter-rouge">bundle install</code> command to address this.</em></p>
<p>To update all gems <em>(Note: probably better to run <code class="language-plaintext highlighter-rouge">bundle install</code> as that uses the <code class="language-plaintext highlighter-rouge">Gemfile.lock</code>)</em></p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle update <span class="nt">--all</span>
</code></pre></div></div>
<p>To update a specific gem</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle update nokogiri
</code></pre></div></div>
<hr />
<h1 id="other-tools-notes-and-miscellaneous">Other Tools, Notes, and Miscellaneous:</h1>
<h2 id="homebrew">Homebrew</h2>
<p>First update the formulae and Homebrew</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew update
</code></pre></div></div>
<p>Find out what is out of date</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew outdated
</code></pre></div></div>
<p>Upgrade a specific formula</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew upgrade git
</code></pre></div></div>
<h2 id="ruby-gems">Ruby Gems</h2>
<p>Gems are for Ruby. Gems are packages. Bundler installs ruby gems.</p>
<p>To <a href="https://guides.rubygems.org/command-reference/#gem-update">update</a> a specific gem. Note: <a href="https://stackoverflow.com/questions/4604064/rubygems-bundler-and-rvm-confusion">seems better to use bundler for application specific updates</a></p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem update <GEMNAME>
</code></pre></div></div>
<h2 id="additional-resources">Additional Resources</h2>
<ul>
<li><a href="https://jekyllrb.com/docs/installation/macos/">Install Jekyll on macOS</a></li>
<li><a href="https://bundler.io/v2.1/man/bundle-update.1.html">Bundler</a></li>
<li><a href="https://guides.rubygems.org/rubygems-basics/">Ruby Gems</a></li>
<li><a href="https://rvm.io/rvm/upgrading">RVM</a></li>
<li><a href="https://medium.com/@IanRahman/how-to-upgrade-ruby-on-a-mac-a592c6085c63">How to update Ruby on a Mac</a></li>
<li><a href="https://devhints.io/homebrew">Homebrew Cheatsheet</a></li>
<li><a href="/blog/tools/2018/06/11/how-to-upgrade-git-mac.html">How to upgrade Git on macOS</a></li>
<li><a href="https://docs.brew.sh/FAQ">Homebrew FAQ</a></li>
</ul>Ajahne Santa Annaajahne.santaanna@gmail.comSo yeah, I always forget how to update my gems when I need to. I am not familiar with Ruby and only use it to power my blog. Two issues often occur: Gems get out of date and I just want to update to stay current and/or I get security alerts from GitHub and need to (have to) update to stay secureThe First 90 Days - Chapter Notes2020-04-14T11:00:00+00:002020-04-14T11:00:00+00:00https://ajahne.github.io/blog/leadership/books/2020/04/14/the-first-90-days-chapter-notes<p><a href="https://www.goodreads.com/quotes/95682-not-all-readers-are-leaders-but-all-leaders-are-readers">Leaders are readers</a> and with that in mind, I push myself to read as often as I can. Recently, in preparation for my new management role at Dropbox, I read <a href="https://www.amazon.com/First-90-Days-Strategies-Expanded/dp/1422188612">“The First 90 Days”</a> and took notes throughout. Below are my notes, takeaways, and raw thoughts from each chapter.</p>
<h2 id="table-of-contents">Table of Contents:</h2>
<ul>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#chapter-1-prepare-yourself">Chapter 1: Prepare Yourself</a></li>
<li><a href="#chapter-2-accelerate-your-learning">Chapter 2: Accelerate Your Learning</a></li>
<li><a href="#chapter-3-match-strategy-to-situation">Chapter 3: Match Strategy to Situation</a></li>
<li><a href="#chapter-4-negotiate-success">Chapter 4: Negotiate Success</a></li>
<li><a href="#chapter-5-secure-early-wins">Chapter 5: Secure Early Wins</a></li>
<li><a href="#chapter-6-achieve-alignment">Chapter 6: Achieve Alignment</a></li>
<li><a href="#chapter-7-build-your-team">Chapter 7: Build Your Team</a></li>
<li><a href="#chapter-8-create-alliances">Chapter 8: Create Alliances</a></li>
<li><a href="#chapter-9-manage-yourself">Chapter 9: Manage Yourself</a></li>
<li><a href="#chapter-10-accelerate-everyone">Chapter 10: Accelerate Everyone</a></li>
</ul>
<h2 id="introduction">Introduction</h2>
<ul>
<li>Transitions into new roles are the most challenging times in the professional lives of leaders</li>
<li>Success or failure during the first few months is a strong predictor of overall success or failure in the job</li>
<li>Leaders average a major transition every 1.3 years
<ul>
<li>Each year about a quarter of managers in a Fortune 500 company change jobs</li>
</ul>
</li>
<li>You goal is to reach the break-even point as rapidly as possible
<ul>
<li>“Break-even point”: the point in which you have contributed as much value to the new organization as you have consumed from it</li>
<li>Average time is 6.2 months. Can reduce it by following this book (sounds like a hustle, lol, like an infomercial)</li>
</ul>
</li>
<li>Transition Traps:
<ul>
<li>Sticking with what you know</li>
<li>Falling prey to the “action imperative” - feeling like you must take action</li>
<li>Setting unrealistic expectations</li>
<li>Attempting to do too much</li>
<li>Coming in with “the” answer</li>
<li>Engaging in the wrong type of learning - e.g. learning about the technical aspects of the business, but not the culture and the people</li>
<li>Neglecting horizontal relationships</li>
</ul>
</li>
<li>Make sure to create virtuous cycles</li>
<li>Transition failures happen because new leaders either misunderstand the essential demands of the situation or lack the skill and flexibility to adapt to them.
<ul>
<li>The key, then, is to match your strategy to the situation.</li>
</ul>
</li>
<li>The first step is to diagnose the type of transitions you are going through - most leaders experience multiple transitions in parallel
<ul>
<li>For example, I am currently starting a new job, living through a pandemic, and preparing to be a father as my wife is pregnant</li>
</ul>
</li>
<li>Spend time learning about the organization.
<ul>
<li>90 day mark can start as soon as you learn you’re being considered for a new role</li>
</ul>
</li>
<li><strong>Start planning what you want to accomplish and by when</strong>
<ul>
<li>Plan the first day, week, month, months, 90 days</li>
</ul>
</li>
<li><strong>Identify the transition risks you face</strong>, e.g.: moving to a new company, taking on a cross-functional leadership position for the first time, moving to a new industry or profession, etc.</li>
<li>Every new leader needs to quickly:
<ul>
<li>Become familiar with the new organization</li>
<li>Secure early wins</li>
<li>Build supportive coalitions</li>
</ul>
</li>
</ul>
<h2 id="chapter-1-prepare-yourself">Chapter 1: Prepare Yourself</h2>
<ul>
<li>It is a mistake to believe that you will be successful in your new job by continuing to do what you did in your previous job, only more so
<blockquote>
<p>What got you here won’t get you there</p>
</blockquote>
</li>
<li>Prepare yourself for the new position: let go of the past, embrace the imperatives of the new situation</li>
<li>Understand the types of transitions, two key ones are:
<ul>
<li>Being promoted</li>
<li>Onboarding into a new company</li>
</ul>
</li>
<li>Getting Promoted presents core challenges (and opportunities) to be overcome
<ul>
<li>Balance breadth and depth</li>
<li>Rethink what you delegate</li>
<li>Influence differently
<ul>
<li><em>(Decision making becomes more political the higher you go); important to build and sustain alliances</em></li>
</ul>
</li>
<li>Communicate more formally</li>
<li>Exhibit the right presence (what does a leader look/act like at this level)</li>
</ul>
</li>
<li>Onboarding into a New Company
<ul>
<li>Leaders are often hired (lateral move) to do things that they have been successful at doing elsewhere (<em>here’s looking at you kid</em>)</li>
<li>In promotion cases, leaders understand a lot about the company…in this case, they do not and need to learn (fast)!</li>
<li>Surveys show that coming in from the outside is “much harder” than being promoted from within</li>
<li>High failure rate of leaders coming from outside (e.g. leaders not familiar with internal network of new company, not familiar with corporate structures, unknown to the organization, etc.)</li>
<li>Four pillars of effective onboarding
<ul>
<li>Business orientation (learn about the company as a whole, not just your specific parts)</li>
<li>Stakeholder connection (vertical as well as - importantly - horizontal); find historians, cultural interpreters</li>
<li>Expectations alignment</li>
<li><strong>Cultural adaptation (determine the norms, shared language, values, etc.) - this is the most daunting of the pillars</strong>
<ul>
<li>Key check list includes: Influence; Meetings; Execution; Conflict; Recognition; Ends versus means.</li>
</ul>
</li>
</ul>
</li>
<li><strong>Key ways to prepare yourself:</strong>
<ul>
<li>When transitioning, take time to make a clear break from the old and the new (e.g. take a weekend or a day to focus on what you need to be successful in the new role)</li>
<li>Assess your vulnerabilities</li>
<li>Watch out for your strengths</li>
<li>Relearn how to learn (and learn how to “unlearn”)</li>
<li>Rework your network</li>
<li>Watch out for people who want to hold you back</li>
<li>Get some help</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="chapter-2-accelerate-your-learning">Chapter 2: Accelerate Your Learning</h2>
<blockquote>
<p>Stop doing and start listening</p>
</blockquote>
<ul>
<li>Learn about culture and politics</li>
<li>Planning to learn: figure out in advance what the important questions are and how you can best answer them</li>
<li><strong>Understand the history, a baseline question is “how did we get to this point?”</strong></li>
<li>Effective leaders strike a balance between doing (making things happen) and being (observing and reflecting)</li>
<li>Display a genuine desire to learn</li>
<li><strong>Don’t rush to take action, most of the impulse to take action comes from internal sources</strong></li>
<li>Focus on learning and adapting to the new culture</li>
<li>Actionable insight: knowledge that helps you make better decisions earlier and helps you quickly reach the break even point</li>
<li>Effective learning: figure out what you need to learn so you can focus your efforts</li>
<li>Define your learning agenda
<ul>
<li>Different people inside and outside of the organization can give you insight into the business, e.g. historians, suppliers, integrators, etc. See page 55.</li>
<li>A good approach to start learning is to have 1-1s with direct reports. Page 59 has some good questions</li>
<li>Good questions on page 60 (assimilating new leaders)</li>
</ul>
</li>
</ul>
<h2 id="chapter-3-match-strategy-to-situation">Chapter 3: Match Strategy to Situation</h2>
<ul>
<li><strong>Ask: what kind of change am I being called upon to lead? And…what kind of leader am I?</strong></li>
<li>Use the STARS model, page 71, table on page 72</li>
<li>To understand the company, put on your historian hat</li>
<li>To adapt your personal leadership style you must:
<ul>
<li>enhance self awareness</li>
<li>exercise personal discipline</li>
<li>build complementary teams</li>
</ul>
</li>
<li><strong>Make a hard assessment of which skills will serve you well and which are likely to get you in trouble</strong></li>
<li>Leadership is a team sport</li>
<li>For sustaining success, focus on learning, reflection, and influence</li>
</ul>
<h2 id="chapter-4-negotiate-success">Chapter 4: Negotiate Success</h2>
<ul>
<li>Clearly communicate a 90 day plan</li>
<li>Proactively engage with your new boss to shape the game so that you have a fighting chance of achieving desired goals</li>
<li>Establish realistic expectations</li>
<li>Establishing a relationship with your boss dos an don’ts, page 90-93
<ul>
<li>Don’t run down your checklist with your boss, have at most 3 things</li>
<li><strong>Do clarify expectations early and often</strong></li>
<li>Figure out what your boss cares about most
<ul>
<li>E.g. “What are three things that are important to you?”</li>
</ul>
</li>
</ul>
</li>
<li>Planning for 5 conversations (page 93)</li>
<li>Under promise and over deliver</li>
<li>“What exactly do I need from my boss?”</li>
<li>Determine your boss’s working style (page 104)</li>
<li>Scope out the decision making box (104)</li>
<li>After 90 days, discuss how I am doing</li>
<li>90 day plan creation guide on page 109</li>
</ul>
<h2 id="chapter-5-secure-early-wins">Chapter 5: Secure Early Wins</h2>
<ul>
<li>Keep your ends clearly in mind when you devise your plan to secure early wins</li>
<li>Build waves of change that consist of: learning, designing the changes, building support, implementing the changes, observing results</li>
<li>First wave of change is to secure early wins</li>
<li>Start with the goal in mind, that is your anchor
<ul>
<li>Define your goals</li>
<li>Identify and support behavioral changes</li>
</ul>
</li>
<li>Page 120 had problematic behavior patterns (revisit this in 30 days)</li>
<li>Principles of wins
<ul>
<li>Focus on a few promising opportunities</li>
<li>Get wins that matter to your boss</li>
<li>Get wins in the right ways</li>
<li>Take STARS portfolio into account</li>
<li>Adjust for the culture</li>
</ul>
</li>
<li>First 30 days, build personal credibility</li>
<li><strong>People will form opinions on you with very little data</strong></li>
<li>New leaders are perceived as more credible when they display the following characteristics
<ul>
<li>Demanding but able to be satisfied</li>
<li>Accessible but not too familiar</li>
<li>Decisive but judicious</li>
<li>Focused but flexible</li>
<li>Active without causing commotion</li>
<li>Willing to make tough calls, but humane</li>
</ul>
</li>
<li>Launch early win projects (page 129); Review page 130</li>
<li>Early wins: best are problems you can tackle quickly, with modest expenditure, and will yield visible operational and financial gain</li>
<li>Align your learning agenda with early wins</li>
<li>Launch early win projects, manage these initiatives as projects targeted at chosen focal points</li>
<li>Use <a href="https://www.goodreads.com/quotes/9740883-foglamp-project-checklist-foglamp-is-an-acronym-for-focus-oversight">FOGLAMP</a> when planning for projects, early wins</li>
<li>Identify the most important problems and issues to address</li>
<li>When changing, need to decide if better to plan or conduct collective learning (i.e. experiment and see how it goes)</li>
<li>NTS: create better, clearer benchmarks for success (outcome over output, but what is the desired outcome)</li>
<li>Ask questions to identify where potential problems may be lurking, set of questions on page 137</li>
<li>Goal: creating a virtuous cycle that reinforces wanted behaviors and contributes to helping you achieve your agreed to goals for the organization</li>
</ul>
<h2 id="chapter-6-achieve-alignment">Chapter 6: Achieve Alignment</h2>
<ul>
<li>Understand the organizations hierarchy, structure, and systems</li>
<li>Don’t make change for change’s sake</li>
<li>Adjust for the STARS situation</li>
<li>Four elements of organizational architecture:
<ul>
<li>strategic direction</li>
<li>structure</li>
<li>core processes</li>
<li>skill bases</li>
</ul>
</li>
<li><strong>Goal for the first 90 days: identify potential misalignments and design a plan for correcting them</strong>
<ul>
<li>Page 146 and 147 have details on how to get started (<em>Review page 148</em>)</li>
</ul>
</li>
<li>Strategic direction encompasses mission, vision, and strategy
<ul>
<li><strong>Mission</strong>: what is achieved</li>
<li><strong>Vision</strong>: why people should feel motivation to perform at a high level</li>
<li><strong>Strategy</strong>: how you get there</li>
</ul>
</li>
<li>Assess the alignment
<ul>
<li>Assess coherence: look at documents that describes your groups mission, vision, and strategy</li>
<li>Assess adequacy: is what your group is working in sufficient for the group to succeed and to help the larger company succeed for 2-3 years</li>
<li>Ask probing questions, prove the history of how the strategic direction got defined</li>
<li>Assess implementation: have the mission vision and strategy been pursued energetically</li>
</ul>
</li>
<li>Does the structure support the strategy?
<ul>
<li>NTS: Revisit page 154 and write out these areas</li>
</ul>
</li>
<li>Every org structure has trade offs
<ul>
<li>Make the right trade offs? E.g. Innovation or flawless execution?</li>
</ul>
</li>
<li>What are our core processes? Review page 159</li>
<li>Align processes with structure</li>
<li>To evaluate efficiency and effectiveness of a core process, examine for aspects: productivity, timeliness, reliability, quality (p160)</li>
<li>Treat processes like a portfolio, focus on a few at a time. Take care to factor in your organizations, capacity for change</li>
<li><strong>Key takeaway from this chapter: it is critical to identify the mission, strategy, and core processes of your team (group, unit, etc)</strong></li>
</ul>
<h2 id="chapter-7-build-your-team">Chapter 7: Build Your Team</h2>
<ul>
<li>Assess existing team members; Align and motivate them; establish new processes to promote team work</li>
<li>Avoid common traps:
<ul>
<li>Do not criticize people who led before you arrived, nothing to gain from this, evaluate the impact, concentrate on assessing current behavior;</li>
<li>Keeping the existing team too long, establish deadlines and conclusions about the team in first 90 days</li>
<li>Not balancing stability and change: find the right balance</li>
<li>Not working on organizational alignment and team development in parallel, be sure to understand the destination, route, and ship, captain 👨✈️.</li>
<li>Not holding on to the good people</li>
<li>Undertaking team building before the core is in place; avoid explicit team-building activities until the team you want is largely in place</li>
<li>Making implementation decisions too early</li>
<li>Trying to do it all yourself</li>
</ul>
</li>
<li>Page 170 has a chart on how to synchronize architectural alignment and team restructuring</li>
<li><strong>Between day 30 and 60, sort out who is who, what roles people have played, and how the group has worked in the past</strong></li>
<li>Establish your evaluative criteria: competence, judgement, energy, focus, relationships, trust (refer to page 171)</li>
<li>Be sure to: factor in the STARS matrix, criticality of positions, functional experience, extent of team work…most importantly check your assumptions</li>
<li>Assess both the positions and the players</li>
<li><strong>Get historical data on past performance (performance reviews, etc)</strong></li>
<li>Meet 1-1 to assess team performance. Essentially I should meet and learn everyone, getting to know them personally, then understand how they work and their questions / abilities from an execution standpoint - great questions on page 176</li>
<li>Test their judgment? (Not sure if I agree with the way this one is framed. I believe this could be confrontational and maybe feel like a “gotcha” for the employee)</li>
<li>Assess the team as a whole
<ul>
<li>Study the data: reports of team meetings, Jira, previous release targets, morale surveys</li>
<li>Systematically ask questions: assess responses to the questions and see how they align or don’t align</li>
<li>Probe group dynamics: how do people interact? Alliances? Attitudes?</li>
</ul>
</li>
<li>Evolve the team, after 30 days should be able to assign people to the following categories: <em>(note. I think 30 days is very aggressive. Half of your first few days of onboarding, will not even be able meet with team members. So the question is “when does the clock tick on 90 days”)</em>
<ul>
<li>Keep in place</li>
<li>Keep and develop</li>
<li>Move to another position</li>
<li>Replace (low priority)</li>
<li>Replace (high priority)</li>
<li>Observe for a while</li>
</ul>
</li>
<li><strong>Aligning your team</strong>
<ul>
<li>Ensure a combination of push (goals, performance measurement, incentives) and pull (compelling vision, inspiring people)</li>
<li>NTS: I am better at pull than I am at push. Push helps execution, need to work on this</li>
<li>Define quantifiable goals and metrics</li>
<li>Incentive equation (a bit early I think to get into this, but worth revisiting p184)</li>
<li>Articulate your vision. It should: tap into a source of inspiration, make people part of “the story”, contains evocative language (e.g. provide in graphic detail the vision, e.g. putting a man on the moon and landing them safely vs launching 10 rockets into space - this is vision vs goal respectively)</li>
<li>It is critical to live in the vision you create! You must walk the walk</li>
<li>For team building, refer to the offsite planning check list</li>
</ul>
</li>
<li><strong>Leading your team</strong>
<ul>
<li>Assess what worked well and did not work well before the team arrived</li>
<li>Assess existing processes: participants roles, team meetings, decision making, leadership style</li>
<li>Have a framework for deciding how decisions get made. Not all decisions should be made the same way (good insight for me)
<ul>
<li>E.g. We may need to alter team meetings. Make meetings smaller and more focused</li>
</ul>
</li>
<li>Two key decision making approaches “consult and decide” and “build consensus”. Separating information gathering from evaluating and reaching closure, is consult and decide. When you seek both information and seek buy-in from everyone, then it’s build consensus.
<ul>
<li><em>NTS: I think I typically lean towards consult and decide, but this might be a blind spot</em></li>
<li>Rules of thumb:
<ul>
<li>Decisions that bias winners and losers, highly decisive, sharing losses and pain, are best made by the leader</li>
<li>If decision requires energetic support to implement by people whose performance you cannot adequately observe and control, build consensus</li>
<li>If team is inexperienced: consult and decide</li>
<li>If need to establish authority, consult and decide</li>
<li>However, take the STARS matrix into account. Startups may need more consult and decide. Realignment and sustaining success, leaders deal with strong intact teams, and confront cultural and political issues - typically better addressed with building consensus</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="chapter-8-create-alliances">Chapter 8: Create Alliances</h2>
<ul>
<li>Build up relationships with people you have no direct control over</li>
<li>Recognize when your new role presents you with different influence challenges from those you experienced in the past</li>
<li>Need to influence in different ways: through persuasion and alliance building</li>
<li>Identify who you need to influence, who is likely to support (or resist) your key initiatives is an integral part of 90 day plan</li>
<li>Define your include objectives
<ul>
<li>First step: be clear about why you need the support of others, think about the alliances you need to secure early wins</li>
<li>Consider creating an alliance-building plan for each early win project</li>
<li>Try to identify who or what might stand in your way of getting support for your direction?</li>
</ul>
</li>
<li>Understand the influence landscape: who are the key decision makers? What do you need them to do and when do you need them to do it?</li>
<li>Determine decision makers for your early wins</li>
<li>Who are the winning alliances? Who are the blocking alliances</li>
<li><strong>Map the influence networks: who influences whom on issues of concern to you</strong></li>
<li>Strategy to map influence networks: identify key points of contact between your organization and others; get your boss to connect you to key stakeholders</li>
<li>When you identify support, solidify and nurture it</li>
<li>Take time to think about the forces acting on the people you want to influence</li>
<li>Analyze the influencer network</li>
<li>Assess people’s intrinsic motivations (the need for recognition, for control, for power, personal growth, etc)</li>
<li><strong>There is a lot of research that suggests we <em>overestimate</em> personality and <em>underestimate</em> the impact of situational pressures in reaching conclusions about the reasons people act the way they do</strong></li>
<li>Table for argument framing on page 215</li>
</ul>
<h2 id="chapter-9-manage-yourself">Chapter 9: Manage Yourself</h2>
<ul>
<li>Take stock of yourself and note the many things that might be in transition (new job, move to a new city, new apt, baby on the way, etc)</li>
<li>Go through the guidelines for structured reflection (page 223)</li>
<li><strong>It’s ok to have an emotional roller coaster</strong>; it’s common for leaders to go into the valley 3-6 months after starting
<ul>
<li>NTS: be clear to establish boundaries: what can you and what can you not do? Reflect on this. Work avoidance?</li>
</ul>
</li>
<li>3 pillars of self-management:
<ul>
<li>adopt a 90 day plan</li>
<li>develop personal disciplines</li>
<li>build your support systems</li>
</ul>
</li>
<li><strong>Plan to plan: at the end of each day, spend 10 minutes evaluating how well you met your goals, and then plan for the next day</strong>
<blockquote>
<p>Don’t let urgent crowd out the important</p>
</blockquote>
</li>
<li>Carve out time to focus, focus, focus</li>
<li>Defer commitment: say “let me think about it and get back to you”;
<ul>
<li>NTS: I think I over commit sometimes</li>
<li><strong>Begin with “no”, if pressed, easier to say “yes” later.</strong></li>
</ul>
</li>
<li>Find time to check-in with yourself. Maybe daily or weekly? How are you doing? How are you feeling?</li>
<li>Recognize when to quit</li>
<li>Build your advice and counsel network</li>
</ul>
<h2 id="chapter-10-accelerate-everyone">Chapter 10: Accelerate Everyone</h2>
<ul>
<li>Make a 90 day plan for the entire team</li>
<li>Identify the transitions happening on your company, team, etc.</li>
<li><strong>Don’t stay in your comfort zone, don’t try to do too much to fast</strong></li>
<li><em>Great chart that highlights some reasons for transition failure on page 245</em></li>
<li>Setup time with leaders to put action oriented / coaching meetings on the calendar to carve out time for them to make their 90 plans, engage in reflection, etc.</li>
<li>NTS: work to define what successful execution looks like</li>
<li>NTS: spend time, assessing the business and the new role, create / update the strategy to build momentum, create a strategy for managing myself, develop an action plan</li>
<li>Fill out the development grid on page 256</li>
</ul>
<hr />
<h2 id="more-chapter-notes">More “Chapter Notes”</h2>
<ul>
<li><a href="/blog/javascript/books/2019/03/31/refactoring-by-martin-fowler-chapter-notes.html">Refactoring (2nd Edition)</a></li>
<li><a href="/blog/leadership/books/2018/07/21/accelerate-notes.html">Accelerate</a></li>
<li><a href="/blog/leadership/books/2018/06/29/the-hard-thing-about-hard-things-notes.html">The Hard Thing About Hard Things</a></li>
</ul>Ajahne Santa Annaajahne.santaanna@gmail.comLeaders are readers and with that in mind, I push myself to read as often as I can. Recently, in preparation for my new management role at Dropbox, I read “The First 90 Days” and took notes throughout. Below are my notes, takeaways, and raw thoughts from each chapter.How to Remove Duplicates from an Array in JavaScript2020-02-04T17:19:00+00:002020-02-04T17:19:00+00:00https://ajahne.github.io/blog/javascript/2020/02/04/how-to-remove-duplicates-from-an-array-in-javascript<p>A standard interview question that I have encountered multiple times in my engineering journey is the classic “remove duplicates from an array” problem. This may be asked in a phone screen, online, or during an on-site. While many tech companies may <em>not</em> ask this specific question, it is a great practice interview problem that can help grow <a href="https://www.interviewcake.com/article/java/big-o-notation-time-and-space-complexity">our time complexity understanding</a> and further enhance our programming proficiency.</p>
<h2 id="table-of-contents">Table of Contents</h2>
<ul>
<li>The Remove Duplicates Problem
<ul>
<li>Standard ways to remove duplicates
<ul>
<li>Brute force solution - O(n<sup>2</sup>)</li>
<li>Solution with hash-map - O(n)</li>
</ul>
</li>
<li>Removing duplicates with ES6
<ul>
<li>Using a <code class="language-plaintext highlighter-rouge">Set</code></li>
<li>Using <code class="language-plaintext highlighter-rouge">filter()</code></li>
<li>Using <code class="language-plaintext highlighter-rouge">filter()</code> and <code class="language-plaintext highlighter-rouge">indexOf()</code></li>
</ul>
</li>
</ul>
</li>
<li>Conclusion</li>
<li>Additional Resources</li>
</ul>
<h2 id="tldr">TL;DR</h2>
<h3 id="remove-duplicates-with-a-set-es6">Remove duplicates with a Set (ES6)</h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">unique</span> <span class="o">=</span> <span class="p">[...</span><span class="nb">Set</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">3</span><span class="p">])];</span> <span class="c1">//[1,2,5,3]</span>
</code></pre></div></div>
<h3 id="remove-duplicates-with-a-hash-map-no-es6">Remove duplicates with a hash-map (no ES6)</h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">removeDuplicates</span><span class="p">(</span><span class="nx">array</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="p">[];</span>
<span class="kd">const</span> <span class="nx">map</span> <span class="o">=</span> <span class="p">{};</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">array</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">map</span><span class="p">[</span><span class="nx">array</span><span class="p">[</span><span class="nx">i</span><span class="p">]])</span> <span class="p">{</span>
<span class="k">continue</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">result</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">array</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
<span class="nx">map</span><span class="p">[</span><span class="nx">array</span><span class="p">[</span><span class="nx">i</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<p>Now that you see where we are heading, how did we get there? Let’s start with the problem statement and push forward!</p>
<h2 id="the-removing-duplicates-problem">The Removing Duplicates Problem</h2>
<p>From the book <a href="https://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364">Programming Interviews Exposed</a>:</p>
<blockquote>
<p>Given an unsorted list of integers, write a function that returns a new list with all duplicate values removed.</p>
</blockquote>
<p>So how might we approach this problem?</p>
<h2 id="brute-force">Brute force</h2>
<p>One solution is to have two arrays. One for our input and one for our output. The basic algorithm consists of looping through the original <code class="language-plaintext highlighter-rouge">array</code> (i.e. list) and for every element in the array, check to see if it exists in our <code class="language-plaintext highlighter-rouge">result</code> array. If the element exists in <code class="language-plaintext highlighter-rouge">result</code> skip to the next element, if not, add it to the <code class="language-plaintext highlighter-rouge">result</code> array. Once complete, return <code class="language-plaintext highlighter-rouge">result</code>.</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">removeDuplicates</span><span class="p">(</span><span class="nx">array</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">array</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">let</span> <span class="nx">exists</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o"><</span> <span class="nx">result</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">array</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="nx">result</span><span class="p">[</span><span class="nx">j</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">exists</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">exists</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">result</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">array</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<p>Running the code is straightforward.</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">duplicates</span> <span class="o">=</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">8</span><span class="p">];</span>
<span class="nx">removeDuplicates</span><span class="p">(</span><span class="nx">duplicates</span><span class="p">);</span> <span class="c1">//[ 5, 2, 3, 1, 7, 8 ]</span>
</code></pre></div></div>
<p>This is a <a href="https://www.quora.com/What-is-brute-force-in-programming">brute force</a> solution with a O(n<sup>2</sup>) time complexity. This algorithm’s time complexity stems from the fact that we are looping through two arrays. Can we get to this to linear time, i.e. O(n)? Yes we can, by using a hash-map!</p>
<h2 id="remove-duplicates-using-a-hash-map">Remove duplicates using a hash-map</h2>
<p>In our brute force solution, we loop through the array twice, what if we were to loop through just once? We can do this if we use an object to keep track of key value pairs, i.e. our “hash-map”. The “key” is the element in the array, and the “value” is either true or falsy (<code class="language-plaintext highlighter-rouge">undefined</code>). This map keeps track of whether we have previously added the current element to our <code class="language-plaintext highlighter-rouge">result</code> array or not.</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">removeDuplicates</span><span class="p">(</span><span class="nx">array</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="p">[];</span>
<span class="kd">const</span> <span class="nx">map</span> <span class="o">=</span> <span class="p">{};</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">array</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">map</span><span class="p">[</span><span class="nx">array</span><span class="p">[</span><span class="nx">i</span><span class="p">]])</span> <span class="p">{</span>
<span class="k">continue</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">result</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">array</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
<span class="nx">map</span><span class="p">[</span><span class="nx">array</span><span class="p">[</span><span class="nx">i</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<p>Again we can run this code to see the results.</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">];</span>
<span class="kd">const</span> <span class="nx">b</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">14</span><span class="p">];</span>
<span class="kd">const</span> <span class="nx">c</span> <span class="o">=</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">8</span><span class="p">];</span>
<span class="nx">removeDuplicates</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span> <span class="c1">//[1,2,3,4,5]</span>
<span class="nx">removeDuplicates</span><span class="p">(</span><span class="nx">b</span><span class="p">)</span> <span class="c1">//[2,3,1,7,5,4,9,14]</span>
<span class="nx">removeDuplicates</span><span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="c1">//[5,2,3,1,7,8]</span>
</code></pre></div></div>
<p>The general idea of this solution is to maintain a mapping of our elements to a boolean value of whether the element has been added to our <code class="language-plaintext highlighter-rouge">result</code> array or not. Stated differently, the boolean represents either yes we have added this element to the <code class="language-plaintext highlighter-rouge">result</code> (<code class="language-plaintext highlighter-rouge">true</code>) or no we have not (<code class="language-plaintext highlighter-rouge">false</code>).</p>
<p>The chart below illustrates the state of the variables, in the simple case of an array <code class="language-plaintext highlighter-rouge">[1,1,2]</code>.</p>
<table>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">i</code></td>
<td><code class="language-plaintext highlighter-rouge">array[i]</code></td>
<td><code class="language-plaintext highlighter-rouge">map[array[i]]</code></td>
<td><code class="language-plaintext highlighter-rouge">result</code></td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>undefined</td>
<td>[1]</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>true</td>
<td>[1]</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>undefined</td>
<td>[1,2]</td>
</tr>
</tbody>
</table>
<h2 id="what-about-using-es6">What about using ES6?</h2>
<p><em>OK, Ajahne, this is cool and all, but can we leverage ES6?</em></p>
<p>Definitely, please note, that some interviewers may <a href="https://leetcode.com/discuss/interview-question/168757/Google%3A-Remove-Duplicates-from-Unsorted-Array">veto built-in methods or utilizing certain objects</a>.</p>
<p><em>Oh, really?</em></p>
<p>Yeah, they may do this to get a better sense of how you approach a problem. In that case, it is still worth mentioning that “I would use a set in this way…” or “I could leverage filter like so…”. Showing your knowledge of the language will definitely get you some brownie points!</p>
<p><em>Got it. But I’m still waiting…</em></p>
<p>Bet, <a href="https://www.youtube.com/watch?v=6nr8hPnZfMU">let me upgrade you</a>!</p>
<h2 id="removing-duplicates-using-a-set">Removing duplicates using a <code class="language-plaintext highlighter-rouge">Set</code></h2>
<p>My preferred method of removing duplicates from an array is to use a <code class="language-plaintext highlighter-rouge">Set</code>. By definition, a set can only contain unique values, so it is the perfect data structure to solve this problem.</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">array</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">];</span>
<span class="kd">const</span> <span class="kd">set</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Set</span><span class="p">(</span><span class="nx">array</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">uniqueArray</span> <span class="o">=</span> <span class="p">[...</span><span class="kd">set</span><span class="p">];</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">uniqueArray</span><span class="p">);</span>
</code></pre></div></div>
<p>What we do in the above code is create an array, make a new Set using our array as an initial parameter to the Set’s constructor, and then use the spread operator to transform our set into an array.</p>
<p>Furthermore, you can one line this solution.</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">unique</span> <span class="o">=</span> <span class="p">[...</span><span class="k">new</span> <span class="nb">Set</span><span class="p">(</span><span class="nx">array</span><span class="p">)];</span>
</code></pre></div></div>
<p>Cool, so how else might we do this?</p>
<h2 id="remove-duplicates-using-arrayfilter">Remove duplicates using <code class="language-plaintext highlighter-rouge">Array.filter()</code></h2>
<p>We can upgrade our original optimized solution by replacing our <code class="language-plaintext highlighter-rouge">for</code> loop, with <code class="language-plaintext highlighter-rouge">filter</code>. The <code class="language-plaintext highlighter-rouge">filter</code> function takes a callback and returns a new array comprised only of elements that pass our test.</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">dedupUsingFilter</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">map</span> <span class="o">=</span> <span class="p">{};</span>
<span class="k">return</span> <span class="nx">a</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nx">element</span> <span class="o">=></span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">map</span><span class="p">[</span><span class="nx">element</span><span class="p">])</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">map</span><span class="p">[</span><span class="nx">element</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">];</span>
<span class="kd">const</span> <span class="nx">b</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">14</span><span class="p">];</span>
<span class="kd">const</span> <span class="nx">c</span> <span class="o">=</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">8</span><span class="p">];</span>
<span class="nx">dedupUsingFilter</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span> <span class="c1">//[1,2,3,4,5]</span>
<span class="nx">dedupUsingFilter</span><span class="p">(</span><span class="nx">b</span><span class="p">)</span> <span class="c1">//[2,3,1,7,5,4,9,14]</span>
<span class="nx">dedupUsingFilter</span><span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="c1">//[5,2,3,1,7,8]</span>
</code></pre></div></div>
<h2 id="remove-duplicates-using-arrayfilter-and-arrayindexof">Remove duplicates using <code class="language-plaintext highlighter-rouge">Array.filter()</code> and <code class="language-plaintext highlighter-rouge">Array.indexOf()</code></h2>
<p>Building on the previous example, we can leverage <code class="language-plaintext highlighter-rouge">indexOf</code> in our callback to filter out elements that appear more than once.</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">dedupUsingFilterAndIndexOf</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">a</span><span class="p">.</span><span class="nx">filter</span><span class="p">((</span><span class="nx">element</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="o">=></span> <span class="nx">a</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">element</span><span class="p">)</span> <span class="o">===</span> <span class="nx">index</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">];</span>
<span class="kd">const</span> <span class="nx">b</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">14</span><span class="p">];</span>
<span class="kd">const</span> <span class="nx">c</span> <span class="o">=</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">8</span><span class="p">];</span>
<span class="nx">dedupUsingFilterAndIndexOf</span><span class="p">(</span><span class="nx">a</span><span class="p">)</span> <span class="c1">//[1,2,3,4,5]</span>
<span class="nx">dedupUsingFilterAndIndexOf</span><span class="p">(</span><span class="nx">b</span><span class="p">)</span> <span class="c1">//[2,3,1,7,5,4,9,14]</span>
<span class="nx">dedupUsingFilterAndIndexOf</span><span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="c1">//[5,2,3,1,7,8]</span>
</code></pre></div></div>
<p>For each element in the array, we check to see if it’s index matches the current index. This works because <code class="language-plaintext highlighter-rouge">indexOf</code> returns the <em>first</em> index at which a given element can be found and -1 if it does not exist. So, if we have an array with duplicate elements, the indexes of each will be different, but a call to <code class="language-plaintext highlighter-rouge">indexOf</code> will return the first index. So in our check of <code class="language-plaintext highlighter-rouge">a.indexOf(element) === index</code>, if these indexes are different, then this element is <em>not</em> the first element with this value and should not be added to our resulting array.</p>
<p>Let’s look at the scenario when we have an array <code class="language-plaintext highlighter-rouge">[1,2,2]</code></p>
<table>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">index</code></td>
<td><code class="language-plaintext highlighter-rouge">element</code></td>
<td><code class="language-plaintext highlighter-rouge">indexOf(element)</code></td>
<td><code class="language-plaintext highlighter-rouge">result</code></td>
<td>note</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>[1]</td>
<td>the element’s index and the first index of this element match, so we add it to the result</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>0</td>
<td>[1]</td>
<td>when we look up 1, its first index (indexOf) is 0, so we know this is a duplicate, and skip it</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>2</td>
<td>[1,2]</td>
<td>the element’s index and the first index of this element match, so we add it to the result</td>
</tr>
</tbody>
</table>
<h2 id="conclusion">Conclusion</h2>
<p>There are numerous ways to remove duplicates from an Array in JavaScript and we explored many key solutions within this post. It is worth learning these different techniques to widen our JavaScript skillset and leverage our Big O understanding as we build optimized solutions that will help us not only in our interviews, but on the next job and beyond!</p>
<p>Check out the additional resources below and happy coding!</p>
<h2 id="additional-resources">Additional Resources</h2>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set">Set</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf">Array.prototype.indexOf()</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter">Array.prototype.filter()</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax">Spread syntax</a></li>
<li><a href="https://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364">Programming Interviews Exposed</a></li>
<li><a href="https://medium.com/dailyjs/how-to-remove-array-duplicates-in-es6-5daa8789641c">Three Techniques to remove Array Duplicates in ES6</a></li>
<li><a href="https://leetcode.com/problems/remove-duplicates-from-sorted-array/">Leetcode: Remove Duplicates from Sorted Array</a></li>
<li><a href="https://www.interviewcake.com/article/java/big-o-notation-time-and-space-complexity">Big O notation</a></li>
</ul>Ajahne Santa Annaajahne.santaanna@gmail.comA standard interview question that I have encountered multiple times in my engineering journey is the classic “remove duplicates from an array” problem. This may be asked in a phone screen, online, or during an on-site. While many tech companies may not ask this specific question, it is a great practice interview problem that can help grow our time complexity understanding and further enhance our programming proficiency.20 for 202020-01-01T14:00:00+00:002020-01-01T14:00:00+00:00https://ajahne.github.io/blog/life/2020/01/01/20-for-20-new-years-goals<p><em>I do not typically write about my personal life, but a new year calls for new traditions.</em></p>
<p>I woke up early today. A mixture of excitement, can’t sleep-ness, pressure, and anxiety all rolled up into a riot of “right now” that opened tired eyes to blearily stare at the celling.</p>
<p>I’m awake.</p>
<p>My mind is all early morning fog. The way you feel when you know you need more sleep.</p>
<p>My mind is all running and ruminating. The way you feel when you know you cannot sleep more even if you tried (I did).</p>
<p>I sit stuffy nosed and slightly cold. Kitchen table magic, laptop, hazy sky, and fingertips chilly from the open window that leads to my backyard. I stare out as I sometimes do. Smile, breathe (semi) deeply and let the possibilities of a new year wrap around me. Not wings, not a cloak, more like a breeze that brings something fresh on the air - allowing a kid who once fought with asthma, to actually breathe deeply.</p>
<p>I feel compelled to do something different this morning. So I am writing. I am letting fingers flow and mind wander. Buoyed on the tide of a new year I am excited to sail into the distance. Send letters back and tell my past self all the wonders and wonts, the memories and moments, of new times that continue to unfold.</p>
<p>I look towards the horizon and am grateful to the wave the guided me here…</p>
<hr />
<hr />
<p>2019 was a marvel.</p>
<p>I took a sabbatical, reconnected with family, made new friends and grew as mentor, manager, leader, and human. I lost, I loved, I learned.</p>
<p>Most joyously…</p>
<p>I got married!</p>
<p>2019 was more epic than I could ever have imagined. A wonderful whirlwind of ceremonies, happiness, love, soul-linking, and food! Traveling to islands, new cities, distant countries - all hand in hand with my queen!</p>
<p>I happily sit at my desk, content to be home after months of travel, parties, boats, planes, rental cars, hotel beds, and futons. Home feels glorious.</p>
<p>I am blessed and I feel it.</p>
<p>I look forward again…</p>
<hr />
<hr />
<h2 id="20-for-20">20 for 20</h2>
<p>As the mind couldn’t sleep, neither could the body, and therefore I wrote. I wrote what came forth, I wrote what was (is) in my heart, and wrote words that will inspire me and focus me as the year unfolds.</p>
<p>20 Goals, Ideas, Resolutions, and Motivations for 2020:</p>
<ul>
<li>Be a loving, caring, supporting, listening, wonderful husband</li>
<li>Continue to be a mentor, volunteer, and give back</li>
<li>Have a social impact with software (and other means)</li>
<li>Fight for the 2020 election</li>
<li>Learn a new programming language</li>
<li>Build a mobile app (and write about it!)</li>
<li>Build a [TOP-SECRET] website (and yup, you guessed it, write about it!)</li>
<li>Stay connected / connect more with family and friends</li>
<li>Code more (and continue to stay technical)</li>
<li>Speak at a technical event</li>
<li>Share learning on implementing Accelerate (particularly from a leadership standpoint)</li>
<li>Write about AMPED</li>
<li>Write programming power ups / refactoring fundamentals</li>
<li>Contribute to open source</li>
<li>Improve my work / life balance (still pretty skewed)</li>
<li>Prioritize my mental health, general health, and overall well being</li>
<li>Carve out some time to play video games (like I really need to beat Zelda at this point!)</li>
<li>Take walks (try to walk once a day, particularly during work hours…taking breaks help!)</li>
<li>Continue to grow and improve as a leader and manager</li>
<li>Smile, love, and support others in their dreams</li>
</ul>
<p>Whew, ain’t that a list? Welp, that is all I am willingly to share (publicly) at this point! But wanted to put it out there. Felt compelled, felt like sharing, and felt like doing something different as we embark upon this new decade. Throughout the year I will come back to this post and provide updates on my progress. Gotta measure the marvels and make sure we are making headway towards our goals. We got this!</p>
<p>I wish you and yours blessings upon blessings in the new year!</p>Ajahne Santa Annaajahne.santaanna@gmail.comI do not typically write about my personal life, but a new year calls for new traditions.