<?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: Arjun Rao</title>
    <description>The latest articles on DEV Community by Arjun Rao (@arjunrao87).</description>
    <link>https://dev.to/arjunrao87</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%2F53874%2F279d2cb4-4088-41a2-bcc4-bf45c1ba473b.jpeg</url>
      <title>DEV Community: Arjun Rao</title>
      <link>https://dev.to/arjunrao87</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arjunrao87"/>
    <language>en</language>
    <item>
      <title>Turbocharge your career through team feedback</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Wed, 17 Jul 2024 10:55:56 +0000</pubDate>
      <link>https://dev.to/arjunrao87/turbocharge-your-career-through-team-feedback-meo</link>
      <guid>https://dev.to/arjunrao87/turbocharge-your-career-through-team-feedback-meo</guid>
      <description>&lt;p&gt;Real change happens when you are pushed beyond your comfort zone. Most times you look to your manager to give you feedback that will help you raise the bar. This feedback will usually happen one or 2 times in the year during your performance reviews, or hopefully more frequently, as and when the situations arise.&lt;/p&gt;

&lt;p&gt;However, there is another hidden form of feedback that can be hugely valuable, and that is from your &lt;strong&gt;team - described by peers, cross-functional stakeholders and even your own direct reports.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Companies tend to structure this as “360” feedback which generally coincides with a promotion or a PIP (Performance Improvement Plan). However, it would be nice if this kind of feedback could be obtained more frequently, wouldn’t it? Wait actually it can! You just need to create the right conditions to get it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flx1z388lnyhly13zjx6n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flx1z388lnyhly13zjx6n.jpg" alt="feedback-iceberg" width="784" height="1044"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want your team to give you real feedback, these 5 techniques have worked well for me -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;🤝 Ask for consent&lt;/strong&gt; - While you might be eager to receive feedback, others might not be as eager to give you feedback. Reasons could range from not wanting to antagonize you, possible retaliation or just not being used to giving feedback. Be cognizant of their time and be humble in your ask. Additionally, I have often found using phrases like “Please don’t hesitate to give me your true thoughts, no holds barred” to be quite effective in soliciting real feedback. Keep in mind, if you ask for it, you will receive it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;⏳Give time to think&lt;/strong&gt; - Members of your team might not be managers themselves, so they have never had to exercise that muscle. Asking people to give you quality feedback on the spot will result in topical answers. If you want to get real feedback, give them enough notice so they have time to think about various dimensions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;🤲 Discuss the feedback&lt;/strong&gt; - When you have received the feedback, don’t get defensive. Instead be curious about why they think that way. It’s never easy but just remember that this is going to only make you stronger. As tough as it is in the moment, think of the “future you” receiving this game changing feedback.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;🙏 Be authentic&lt;/strong&gt; - Do not solicit feedback if you don’t intend to act upon it or are offended by it. Don’t have ego and don’t be vindictive if you receive feedback you did not expect. If you take offense and castigate someone for feedback you solicited, that will undo all trust, not just with the person but across the organization. Remember, your team has had to gather the courage and put in the work to give you feedback, so be kind.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;♻️ Follow through&lt;/strong&gt;- Act upon the feedback you’re given, in a way that shows the giver that you are attempting to make progress. If you keep asking for feedback and not act on it, it will create disillusionment in your ability to take action.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback is an important tool in your growth arsenal and should be used surgically. Using this technique too often with not enough bias to action, can cause it to lose its sheen. However, used the right way, coupled with the feedback you receive from your manager, your team feedback can turbocharge your performance and give you the context you need to operate at the next level.&lt;/p&gt;




&lt;p&gt;If you liked this article, please ❤️ to give me feedback! If you agree/disagree with anything, please leave some comments on the article and we can discuss!&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 This Week’s Top 3
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It’s 2024 and its frustrating to see the feature flagging ecosystem to still be highly fragmented. &lt;a class="mentioned-user" href="https://dev.to/wesbos"&gt;@wesbos&lt;/a&gt;’s thread shows what I mean → &lt;a href="https://x.com/wesbos/status/1810687151794962558" rel="noopener noreferrer"&gt;Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wendii from Manager Tools writes amazing thought pieces. Love this one from her about how to go about writing articles → &lt;a href="https://mailchi.mp/manager-tools/newsletter_2024_7_9?e=71726403c1" rel="noopener noreferrer"&gt;Link&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Big fan of Nat Friedman (ex-CEO Github) and love the principles of life that he is recorded on his website under “Things I believe in” → &lt;a href="https://nat.org/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>50 principles of navigating work and life</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Wed, 17 Jul 2024 10:52:06 +0000</pubDate>
      <link>https://dev.to/arjunrao87/50-principles-of-navigating-work-and-life-4lja</link>
      <guid>https://dev.to/arjunrao87/50-principles-of-navigating-work-and-life-4lja</guid>
      <description>&lt;p&gt;These are principles I adhere to for my own life so I realized I should write it down to codify it for posterity. They are intentionally short to be memorable and are in no particular order. Over time I imagine I will add on to them, as these are the learnings of my interactions with time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Never underestimate the &lt;strong&gt;importance of the people&lt;/strong&gt; around you, and the impact you have on them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you &lt;strong&gt;fight the good fight&lt;/strong&gt; and you fight it for the right reasons, people will appreciate you for who you are.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't burn any bridges&lt;/strong&gt;, because you never know when your paths will cross again and in what capacity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No (wo)man is an island&lt;/strong&gt;. Decisions that you make, have a far broader impact than just yourself.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Listen to the other voices&lt;/strong&gt; in the room and build out the decision tree to formulate/translate your own thoughts. If you have a differing opinion, voice it, because you won't always be asked for it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is easy to criticize and not that easy to empathize. Before criticizing decisions other people made, first &lt;strong&gt;think of what assumptions have been made&lt;/strong&gt; to come to that conclusion, and that might help with empathizing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't be a yes (wo)man&lt;/strong&gt; and don't be a no (wo)man either. Others like minds that poke holes in theories, with rational arguments, but do not like someone who is always a contrarian, for the sake of it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you present a problem, &lt;strong&gt;make sure you have a possible solution&lt;/strong&gt; to go with it, even if it is nascent/half-baked. If you always bring only problems, and no solutions, it isn't helpful to anyone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Always be positive&lt;/strong&gt; and energetic around your team. Positivity is contagious but negativity even more so.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Have conviction in what you believe&lt;/strong&gt;, based on gut instinct or facts. Have confidence in your own decisions and stick by it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't fall for the buzzwords&lt;/strong&gt; and the shiny toys. As per Occam's razor, the simplest solutions are often the right ones.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;When in doubt or confusion, seek help&lt;/strong&gt;. Spinning wheels, twiddling thumbs or presenting face-time, in an effort to look productive, while headed nowhere, is a waste of time and effort.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As much as it is a cliche, &lt;strong&gt;no question is a dumb question&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always try to &lt;strong&gt;build something of "true" value&lt;/strong&gt;. People you work with along the way, as well as end users, will always know and appreciate the significance of a maker who cares.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multiple choices have diminishing returns&lt;/strong&gt;. Marie Kondo the options, so that you can make a decision faster and more efficiently. Follow the principle of Essentialism. Instead of dispersing your energy in a 100 directions, focus all that energy in 1 direction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Know when the juice is not worth the squeeze&lt;/strong&gt;. This is with respect to holding positions in a discussion/argument, effort being put into building something out, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't make money the sole measure of success&lt;/strong&gt;. Money makes certain things simpler, but makes other things more complicated. Invest in good projects and healthy relationships as a priority, and money will find its way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Perfect is the enemy of good&lt;/strong&gt;. Don't procrastinate to deliver on a result. If you aren't embarrassed of what you shipped, then you are probably too late. Avoid paralysis by analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't compete in a rat race&lt;/strong&gt;. Even if you win, you are still a rat.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't wing your career&lt;/strong&gt;. It isn't something that you can just do on the fly. Be deliberate about the skills you lack and the direction you need to take, while making the important decisions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inspire and inform people around you&lt;/strong&gt;. Inspiration comes in all shapes and forms. It isn't always an a-ha moment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you have achieved a modicum of success, &lt;strong&gt;give back to the community&lt;/strong&gt;. The social fabric binds the sanity of the collective.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't silo and hide information&lt;/strong&gt; from other people. Being transparent will help you and others achieve their tasks and objectives much more efficiently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If your subordinate outshines you, &lt;strong&gt;don't be petty or vengeful&lt;/strong&gt;. Them achieving that success is a measure of your mentorship/leadership abilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As a general rule, &lt;strong&gt;don't discuss politics&lt;/strong&gt;, religion or race at a workplace.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Always be open to new ideas&lt;/strong&gt; and differing points of view. You may or may not agree with them today, but they might help shape an opinion on a completely different topic, some other time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Take ownership and accountability&lt;/strong&gt; of things you are responsible for. If someone trusts you to do something, you need to be accountable for that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Task determination and execution should be as &lt;strong&gt;decentralized&lt;/strong&gt; as possible. The more the concentration of decision-making capabilities, the more the bottlenecks and points of failure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Different people have different strengths and weaknesses&lt;/strong&gt;. If you find out what these are for individual people, your value-add increases drastically.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increase diversity of thought&lt;/strong&gt; in your decision making process. You agreeing, all the time, with a bunch of other people, who have no differing opinions, serves no purpose.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you truly believe in something, &lt;strong&gt;give it your all&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Always be hungry&lt;/strong&gt; and curious for learning. If you do not have the knowledge, be a sponge.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You are unique and, by extension, your perspectives that you bring to the table are unique. &lt;strong&gt;Dismiss any feelings of "imposter syndrome"&lt;/strong&gt; you have and seize the opportunity. Carpe diem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you are stuck with a problem, trying to jackhammer it, for extended periods of time, might be completely unhelpful. Letting it sit overnight, and seeing it with a &lt;strong&gt;fresh set of eyes&lt;/strong&gt; and neuron connections, might help facilitate the solution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As General Patton said - "&lt;strong&gt;Do everything you ask of those you command&lt;/strong&gt;". Don't try to pass off some grunt work to someone else, just to shirk responsibility, if you yourself would never want to do it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Professional life is a fine balance between being a &lt;strong&gt;one-trick-pony and a jack-of-all-trades-master-of-none&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be greedy with your ideas and frugal with your implementations&lt;/strong&gt;. Ideas can be cheap, your time isn't.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you are building a product or designing something, &lt;strong&gt;be your own first customer&lt;/strong&gt;. Try to understand and predict what kind of pains a first user will encounter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Before jumping into any assignment given to you, &lt;strong&gt;ask all the right questions&lt;/strong&gt; prior to starting it. Taking a step back and applying some critical thinking to the problem at hand will only move towards a positive outcome.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't be too attached to an idea&lt;/strong&gt;. An idea held too long without rationale is just an ideology.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If someone isn't agreeing to your point of view, it could be that &lt;strong&gt;you are not conveying your idea clearly enough&lt;/strong&gt;, rather than the other person being intransigent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;While making your argument, &lt;strong&gt;don't be polemic or pedantic&lt;/strong&gt;. People don't like being attacked or talked down to.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Less is more&lt;/strong&gt;. Some people like to pad their words with jargon and fancy sounding terms for no apparent reason, but it just reduces the potency of their point and you will tend to lose interest in what they have to say.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you notice problems/issues, &lt;strong&gt;see what you can do to solve&lt;/strong&gt; it rather than resorting to complaining.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If a lot of people are complaining about something, rather than joining them, think about how it can be solved. &lt;strong&gt;Opportunities abound where inaction lays&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When executing a plan, &lt;strong&gt;always have a plan B&lt;/strong&gt;. No plan survives the first contact intact.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;If you do not know something, admit it&lt;/strong&gt; rather than making an elaborate excuse to cover up your lack of expertise. You will be respected for your honesty.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't lose touch with reality&lt;/strong&gt;. Always make an attempt to feel the pulse of the community around you, below and above you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A job is about 3 things&lt;/strong&gt; - security/peace of mind, money/financially rewarding and learning/being challenged. Many times, you can find at most, 2 out of 3 at a place. If you find all 3, consider yourself lucky.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't be afraid of failure&lt;/strong&gt; - not every project or endeavor can be successful. If you haven't failed at anything, you haven't tried to get out of your comfort zone and tried anything worthwhile yet.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you liked this article, please ❤️ to give me feedback! If you agree/disagree with anything, please leave some comments on the article and we can discuss!&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 This Week’s Top 3
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The term “podcast” is a portmanteau of the words “pod” and “broadcast”. The term “pod” refers to the Apple iPod 🤯&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/PechaKucha" rel="noopener noreferrer"&gt;PechaKucha&lt;/a&gt; is a storytelling format in which a presenter shows 20 slides for 20 seconds of commentary each. At a PechaKucha Night, individuals gather at a venue to share personal presentations about their work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.terminal.shop/" rel="noopener noreferrer"&gt;Terminal.shop&lt;/a&gt; - A developer-only website to order coffee beans (using a terminal)!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>Why having opinions matters</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Wed, 17 Jul 2024 10:48:32 +0000</pubDate>
      <link>https://dev.to/arjunrao87/why-having-opinions-matters-5che</link>
      <guid>https://dev.to/arjunrao87/why-having-opinions-matters-5che</guid>
      <description>&lt;p&gt;Maybe this is a controversial topic that will make people uncomfortable - I want to talk about not being opinionated &lt;em&gt;enough&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Let’s start off with an analogy; discussing how many people select scores on a rating scale - whether it’s a survey, NPS ratings or something whose results range from 1 to 10.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4cwwyolohxyhgj6m824.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4cwwyolohxyhgj6m824.jpg" alt="a11" width="770" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When someone is uncomfortable to vote a certain way, they vote 7. If they think something is bad, instead of giving a 5 or 6 they will round up to a 7. If they are afraid that giving an 8 or 9 might be too strong of an endorsement, they will round down to a 7. 7 is the safe bet. It’s the i-am-not-seeking-confrontation number. It’s the please-let’s-get-along number. I personally dismiss 7 from the rating scale, because it gives an easy way out.&lt;/p&gt;

&lt;p&gt;Unfortunately, this happens more often than you’d like in daily life. Say when someone proposes 2 options for solving a problem - you don’t want to be the person who defaults to “Oh yeah, either way works for me”. While it comes from a place of kindness that is an unhelpful contribution. The only thing worse is saying nothing at all. And don’t get me wrong, I have been that guy who says I’m fine with anything. However, I learned that to be an effective contributor to a discussion, it’s something I need to try to avoid or stop doing altogether.&lt;/p&gt;

&lt;p&gt;I am going to try and underscore the importance of having strong opinions. They can certainly be strong opinions loosely held. You don’t have to be dogmatic in a way that you don’t leave room for discussion or negotiation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is it important to have strong opinions?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;You can build a great system that is founded on strong beliefs, but you will not build a great system that is founded on weak beliefs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I call this the “Beliefs Antithesis”. This applies to systems that are technical, social or economical. Systems that are durable and stand the test of time, are built on rock hard foundations. These foundations come from a first-principles form of thinking. First principles thinking is a method of problem-solving that involves breaking down complex issues into their most basic and fundamental parts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq0zxhzn2r4y1ycanqlz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq0zxhzn2r4y1ycanqlz.jpg" alt="a21" width="360" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everyone who wants to commit to being a strong leader, needs to be able to reason through a problem and present their opinion on it. To be a voice that people respect, you need to have strong convictions. Those convictions need to be grounded in strong reasoning, so you can defend your thoughts or actions. Don’t be disappointed or dismayed if you are unable to convince others about your idea. Learn from it and figure out how to best communicate the message. The problem in most cases would not be that you had a “wrong” opinion but that you had either incorrect messaging or missing inputs. Take that positively and learn from the experience.&lt;/p&gt;

&lt;p&gt;This is a skill that is often lacking in people who are junior. No one wants to antagonize the person or group putting an idea or solution on the table. Unfortunately the only way you will grow in your career is to formulate your own opinions and be able to reason through them. Blindly following someone else’s voting or reasoning might work in the near term, but it will not catapult you ahead in life. I understand, it’s a hard skill to learn if this does not come to you intuitively. To overcome it, you need to observe and absorb from the best around you while giving it your own unique twist. As Neale Donald Walsch said “Growth begins at the end of your comfort zone”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwuap5n2rhti28nr22g4j.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwuap5n2rhti28nr22g4j.jpg" alt="a31" width="570" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In closing…
&lt;/h2&gt;

&lt;p&gt;Being apathetic when you are being asked to opine on something can be demotivating and unproductive to the people seeking your input. It’s easy to not care. Caring takes effort. Be empathetic and craft your opinions to fit what your audience is looking for to move the conversation forward. Your inputs matter and make sure to formulate strong opinions drawing on your experience and surroundings.&lt;/p&gt;




&lt;p&gt;If you liked this article, please ❤️ to give me feedback! If you agree/disagree with anything, please leave some comments on the article and we can discuss!&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 This Week’s Top 3
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Article by Akash Mukherjee on &lt;a href="https://substack.com/home/post/p-146058995" rel="noopener noreferrer"&gt;When is the Right Time to Quit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How &lt;a href="https://discord.com/blog/how-discord-stores-trillions-of-messages" rel="noopener noreferrer"&gt;Discord did a migration&lt;/a&gt; across trillions of messages&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://google.github.io/mesop/" rel="noopener noreferrer"&gt;Mesop&lt;/a&gt; - Quickly build Web UIs in Python&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>The importance of having skin in the game</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Thu, 20 Jun 2024 11:00:00 +0000</pubDate>
      <link>https://dev.to/arjunrao87/the-importance-of-having-skin-in-the-game-gf8</link>
      <guid>https://dev.to/arjunrao87/the-importance-of-having-skin-in-the-game-gf8</guid>
      <description>&lt;p&gt;I was talking with a teammate of mine (let’s call him Bob) about one of our previous hires (let’s call him Chad), who we had to let go for performance reasons. Bob was telling me about how he feels personally responsible for hiring Chad. &lt;/p&gt;

&lt;p&gt;Bob felt that Chad managed to “fool” him in the interview process, which he took as a personal affront - primarily for being unable to adequately gauge character. We could spend a whole article on this point and how this isn’t the right lens to judge both yourself and others, because of myriad situations that really contribute to such an outcome. This is not that article. &lt;/p&gt;

&lt;p&gt;The second thing that Bob told me was far more illuminating to me. He said that he felt he had let me down by adding this person to the team which didn’t contribute to raising the bar of the team. This I found to be a super interesting insight. &lt;/p&gt;

&lt;p&gt;Bob is a very strong performer on the team and my gut reaction was to console him and tell him that this decision did not diminish his value to the team. Evaluating humans and evaluating code can be two very different skillsets. &lt;/p&gt;

&lt;p&gt;On the other hand, I think this was exactly what Bob should feel. Not humiliation or embarrassment but that sense of accountability that led to an unsatisfactory outcome. I think this is good for both Bob and the team and here is why. &lt;/p&gt;

&lt;p&gt;People will only perform their best if they feel like they have skin in the game. If a person feels like there is nothing to gain from an experience at work, be it technical skill, monetary gain, challenging problems or a sense of ownership, that is likely the end of the road for them. They will start looking for other opportunities. &lt;/p&gt;

&lt;p&gt;Getting that skin in the game is crucial to having a self-motivated drive to improve status quo and do greater things. It builds character as a result of the self introspection or skill acquisition that one needs, to feel a sense of real involvement. You stop seeing the world as if things are happening &lt;em&gt;to you&lt;/em&gt; and feel agency to create change. When you have no skin in the game it’s easy to complain about all the things that are going wrong. When you have skin in the game, you are incentivized to make changes so that you don’t feel the need to complain. &lt;/p&gt;

&lt;h2&gt;
  
  
  Your responsibility as a manager
&lt;/h2&gt;

&lt;p&gt;Having your team feel like they have skin in the game has to be coupled with you, as their manager, being able to provide air cover for them. If all you are doing is making your team feel accountable for their decisions, but not providing them with any support, that can very quickly turn into disillusionment. It will cause scenarios where your team will go out on a limb but you will not back them up. This is awful for team morale. Don’t shirk your responsibilities towards supporting your team.&lt;/p&gt;

&lt;p&gt;How do you create an environment where people feel like they have skin in the game? There are a few ways that have worked for me -  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Figure out what is important to your team and help them get there&lt;/strong&gt; - If you hire the right type of people, you will find a lot of alignment between what you want from your team v/s what they want themselves, but its not always 100%. You don’t need to achieve 100%, but focus on advancing goals and career aspirations in mutually beneficial ways (or even unilaterally for your top performers). They will appreciate and remember how much you have their back and will do the same for you and your team. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Give them agency&lt;/strong&gt; - Allow your employees to take ownership of projects and initiatives. When they feel accountable for specific outcomes, their engagement increases. The micromanager trope is well-known, and avoiding it isn’t just about not asking your team for frequent updates. Agency often involves creating space and opportunities for your employees to be able to exercise their strengths. Even the best surfers know they need to do the hard work to be in place to catch the big wave. Magic doesn’t &lt;em&gt;just&lt;/em&gt; happen. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ask don’t tell&lt;/strong&gt; - Involve employees in an inclusive decision-making processes. When they have a say in the company's direction, they feel more responsible for its outcomes. We follow a “pull” model instead of a “push” model where we will give the team all the reasons for why something is important but not force them to work on it. The idea is that if you have hired people who know what is important for the business and are able to couple that with their awareness of the system, merely pointing them in the right direction will result in great outcomes. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build trust and be transparent&lt;/strong&gt; - Maintain transparency about company goals, performance, and challenges. When employees understand the bigger picture, they can align their efforts accordingly. As a leader, sometimes you must withhold plans to avoid disrupting the team with constant reprioritization, as some plans never materialize. This works as long as the team trusts you and the fact that what they don’t know, they don’t need to know. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Give them redirecting feedback often&lt;/strong&gt; - You might be tempted to not give your highest performers critical or redirecting feedback. This feeling tends to stem from the fact that there might be other people who need that feedback more, or that the strong performers already know what they  want. This kind of thinking couldn’t be further off. Firstly, there is documented literature at this point that points to the benefits of improving your highest performer’s performance over  improving your lowest performer’s performance. Secondly, this shows your best performers that you are invested in their holistic career growth and are giving them a reason to continue excelling in their roles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be ruthless in your support for your team&lt;/strong&gt; (even when they aren’t in the room with you) - This basically means advocating for their needs, recognizing their contributions, and defending their interests in discussions and decisions that affect them. Such unwavering support fosters a culture of trust and loyalty, motivating your team to perform at their best. It also ensures that their voices are heard and valued, even in their absence. By constantly championing your employees, you demonstrate your commitment to their well-being and professional growth, which in turn cultivates a positive and productive work environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incentivize them monetarily and non-monetarily&lt;/strong&gt; - Last but not the least, offer bonuses, raises, and profit-sharing to reward their work financially. Complement these with non-monetary incentives such as professional development opportunities, flexible work arrangements, and maybe other unconventional benefits (things like sabbaticals, mentorship, networking etc). These diverse incentives boost morale, enhance job satisfaction, and motivate employees to excel.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a science but an intentional best-effort attempt to increase your team’s personal stake in their work environment. &lt;/p&gt;

</description>
      <category>leadership</category>
      <category>productivity</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>How airport design mirrors software design</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Sat, 15 Jun 2024 22:00:00 +0000</pubDate>
      <link>https://dev.to/arjunrao87/how-airport-design-mirrors-software-design-25d5</link>
      <guid>https://dev.to/arjunrao87/how-airport-design-mirrors-software-design-25d5</guid>
      <description>&lt;p&gt;When I flew out of Tampa airport (TPA), I was impressed by the layout of the airport. From a passenger’s viewpoint, there are many aspects of running an efficient airport, starting from how you arrive at the airport, all the way to how the boarding process is executed, and TPA nailed most of it. &lt;/p&gt;

&lt;h2&gt;
  
  
  How Tampa Airport is organized
&lt;/h2&gt;

&lt;p&gt;When you enter Tampa airport by car, you have an option to go into the “Express” lane if you don’t have any bags to check in which takes you to a separate area compared to if you had bags to check in. For domestic flights, this is an intuitive optimization since it likely splits the crowd into something like 60% (carry-on) and 40% (bag checkin), which reduces the stress on the infrastructure. &lt;/p&gt;

&lt;p&gt;Once you enter the airport building itself, it follows a “hub and spoke” model, where the main area splits off into different terminals based on the flights you are taking. There is no security check in this main area.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm132ghyxitm5vmtw9fis.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm132ghyxitm5vmtw9fis.png" alt="airport" width="800" height="715"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You just need to scan your boarding pass at the corresponding “spoke” where your flight is supposed to depart. Once you scan the boarding pass, you hop on a very short shuttle ride that takes you to your designated terminal. Its only after you get off that shuttle that you are required to go through security check. &lt;/p&gt;

&lt;p&gt;Since there are 4 terminals in the airport, that basically splits the traffic for security checks into ~25% chunks, reducing the load fairly drastically on the security process. While it does mean that Tampa airport needs to pay more for extra staff and scanning equipment, it results in a drastically better security checkin process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tampa vs NYC airports by volume
&lt;/h2&gt;

&lt;p&gt;My initial assumption was that the NYC airports are handling orders of magnitude more passengers than TPA. However, after some quick research I found that for 2021 the passengers handled by these airports are &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TPA: 16.8 million annual passengers&lt;/li&gt;
&lt;li&gt;JFK: 29 million annual passengers&lt;/li&gt;
&lt;li&gt;LGA: 15.6 million annual passengers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JFK being about two times TPA volumes was well under what I had expected, and LGA handling fewer passengers than TPA was definitely unexpected. &lt;/p&gt;

&lt;h2&gt;
  
  
  Parallels with designing software systems at scale
&lt;/h2&gt;

&lt;p&gt;There are many similarities between managing airport checkin traffic and queue management in real time streaming systems. After all, airport checkins are similar to website logins :). The tradeoffs of cost v/s complexity should decide what the right approach should be. Centralized airport checkins have been the norm of air travel since the beginning, so having Tampa try the decentralized queueing model feels very innovative, even though the fundamental concepts of these have existed in system design for a long time.&lt;/p&gt;

&lt;p&gt;While this is the route that TPA is taking, NYC airports are spending their resources to reduce the time to process an individual by having programs like TSA-Pre and Digital ID being pushed more aggressively. It can be argued that adding more queues to process passengers papers over core inefficiencies that might be worth dealing with first. Maybe having a lower mean-time-to-process a passenger is a better goal than sticking a bunch of passenger queues into your setup? Although that is purely conjecture based on my software engineering experience, and might require some actual research. &lt;/p&gt;

&lt;p&gt;Ultimately, everything is function of supply and demand. As air travel continues to increase in demand, it will be interesting to see how airports continue to innovate to solve the demands of passenger scale. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why you need to sell yourself</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Sat, 08 Jun 2024 22:03:52 +0000</pubDate>
      <link>https://dev.to/arjunrao87/why-you-need-to-sell-yourself-48jg</link>
      <guid>https://dev.to/arjunrao87/why-you-need-to-sell-yourself-48jg</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“Your most important sale in life is to sell yourself to yourself.” &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maxwell Maltz&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is an unequivocal harsh truth in this world : nobody looks out for yourself better than you.&lt;/p&gt;

&lt;p&gt;Sometimes you might wonder how certain people seemingly attain success “without doing any work”. There are times when I would — and I know YOU would — say something to the effect of “How did that person achieve success while I am not able to?”. Tell me with complete honesty, or better yet, admit to yourself that this thought hasn’t crossed your mind at least once before.&lt;/p&gt;

&lt;p&gt;The true reason behind their success is that they were able to sell themselves better — period. And sure, they likely had a good product/idea/solution, but they coupled it with being able to craft the right narrative. They were better at stating why they were better than the rest of the arcade they were competing with. The reality of them being better or inferior compared to others is inconsequential for the purpose of this argument. They were better salesmen/women and marketers, and there are no two ways about that. The fact that they were able to convince the audience that they were better is all that matters.&lt;/p&gt;

&lt;p&gt;The audience could be anyone you can think of. If you work in a company with your other colleagues, the audience could be the higher ups or peers in your company. In the open source technology space, it’s how loud your voice is and how successfully you can convince others of your idea. It is not always necessarily the merits of the actual idea you have worked on that matters but how you present that idea to the world. If you work in a startup, the audience could be the venture capital firms that you are wooing to get your funding from. If you are a board member of a company, it’s the shareholders that you want to placate or attract. The list goes on and on and on….&lt;/p&gt;

&lt;p&gt;The biggest problem most people have when it comes to the notion of being successful is the act of selling yourself. Everyone fantasizes about the glory of success in a romanticized way, imagining how hard work, blood, sweat and tears lead to a hard-earned victory. However, most people shy away from actively selling themselves because they think of it as dirty or being untrue to the art/craft that they have dedicated their lives to. They think that it is tangential to the goal of making the world a better place. More often than not, it is also the self doubt that prevents them from selling themselves because they think that they are just not good enough or that selling themselves is a travesty. They think that if they sell themselves, they are overdoing it, and that there are much more qualified people out there doing what they are doing.&lt;/p&gt;

&lt;p&gt;This is where I disagree. The fact that you doubt yourself is an indication of your superior thinking. Not only have you worked on your idea and achieved a modicum of success ( maybe it’s a LOT more, but I’m being conservative ), but you also have the emotional intelligence and awareness that puts you in a higher quartile. Perhaps you built a great product or a great company or possess a skill that you are really proud of, but unless you make people believe in your idea or creation, why should they be incentivized to have anything to do with it?! Display confidence, not hesitation. Confidence attracts attention. Confidence does not imply brashness. Projecting soft power can be incredibly useful and applied to the same effect as a bombastic display of showmanship.&lt;/p&gt;

&lt;p&gt;The most successful people made it big because they knew what they were good at, and they knew how to make the world know about it. Think of Steve Jobs, Elon Musk, Indra Nooyi, Gordon Ramsay, Oprah Winfrey, and so forth. They were vocal about what they were doing and have perfected the craft of delivering the message of encompassing who they are. Is the playbook for someone else the road to your success? Probably not. Should you follow what everyone else does to the T to sell yourself? Certainly not.&lt;/p&gt;

&lt;p&gt;The world is not a playground of zero-sum games with perfectly scripted mathematical equations; someone else’s success does not mean you have to take a backseat. You should not have to sit back and lurk in the shadows while someone is out there hustling. How can you sell a product, an idea, or a thought, if, as a first step, you are not able to state unequivocally what is special about yourself? There is a common saying: “If you don’t ask, you won’t get”. I would like to add to that: “If you don’t sell, they won’t buy”. The road might be long and hard and it might not be easy, but if you don’t take that first step, you are preventing yourself from even having a shot at this.&lt;/p&gt;

&lt;p&gt;Don’t shy away. Don’t hide in the corner. Don’t be afraid of being in the spotlight. Don’t be doubtful of your achievements. Right before military units are about to undertake an operation, they use a phrase akin to “Breach, breach, breach”. While you embark on your operation to sell yourself, your call to action should be “Hustle, hustle, hustle”. Put in the effort! SELL yourself. Don’t sell yourself short; REALLY sell yourself. Carpe diem — seize the day! Make sure the world knows what you did. Make sure YOU tell the world what you did, because the fact of the matter is, if you don’t, no one else will.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>The art of complaining effectively</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Fri, 31 May 2024 14:00:00 +0000</pubDate>
      <link>https://dev.to/arjunrao87/the-art-of-complaining-effectively-3kal</link>
      <guid>https://dev.to/arjunrao87/the-art-of-complaining-effectively-3kal</guid>
      <description>&lt;p&gt;Marcus Aurelius said "Don't be overheard complaining…Not even to yourself". I think about this statement a fair bit. Stoics believe complaining is pointless since that is time wasted when it could be spent improving personally.&lt;/p&gt;

&lt;p&gt;Complaining in most cases is bad. When you just complain all the time it is a major mental drain on yourself and people surrounding you. Merely complaining helps no one and breeds negativity. &lt;/p&gt;

&lt;p&gt;However, there are a couple of positives to complaining -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sometimes you just need to get things off your chest, feel better and move on. This is something you should use strategically because otherwise it can very easily fit into the previous category of mindless complaining.&lt;/li&gt;
&lt;li&gt;Other times, it shows that you don't believe in the status quo. For whatever reason, the current scenario isn't to your liking and you are going against the tide.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The big question here is "so what?". What you do next will likely determine the type of person you are. You know how they say "there are no wrong answers"? Unfortunately in this case there is a wrong answer. If you continue to complain, you will not inspire any confidence in people to believe or follow you. On the other hand, if you like to think of it as a way to redirect the problem towards a solution, that busts a big door of possibilities . Rather than just complain and whine about something, presenting an alternative or a solution to the situation helps bring purpose to it. Your ability to come equipped with a solution without being asked to, shows that you have initiative.&lt;/p&gt;

&lt;p&gt;The more senior you get, the more this is imperative. Your ability to be an effective senior is predicated on spotting scenarios that are not optimal for your team or codebase coupled with a knack for identifying solutions for them. It doesn't have to be perfect. You, your peers or your boss can build on top of it and get it to a viable place.&lt;/p&gt;

&lt;p&gt;This is not just a career-motivated tactic but a way to breed the right character. If you want to be seen as a problem solver, a go-getter, someone who can be depended on to think of the greater good - you have to come to the table with something besides just grievances. When you think about complaining, take a second to think about how you could contribute to making the situation better, either through yours or someone else's actions and you are now on the path of effective complaining.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>Why you should practice Nemawashi — The Art of Obtaining Consensus</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Thu, 23 May 2024 11:00:00 +0000</pubDate>
      <link>https://dev.to/arjunrao87/why-you-should-practice-nemawashi-the-art-of-obtaining-consensus-ppo</link>
      <guid>https://dev.to/arjunrao87/why-you-should-practice-nemawashi-the-art-of-obtaining-consensus-ppo</guid>
      <description>&lt;p&gt;Oftentimes people find it hard to convince others of their idea. There can be many reasons for this. Trying to convince someone is a tough ask. The person conveying the idea either doesn’t understand their audience, haven’t done the right amount of research to explain it, haven’t crafted a crisp enough message and so on. Consensus is hard — so many people, so many opinions. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1w2j1xavk2t8wxppoyd4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1w2j1xavk2t8wxppoyd4.png" alt="consensus" width="538" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you get more senior in your organization, getting consensus is table stakes. You are expected to make suggestions and bring new ideas to the table across cross functional stakeholders. Unfortunately the moment your idea gets put on the table, it receives tremendous pushback and that prevents the idea from making any real headway. Sound familiar? You’re not alone.&lt;/p&gt;

&lt;p&gt;In fact, there is plenty of research that suggests if one person in a group raises concerns, odds are that influences the others to question the sanctity of the idea — the idea of Information Cascade. This is precisely why it is critical to learn the technique of Nemawashi. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10tjgdv5whq085xlwwe3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10tjgdv5whq085xlwwe3.jpeg" alt="Nemawashi" width="800" height="663"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Nemawashi?
&lt;/h2&gt;

&lt;p&gt;I think of Nemawashi as “hallway review” or as wikipedia (see below) refers to it as “laying the groundwork”. It is the act of voicing out your ideas to smaller groups of people before you put the idea in front of a larger group. You get individual buy-in into your idea and build on that to get momentum with the larger group. Any feedback you get from individuals, and incrementally bigger groups, can be baked into your proposal. Once you do this for all the important stakeholders of the idea, you have gotten all the critical feedback you need to ensure no one has any visceral reactions to your idea. &lt;/p&gt;

&lt;p&gt;Now, when you put this in front of the whole group, you will basically get no major resistance because everyone has already given their most important feedback. At most you will receive requests for some cosmetic changes from other participants in your sessions. &lt;/p&gt;

&lt;p&gt;Nemawashi is a crucial component of your leadership toolkit. It requires some work upfront but is so powerful at delivering results. Use it to be more effective at driving change and a fresh perspective. &lt;/p&gt;

&lt;h2&gt;
  
  
  Origins of Nemawashi for the curious
&lt;/h2&gt;

&lt;p&gt;Per Wikipedia&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nemawashi (根回し) is a Japanese business informal process of laying the foundation for some proposed change or project by talking to the people concerned and gathering support and feedback before a formal announcement. It is considered an important element in any major change in the Japanese business environment before any formal steps are taken. Successful nemawashi enables changes to be carried out with the consent of all sides, avoiding embarrassment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For the history of how this came to be, Wikipedia goes on to explain - &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nemawashi literally translates as “turning the roots”, from ne (根, “root”) and mawasu (回す, “to turn something, to put something around something else”). Its original meaning was literal: in preparation for transplanting a tree, one would carefully dig around a tree some time before transplanting, and trim the roots to encourage the growth of smaller roots that will help the tree become established in its new location.[1][2][3][4][5] Nemawashi is often cited as an example of a Japanese word which is difficult to translate effectively, because it is tied so closely to Japanese culture itself, although it is often translated as “laying the groundwork.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;⭐ If you liked this, be sure to ♥️ this post and follow/subscribe at &lt;a href="https://a1engineering.substack.com/subscribe"&gt;https://a1engineering.substack.com/subscribe&lt;/a&gt;! ⭐&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>leadership</category>
      <category>learning</category>
    </item>
    <item>
      <title>Decoding the process of crafting new products</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Sat, 18 May 2024 12:38:58 +0000</pubDate>
      <link>https://dev.to/arjunrao87/decoding-the-process-of-crafting-new-products-4j7n</link>
      <guid>https://dev.to/arjunrao87/decoding-the-process-of-crafting-new-products-4j7n</guid>
      <description>&lt;p&gt;The product continuum has 2 discrete parts: 0-1 and 1-n. Differently said, you first need to prove out the need for a product/feature and then you need to scale that product/feature. Both these parts require different strategies. &lt;/p&gt;

&lt;p&gt;Using the 0-1 strategy when you are scaling will lead to unstable and unmaintainable products. Using the 1-n strategy while proving out market fit will cause you to be immeasurably slow. Beyond the development etiquette, there are also the points of setting user expectations. Honing your go to market strategy, identifying what to measure from a user adoption standpoint. All of which differ based on where you are in the continuum. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article predominantly covers going from 0-1  and any exclusion of the 1-n is not due to the lack of applicability to the space but more so because that commentary is reserved for an upcoming article. Lets get back to it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When you are going from 0-1, there are only 2 questions you need to answer when you decide how to build something - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Will this introduce a new dimension of risk that could be unmaintainable or immeasurable?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Will this help me get the feature out to the users faster?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To answer these questions, a high level framework you can apply for a particular decision is - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5e340oup5ugp60rh12xq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5e340oup5ugp60rh12xq.png" alt="matrix" width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you consider shipping new features or products, the path to users must be swift and follow the path of least resistance. It must be hyper clear to all involved that any work is vaporware until there is actual validation after the user has it in their hands. There is plenty of time after-the-fact, to correct for architectural decisions, scale considerations and such. Very rarely does one run into scenarios of massive unpreparedness like Instagram faced in its early days, so don’t over-engineer to solve for the million user problem. &lt;/p&gt;

&lt;p&gt;On the other hand, this advice does not eliminate basic practices like foundational testing or instrumentation which you will need to answer no to the risk question above. However, it does provide boundaries to determine how deep you should go in a certain path or how wide you go given the options you are entertaining. &lt;/p&gt;

&lt;p&gt;When you are in the 0-1 phase, the people you need are quite different from the 1-n types. Oftentimes startups are where the need for 0-1 style developers (henceforth referred to as 0-1s) lie although that is not to say that larger enterprises don’t. The incentive structure (motivational rather than financial) and the agency these engineers are given, often determine how successful they are at applying those skills.&lt;/p&gt;

&lt;p&gt;Great 0-1s are hard to find but there are some telling signs. Some characteristics include - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;they love being close to the user problems &lt;/li&gt;
&lt;li&gt;they love experimenting and tinkering &lt;/li&gt;
&lt;li&gt;they dislike intense process &lt;/li&gt;
&lt;li&gt;they can make effective tradeoffs without needing to consult with someone&lt;/li&gt;
&lt;li&gt;they always keep an eye on the landscape for new and exciting ways to incorporate new products into their workflow / products &lt;/li&gt;
&lt;li&gt;they are quick to demonstrate how things get done without getting caught up in the details &lt;/li&gt;
&lt;li&gt;they are not easily satisfied with answers and are perennially curious &lt;/li&gt;
&lt;li&gt;they go looking for trouble without being asked to &lt;/li&gt;
&lt;li&gt;they have something going on outside of work not related directly to their proficiency - that they are very passionate about (teaching, church, magic etc)&lt;/li&gt;
&lt;li&gt;they move extremely quickly when it comes to delivering something of value&lt;/li&gt;
&lt;li&gt;they prefer show over tell &lt;/li&gt;
&lt;li&gt;they target effectiveness over efficiency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not all sunshine’s and rainbows with 0-1s. There can be several flags with them as well such as - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lack of attention to detail &lt;/li&gt;
&lt;li&gt;sometimes bypassing best practices like tests and instrumentation or CI/CD&lt;/li&gt;
&lt;li&gt;building things in a silo without telling other people &lt;/li&gt;
&lt;li&gt;building things highly specific to the case in mind without a tiny bit of forward thinking (this can be a pro in many cases though) &lt;/li&gt;
&lt;li&gt;disrupting the practices / system for other 1-n developers &lt;/li&gt;
&lt;li&gt;always chasing the shiny toys which could frustrate other developers &lt;/li&gt;
&lt;li&gt;not completing projects and moving from one thing to another without closing the loop on things &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The killer hires would be people who not only have the features of both aspects of the continuum but also know when to exercise which muscles. Once you have that, you have set yourself up for having a great engineering team.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>End Meeting Madness And Reclaim Productivity</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Wed, 08 May 2024 11:00:00 +0000</pubDate>
      <link>https://dev.to/arjunrao87/end-meeting-madness-and-reclaim-productivity-10if</link>
      <guid>https://dev.to/arjunrao87/end-meeting-madness-and-reclaim-productivity-10if</guid>
      <description>&lt;p&gt;Meetings. A word that symbolizes you have entered the corporate world. Whether you are at a Fortune 500 company or at a Series A startup, you can’t get away from meetings. &lt;/p&gt;

&lt;p&gt;There are people who say that meetings are important. Establishing collaboration and clarifying interfaces is crucial for the success of the business? Maybe. But to the extent we have accepted as the norm today? Unlikely. &lt;/p&gt;

&lt;h2&gt;
  
  
  Maker vs Manager
&lt;/h2&gt;

&lt;p&gt;Each time any discussion about meetings comes up, it is hard not to think about Paul Graham’s essay about the Maker vs Manager schedule. On the left is what we have come to accept as the Manager's schedule. On the right is what the ideal Maker schedule looks like. I am always striving to veer towards the maker's schedule while ensuring I am not forsaking on my duties as a manager. This pursuit isn't always successful. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fjqhkyuo8jwved00na2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fjqhkyuo8jwved00na2.png" alt="mkr" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The manager's schedule is for bosses. It's embodied in the traditional appointment book, with each day cut into one hour intervals. There's always something coming on the next hour; the only question is what.&lt;/p&gt;

&lt;p&gt;When you're operating on the maker's schedule, meetings are a disaster. A single meeting can blow a whole afternoon, by breaking it into two pieces each too small to do anything hard in. Plus you have to remember to go to the meeting. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;15 years on, this essay still rings true. Any person in the workforce (maker or manager) has meetings that roughly fall in these categories - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Regular checkins&lt;/strong&gt; - typically called “1 on 1s” and occur on a weekly/biweekly/monthly cadence. These could be with your team, your stakeholders, your manager and so on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scheduled small group meetings&lt;/strong&gt; - collaborative sessions that occur on a weekly/biweekly/monthly cadence like backlog refinement and sprint retrospectives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Informational large group meetings&lt;/strong&gt; - company wide sessions that are used to disperse information across the employees, and occur on a monthly/quarterly/annual basis. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adhoc meeting&lt;/strong&gt; - pretty unpredictable and based on what the situation calls for. They could be groups of people or even a couple of people trying to pair program or use this time for sounding out ideas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Besides these you might have some function-specific meetings - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example if you are customer facing, you might have a slew of engagements to meet your constituents either in person or virtually. &lt;/li&gt;
&lt;li&gt;If you are vendor facing, you might need to connect with your customer success representatives for things like contract renewals, cost discussions. &lt;/li&gt;
&lt;li&gt;If you are a C-Suite member, you might have things like board meetings, roadshows, fundraising, customer sales, strategy sessions. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have gotten this far, you recognize this list. Heck, you might even be going - “Arjun - you haven’t even covered this entire other list of meetings that I am required to attend/run”. Yes - that is true. We have trapped ourselves in a labyrinth of meetings to execute initiatives. &lt;/p&gt;

&lt;h2&gt;
  
  
  As you grow, so shall you meet
&lt;/h2&gt;

&lt;p&gt;The higher you go up in your career, the bigger your sphere of influence gets and at some point, your team is not just your team.  Your stakeholder peers are also your team. This means that ensuring their success is also part of your responsibility. &lt;/p&gt;

&lt;p&gt;Let us take a contrived example to follow this progression for a manager. The character in orange is our protagonist (let us say this is you) and the characters in green are the people our protagonist has regular checkins with. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Upon being hired&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5ctfuze4lyhd1478jwa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5ctfuze4lyhd1478jwa.png" alt="mgr" width="800" height="663"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you are a junior engineering manager, you are expected to mostly have your checkins with your direct reports and manager and maybe a peer or 2. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🤝 “Checkins” counter: 5 &lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;After 1 Promotion&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnjdyhw8n5o4yyd1pj0ti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnjdyhw8n5o4yyd1pj0ti.png" alt="mgr" width="800" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you get promoted, you are now in charge of a group of people. As before, you are  expected to have one-on-ones with your direct reports and your manager. In your new position, you are also expected to have checkins with your peers and maybe a senior member to make sure all things are working as expected. You might also do skip-level 1 on 1s to keep a pulse on the team. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🤝 “Checkins” counter: 11&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;After 2 Promotions&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplzamrx0ff242xfbyo6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplzamrx0ff242xfbyo6d.png" alt="mgr" width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you get promoted again, you are now in charge of a department. As before, you are  expected to have one-on-ones with your direct reports and your manager. In your new position, you are also expected to have checkins with all your peers and maybe some of their reports to make sure all things are working as expected. You will also do several skip-level 1 on 1s to keep a pulse on the team. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🤝 “Checkins” counter: 17&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As you can see, the number of meetings has increased drastically, and these are just the 1 on 1 checkins. This also assumes that the organizational size remains the same while you are getting promoted, which in most cases is unlikely. This means that these numbers are likely on the lower end.&lt;/p&gt;

&lt;h2&gt;
  
  
  The impact of meetings on culture
&lt;/h2&gt;

&lt;p&gt;Meetings can be a useful tool but when either of the scenarios highlighted below occurs, that can lead to a bad culture. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Someone feels like they are not useful if they are NOT in meetings &lt;/li&gt;
&lt;li&gt;People say things like “I wish I had fewer meetings so that I could get to the work I really need to get done!” &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first scenario leads to creating a self-fulfilling cycle - the more a person doesn’t feel worthy if they aren’t in meetings, the more meetings they will try to get into or create, which will create knock-on effects for other people in the company. &lt;/p&gt;

&lt;p&gt;The second scenario leads to burnout and disenchantment. It is a call to action for the managers/peers to ensure that the sentiment is well understood. I fully believe that this scenario is possible but at the same time I find it to be ridiculous we have gotten ourselves in a place where it actually happens. &lt;/p&gt;

&lt;p&gt;Being a pure-play people manager is not a lasting trend. Yes, there will always be places that have 1000s or 10s of 1000s of employees who will need purely people managers. Maybe there is still a place in those companies for that kind of individual. However, for the vast majority of people who are either ICs or people managers in small-mid sized companies, there is an expectation that a large percentage of their productivity is driven by their individual contribution. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcn0rw09cbozjv38q3gi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcn0rw09cbozjv38q3gi.png" alt="mgr" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What a high meeting environment optimizes for is social contributions, which will not encompass the personal contributions an individual is responsible for. This doesn’t just mean that the person won’t get their job done on time. It means that the person will start questioning if they are growing in the most optimal way possible. This leads to disgruntled employees who seek greener pastures. While there are several reasons for people to look for new opportunities, this can often be the final nail in the coffin. &lt;/p&gt;

&lt;h2&gt;
  
  
  So what can we do about it?
&lt;/h2&gt;

&lt;p&gt;As a group we must understand that this scenario we have put ourselves in is ridiculous. It is stasis that we have all acknowledged is necessary for the greater good. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn16h43k975vu8oq27p2v.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn16h43k975vu8oq27p2v.jpeg" alt="mgr" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How do we break out of this cycle? We can take heed of these 6 actions - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Focus on speed. Speed is king&lt;/strong&gt; - Focus on the “Now” not “How” (shoutout to Noah Kagan). So much of meeting continuum is invested in the future planning of “things”.  Whereas if you just do it you will likely find out significantly more things, than if you had planned and talked about it. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fewer meetings for all&lt;/strong&gt; - Get upper management buy-in into consciously reducing the amount of meeting time people are subjected to. This is not always easy since there are internal or external commitments you can’t avoid. But if you can’t get to this point, then this is likely a lost cause for you. As a hammer, you could institute something like “No meetings wednesday” which would need to be a shared commitment. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Spare the makers&lt;/strong&gt; - The makers are the people you need to value in your company because they are the ones producing stuff. If you are disrupting any time on their calendar, you are effectively saying what they are doing is less important that what you are asking them for. In few cases this might be the case, but don’t make that the default assumption. Be cognizant of the impact of your actions. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Async over sync and keep communications concise&lt;/strong&gt; - Fewer synchronous sessions prevents the mental bloodbath of meetings. However, it is easy to polemically vote for async communication but also mess this up. The way it usually happens is that someone unleashes a firehose of comments on confluence/github/google docs/coda. This now requires an intense back and forth, either on the document or potentially synchronously if the gaps are too far apart. Instead, keep your comments concise and to-the-point. Aim for density, not volume with your comments. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Be ruthless for the sake of others&lt;/strong&gt; - Slash meetings that are not productive. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you are running the sessions, be brutally honest with yourself to see if there is any value in the session. &lt;/li&gt;
&lt;li&gt;If you notice high participant meetings, raise the exact same question with the organizers of those meetings. Ask them to either

&lt;ul&gt;
&lt;li&gt;Cut the meeting &lt;/li&gt;
&lt;li&gt;shorten it and make it significantly more productive or &lt;/li&gt;
&lt;li&gt;reduce the participant count if their attendance is not required. Meeting attendee creep is a reality and when you see something, say something. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Be ruthless for your sake&lt;/strong&gt; - You have done everything you could to reduce meeting time for other people. Now time to help yourself. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use apps like reclaim.ai to create focus time blocks for yourself that proactively rejects new meetings from colliding with your focus time. &lt;/li&gt;
&lt;li&gt;If you think you are on far too many meetings, take yourself off them. See what happens. Do things crash and burn? Do you hear about people noticing your absence? If so, is it because something got stuck or not get done? If that is not the case, then you weren’t required in the meeting. &lt;/li&gt;
&lt;li&gt;Often people use meetings to learn about things happening in other parts of the organization. If you are losing out on this context, find alternate ways like reading meeting minutes or written documentation to be plugged in or leverage your other 1/1s to get this information. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfzdekdxqfew56amtdes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfzdekdxqfew56amtdes.png" alt="mgr" width="800" height="688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💪 Keep Calm and Carry On
&lt;/h2&gt;

&lt;p&gt;Unfortunately, this is a hard problem and we have been talking about it for decades now. It is hard because it requires collective buy-in from others. If others don’t see the benefit of this or institute alternate practices to make fewer meetings happen, it is a losing battle. The way organizations are setup to communicate with each other also impedes this from being a problem that has an easy solution. &lt;/p&gt;

&lt;p&gt;However, if you are able to convince others of the benefits of this approach, and incrementally are able to reclaim time, you will find that you might just be able to move that needle everyone is talking about. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7ocnkkeraq5yydoq6oa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7ocnkkeraq5yydoq6oa.png" alt="mgr" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;⭐ If you liked this, be sure to ♥️ this post and follow/subscribe at &lt;a href="https://a1engineering.beehiiv.com/subscribe"&gt;https://a1engineering.beehiiv.com/subscribe&lt;/a&gt; ⭐&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>beginners</category>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>Simple wonders of RAG using Ollama, Langchain and ChromaDB</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Thu, 02 May 2024 11:00:00 +0000</pubDate>
      <link>https://dev.to/arjunrao87/simple-wonders-of-rag-using-ollama-langchain-and-chromadb-2hhj</link>
      <guid>https://dev.to/arjunrao87/simple-wonders-of-rag-using-ollama-langchain-and-chromadb-2hhj</guid>
      <description>&lt;p&gt;Dive with me into the details of how you can use RAG to produce interesting results to questions related to a specific domain without needing to fine tune your own model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is RAG?
&lt;/h2&gt;

&lt;p&gt;RAG or Retrieval Augmented Generation is a really complicated way of saying “Knowledge base + LLM”. It describes a system that adds extra data, in addition to what the user provided, before querying the LLM. Where did that additional data come from? It could be from a number of different sources like vector databases, search engines, other pre-trained LLMs etc. &lt;/p&gt;

&lt;p&gt;You can read my article for some more context around RAG. &lt;/p&gt;

&lt;h2&gt;
  
  
  How does it work in practice?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. No RAG aka Base Case 
&lt;/h3&gt;

&lt;p&gt;Before we get to RAG, we need to discuss “Chains” — the raison d’être for Langchain’s existence. From Langchain &lt;a href="https://python.langchain.com/docs/modules/chains/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;, Chains refer to sequences of calls — whether to an LLM, a tool, or a data preprocessing step. You can see more details in the experiments section. &lt;/p&gt;

&lt;p&gt;A simple chain you can set up would look something like — &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

chain &lt;span class="o"&gt;=&lt;/span&gt; prompt | llm | output


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.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%2F5buzun2gf0z7yybvax0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F5buzun2gf0z7yybvax0c.png" alt="Simple chain"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, this is very straightforward. You are passing a prompt to an LLM of choice, and then using a parser to produce the output. You are using langchain’s concept of “chains” to help sequence these elements, much like you would use pipes in Unix to chain together several system commands like ls | grep file.txt. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. With RAG
&lt;/h3&gt;

&lt;p&gt;The majority of use cases that use RAG today do so by using some form of vector databases to store the information that the LLM uses to enhance the answer to the prompt. You can read how vector stores (or vector databases) store information and why its a better alternative than something like a traditional SQL or NoSQL store &lt;a href="https://www.cloudflare.com/learning/ai/what-is-vector-database/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are several flavors of vector databases ranging from commercial paid products like Pinecone to open source alternatives like ChromaDB and FAISS. I typically use ChromaDB because its easy to use and has a lot of support in the community. &lt;/p&gt;

&lt;p&gt;At a high level, this is how RAG works with vector stores — &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Take the data you want to provide as contextual information for your prompt and store them as vector embeddings in your vector store of choice. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Preload this information so that its available to any prompt that needs to use it. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At the time of prompt processing, retrieve the relevant context from the vector store — this time by embedding your query and then running a vector search against your store.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pass that along with your prompt to the LLM so that the LLM can provide an appropriate response. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;💲 Profit 💲&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F5kzzpzu6x7vbsv6y421n.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F5kzzpzu6x7vbsv6y421n.jpeg" alt="RAG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In practice, a RAG chain would look something like this — &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="n"&gt;docs_chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_stuff_documents_chain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;retriever&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;vector_store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;as_retriever&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;retrieval_chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_retrieval_chain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;retriever&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;docs_chain&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;If you were to simplify the details of all these langchain functions like &lt;code&gt;create_stuff_documents_chain&lt;/code&gt; and &lt;code&gt;create_retrieval_chain&lt;/code&gt; (you can read up on these in Langchain’s official documentation), really what it boils down to is something like — &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="n"&gt;context_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;vector_store&lt;/span&gt;
&lt;span class="n"&gt;chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;context_data&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;which at a high level isn’t all that different from the base case shown above. The main difference is the inclusion of the contextual data that is provided with your prompt. And that my friends, is RAG. &lt;/p&gt;

&lt;p&gt;However, like all modern software, things can’t be THAT simple. So there is a lot of syntactic sugar to make all of these things work which looks like — &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="n"&gt;docs_chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_stuff_documents_chain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;retriever&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;vector_store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;as_retriever&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;retrieval_chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_retrieval_chain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;retriever&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;docs_chain&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.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%2F1qvt3ytbzthn0ebquhow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F1qvt3ytbzthn0ebquhow.png" alt="RAG chain"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see in the diagram above there are many things happening to build an actual RAG-based system. However, if you focus on the “Retrieval chain”, you will see that it is composed of 2 main components —&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the simple chain on the bottom and &lt;/li&gt;
&lt;li&gt;the construction of the vector data on the top &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bob’s your uncle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running Experiments
&lt;/h2&gt;

&lt;p&gt;To demonstrate the effectiveness of RAG, I would like to know the answer to the question — &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How can langsmith help with testing?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For those who are unaware, &lt;a href="https://www.langchain.com/langsmith" rel="noopener noreferrer"&gt;Langsmith&lt;/a&gt; is Langchain’s product offering which provides tooling to help with developing, testing, deploying, and monitoring LLM applications.&lt;/p&gt;

&lt;p&gt;Since unpaid versions of LLMs (as of 4/24) still have the limitation of not being connected to the internet and are trained on data from before 2021, Langsmith is not a concept known to LLMs. The usage of RAG here would be to see if providing context about Langsmith helps the LLM provide a better version of the answer to the question above. &lt;/p&gt;

&lt;h3&gt;
  
  
  1. Without RAG
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_community.llms&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Ollama&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_core.prompts&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ChatPromptTemplate&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_core.output_parsers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;StrOutputParser&lt;/span&gt;

&lt;span class="c1"&gt;# Simple chain invocation
## LLM + Prompt
&lt;/span&gt;&lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Ollama&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistral&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;StrOutputParser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ChatPromptTemplate&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_messages&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a skilled technical writer.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;human&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{user_input}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;

&lt;span class="c1"&gt;## Winner winner chicken dinner
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invoke&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user_input&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;how can langsmith help with testing?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:::ROUND 1:::&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  Output 
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

# :::ROUND 1::: SIMPLE RETRIEVAL

Langsmith, being a text-based AI model, doesn't directly interact with software or perform tests in the traditional sense. However, it can assist with various aspects of testing through its strong language processing abilities. Here are some ways Langsmith can contribute to testing:

1. Writing test cases and test plans: Langsmith can help write clear, concise, and comprehensive test cases and test plans based on user stories or functional specifications. It can also suggest possible edge cases and boundary conditions for testing.

2. Generating test data: Langsmith can create realistic test data for different types of applications. This can be especially useful for large datasets or complex scenarios where generating data manually would be time-consuming and error-prone.

3. Creating test scripts: Langsmith can write test scripts in popular automation frameworks such as Selenium, TestNG, JMeter, etc., based on the test cases and expected outcomes.

4. Providing test reports: Langsmith can help draft clear and concise test reports that summarize the results of different testing activities. It can also generate statistics and metrics from test data to help identify trends and patterns in software performance.

5. Supporting bug tracking systems: Langsmith can write instructions for how to reproduce bugs and suggest potential fixes based on symptom analysis and past issue resolutions.

6. Automating regression tests: While it doesn't directly execute automated tests, Langsmith can write test scripts or provide instructions on how to automate existing manual tests using tools like Selenium, TestComplete, etc.

7. Improving testing documentation: Langsmith can help maintain and update testing documentation, ensuring that all relevant information is kept up-to-date and easily accessible to team members.


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;❌ As you can see there are no references to any testing benefits of Langsmith (“Langsmith, being a text-based AI model, doesn’t directly interact with software or perform tests in the traditional sense.”). &lt;/li&gt;
&lt;li&gt;All the verbiage is super vague, and the LLM is hallucinating to come up with insipid cases in an effort to try to answer the question. (“Langsmith can write test scripts in popular automation frameworks such as Selenium, TestNG, JMeter, etc., based on the test cases and expected outcomes”).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. With RAG
&lt;/h3&gt;

&lt;p&gt;The extra context is coming from a webpage that we will be loading into our vector store.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_community.llms&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Ollama&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_community.document_loaders&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;WebBaseLoader&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_community.embeddings&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OllamaEmbeddings&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_community.vectorstores&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FAISS&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_core.prompts&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ChatPromptTemplate&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_text_splitters&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;RecursiveCharacterTextSplitter&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain.chains.combine_documents&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;create_stuff_documents_chain&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain.chains&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;create_retrieval_chain&lt;/span&gt;

&lt;span class="c1"&gt;# Invoke chain with RAG context
&lt;/span&gt;&lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Ollama&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistral&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;## Load page content
&lt;/span&gt;&lt;span class="n"&gt;loader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;WebBaseLoader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://docs.smith.langchain.com/user_guide&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;docs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;loader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;## Vector store things
&lt;/span&gt;&lt;span class="n"&gt;embeddings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OllamaEmbeddings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;nomic-embed-text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;text_splitter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;RecursiveCharacterTextSplitter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;split_documents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;text_splitter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split_documents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;docs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;vector_store&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FAISS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_documents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;split_documents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;embeddings&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;## Prompt construction
&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ChatPromptTemplate&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
            Answer the following question only based on the given context

            &amp;lt;context&amp;gt;
            {context}
            &amp;lt;/context&amp;gt;

            Question: {input}
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;## Retrieve context from vector store
&lt;/span&gt;&lt;span class="n"&gt;docs_chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_stuff_documents_chain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;retriever&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;vector_store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;as_retriever&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;retrieval_chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_retrieval_chain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;retriever&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;docs_chain&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;## Winner winner chicken dinner
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;retrieval_chain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invoke&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;how can langsmith help with testing?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:::ROUND 2:::&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;answer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  Output
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

# :::ROUND 2::: RAG RETRIEVAL

Langsmith is a platform that helps developers test and monitor their Large Language Model (LLM) applications in various stages of development, including prototyping, beta testing, and production. It provides several workflows to support effective testing:

1. Tracing: Langsmith logs application traces, allowing users to debug issues by examining the data step-by-step. This can help identify unexpected end results, infinite agent loops, slower than expected execution, or higher token usage. Traces in Langsmith are rendered with clear visibility and debugging information at each step of an LLM sequence, making it easier to diagnose and root-cause issues.

2. Initial Test Set: Langsmith supports creating datasets (collections of inputs and reference outputs) and running tests on LLM applications using these test cases. Users can easily upload, create on the fly, or export test cases from application traces. This allows developers to adopt a more test-driven approach and compare test results across different model configurations.

3. Comparison View: Langsmith's comparison view enables users to track and diagnose regressions in test scores across multiple revisions of their applications. Changes in the prompt, retrieval strategy, or model choice can have significant implications on the responses produced by the application, so being able to compare results for different configurations side-by-side is essential.

4. Monitoring and A/B Testing: Langsmith provides monitoring charts to track key metrics over time and drill down into specific data points to get trace tables for that time period. This is helpful for debugging production issues and A/B testing changes in prompt, model, or retrieval strategy.

5. Production: Once the application hits production, Langsmith's high-level overview of application performance with respect to latency, cost, and feedback scores ensures it continues delivering desirable results at scale.


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;✅ As you can see, there are very specific references to the testing capabilities of Langsmith, which we were able to extract due to the supplemental knowledge provided using the PDF. &lt;/li&gt;
&lt;li&gt;We were able to augment the capabilities of the standard LLM with the specific domain knowledge required to answer this question.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So what now?
&lt;/h2&gt;

&lt;p&gt;This is just the tip of the iceberg with RAG. There are a world of optimizations and enhancements you can make to see full power of RAG applied in practice. Hopefully this is a good launchpad for you to go try out the bigger and better things yourself! &lt;/p&gt;

&lt;p&gt;To get access to the complete code, you can go &lt;a href="https://github.com/arjunrao87/langchain-basics/blob/main/langchain/2-rag.py" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Thanks for reading!&lt;/p&gt;




&lt;p&gt;⭐ If you like this type of content, be sure to follow me or subscribe to &lt;a href="https://a1engineering.substack.com/subscribe" rel="noopener noreferrer"&gt;https://a1engineering.substack.com/subscribe&lt;/a&gt;! ⭐&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>The unsexy (but important) role played by middle management</title>
      <dc:creator>Arjun Rao</dc:creator>
      <pubDate>Wed, 24 Apr 2024 11:00:00 +0000</pubDate>
      <link>https://dev.to/arjunrao87/the-unsexy-but-important-role-played-by-middle-management-1enb</link>
      <guid>https://dev.to/arjunrao87/the-unsexy-but-important-role-played-by-middle-management-1enb</guid>
      <description>&lt;p&gt;I came across a story in the BBC that wanted to take a different take on middle management in the aptly titled “Why middle managers are often cast as villains”. As a middle manager myself, I would like to second the spirit of that article and provide my own perspective on this topic. &lt;/p&gt;

&lt;p&gt;I am the VP of Engineering at an adtech startup that has &amp;lt;100 people and I am quite literally a middle manager. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tkhd3cg928u1vysjw9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tkhd3cg928u1vysjw9q.png" alt="mgmt-layers" width="600" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amongst other things, one of my jobs as a People Manager has always been “Make sure to unblock your team” aka do whatever it takes so that your team doesn’t feel like they are stuck in the mud with their wheels spinning.  However, as my scope of work has increased or gotten clearer, one of my responsibilities is to also ensure that the vision of the company leaders is clearly and transparently communicated to the team and executed without hiccups. &lt;/p&gt;

&lt;p&gt;This is where the real need for middle management comes in. The size and scope of “middle” management depends on the size of the company itself. Now is probably the time for the caveats - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want to make sure the middle managers you have, themselves have the skills or the awareness of what their individual contributors are capable of doing, because that can be a killer combination. &lt;/li&gt;
&lt;li&gt;Having pure managers for the sake of having managers, can be a double edged sword. Not having the right people in place might end up gumming up the works even more. This would be an unintended side effect of trying to fix a different problem. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's maybe rewind a bit to when you are first thinking of these problems. You really should maintain as much of a flat hierarchy as possible when you are small. That way you can have focused discussions with all parties involved and keep moving the vision forward expediently. Let us assume there is a 15 person company structured like this which has a pretty direct line between founders and individual contributors. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn4z03sf6fnyep07srsn5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn4z03sf6fnyep07srsn5.png" alt="mgmt-flat" width="600" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At some point, you are likely going to outgrow this model. Either because you are growing gangbusters and you need to hire people, or because the senior most members (typically the founders) will need to go do other things — like raise capital, or deal with legal or HR related concerns. Typically you start feeling this pain around the 15–20 employee mark if not sooner. This might now leave a vacuum in place. While previously there was a direct line of communication between the founder and the doer, now there is a lack of direction or constant feedback. &lt;/p&gt;

&lt;p&gt;One solution is to have the CEO be the flag bearer of the company and have the other 2 co-founders manage all the other people in the company. Now, co-founders also tend to be pretty involved in outward facing activities like pursuing new clients or working with the board on due diligence. Suddenly you are asking 12 people to set up time with 2 people who aren’t really available for internal folks, which creates bottlenecks all around.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1to9yyp1qy74vm2pcg41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1to9yyp1qy74vm2pcg41.png" alt="mgmt-cofounders" width="599" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another alternative is to hire/recruit/promote managers who lie between the co founders and individual contributors. These middle managers help achieve the following benefits — &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Provide a translation layer&lt;/strong&gt;  — The upper management/founders/CEO/C-Suite layer tend to have very high level (50,000 feet) views and dabble in mile-wide-inch-deep sort of conversations. On the other hand, Individual contributors have very detailed views of granular items and deal with inch-wide-mile-deep sort of discussions. Ensuring these 2 groups of people are able to communicate effectively is the duty of middle managers. Conveying high level vision from upper management to the individual contributors, and likewise, conveying the successes and impediments in the other direction are both key goals for middle managers. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Help look inwards&lt;/strong&gt; — Middle managers ensure that while the founders are looking outwards, there is someone to look inwards. This guarantees that people in the company are well looked after and their needs are addressed. It allows for the nitty gritty of daily life — or as the phrase goes “Keep the trains on track” — to be accomplished successfully. Whether this is personnel needs, technical wherewithal, or being able to facilitate the solution to a cross-functional problem, effective middle managers help move the needle. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Form a robust peer group&lt;/strong&gt; — By linking up across the breadth of the organization, middle managers can be very effective at creating super highways of information that enable communication to flow laterally. Besides cultural benefits, this also helps expedite completion of important initiatives. These peer groups can help surface impediments early on in the process. It also provides a cohort that can rely on and learn from each other for mutual benefit. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hxr4gvjoinunh9naccs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hxr4gvjoinunh9naccs.png" alt="mgmt-mgmt" width="596" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the end of the day, its a balance. Having unnecessary layers of management will slow down your company and create organizational bureaucracy or red tape. On the other hand, effective middle managers inserted with strategic precision can help scale your company to new heights. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>leadership</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
