<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Igor Afonov</title>
    <description>The latest articles on DEV Community by Igor Afonov (@iafonov).</description>
    <link>https://dev.to/iafonov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F183384%2F7df24a2b-dc6f-4394-b135-3a641add8aaa.jpeg</url>
      <title>DEV Community: Igor Afonov</title>
      <link>https://dev.to/iafonov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/iafonov"/>
    <language>en</language>
    <item>
      <title>Interview Preparation Notes</title>
      <dc:creator>Igor Afonov</dc:creator>
      <pubDate>Mon, 29 Jul 2019 18:52:25 +0000</pubDate>
      <link>https://dev.to/iafonov/interview-preparation-notes-408d</link>
      <guid>https://dev.to/iafonov/interview-preparation-notes-408d</guid>
      <description>&lt;h1&gt;
  
  
  Interview Preparation Notes
&lt;/h1&gt;

&lt;p&gt;These are the edited notes that I used during preparing for CS-101-style whiteboard interview (a.k.a Google/FB/Leetcode style interview).&lt;/p&gt;

&lt;p&gt;Whiteboard style interviews have a mixed attitude - some people like them; some people hate them. My strategy is pretty straightforward - you can whine about the world being an unfair place, or you can push yourself and learn how to invert that binary tree instead 😉&lt;/p&gt;

&lt;p&gt;The benefit for me and the biggest drawback for many people - these interviews seem to 'invalidate' previous experience with particular technologies and test basics. Experience of setting up k8s on OpenBSD doesn't matter much, however understanding of how various tech works under the hood matters a lot. The generic process opens the ability to switch technology stack entirely and try something new without being anchored by a particular experience.&lt;/p&gt;

&lt;p&gt;An unexpected thing that I noticed while going through coding interview preparation - I feel that it has made me a better programmer. I started to think faster and code cleaner from the first pass. System design pushed me into learning a bunch of things that I used in practice but never bothered to learn how they work under the hood. The behavioral part involved quite a bit of self-reflection and thinking about past experiences and what I want from my future career (and life).&lt;/p&gt;

&lt;p&gt;I broke my notes into a few parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A bit about about psychology&lt;/li&gt;
&lt;li&gt;Behavioral&lt;/li&gt;
&lt;li&gt;Coding&lt;/li&gt;
&lt;li&gt;System design&lt;/li&gt;
&lt;li&gt;Questions for interviewers&lt;/li&gt;
&lt;li&gt;Offer Negotiation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Psychology
&lt;/h2&gt;

&lt;p&gt;I feel that anchoring on getting a job in a particular company and position is flawed. Interviewing is a lottery (for both parties to be fair). Internalizing your goal helps a lot. My goal was to teach myself algorithms, improve my coding skills, and learn the internals of databases and large scale architectures.&lt;/p&gt;

&lt;p&gt;There was no goal to get that job at FAANG. Always optimize for learning, and results come as a byproduct.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Behavioural
&lt;/h2&gt;

&lt;p&gt;Behavioral or leadership interview is the most important part of the whole process. Coding and System Design are mostly pass/fail stages, and behavioral interview matter most when the time comes for leveling or offer.&lt;/p&gt;

&lt;p&gt;My take away:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be yourself&lt;/li&gt;
&lt;li&gt;Be kind&lt;/li&gt;
&lt;li&gt;Do not lie and make up stories (even unconsciously)&lt;/li&gt;
&lt;li&gt;Spend time on self-reflection and thinking about the past&lt;/li&gt;
&lt;li&gt;Think about the future and what you want from your career&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I didn't found STAR and other 'smart' frameworks helpful. Maybe they work if you don't have much experience - if you have stories to tell - you're good to go.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Coding
&lt;/h2&gt;

&lt;p&gt;I prepared for a classic whiteboard style interview. I trained myself to write code on the piece of paper or whiteboard without being able to run or debug the code. I invested time into training myself to write clean and readable code from the first pass.&lt;/p&gt;

&lt;p&gt;Communication is a crucial part. You should be able to explain what you're going to do before writing code and surprisingly sometimes it's the hardest part. When I'm doing 'normal' programming, I experiment a lot and sometimes start writing code with the idea that I'll refactor or rewrite it on the go or later. It doesn't work if you have 45 minutes, whiteboard and pair of eyes staring at you.&lt;/p&gt;

&lt;p&gt;You have to push yourself into thinking first, explaining your thoughts, and only then starting to write the code.&lt;/p&gt;

&lt;p&gt;The thing that helped me with all of these parts is formalizing algorithm for solving algorithmic problems. I think this is a bit personal thing and I suggest trying various approaches yourself before settling in. But after you settle - always push yourself to follow it.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Algorithm for Solving an Algorithmic problem
&lt;/h3&gt;

&lt;p&gt;All these steps are essential, and even if I feel that I can skip one - I always push myself and avoid doing that.&lt;/p&gt;

&lt;p&gt;There were a handful of situations when I skipped step only to realize a few steps later into solving the problem that I was wrong and need to go back and start from the skipped step.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repeat the question in your own words and confirm that you understood it correctly&lt;/li&gt;
&lt;li&gt;Build 2-3 regular flow examples - write them&lt;/li&gt;
&lt;li&gt;Outline corner cases and ask the interviewer what's expected (and feel free to make it up yourself but mention to the interviewer)&lt;/li&gt;
&lt;li&gt;Outline approach and think loudly about its time and space complexity

&lt;ul&gt;
&lt;li&gt;If you can't come up with approach try to solve the problem by hand&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Confirm with the interviewer (or yourself) that approach is a good starting point. Repeat previous steps if not.&lt;/li&gt;
&lt;li&gt;Very slowly write code&lt;/li&gt;
&lt;li&gt;Debug manually by using your examples. If you can execute the code - use your examples as unit tests&lt;/li&gt;
&lt;li&gt;Optimize (In 80% of situations stick Hash/Set to simplify the algorithm and trade time for space 😉)&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If all goes right - you're good, if you can't figure out the solution - push yourself. Carefully listen for direct and indirect hints. Do not give up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mock inteviews
&lt;/h3&gt;

&lt;p&gt;Mock interviews help with anxiety management, timing, and communication. I used &lt;a href="//interviewing.io"&gt;interviewing.io&lt;/a&gt; and got a few practice interviews there. You can use friends or hire somebody to do it.&lt;/p&gt;

&lt;p&gt;You can also try to interview in companies that you're less interested in. I don't feel bad about it. The company interviews you, and in return, it's getting a chance to hire you.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Book
&lt;/h3&gt;

&lt;p&gt;I've read Cracking the Coding Interview, but I didn't like it. It's bad. It's too simple, high-level, it's writing is weird and creates a false feeling of this thing being easy. It's not.&lt;/p&gt;

&lt;p&gt;I recommend getting good CS 101 or classic algorithms textbook, read it, and spend some time coding basic stuff.&lt;/p&gt;

&lt;p&gt;The book that worked for me is &lt;a href="http://jeffe.cs.illinois.edu/teaching/algorithms/"&gt;Jeff Erickson - Algorithms&lt;/a&gt;. It's excellent - it's concise, it uses pseudocode for explaining the coding parts, and it's easy to read (it's for students at the end of the day).&lt;/p&gt;

&lt;p&gt;Skienna's The Algorithm Design Manual is excellent too, but it's a bit harder to read, and you'll probably need to pick certain relevant parts yourself. It can work great if you have plenty of time.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Basics - My Favourites
&lt;/h3&gt;

&lt;p&gt;These are my favorite fundamental problems. They are building blocks for harder problems, so it makes sense to make sure that you can consciously, with full understanding, code them as fast as you can write on a board or type on a laptop.&lt;/p&gt;

&lt;p&gt;My usual routine was solving 2-3 of those as a warm-up before doing something more sophisticated.&lt;/p&gt;

&lt;p&gt;A lot of these problems are used during screens/actual interviews.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Array: &lt;a href="https://leetcode.com/problems/binary-search/"&gt;Binary search&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/search-insert-position/"&gt;Search Insert Position&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/two-sum/"&gt;2Sum&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/3sum/"&gt;3Sum&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/non-decreasing-array/"&gt;Non-decreasing Array&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/first-bad-version/"&gt;First Bad Version&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/maximum-subarray/"&gt;Maximum Subarray&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/subarray-sum-equals-k/submissions/"&gt;Subarray Sum Equals K&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/rotate-array/"&gt;Rotate Array&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/search-in-rotated-sorted-array/"&gt;Search in Rotated Array&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/remove-duplicates-from-sorted-array/"&gt;Remove Duplicates from Sorted Array&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Matrix: &lt;a href="https://leetcode.com/problems/rotate-image/"&gt;Rotate Image&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;String: &lt;a href="https://leetcode.com/problems/valid-palindrome/"&gt;Palindrome&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/valid-anagram/"&gt;Anagram&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/valid-palindrome-ii/"&gt;K-Palindrome&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/longest-substring-without-repeating-characters/"&gt;Sliding Window&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/valid-parentheses/"&gt;Balanced Parenthesis&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Graph*: DFS, BFS, &lt;a href="https://leetcode.com/problems/cheapest-flights-within-k-stops/"&gt;Dijkstra&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tree: DFS, BFS, &lt;a href="https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/"&gt;LCA&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/binary-tree-level-order-traversal/"&gt;Level Order Traversal&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/binary-tree-maximum-path-sum/submissions/"&gt;Binary Tree Maximum Path Sum&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/sum-root-to-leaf-numbers/"&gt;Sum From Root to Leaf&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/"&gt;Convert Tree To Linked List&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/serialize-and-deserialize-bst/"&gt;Serialize/Deserialize Tree&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Linked List: &lt;a href="https://leetcode.com/problems/reverse-linked-list/"&gt;Reverse&lt;/a&gt;, Find Middle Element, Remove Element&lt;/li&gt;
&lt;li&gt;Heap: Build one yourself and understand how it works, &lt;a href="https://leetcode.com/problems/kth-largest-element-in-an-array/"&gt;Kth Largest Element in Array&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Combinatorics: &lt;a href="https://leetcode.com/problems/permutations/"&gt;Permutations&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/subsets/"&gt;Subsets&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Dynamic Programming**: &lt;a href="https://leetcode.com/problems/coin-change/"&gt;Coin change&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/generate-parentheses"&gt;Generate Parentheses&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/longest-increasing-subsequence/"&gt;Increasing subsequence&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/best-time-to-buy-and-sell-stock/"&gt;Buy and Sell Stock&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Misc: &lt;a href="https://leetcode.com/problems/add-binary/"&gt;Binary addition&lt;/a&gt;, &lt;a href="https://leetcode.com/problems/meeting-rooms-ii/"&gt;Meeting rooms&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;* The hardest part with graph problems is seeing that it's a graph problem. If you see that it's a graph problem, you're 90% done&lt;/p&gt;

&lt;p&gt;** Dynamic programming problems make the worst interview questions. They are useless. You're either know the trick or don't. There is little chance somebody can come up with an optimal solution under interview pressure. However, basic understanding helps a lot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Misc
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Buy an actual whiteboard and ultra-fine marker to have 4k resolution.&lt;/li&gt;
&lt;li&gt;Look into it as a sport - do practice often. Rest when you need. You can call it competitive interviewing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html"&gt;Steve Yegge - Get that job at Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jeffe.cs.illinois.edu/teaching/algorithms/"&gt;Jeff Erickson - Algorithms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/channel/UCZLJf_R2sWyUtXSKiKlyvAw"&gt;Tushar Roy - Coding Made Simple&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  System design
&lt;/h2&gt;

&lt;p&gt;The best advice is to find a way to get experience designing systems in real life.&lt;/p&gt;

&lt;p&gt;I cheated here - I worked as DevOps for a significant part of my career and have a pretty good understanding of how to build web applications infra. Still, I needed time to systematize knowledge and build my approach. Again communication is the most critical part. If you can't explain your approach - it doesn't matter whether it's right or wrong.&lt;/p&gt;

&lt;p&gt;I recommend avoiding mentioning particular technologies if you didn't use them in practice and use generic tools instead. So if you need distributed queue and you never used one - name component "distributed queue" don't dig yourself into details.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Approach
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Understand the goal of the system. Repeat it in your own words&lt;/li&gt;
&lt;li&gt;Ask good questions. Define &lt;strong&gt;MVP&lt;/strong&gt;. Think about features and requirements&lt;/li&gt;
&lt;li&gt;Establish the scope of the system&lt;/li&gt;
&lt;li&gt;Figure out what parts are interesting to interviewer&lt;/li&gt;
&lt;li&gt;Make up numbers and drive requirements yourself&lt;/li&gt;
&lt;li&gt;Start at the very very high level&lt;/li&gt;
&lt;li&gt;Dig deeper and refine&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;li&gt;Keep going until time is up&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  My Favorites
&lt;/h3&gt;

&lt;p&gt;These are my favorite problems. I learned a lot while practicing them and doing research.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Atomic counter&lt;/li&gt;
&lt;li&gt;Rate Limiter&lt;/li&gt;
&lt;li&gt;Distributed Queue&lt;/li&gt;
&lt;li&gt;Video upload/serving infrastructure&lt;/li&gt;
&lt;li&gt;Full-text search&lt;/li&gt;
&lt;li&gt;Real-time messaging (with or without persistence)&lt;/li&gt;
&lt;li&gt;Distributed log collector&lt;/li&gt;
&lt;li&gt;Your favorite social network&lt;/li&gt;
&lt;li&gt;Your favorite search engine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Practice on paper or whiteboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reading and links
&lt;/h3&gt;

&lt;p&gt;The holy grail - &lt;a href="https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321"&gt;Designing Data-Intensive Applications&lt;/a&gt;, the book is outstanding. I recommend reading it even you are not preparing for an interview or you're not going to work with data. This is one of the best technical books from recent times.&lt;/p&gt;

&lt;p&gt;Surprisingly I found really useful reading through Redis documentation. It's easy to read it, it has a lot of examples and reads more like a book on general storage systems than documentation for DB.&lt;/p&gt;

&lt;p&gt;More Links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://redis.io/documentation"&gt;Redis documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf"&gt;BigTable white paper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://courses.cse.tamu.edu/caverlee/csce438/readings/dynamo-paper.pdf"&gt;DynamoDB white paper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions for interviewers
&lt;/h2&gt;

&lt;p&gt;I think these questions part during the interview is useless for both parties. The best time to ask questions is between the offer is made, and the offer is accepted. If you've been made an offer, you can always ask for 30-45 minutes with one of the interviewers and do a "reverse interview" - have a meeting fully devoted to asking questions about the company. Prepare for this meeting and listen very carefully, pay attention to small details - at the end you're at the sales pitch.&lt;/p&gt;

&lt;p&gt;As for customary 5 minutes (in the best case) prepare 1 set of generic, but smart, questions and ask them to fill the time.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Offer Negotiation
&lt;/h2&gt;

&lt;p&gt;Have a good alternative (a.k.a BATNA - Best alternative to a negotiated agreement). The best and a bit counter-intuitive alternative is to do great and be happy at your current job.&lt;/p&gt;

&lt;h2&gt;
  
  
  The End
&lt;/h2&gt;

&lt;p&gt;YMMV 😉&lt;/p&gt;



</description>
      <category>career</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Engineering to Product Management - Learnings and Observations</title>
      <dc:creator>Igor Afonov</dc:creator>
      <pubDate>Thu, 20 Jun 2019 11:57:49 +0000</pubDate>
      <link>https://dev.to/iafonov/engineering-to-product-learnings-and-observations-5bd7</link>
      <guid>https://dev.to/iafonov/engineering-to-product-learnings-and-observations-5bd7</guid>
      <description>&lt;p&gt;After working as an engineer for 10 years, I experimented with my career and worked as a product owner (a fancy title for a product manager) for 3 years. I worked on projects that had direct business impact. It was fun, stressful, and intense. No regrets 😉&lt;/p&gt;

&lt;p&gt;I’ve sorted my observations and learnings by their (subjective) importance:&lt;/p&gt;

&lt;h2&gt;
  
  
  People manager first
&lt;/h2&gt;

&lt;p&gt;This is the thing that I started to realize when I was at least one year into product management. If you’re running a team, maintaining team health is an essential part of your job.&lt;/p&gt;

&lt;p&gt;In theory, you’ll have an engineering manager who is responsible for that, but in reality, you should be laser focused on it yourself. At the end - even if you have an excellent backlog, full of brilliant ideas - if the team is not feeling well or you don’t have team trust - you won’t be able to execute, and everything will inevitably fall apart.&lt;/p&gt;

&lt;p&gt;Do 1-1s with engineers and designers. Make sure that they are happy and motivated. Build trust.&lt;/p&gt;

&lt;p&gt;Invest in yourself and learn a few bits about psychology, building relationships with people, and engineering management.&lt;/p&gt;

&lt;h2&gt;
  
  
  You are in charge
&lt;/h2&gt;

&lt;p&gt;You’re responsible for project outcomes. Listen to your team, your boss, boss of your boss, friends, family, that random person from a coffee shop - be informed and process information, but never forget that you are in charge and you are making decisions.&lt;/p&gt;

&lt;p&gt;Be bold, make decisions yourself, and be prepared to carry responsibility.&lt;/p&gt;

&lt;p&gt;Democracy and business do not blend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conserve energy (part 1 - you)
&lt;/h2&gt;

&lt;p&gt;Management is a 24/7 job. Even if you show up in the office for a few hours, you’ll inevitably think about the project 24/7. It’s exhausting and exhausted people aren’t good at making decisions.&lt;/p&gt;

&lt;p&gt;Consider your job a marathon, not a sprint. Don’t work in the evenings. Don’t work on the weekends. Re-charge. Take vacations often. Fully disconnect during vacations/weekends/time off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conserve energy (part 2 - team)
&lt;/h2&gt;

&lt;p&gt;This thing applies both to you and your team - it’s ok to be idle. Make sure that team understands that and comfortable with that. If you don’t know what to work on - let the team know. Do not try to keep the team busy. Let people work on whatever they want to work on, take time to learn something new, refactor that annoying piece of tech debt from the past or just rest and re-charge.&lt;/p&gt;

&lt;p&gt;Do not work on low priority stuff or 10-year-old bugs to fill the time - in the long run, it’s counterproductive and lowers team morale.&lt;/p&gt;

&lt;p&gt;And never say no to vacation requests. Even if they are coming at the worst time. Think long term.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay on the maker schedule
&lt;/h2&gt;

&lt;p&gt;Avoid meetings congestion - skip meetings if you don’t see the value. Find a polite way to skip and avoid meetings that don’t bring value to you or your team. Provide feedback to meeting owners.&lt;/p&gt;

&lt;p&gt;1-1s are for everything. 1-1s are the most important and productive meetings. Take as much value from them as you can. Prepare the agenda in advance. Never skip them (it can send the wrong message). Have them scheduled for the same time always. Make them a habit. (I usually schedule them close to each other and block 2-4 hours every week for them)&lt;/p&gt;

&lt;p&gt;Write &amp;gt; Talk. Unless it’s bad news or something that could be interpreted wrong (because it will always be).&lt;/p&gt;

&lt;h2&gt;
  
  
  Delegate everything (and grow your team)
&lt;/h2&gt;

&lt;p&gt;It is part of - people manager first thing - grow your team, let team members be in charge. Create safety nets, let people make mistakes and be wrong.&lt;/p&gt;

&lt;p&gt;A few techniques that worked for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One of the team members is a scrum master. This role is not only an accountant or meeting moderator. The scrum master should be able to answer questions during standups and be your ambassador. Invest time in training. Rotate every quarter/year.&lt;/li&gt;
&lt;li&gt;When you’re off by any reason (vacation, sick, etc.) ask one of the team members to assume product owner role instead of you. They should drop engineering/design and pretend that it’s a full-time job. Let this person plan, change backlog, attend all meetings instead of you and be in charge. (Safety net - if you’ll drive in a wrong direction we’ll fix it)&lt;/li&gt;
&lt;li&gt;Team members do demos - let people show off their work in front of the audience. Stakeholders must be present at this meeting. Invest time into training and making sure that people understand what’s the purpose of the demo and how to do it.&lt;/li&gt;
&lt;li&gt;Always ask for input on backlog or roadmap during 1-1s. I don’t see much value in doing it during group meetings because people tend to be more closed and less sincere. 1-1 is a perfect time. If you do it every week, it gets into the habit, and people inevitably think about it before 1-1s.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Always be in the planning mode
&lt;/h2&gt;

&lt;p&gt;Do not put it off for an official “planning meeting” or “backlog grooming.” Planning is a vital part of your job - groom and review your backlog every day - if something changed or you learned something new - adjust immediately.&lt;/p&gt;

&lt;p&gt;As a bonus, you’ll recover time by combining staying in planning mode and discussing product future with the team during 1-1s. You’ll be able to drop “official” plannings. These meetings tend to be long and exhausting. Many times they end up in a format where 2 persons argue about a small thing and the rest of the team just listening and thinking about what they could do better with their time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data
&lt;/h2&gt;

&lt;p&gt;Data informs everything. Do it yourself (or delegate within your team). Learn SQL and  Statistics 101. Do not depend on other teams. Data is &lt;strong&gt;your&lt;/strong&gt; job.&lt;/p&gt;

&lt;p&gt;Start every project with data infrastructure. If you can’t measure improvement - there is no improvement.&lt;/p&gt;

&lt;p&gt;I always set aside 5-10 minutes between demo and retrospective to do data demo for stakeholders. Walk through metrics and tell what we are going to do next sprint to drive team metrics. I find that it forces me to dig deeper into the data and avoid working on things that do not drive metrics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pursue the big thing
&lt;/h2&gt;

&lt;p&gt;Distractions creep into the backlog. Review and purge often. Skip bugs unless they are that bad. Bugs tend to eat 90% of the time in return of 10% improvement.&lt;/p&gt;

&lt;p&gt;Focus on one metric and drop anything that doesn’t affect it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get thing out of the door ASAP
&lt;/h2&gt;

&lt;p&gt;Make it run, make it right, make it fast transfers perfectly to product management.&lt;/p&gt;

&lt;p&gt;Release the product as soon as it looks like something usable, and then iterate on the live product. Perfection is the enemy of good.&lt;/p&gt;

&lt;p&gt;Constant cadence of iteration helps a lot with meeting deadlines (and predicting misses).&lt;/p&gt;

&lt;h2&gt;
  
  
  The Process
&lt;/h2&gt;

&lt;p&gt;Pick your processes and stick to it.&lt;/p&gt;

&lt;p&gt;Adjust by doing retrospectives and &lt;em&gt;carefully&lt;/em&gt; listening during 1-1s.&lt;/p&gt;

&lt;p&gt;Long meetings are the worst - avoid them at all cost. Always moderate. Ask people to follow-up 1-1. If there is a meeting that needs more than 30 minutes - refactor it by splitting, canceling, changing participants.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross team communication (a.k.a The Politics)
&lt;/h2&gt;

&lt;p&gt;Politics and cross-team dynamics are very fluid and company depending.&lt;/p&gt;

&lt;p&gt;A few things I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“No” is the default answer. (But never say “no” be a polite and diplomatic person). People around are asking for random things that are important to them around your area of ownership. Use it as an input and consider it but do not jump into it or you are risking saturating your backlog with random things and impeding work on The Big Thing.&lt;/li&gt;
&lt;li&gt;Ask for help or advice very carefully. You’re sharing responsibility when asking for help. People will (&lt;em&gt;unconsciously&lt;/em&gt;) expect you to follow their advice and become sad if you don't. If you are not going to follow their advice — it’s better to avoid asking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reading recommendations
&lt;/h2&gt;

&lt;p&gt;I didn't found anything that stand out as the only source of truth.&lt;/p&gt;

&lt;p&gt;Hovewer there were a few reads that I enjoyed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://basecamp.com/books/getting-real"&gt;37 Signals - Getting Real&lt;/a&gt; ★★★★★&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Managing-Humans-Humorous-Software-Engineering/dp/1484221575"&gt;Michael Lopp - Managing humans&lt;/a&gt; ★★★★★&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://randsinrepose.com/archives/category/management/"&gt;Michael Lopp - Blog&lt;/a&gt; ★★★★★&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.joelonsoftware.com/"&gt;Joel Spolsky - Blog&lt;/a&gt; ★★★★★&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.paulgraham.com"&gt;Paul Gragham - Blog&lt;/a&gt; ★★★★&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Daily-Stoic-Meditations-Wisdom-Perseverance/dp/0735211736"&gt;Ryan Holiday - The Daily Stoic:&lt;/a&gt; ★★★★&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Blink-Power-Thinking-Without/dp/0316010669"&gt;Malcolm Gladwell - Blink: The Power of Thinking Without Thinking&lt;/a&gt; ★★★★&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Definitive-Book-Body-Language-Expressions/dp/0553804723"&gt;Allan Pease - The Definitive Book of Body Language&lt;/a&gt; ★★★&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/48-Laws-Power-Robert-Greene/dp/0140280197"&gt;Robert Greene - 48 Laws of Power&lt;/a&gt; ★★★&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The End
&lt;/h2&gt;

&lt;p&gt;YMMV 😉&lt;/p&gt;

</description>
      <category>career</category>
      <category>management</category>
      <category>product</category>
      <category>leadership</category>
    </item>
  </channel>
</rss>
