<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>watercooler on Shweta Kadam</title>
    <link>https://shwetakadam.com/tags/watercooler/</link>
    <description>Recent content in watercooler on Shweta Kadam</description>
    <image>
      <url>https://shwetakadam.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://shwetakadam.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Thu, 18 May 2023 23:10:00 +0530</lastBuildDate><atom:link href="https://shwetakadam.com/tags/watercooler/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Using Thinking Fast and Slow Concepts on Programming</title>
      <link>https://shwetakadam.com/posts/using-thinking-fast-and-slow-concepts-on-programming/</link>
      <pubDate>Thu, 18 May 2023 23:10:00 +0530</pubDate>
      
      <guid>https://shwetakadam.com/posts/using-thinking-fast-and-slow-concepts-on-programming/</guid>
      <description>Recently my friend gave me a Thkinking Fast and Slow Concepts book by Daniel Kahneman. I related to a lot of his. concepts and how it apply to my daily programming life a lot!
The book involves recognizing and managing cognitive biases while leveraging both intuitive and analytical thinking.the book explains 2 systems System 1 (Fast Thinking): This is the intuitive and automatic mode of thinking. It operates quickly and without much effort, making snap judgments and assumptions.</description>
      <content:encoded><![CDATA[<p>Recently my friend gave me a Thkinking Fast and Slow Concepts book by Daniel Kahneman. I related to a lot of his. concepts and how it apply to my daily programming life a lot!</p>
<p>The book involves recognizing and managing cognitive biases while leveraging both intuitive and analytical thinking.the book explains 2 systems
System 1 (Fast Thinking): This is the intuitive and automatic mode of thinking. It operates quickly and without much effort, making snap judgments and assumptions. It’s driven by emotion and instinct.</p>
<p>System 2 (Slow Thinking): This is the deliberate and analytical mode of thinking. It requires effort and is used in complex decision-making, requiring attention and logical thinking.</p>
<p>As a programmer, we need to use System 2 a lot but sometimes in certain deadline situations, we tend to use System 1 a lot. Throughout the book, Kahneman discusses how these two systems influence our decisions and lead to various cognitive biases. Some key concepts include:</p>
<p>Heuristics: Mental shortcuts that ease the cognitive load of making decisions.
Prospect Theory: People value gains and losses differently, leading to irrational decision-making.
The Anchoring Effect: Relying too heavily on the first piece of information seen (the &ldquo;anchor&rdquo;) when making decisions.
Overconfidence Bias: The tendency to overestimate one’s abilities.
Framing Effect: Decisions are influenced by the way information is presented.</p>
<p>Here are some of the strategies that I thought were pretty useful from the book and could apply in my  daily work.</p>
<p>Code Reviews: Engage in regular code reviews with peers. This practice encourages System 2 thinking by requiring you to explain and justify your coding decisions. It also helps identify biases or errors that might have been overlooked by the original coder.</p>
<p>Pair Programming: This technique involves two programmers working together at one workstation/huddle. One writes the code while the other reviews each line as it is typed. The reviewer (navigator) uses System 2 thinking, providing immediate feedback and suggestions, while the driver can engage more in System 1, especially in familiar areas of coding.</p>
<p>Test-Driven Development (TDD): TDD requires you to write tests before you write the actual code. This approach forces you to slow down and think about what you want to achieve (System 2) before getting involved in the coding itself (System 1).</p>
<p>Refactoring with a Purpose: Systematically refactor code to improve its structure and readability without changing its functionality. This requires careful, analytical thinking to ensure that improvements are actual improvements and not just changes based on personal bias or preference.</p>
<p>Using Linters and Static Analysis Tools: Tools that analyze your code for errors, potential bugs, or style issues can help counteract the overconfidence bias by providing a &ldquo;second opinion&rdquo; that challenges your assumptions about your own code&rsquo;s correctness.</p>
<p>Heuristic Checklists: Develop or use existing checklists for code quality, security standards, and performance optimizations. This approach leverages structured thinking to ensure that common pitfalls and best practices are systematically considered.</p>
<p>Mindful Debugging: When debugging, it&rsquo;s easy to quickly form a hypothesis and get tunnel vision. To counteract this, consciously explore multiple hypotheses and systematically verify or dismiss each one, ensuring that your initial assumptions don&rsquo;t blind you to other possibilities.</p>
<p>Documentation and Comments: Writing clear documentation and code comments encourages you to think through your design and implementation choices. This reflective practice can help clarify your thoughts and expose any weak points in your reasoning.Though it should not be overused as people tend to write complicated code and cover it with comments and documentation.</p>
<p>Regular Training on Cognitive Biases: Conduct sessions to educate yourself and your team on different types of cognitive biases and how they can affect programming and decision-making. This awareness can help everyone be more mindful of their thinking patterns and decision-making processes.</p>
<p>Break Large Problems into Smaller Parts: When faced with a complex problem, break it down into smaller, manageable tasks. This strategy helps manage the cognitive load, allowing System 2 to engage more effectively without being overwhelmed.</p>
]]></content:encoded>
    </item>
    
    <item>
      <title>When to ask for help as a Software Engineer?</title>
      <link>https://shwetakadam.com/posts/when-to-ask-for-help-as-a-software-engineer/</link>
      <pubDate>Fri, 03 Mar 2023 23:10:00 +0530</pubDate>
      
      <guid>https://shwetakadam.com/posts/when-to-ask-for-help-as-a-software-engineer/</guid>
      <description>We have all experienced this often where we are stuck on an issue. We feel we have not earned the right to ask the doubt yet till we reach an imaginary threshold or baseline. The feeling of doing some research before reaching out to someone.
Then time passes and so does the feeling of shame.The shame of not being able to solve the doubt on my own and yet feeling the hesitation to reach out to a senior.</description>
      <content:encoded><![CDATA[<p>We have all experienced this often where we are stuck on an issue. We feel  we have not earned the right to ask the doubt yet till we reach an imaginary threshold or baseline.
The feeling of doing some research before reaching out to someone.</p>
<p>Then time passes and so does the feeling of shame.The shame of not being able to solve the doubt on my own and yet feeling the hesitation to reach out to a senior.</p>
<p>The best resolution no matter how much hesitation or shame is to ASK NOW!
It does two things:-</p>
<ul>
<li>Filters out your misunderstandings and gives you clarity.</li>
<li>Always end up learning something new.</li>
<li>Also if the point is in just the idea or analysis stage ,one can validate the effectiveness of an idea faster . How much important or effective an idea is as a solution to a problem or if there are better solutions.</li>
</ul>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
