<?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>Forem: Nadia Yuzhakova</title>
    <description>The latest articles on Forem by Nadia Yuzhakova (@zerocodilla).</description>
    <link>https://forem.com/zerocodilla</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%2F1112120%2F7eb3c434-99a8-4a1d-ab48-058d3885c2d3.jpeg</url>
      <title>Forem: Nadia Yuzhakova</title>
      <link>https://forem.com/zerocodilla</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zerocodilla"/>
    <language>en</language>
    <item>
      <title>May Kanban Be With You: Practical Case Study</title>
      <dc:creator>Nadia Yuzhakova</dc:creator>
      <pubDate>Thu, 20 Feb 2025 08:44:01 +0000</pubDate>
      <link>https://forem.com/zerocodilla/may-kanban-be-with-you-practical-case-study-3bjd</link>
      <guid>https://forem.com/zerocodilla/may-kanban-be-with-you-practical-case-study-3bjd</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In 2021, I worked as a Product Manager at a technical company, and have been implementing Kanban in my team for the past three years. Kanban’s principles and practical tools aligned well with our team's needs, providing a structured yet flexible approach to managing work. This journey led me to deepen my expertise by earning professional certifications from  &lt;a href="https://kanban.university/" rel="noopener noreferrer"&gt;Kanban University&lt;/a&gt;, including  &lt;a href="https://edu.kanban.university/user/46301/6979/13/certificate" rel="noopener noreferrer"&gt;Kanban System Design (KMPI)&lt;/a&gt; and &lt;a href="https://edu.kanban.university/user/46301/8/qualification-certificate/TmFkZXpoZGEgTWFudWlsb3ZhOjlUYnN0UWYhVHBhRWZwNToxNjQ0MDYxOTk5" rel="noopener noreferrer"&gt;Kanban Management Professional&lt;/a&gt;. In this article, I share a real-world case study of how we successfully applied Kanban to improve our team's efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  About Team
&lt;/h2&gt;

&lt;p&gt;My team at that moment handled the licensing of all company’s products and provided personal accounts to partners and retail users. We processed daily data reports from 360,000 servers and managed around 12 microservices. Our development stack was primarily Java and Python.&lt;/p&gt;

&lt;p&gt;The team consisted of a product manager, a team lead, two QA engineers, four developers, and a DevOps engineer. We also had a dedicated support engineer from the support department.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;When I joined the team in 2018, they were following Scrum, but it no longer met their needs, and they were eager to explore Kanban. A new team lead had just stepped into the role, and 70% of the team members were new, leading to instability, loss of context, and a lack of explicit policies. Task management was difficult, with little control over workflow and frequent urgent tasks, forcing us to micromanage and interrupt engineers. The team felt overwhelmed by a heavy workload, a bloated backlog, and too many “mandatory” tasks.&lt;/p&gt;

&lt;p&gt;Externally, stakeholders were frustrated by slow delivery and a lack of visibility. Some C-level executives even questioned the team's value, as they struggled to understand what the team was working on and why. By then, the service had gained a reputation for being non-transparent, unresponsive and slow in supporting stakeholders.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8averp1dt3belmedjmlg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8averp1dt3belmedjmlg.png" alt="Funny picture of Philip J. Fry from Futurama making a skeptical face." width="800" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One simple thing I did was visualizing our workflow - even for myself, it helped to understand how everything worked. Since then, we’ve proudly told everyone that we have 'Kanban.'&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvzaj55wnodlka4s3lv9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvzaj55wnodlka4s3lv9.png" alt="The initial version of our physical Kanban board." width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A year later, my manager encouraged and sponsored my Kanban certification, allowing me to fully realize its true potential. It became clear that a simple Kanban board with sticky notes was not Kanban yet. &lt;/p&gt;

&lt;p&gt;The initial Kanban, as established in Toyota’s production system, differs from the Kanban methodology applied in IT. The core idea, developed between 2005 and 2008 at Microsoft and Corbis, focuses on introducing work-in-progress (WIP) limits and their proper implementation via the &lt;a href="https://kanban.university/statik-workshop/" rel="noopener noreferrer"&gt;STATIK&lt;/a&gt; (Systems Thinking Approach to Introducing Kanban) framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Start Introducing Kanban
&lt;/h2&gt;

&lt;p&gt;Excited with new knowledge, I returned to the office ready to implement Kanban, only to realize that the practical application of STATIK wasn’t fully covered in training and remained vague to me. The complexity of our internal processes was overwhelming, making it feel like a full-time job. Instead of applying STATIK fully from the start, I decided to focus on specific practices that addressed our pain points.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkn1lpjv9sa7khv0lfse6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkn1lpjv9sa7khv0lfse6.jpeg" alt="A cat-knight is busy creating a Kanban board instead of taking real action to rescue the cat-princess." width="800" height="911"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 0: Kanban Evangelism for the Team
&lt;/h2&gt;

&lt;p&gt;It's great to be passionate about something, but it's even more important to have your team on board. After completing the training, I shared my knowledge with the team and involved them in suggesting changes. The most effective way to engage the team would be to play Kanban board games together, such as &lt;a href="https://getkanban.com/" rel="noopener noreferrer"&gt;getKanban&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Establishing a Manageable System
&lt;/h2&gt;

&lt;p&gt;To create a manageable system, I defined service classes, WIP limits, and workload origins.&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Classes
&lt;/h2&gt;

&lt;p&gt;Just as airlines offer different service classes (business, economy), Kanban allows prioritization based on business value. &lt;/p&gt;

&lt;p&gt;In our team, we categorized requests into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Expedite:&lt;/strong&gt; Urgent tasks handled by the fastest available developer, released as soon as possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixed Date:&lt;/strong&gt; High-priority to be delivered by a specific date.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standard:&lt;/strong&gt; All user requests and features adding value to products. These should follow a FIFO (First In, First Out) approach to reduce lead time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bugs:&lt;/strong&gt; Higher priority than internal improvements to ensure service quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intangible:&lt;/strong&gt; Tasks with long-term impact that contribute to technical improvements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ondmwo5mh7jc041w5zr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ondmwo5mh7jc041w5zr.png" alt="Jira Kanban Board showcasing service classes." width="800" height="798"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Properly defined service classes help developers pick the right tasks without a manager’s intervention, eliminate effort spent on estimations, and balance business requests with technical improvements.&lt;/p&gt;

&lt;h2&gt;
  
  
  WIP Limits
&lt;/h2&gt;

&lt;p&gt;Work-in-progress limits ensure a steady workflow, prevent overload, and help teams focus.&lt;br&gt;
Our WIP limits were set as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Per Engineer:&lt;/strong&gt; One task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expedite Class:&lt;/strong&gt; One active task at a time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow Stages:&lt;/strong&gt; Kick-off (2 tasks), Review (3 tasks) to prevent bottlenecks, Ready for Development (6 tasks) to protect (buffer) bottlenecks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmtas3bl7q8ijdz9y0ppp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmtas3bl7q8ijdz9y0ppp.png" alt="Jira Kanban Board showcasing settings for WIP limits" width="800" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Workload Origins
&lt;/h2&gt;

&lt;p&gt;Analyzing the frequency and nature of incoming requests helped us manage expectations and plan better.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;License-related requests:&lt;/strong&gt; Up to seven per month, expected to be completed within two weeks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature requests:&lt;/strong&gt; Around 13 per month, with 60% immediately - prioritized for completion within the next two months.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bugs:&lt;/strong&gt; Around 20 per month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyl4vy5dtognytoo6223q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyl4vy5dtognytoo6223q.png" alt="Workflow origin visualisation diagram." width="800" height="785"&gt;&lt;/a&gt;&lt;br&gt;
Understanding workload dynamics allowed us to set realistic planning horizons and reserve buffers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Improving Stakeholder Satisfaction
&lt;/h2&gt;

&lt;p&gt;The second goal was to enhance stakeholder satisfaction. It was achieved through cadence meetings, lead time optimization, and backlog triage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Queue Replenishment Meeting
&lt;/h2&gt;

&lt;p&gt;Kanban uses the term "cadence" for all regular meetings. Queue replenishment meetings serve the purpose of prioritization in Kanban, simply asking, "Which task should be done next?"&lt;/p&gt;

&lt;p&gt;Initially, our team suffered from misaligned expectations. In project management, it's often suggested to identify the stakeholders. If that sounds too easy, let me tell you - it took me 1,5 years to fully understand the implicit rules of the game. For our team, the decision-makers on prioritization were a committee of 8 (!) managers.&lt;/p&gt;

&lt;p&gt;Ironically, as a PM, I'm not a meeting person. They make me calculate coordination costs in my head. The first replenishment meeting wasn’t out of curiosity but a response to absence of synchronization. The situation escalated and it took six hours to sort out priorities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftn25uylkjfupx0pekyl6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftn25uylkjfupx0pekyl6.jpeg" alt="Funny picture from the Angry Birds cartoon." width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After several iterations, we refined the process:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pre-triage meetings&lt;/strong&gt; with department heads to eliminate irrelevant requests.&lt;/li&gt;
&lt;li&gt;A priority list containing &lt;strong&gt;a single top request&lt;/strong&gt; from each stakeholder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Up to 30-minute&lt;/strong&gt; decision-making meetings &lt;strong&gt;on demand&lt;/strong&gt;.
More and more often, the meetings would end in just 10 minutes or be completely postponed if I had the full context updated.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lead Time Optimization
&lt;/h2&gt;

&lt;p&gt;Stakeholders often want to know, “When will my request be done?” Like many teams, we tried to answer this with precise estimates and an up-to-date roadmap. Needless to say, it was tedious, time-consuming, and demotivating. Kanban experts advise not to estimate tasks at all, as it helps ease bottlenecks, often caused by developers who are repeatedly asked for their opinion. Although it is better suited for support teams due to their lower variability in tickets, the idea of skipping estimation also appealed to us.&lt;/p&gt;

&lt;p&gt;Instead of juggling with ETAs, I dove into JIRA data to leverage the &lt;strong&gt;Lead Time&lt;/strong&gt; metric (time to complete the entire process from feature request to release). In our case, over a 6-month timeline for closed tasks, Lead Time appeared as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;90% of expedited requests are completed within four weeks;&lt;/li&gt;
&lt;li&gt;90% of standard requests are completed within 10 months;&lt;/li&gt;
&lt;li&gt;90% of bugs are fixed within two days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqng0xyzqi9gzx3wzkaw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqng0xyzqi9gzx3wzkaw.png" alt="Lead Time diagram for closed Standard service class within six months" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another useful metric is &lt;strong&gt;Cycle Time&lt;/strong&gt;, which measures how long a task takes once it is pulled by a developer to completion. Instead of estimating each task individually, historical data allows us to use &lt;strong&gt;Cycle Time Distribution&lt;/strong&gt; for more reliable predictions.&lt;/p&gt;

&lt;p&gt;By analyzing the Cycle Time Distribution Diagram, we can see how long the largest tasks have taken in the past. If a request seems vague or large, we can use the &lt;strong&gt;upper range&lt;/strong&gt; of the distribution as a reference. If it feels more typical, we can refer to the &lt;strong&gt;most common cycle time&lt;/strong&gt; to estimate how long it may take.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqz1daiacxr5vzn8ioxqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqz1daiacxr5vzn8ioxqi.png" alt="Cycle Time Distribution Diagram Example" width="800" height="508"&gt;&lt;/a&gt;&lt;br&gt;
To reduce these metrics, we introduced many changes: optimized implementation for frequent licensing requests, invested in deployment process to release on demand, triaged tasks, pulled by FIFO, broke tasks down into small deliverable pieces, reduced transaction and coordination costs. Some were easy, like stop task assignments to developers and let them self-assign, while others required ongoing effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backlog Triage
&lt;/h2&gt;

&lt;p&gt;Together with the team lead, we spent an hour each week cleaning up our backlog. This ensured a balanced perspective between business priorities and technical impact. Over six months, we reduced the queue from 800 open requests to just 75 ready for development tasks - enough to sustain a steady work pace for 3-4 months if PM is somehow unavailable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcw2k935ami78wuwq4mhk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcw2k935ami78wuwq4mhk.png" alt="Diagram shows the relation between created and resolved issues from JIRA." width="800" height="683"&gt;&lt;/a&gt;&lt;br&gt;
As a result, backlog management became significantly faster. Instead of sifting through hundreds of items, we could replenish the development buffer in minutes from the top of a triaged and prioritized backlog. This streamlined process prevented me, as a PM, from becoming a bottleneck when deciding what to pull next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Introducing Kanban transformed our team into a more simple and manageable system, improving workflow visibility and efficiency.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Median Lead Time&lt;/strong&gt; for feature requests &lt;strong&gt;improved by 65%&lt;/strong&gt; (from 12 weeks to 4 weeks for closed tasks).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backlog&lt;/strong&gt; size &lt;strong&gt;refined by 91%&lt;/strong&gt; (from over 800 tasks to 75 prepared to be pulled into development).&lt;/li&gt;
&lt;li&gt;For one of the licensing requests category &lt;strong&gt;optimization improved Lead Time by 86%&lt;/strong&gt; (from a week to one day).&lt;/li&gt;
&lt;li&gt;Work in progress reduced at least doubly.&lt;/li&gt;
&lt;li&gt;Many services began &lt;strong&gt;releasing on demand or within five days&lt;/strong&gt; instead of following three-week iterations.&lt;/li&gt;
&lt;li&gt;Coordination costs for work planning were significantly optimized.&lt;/li&gt;
&lt;li&gt;Stakeholders provided positive feedback. 
All of these changes were achieved through small, incremental improvements - driven as a side effort alongside my busy Product Manager role, with strong support from the team lead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope my case study provides some inspiration. If you're considering Kanban for your team and are short on time, &lt;a href="https://kanbanbooks.com/essential-kanban-condensed/" rel="noopener noreferrer"&gt;this 100-page book&lt;/a&gt; can be a quick and effective starting point. I also recommend Part I of &lt;a href="https://www.amazon.co.uk/Kanban-Action-Marcus-Hammarberg/dp/1617291056" rel="noopener noreferrer"&gt;Kanban in Action&lt;/a&gt;, which provides an interactive guide on how to visualize work with your team and set WIP limits. Start where you are, and may Kanban be with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0qa1wf2xhjf2e0no0t5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0qa1wf2xhjf2e0no0t5.png" alt="Sci-fi Kanban board" width="800" height="798"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agile</category>
      <category>development</category>
      <category>management</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Product Discovery Toolkit</title>
      <dc:creator>Nadia Yuzhakova</dc:creator>
      <pubDate>Tue, 16 Jul 2024 08:40:55 +0000</pubDate>
      <link>https://forem.com/zerocodilla/product-discovery-toolkit-42i</link>
      <guid>https://forem.com/zerocodilla/product-discovery-toolkit-42i</guid>
      <description>&lt;p&gt;Have you ever created products following your gut feeling? If so, you might appreciate the ideas from my favorite book, &lt;a href="https://www.amazon.co.uk/How-Fail-Almost-Everything-Still/dp/0241003709/ref=asc_df_0241003709/?tag=googshopuk-21&amp;amp;linkCode=df0&amp;amp;hvadid=697328971199&amp;amp;hvpos=&amp;amp;hvnetw=g&amp;amp;hvrand=3607246000586404601&amp;amp;hvpone=&amp;amp;hvptwo=&amp;amp;hvqmt=&amp;amp;hvdev=c&amp;amp;hvdvcmdl=&amp;amp;hvlocint=&amp;amp;hvlocphy=9046035&amp;amp;hvtargid=pla-454893117503&amp;amp;psc=1&amp;amp;mcid=c05bf37d88ac378db132bdc2613ee6b2&amp;amp;gad_source=1" rel="noopener noreferrer"&gt;“How to Fail at Almost Everything and Still Win Big”&lt;/a&gt;, about the value of execution over the uniqueness of the idea, and the importance of gaining knowledge to increase your odds of getting “lucky”. To further boost the likelihood of success, it's crucial to understand the product’s potential, move beyond intuition and leverage Product Discovery Tools. In this article, using our real app as an example, I will illustrate how we validated product ideas and strived to achieve product/market fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  About the Team
&lt;/h2&gt;

&lt;p&gt;In 2023 an app for learning foreign languages called &lt;a href="https://catwordy.com/" rel="noopener noreferrer"&gt;CatWordy&lt;/a&gt; was launched in the App Store and Google Play. Our small but mighty team consisted of my husband as an app engineer and product visionary, and me as the Product Manager. During our immigration to Bulgaria, we found ourselves with very little motivation to learn the local language. However, we believe that no task is unpleasant if you do it your way. Our way was to create an app for learning foreign words - CatWordy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product Idea
&lt;/h2&gt;

&lt;p&gt;The idea was to have a single place for all new words in all the languages you learn: to collect, train, and remember them. It seemed that all existing products didn’t solve this not-so-unique problem in the way we like to see, at least for the Bulgarian language.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpw3ca8ogx25tzp01y3ek.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpw3ca8ogx25tzp01y3ek.jpeg" alt="Scrooge McDuck holding a sign with a word “sarcasm”" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Popular apps on the market provide a predefined journey with very little commitment to teaching you a foreign language but to entertain you. But, as it turned out, there was a reason for that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product Discovery Toolkit
&lt;/h2&gt;

&lt;p&gt;So, you're about to create your own product. I hope you've evaluated it from all perspectives and believe it's the best idea ever. Just kidding! Instead, focus on the idea you &lt;strong&gt;can&lt;/strong&gt; execute and gain sufficient knowledge about your market and customers.&lt;/p&gt;

&lt;p&gt;My essential Product Discovery Toolkit consists of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Competitor analysis&lt;/li&gt;
&lt;li&gt;Product strategy&lt;/li&gt;
&lt;li&gt;Market analysis&lt;/li&gt;
&lt;li&gt;Customer development (CustDev)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's explore these techniques together, using the CatWordy app as an example.&lt;/p&gt;

&lt;h2&gt;
  
  
  Competitors Analysis
&lt;/h2&gt;

&lt;p&gt;I prefer to keep it simple yet profound. For me, it’s about analyzing other products, and gathering relevant data. I downloaded 20+ language-learning apps, used them, and systematized my insights. I’ll share some of them with you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About Product Idea.&lt;/strong&gt; Only a few apps addressed our key idea, and we were capable of surpassing them in terms of user interface and technical implementation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About the Market.&lt;/strong&gt; The Bulgarian language was not represented in many existing apps, probably because of the market size (Bulgarian is spoken by only &lt;a href="https://en.wikipedia.org/wiki/Bulgarian_language" rel="noopener noreferrer"&gt;around 10 million people across the globe&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About Educational Apps Metrics.&lt;/strong&gt; &lt;a href="https://www.statista.com/statistics/259329/ios-and-android-app-user-retention-rate/" rel="noopener noreferrer"&gt;The retention rate for educational apps is 1.76% on Day 30.&lt;/a&gt; This is why many apps don’t show the content, don’t provide the trial period and force customers to buy annual subscriptions. After purchase many apps engage customers with gamification, networking, push-notifications and streaks. It determined our roadmap for the next releases.&lt;br&gt;
On this step our confidence level was high, and we proceeded with the initial idea. &lt;/p&gt;

&lt;h2&gt;
  
  
  Product Strategy
&lt;/h2&gt;

&lt;p&gt;Simply put, Product Strategy answers the questions of what you deliver and for whom. For a comprehensive understanding, I recommend reading the chapter about Product Strategy in the book &lt;a href="https://www.amazon.co.uk/INSPIRED-Create-Tech-Products-Customers-ebook/dp/B077NRB36N" rel="noopener noreferrer"&gt;Inspired&lt;/a&gt;.&lt;br&gt;
The key idea is to come up with the smallest deliverable product that makes your target customers successful. Focusing on a single, small market at a time helps you launch your product as soon as possible.&lt;br&gt;
Based on the Competitors Analysis our initial Product Strategy for CatWordy was to deliver an app for learning Bulgarian words first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Market Analysis
&lt;/h2&gt;

&lt;p&gt;The idea is to check if the market exists and is large enough. This is why you start &lt;br&gt;
with the Total Available Market and you go down to your product strategy. What we've learned at this stage is that despite the market's size, our share is very distant from it.&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://www.fnfresearch.com/online-language-learning-market" rel="noopener noreferrer"&gt;the public data on the global online language learning market size&lt;/a&gt; and its estimation for the next 5 years, I found that &lt;a href="https://www.businessofapps.com/data/language-learning-app-market/" rel="noopener noreferrer"&gt;the language learning app sector&lt;/a&gt; is valued at $8.21 billion in 2021 (or $5.7 billion with &lt;a href="https://www.statista.com/statistics/975776/revenue-split-leading-digital-content-store-worldwide/" rel="noopener noreferrer"&gt;30%&lt;/a&gt; of excluded store commissions). &lt;/p&gt;

&lt;p&gt;The second step is to define the Segmented Addressable Market. Keeping in mind our Product Strategy to focus on the Bulgarian market, In 2023 the non-national population in Bulgaria (who may be interested in learning the local language) was estimated at &lt;a href="https://migrant-integration.ec.europa.eu/country-governance/governance-migrant-integration-bulgaria_en#:~:text=According%20to%20Eurostat's%20Migration%20and,in%20Bulgaria%20at%20the%20time." rel="noopener noreferrer"&gt;83k people&lt;/a&gt;. Considering the median annual price $55 from my Competitors Analysis, the SAM could be estimated as $4.5 million annually.&lt;/p&gt;

&lt;p&gt;The potential revenue which our company could achieve (Share of Market) I estimated based on conversion rate assumption (2%), our go-to-market price and landed at $17k. Well, our initial product strategy certainly wasn't going to make us billionaires and required adjustments for the next releases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68ruzy80rtyo7zwspn76.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68ruzy80rtyo7zwspn76.jpeg" alt="sad Scrooge McDuck in an empty money pool" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CustDev
&lt;/h2&gt;

&lt;p&gt;Interviews with potential customers provide a lot of insights. The best guide I know is in the book &lt;a href="https://www.amazon.co.uk/Mom-Test-customers-business-everyone/dp/1492180742" rel="noopener noreferrer"&gt;The moms test&lt;/a&gt;. We interviewed people who had 365+ days in &lt;a href="https://www.duolingo.com/" rel="noopener noreferrer"&gt;Duolingo&lt;/a&gt;, learned English for work, and learned German and Bulgarian for life. Very soon we realized that even our initial product idea didn’t have the product/market fit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdq22mxgflh9td19ptbi.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdq22mxgflh9td19ptbi.jpeg" alt="Disappointed Scrooge McDuck is walking away" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What we learned is that customers expect high-quality entertaining content and a ready-to-go learning journey. The popular apps they use don’t actually help them master the language, but they feel productive and have fun achieving daily goals. The majority of customers are less concerned with memorizing words from books or speech, finding it overwhelming. They prefer translating words as needed or grasping the context overall.&lt;/p&gt;

&lt;p&gt;This is just an example of how CustDev interviews can provide insights and bring you closer to your customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Instead of a Conclusion
&lt;/h2&gt;

&lt;p&gt;If we hadn't analyzed the market, products, and customers, we could have spent months polishing the app only to discover after release that the idea lacked product/market fit. Instead, we launched the first release within just two months, working on it in our free time (Have I mentioned my husband has a full-time job?) By following the “Deliver - Learn - Improve” approach and having Product Discovery Toolkit in hand, we iteratively adjusted our strategy to meet market expectations. Several next versions of &lt;a href="https://catwordy.com/" rel="noopener noreferrer"&gt;CatWordy&lt;/a&gt; better matched our customers' needs, and  we expanded our language support to include 10 languages. It’s pretty common that after the initial excitement, dissatisfaction can come, and the development process will slow down. Our priorities and focus also have changed. Despite this, our passion remains strong, and we continue to monitor the market, explore and evaluate new ideas for our next releases. &lt;/p&gt;

</description>
      <category>startup</category>
      <category>productmanagement</category>
      <category>mvp</category>
    </item>
    <item>
      <title>Know Your Tools: PyCharm</title>
      <dc:creator>Nadia Yuzhakova</dc:creator>
      <pubDate>Sat, 06 Jul 2024 13:40:40 +0000</pubDate>
      <link>https://forem.com/zerocodilla/know-your-tools-jetbrains-ide-5aim</link>
      <guid>https://forem.com/zerocodilla/know-your-tools-jetbrains-ide-5aim</guid>
      <description>&lt;p&gt;Throughout my career as a Product Manager, I’ve developed key principles. One of them is "Know Your Tools." This concept is inspired by &lt;a href="https://www.amazon.co.uk/Pragmatic-Programmer-Andrew-Hunt/dp/020161622X" rel="noopener noreferrer"&gt;The Pragmatic Programmer&lt;/a&gt;. “Tools amplify your talent. The better your tools, and the better you know how to use them, the more productive you can be”. For me, this means taking the time to thoroughly learn the tools you use every day.&lt;/p&gt;

&lt;p&gt;Two years ago, I started learning Python (read more about &lt;a href="https://dev.to/zerocodilla/technical-skills-for-product-manager-1m1p"&gt;Technical Skills for Product Manager&lt;/a&gt;). I soon realized the depth of the rabbit hole, and solving problems in Python quickly became my hobby. For my coding journey, I have used &lt;a href="https://www.jetbrains.com/pycharm/" rel="noopener noreferrer"&gt;PyCharm&lt;/a&gt; and invested my time in mastering it. In this article, I invite you to discover simple yet powerful JetBrains IDE features that are accessible at any proficiency level and inspire you to explore further.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Tools
&lt;/h2&gt;

&lt;p&gt;First of all, I highly recommend the onboarding tour to everyone using JetBrains' IntelliJ-based IDEs (Help -&amp;gt; Learn IDE Features). It's an absolute masterpiece and a truly enjoyable process. In my opinion, it sets the standard for what a learning guide should be. &lt;br&gt;
However, people may hesitate to follow learning guides, finding it challenging to remember new features, which may not match their proficiency level or might simply be boring. That's why I prefer focusing on 4-6 features, mastering them, and then progressing to the next set.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search Everywhere
&lt;/h2&gt;

&lt;p&gt;Press ⇧ (macOS) / Shift (Windows/Linux) twice to open Search Everywhere. Suppose you are looking for the file password_generation.py. Type “pg” as the initial letters of these words and see the results. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffqw0e6sz4hpwpdc6m23t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffqw0e6sz4hpwpdc6m23t.png" alt="Search Everywhere Feature Demonstration" width="800" height="244"&gt;&lt;/a&gt;&lt;br&gt;
You can type any words or letters you think might be part of your file, and it will work. This feature is colloquially referred to as &lt;a href="https://en.wikipedia.org/wiki/Approximate_string_matching" rel="noopener noreferrer"&gt;Fuzzy Search&lt;/a&gt;. The same technology is available in the Find Action ⇧⌘A (macOS) / Ctrl+Shift+A (Windows/Linux).&lt;/p&gt;

&lt;h2&gt;
  
  
  Restore Removed Code
&lt;/h2&gt;

&lt;p&gt;If you removed some code fragments and made several valuable changes, the usual “undo” is not a suitable solution. But restoring code from history works perfectly. Right-click anywhere in the editor to open the context menu, and go to Local History -&amp;gt; Show History. Find the code fragment you need to restore and click the button &amp;gt;&amp;gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsuxdv2lk989b09f332a5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsuxdv2lk989b09f332a5.png" alt="Code Fragments in the Local History Window" width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Selection
&lt;/h2&gt;

&lt;p&gt;In addition to the usual ⇧+Arrows (macOS) / Shift+Arrows (Windows/Linux), you can try the ⌥+Arrows (macOS) / Ctrl+Shift+Arrow (Windows/Linux) combination. Press ⌥+Up Arrow (macOS) / Ctrl+Shift+Up Arrow (Windows/Linux) to select the word, once again to select the whole string, and once again to include quotes in the selection.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjzqi3afm3tf6d9qt69t9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjzqi3afm3tf6d9qt69t9.png" alt="Code Selection Example" width="800" height="244"&gt;&lt;/a&gt;&lt;br&gt;
Press ⌥+Down Arrow (macOS) / Ctrl+Shift+Down Arrow (Windows/Linux) to shrink the selection. If you move the caret to the beginning of code blocks, this action will select this segment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Move Code
&lt;/h2&gt;

&lt;p&gt;Press ⌘⇧+Up/Down Arrows (macOS) /  Shift+Alt+Up/Down Arrows (Windows/Linux) to move code fragments. For moving methods, the caret should be at the header of the method. Another shortcut ⌘+Del (macOS) / Ctrl+Y (Windows/Linux) is useful to remove lines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Syntax Quick-Fixes
&lt;/h2&gt;

&lt;p&gt;JetBrains IDEs are a perfectionist's dream… and nightmare. They won't let you sleep until every warning is fixed. Thankfully, you can simply press ⌥+Return (macOS) / Alt+Enter  (Windows/Linux) to reformat your file and turn imperfect code into polished perfection.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fca872tu0jzj8jo6b94y4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fca872tu0jzj8jo6b94y4.png" alt="Example of Syntax Quick-Fixes" width="800" height="245"&gt;&lt;/a&gt;&lt;br&gt;
Another useful feature is removing redundant parameters from all the code. It’s really beautiful how this feature optimizes your code if needed.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5m2lknq6dpzu0xvovdf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5m2lknq6dpzu0xvovdf6.png" alt="Quick Remove of Redundant Parameter" width="800" height="244"&gt;&lt;/a&gt;&lt;br&gt;
You also can remove redundant imports.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14y10h6z38i4qtb2x5kn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14y10h6z38i4qtb2x5kn.png" alt="Optimize Imports" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Automatic F-string Completion
&lt;/h2&gt;

&lt;p&gt;If you have a simple Python string but want to convert it to an f-string, just start typing {whatever… select the suggested parameter, and the string will be transformed into an f-string automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rename Refactoring
&lt;/h2&gt;

&lt;p&gt;If you need to rename some variables in the files, the Rename Refactoring feature is your time saver. Press ⇧F6 (macOS) / Shift+F6 (Windows/Linux) to rename.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6ueqvpyfrv6aj9ou0ap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6ueqvpyfrv6aj9ou0ap.png" alt="Rename Feature" width="800" height="296"&gt;&lt;/a&gt;&lt;br&gt;
All usages of this parameter will be renamed automatically.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fymisb6q5c2ekb4x4xsdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fymisb6q5c2ekb4x4xsdk.png" alt="Code after Rename Refactoring" width="800" height="244"&gt;&lt;/a&gt;&lt;br&gt;
In difficult cases with many usages, you will be advised to choose files for refactoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explore Further
&lt;/h2&gt;

&lt;p&gt;I use PyCharm Community Edition for my coding practice. However, PyCharm Professional offers support for many Python frameworks, has integrated DB tools, an HTTP client, and more. So, if you are working on a complex web-based commercial project, PyCharm Professional could be a more suitable tool. The AI Assistant also looks very intriguing and is next on my list to explore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We can't harness the full power of our brains, but we can maximize our use of JetBrains tools. Don't settle for a basic level of proficiency. Mastering tools can significantly boost your productivity and inspire you to bring new features into the products you create.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Essential Terminal Settings for macOS</title>
      <dc:creator>Nadia Yuzhakova</dc:creator>
      <pubDate>Mon, 20 Nov 2023 10:31:27 +0000</pubDate>
      <link>https://forem.com/zerocodilla/essential-terminal-settings-for-macos-3oh2</link>
      <guid>https://forem.com/zerocodilla/essential-terminal-settings-for-macos-3oh2</guid>
      <description>&lt;p&gt;I recently set up my new MacBook and am glad to share the minimal terminal settings that can benefit everyone, even those who prefer to avoid complicated customizations. As a product manager with foundational Linux skills, I value simplicity in my terminal setup without colorful themes, uncommon shortcuts, and plugins. Nevertheless, there are many features worth exploring and experimenting with.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4teat9s993rxv7oo2mcn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4teat9s993rxv7oo2mcn.png" alt="My terminal screen" width="800" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Terminal and Preferences
&lt;/h2&gt;

&lt;p&gt;iTerm is the default terminal for Mac. The main missing functionality is advanced tab management, specifically tab splitting into panes. iTerm2 serves better for multitasking.&lt;/p&gt;

&lt;p&gt;Download and install iTerm2 from the official website: &lt;a href="https://iterm2.com/downloads.html" rel="noopener noreferrer"&gt;iTerm2 Downloads&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Open iTerm2 and navigate to &lt;code&gt;iTerm2 -&amp;gt; Preferences -&amp;gt; Profiles -&amp;gt; Text -&amp;gt; Font&lt;/code&gt; to increase the font size. &lt;/p&gt;

&lt;h2&gt;
  
  
  Package Manager
&lt;/h2&gt;

&lt;p&gt;A package manager simplifies the process of installing, updating, and removing software packages on a computer. Homebrew is a package manager designed specifically for macOS.&lt;br&gt;
To install &lt;a href="https://brew.sh/" rel="noopener noreferrer"&gt;HomeBrew&lt;/a&gt; run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow instructions from the installation output to add Homebrew to the path. It should look like the commands below.  Please make sure ”[username]” is filled with your actual username.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' &amp;gt;&amp;gt; /Users/[username]/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Oh-My-Zsh
&lt;/h2&gt;

&lt;p&gt;Oh-My-Zsh is a community-driven framework for managing zsh shell configurations.&lt;br&gt;
To install &lt;a href="https://ohmyz.sh/#install" rel="noopener noreferrer"&gt;Oh-My-Zsh&lt;/a&gt; run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I don’t use too many features and plugins available, but there are some functionalities that I find particularly beneficial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-completion with Tab. To try it, type, for example, ‘host’ press the second time to allow cycling through the list and choose the command you want, then it will automatically fill the rest of the words and hit &lt;code&gt;Enter&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Installed Software Checks. If you search for packages, all installed software is checked in the output.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvhbi086akq4qw1eakwc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvhbi086akq4qw1eakwc.png" alt="Feature demonstration: brew search xq. In the output xq utility is marked as installed." width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Preset Aliases. Aliases allow users to create custom shortcuts for commonly used commands such as &lt;code&gt;l=’ls -lah’&lt;/code&gt;. Some of them are already set up. To see the full list of aliases type &lt;code&gt;alias&lt;/code&gt;; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hiding &lt;code&gt;user@hostname&lt;/code&gt; for shell prompt.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ZSH Plugins
&lt;/h2&gt;

&lt;p&gt;There are many plugins to experiment with. I also use some of them.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md" rel="noopener noreferrer"&gt;zsh-autosuggestions&lt;/a&gt; plugin suggests commands that you've previously used in your command history. To accept a suggestion, simply press the right arrow key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fub2zer8b3lw5dyzcmalp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fub2zer8b3lw5dyzcmalp.png" alt="Feature demonstration: the zsh-autosuggestions plugin suggests the last run command." width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To install run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://github.com/zsh-users/zsh-syntax-highlighting" rel="noopener noreferrer"&gt;zsh-syntax-highlighting&lt;/a&gt; plugin highlights the commands in a code style. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbkgk3gde7ifw4oi0aby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbkgk3gde7ifw4oi0aby.png" alt="Feature demonstration: the zsh-syntax-highlighting plugin highlights syntax of the command." width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To install run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the ”~/.zshrc” file and modify the plugins line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plugins=(git zsh-autosuggestions zsh-syntax-highlighting web-search)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To enable the change run: &lt;code&gt;source ~/.zshrc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;web-search&lt;/code&gt; plugin allows you to open browser. Type, for example, &lt;code&gt;google homebrew&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tabs and Panes
&lt;/h2&gt;

&lt;p&gt;iTerm2 supports tabs and panes for better multitasking. Experiment with &lt;code&gt;Cmd + T&lt;/code&gt; for tabs and &lt;code&gt;Cmd + D&lt;/code&gt; or &lt;code&gt;Cmd + Shift + D&lt;/code&gt; for horizontal and vertical panes. &lt;br&gt;
For me, the most convenient way to navigate between tabs is pressing &lt;code&gt;Cmd + left/right&lt;/code&gt;. This is already available if you use &lt;code&gt;xterm Defaults&lt;/code&gt; mapping. However, many users opt to enable Natural Text Editing. I prefer to retain &lt;code&gt;xterm Defaults&lt;/code&gt; and configure key mapping available for Natural Text Editing. My must-have is to move the cursor by words and remove words at once.&lt;/p&gt;

&lt;p&gt;In the Preferences window, go to the &lt;code&gt;Profiles&lt;/code&gt; tab and then &lt;code&gt;Keys -&amp;gt; Key Mappings&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Move a word backwards using &lt;code&gt;option + left&lt;/code&gt; and a word forwards using &lt;code&gt;option + right&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqyjzq86e66urqarbypw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqyjzq86e66urqarbypw.png" alt="Keyboard Shortcut: option + left arrow key. Action: Send Escape Sequence. Esc+b" width="800" height="494"&gt;&lt;/a&gt;&lt;br&gt;
Keyboard Shortcut: &lt;code&gt;option + left&lt;/code&gt;. Action: Send Escape Sequence. Esc+b&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d7nbp0bnjofsfffsbje.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d7nbp0bnjofsfffsbje.png" alt="Keyboard Shortcut: option + right arrow key. Action: Send Escape Sequence. Esc+f" width="800" height="494"&gt;&lt;/a&gt;&lt;br&gt;
Keyboard Shortcut: &lt;code&gt;option + right&lt;/code&gt;. Action: Send Escape Sequence. Esc+f&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delete a word backwards using &lt;code&gt;option + delete&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4qec3dmx5n044unn75c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4qec3dmx5n044unn75c.png" alt="Keyboard Shortcut: option + delete key. Action: Send Hex Code. Code: 0x17" width="800" height="494"&gt;&lt;/a&gt;&lt;br&gt;
Keyboard Shortcut: &lt;code&gt;option + delete&lt;/code&gt;. Action: Send Hex Code. Code: 0x17&lt;/p&gt;

&lt;h2&gt;
  
  
  Shortcuts
&lt;/h2&gt;

&lt;p&gt;There are many shortcuts that don't need to be configured but are worthy learning. I use the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ctrl + C&lt;/code&gt; stops a running program immediately;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ctrl + U&lt;/code&gt; erases everything from the current cursor position to the beginning of the line;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ctrl + L&lt;/code&gt; clears the terminal screen;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cmd + W&lt;/code&gt; closes the current tab;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ctrl + R&lt;/code&gt;  shows the last command that matches the string you typed. Press again to see older results.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Although customization might seem time-consuming, minor adjustments can save time and help focus on your day to day tasks. Confidence and efficiency in using your tools are implicit but empower for coming up with great solutions.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Technical Skills for Product Manager</title>
      <dc:creator>Nadia Yuzhakova</dc:creator>
      <pubDate>Mon, 10 Jul 2023 09:18:41 +0000</pubDate>
      <link>https://forem.com/zerocodilla/technical-skills-for-product-manager-1m1p</link>
      <guid>https://forem.com/zerocodilla/technical-skills-for-product-manager-1m1p</guid>
      <description>&lt;p&gt;How to be a Product Manager in tech without technical skills?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;be lucky;&lt;/li&gt;
&lt;li&gt;be excellent in echoing things you have heard;&lt;/li&gt;
&lt;li&gt;have great communication skills to make friendship with engineers so they do everything you ask;&lt;/li&gt;
&lt;li&gt;have wonderful self-presentation skills, so any manager would be craving to get you on board;&lt;/li&gt;
&lt;li&gt;be good at networking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is everything I could do. More or less. What I can't do is to get rid of my impostor syndrome. So, as a product manager without any technical background, I acquired basic SQL, Linux, Python and Git skills.&lt;/p&gt;

&lt;p&gt;In this article, I’ll tell you how I did it and stayed motivated (what is the hardest thing to do).&lt;/p&gt;

&lt;h2&gt;
  
  
  Before Start
&lt;/h2&gt;

&lt;p&gt;My impostor syndrome didn’t appear one rainy morning from nothing. It was nourished by authoritative opinions.&lt;/p&gt;

&lt;p&gt;If you need to feel uncomfortable with your current level of technical skills, read the “&lt;a href="https://www.amazon.com/INSPIRED-Create-Tech-Products-Customers-ebook/dp/B077NRB36N" rel="noopener noreferrer"&gt;Inspired&lt;/a&gt;” or the “&lt;a href="https://www.amazon.com/Cracking-PM-Interview-Product-Technology/dp/0984782818" rel="noopener noreferrer"&gt;Cracking the PM Interview&lt;/a&gt;” books. They are very explicit about what a PM should be like.&lt;/p&gt;

&lt;p&gt;Or you can look around and find a geek to make friends with. He should be a technical evangelist and be good at providing direct feedback. The best is to marry him. Oh, sorry, it’s my case.&lt;/p&gt;

&lt;p&gt;And the final step is to be ambitious enough to rockstar your career. What is your ultimate goal to achieve? For most of such goals PMs need tech skills.&lt;/p&gt;

&lt;p&gt;Now, if you feel this itchy noise in your head, you can start building your technical background.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Learn
&lt;/h2&gt;

&lt;p&gt;It seems inspiring to have a manager like from the “&lt;a href="https://www.amazon.com/Radical-Candor-Revised-Kick-Ass-Humanity/dp/1250235375" rel="noopener noreferrer"&gt;Radical Candor&lt;/a&gt;” book. He challenges directly, speaks beyond the current role and company, he inspires by example. If this is not your case, you can still find an authority to get development advice. Look among engineering managers, among strong PMs from the community. But usually, you can define it by yourself by a vague understanding of some matters.&lt;/p&gt;

&lt;p&gt;For example, at my work we often speak about servers, internet, connectivity, IPs, managing servers via CLI, upgrading users’ distros. It’s a good idea for me to dive into Linux.&lt;/p&gt;

&lt;p&gt;Or I need to learn about customer behavior, purchases, and products. I have raw data in the databases. So, I need to learn how to query in SQL. Once I have fundamentals, it’s not a big deal to figure out how to query in PostgreSQL, MongoDB, and etc.&lt;/p&gt;

&lt;p&gt;If I were a PM for a mobile app, it would make sense for me to work on my own app as a pet project, code it by myself on &lt;a href="https://flutter.dev/" rel="noopener noreferrer"&gt;Flutter&lt;/a&gt; and build all the infrastructure to deliver it in public.&lt;/p&gt;

&lt;p&gt;For every product manager, it’s a good idea to learn basic coding skills. It helps appreciate engineers' work, speak one language, show your love for technology, and give you an understanding of what is possible. Any language will give you fundamentals and major concepts. My choice is Python because it’s relatively simple, well structured, has a big friendly community, and extends the possibilities to work with data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Non-working Learning Strategies
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Silver Bullets
&lt;/h3&gt;

&lt;p&gt;Actually, they don’t work for anybody.&lt;/p&gt;

&lt;p&gt;You are trapped in the silver-bullet mindset if you are constantly asking such questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is there a cool tech company, which won’t check my coding skills on the interview?&lt;/li&gt;
&lt;li&gt;Which programming language should I learn to get an offer?&lt;/li&gt;
&lt;li&gt;Which course should I take to acquire excellent coding skills from scratch?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best way to get out is to stop looking. Because the truth is, you never know which opportunity you will get or miss at the moment of making a decision. Nobody tells you what works for you. So, don’t lose time. Take any Python course for beginners 😄&lt;/p&gt;

&lt;h3&gt;
  
  
  Courses
&lt;/h3&gt;

&lt;p&gt;I believe that programming and technology books can provide a comprehensive and structured understanding of how things work. But if you are new to developing tech skills, many of them may be too hard. So, in the beginning, the PM's choice can be a course. The simplest and fastest. It gives you confidence, dopamine, and… disappointment. You soon realize you have spent hours and still can do nothing. The courses are not for learning on this stage. Now you know you CAN learn something hard and you have a base for future neural connections in your brain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understand What You Learned
&lt;/h3&gt;

&lt;p&gt;If you study, let’s say, economics at the university, and you decide to read something about Linux, you will understand nothing. Literally nothing. I started with a book that was too hard for me, the “&lt;a href="https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554" rel="noopener noreferrer"&gt;Unix and Linux System Administration Handbook&lt;/a&gt;”. I googled everything I didn’t understand. I opened Wikipedia, followed links one by one, lost time and became more frustrated. In the first chapters, the authors show examples of how the syntax looks like. They used a non-existing command for this purpose. I googled it because I thought this was something important, found nothing and gave up for months. So, if you don’t understand, it’s okay. Just move. If you don’t remember, it’s okay. Move. A bit later, you will realize you understand more and more. Only one thing is to keep going!&lt;/p&gt;

&lt;h3&gt;
  
  
  Find the Best
&lt;/h3&gt;

&lt;p&gt;I spent some time choosing the most complete and effective course. At that moment, I didn’t know yet that I needed ~10 courses or books to be able to do even the basics. Just take any and proceed to the next level of depth. Some information I was able to understand after I’ve heard or read about it 2-3 times with different words. My brain was finally ready to accept the information. It works like this: “Oh, I’ve heard something about this. It’s not scary anymore. Ok, let’s listen to what they say”.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mentor
&lt;/h3&gt;

&lt;p&gt;With a mentor, you move faster and frustrate less. Periodically you need to hear something like that from an experienced guy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“I also don’t know it.”&lt;/li&gt;
&lt;li&gt;“I’ve never used it. Skip it.”&lt;/li&gt;
&lt;li&gt;“This is a misprint.”&lt;/li&gt;
&lt;li&gt;“I configured a server for you for this exercise.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Surprisingly, finding a mentor isn't that hard and it's worth it! Ask at work, on Twitter, on Reddit... I found a mentor for Linux among my colleagues who passed the RHCSA exam.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set a Goal
&lt;/h3&gt;

&lt;p&gt;In my experience, two types of goals help to gain real knowledge and skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;take an international exam;&lt;/li&gt;
&lt;li&gt;get an offer where you need to use this skill and successfully pass onboarding.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Community and Public Commitments
&lt;/h3&gt;

&lt;p&gt;When I started to learn Python, I joined &lt;a href="https://www.100daysofcode.com/" rel="noopener noreferrer"&gt;#100DaysOfCode challenge&lt;/a&gt; on Twitter. Strangers supported me under my daily tweets and this helped me build a daily habit of coding. If I do something hard, I will need someone who cares and will cheer me up. It’s more important than it seems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Daily Habit
&lt;/h3&gt;

&lt;p&gt;Building a daily habit to learn or code is essential. In a while, you don’t ask yourself what to do in the next 30 minutes you have. You open the terminal / IDE and practice. I used &lt;a href="https://wakatime.com/" rel="noopener noreferrer"&gt;WakaTime&lt;/a&gt; to track my coding time and set a goal of one hour daily.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pet Projects
&lt;/h3&gt;

&lt;p&gt;Sometimes it’s hard to obtain a specific experience on your regular job because of technologies mismatch or any other reason. If it is the case, the creation of your own playground will be a solution. Build it in public, share results, and this project can be even counted as a valid case for some job interviews. &lt;/p&gt;

&lt;h3&gt;
  
  
  Choose and Stick
&lt;/h3&gt;

&lt;p&gt;If I am like most PMs, we have a lot of things to be chasing. Books, courses, conferences, building your own public profile, job interviews, projects at work. If you want to get something you can speak for, you will need time and focus. In my experience, I was hoping to learn Linux in three months. It took me almost a year. It’s hard and boring. I was starving to do something different. What helped me stick was a focus. Every time I wanted to do something else, I put it in the backlog. I could pull something new only when I took the RHCSA exam. If it looks like having one work in progress (WIP) limit in the Kanban system, you detected it right! It helped me to calm down my thoughts and overcome my fear of missing out.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  SQL
&lt;/h3&gt;

&lt;p&gt;Goal: Get promoted to a System Analyst.&lt;/p&gt;

&lt;p&gt;The resources that worked for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work integrated learning. Every time I asked engineers to help me find data, I asked them to send me a query they used. I tried to re-use and play with queries; created templates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;was promoted to a System Analyst;&lt;/li&gt;
&lt;li&gt;could fetch the data by myself;&lt;/li&gt;
&lt;li&gt;got an offer of my dream job as a Product Manager for an international company.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Linux
&lt;/h3&gt;

&lt;p&gt;Goal: Take the RHCSA exam.&lt;/p&gt;

&lt;p&gt;The resources that worked for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Red-RHCSA-Cert-Guide-Certification/dp/0135938139" rel="noopener noreferrer"&gt;Red Hat RHCSA 8 Cert Guide: EX200 (Certification Guide)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pluralsight.com/cloud-guru/courses/red-hat-certified-system-administrator-ex200-exam-prep" rel="noopener noreferrer"&gt;Red Hat Certified System Administrator (EX200) Exam Prep&lt;/a&gt; on the Pluralsight platform.&lt;/li&gt;
&lt;li&gt;Mentor’s help and guidelines.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;took the exam and failed (don’t take the exam for the RHEL 9 if you prepared for the RHEL 8).&lt;/li&gt;
&lt;li&gt;can solve tasks by myself. Here are some examples: connect to a server, download archived reports, remove unnecessary files and send them to the stakeholders; lookup for data in the big datasets without fetching them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Python and Git
&lt;/h3&gt;

&lt;p&gt;Goal: Acquire programming skills and do my first pet project.&lt;/p&gt;

&lt;p&gt;The resources that worked for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Python-Crash-Course-2nd-Edition/dp/1593279280" rel="noopener noreferrer"&gt;Python Crash Course&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://git-scm.com/book/en/v2" rel="noopener noreferrer"&gt;Pro Git&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;created a simple shooting game as a pet project;&lt;/li&gt;
&lt;li&gt;can better understand technical tasks of my team and help with prioritization.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;This is hard to acquire technical skills. Not only for PMs without a technical background. Even for engineers. I prepared for the RHCSA exam simultaneously with one colleague from the engineering team from my company. I took the exam and failed. He didn’t use his shot at all. A lot of things compete for our time: families, friends, traveling, hobbies, other technologies and skills you want to learn. The key is to focus, take small daily steps and stick to your goals. Choose not from the list what is clear or simple but constantly raises the bar. Use as much help as you can find. And increase your chances of taking an opportunity when it is available.&lt;/p&gt;

</description>
      <category>career</category>
      <category>learning</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
