<?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: Jinsy Oommen</title>
    <description>The latest articles on DEV Community by Jinsy Oommen (@thegoodoommen).</description>
    <link>https://dev.to/thegoodoommen</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%2F192786%2F3262f9bc-0721-4e5d-82fe-4473470fe59d.jpg</url>
      <title>DEV Community: Jinsy Oommen</title>
      <link>https://dev.to/thegoodoommen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thegoodoommen"/>
    <language>en</language>
    <item>
      <title>The 5 Dysfunctions of a Software Team</title>
      <dc:creator>Jinsy Oommen</dc:creator>
      <pubDate>Sun, 25 Aug 2019 20:03:20 +0000</pubDate>
      <link>https://dev.to/cascade-energy/the-5-dysfunctions-of-a-software-team-56oc</link>
      <guid>https://dev.to/cascade-energy/the-5-dysfunctions-of-a-software-team-56oc</guid>
      <description>&lt;p&gt;Over the past fifteen years, I have worked with some amazing teammates, but sometimes, we struggled to ship. Not shipping features is very demoralizing to a software team and it corrodes the product and team cohesity. Even though all of the individuals within a team might be capable and extremely productive individually, there might be some factors that cause us not to ship when we get together as a team. &lt;/p&gt;

&lt;p&gt;As part of an assigned reading for a team I was on, I read the Five Dysfunctions of a Team by Patrick Lencioni. He frames the dysfunctions as &lt;strong&gt;Absence of Trust&lt;/strong&gt;, &lt;strong&gt;Fear of Conflict&lt;/strong&gt;, &lt;strong&gt;Lack of Commitment&lt;/strong&gt;, &lt;strong&gt;Avoidance of Accountability&lt;/strong&gt;, and &lt;strong&gt;Inattention to Results&lt;/strong&gt;. From my experience, I found software teams to be more nuanced in their productivity and output and I found it helpful to reflect and define the dysfunctions of a software team with more specificity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lack of Technical Leadership
&lt;/h2&gt;

&lt;p&gt;Decision paralysis can set in when there are many things on your plate and you need to pick a direction. A strong technical leader can help facilitate the decision making process and own the decisions that have been made. Teams also need to be constantly aware of the technical vision. Individual contributors can and should have tunnel vision on what they are working on, but it is important for them to have direction when they Need it. An effective technical leader can also help communicate the need for and importance of sustainability and technical maintenance of the product to the stakeholders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lack of Product Definition
&lt;/h2&gt;

&lt;p&gt;A default state for developers and individual contributors is bettering the product through working on maintenance or trying out new ways to improve developer experience. This is great, but can demoralize the team eventually if it is not balanced with features that provide business value. When the business path of a product is not well defined we also may have the tendency to fill our backlog with not-essential-to-the-business features. This could cause users to not engage with the product, leading to not enough feedback and eventual disengagement within the dev team. Not having proper product definition could also lead to too many pivots in the development cycle, which in turn can contribute to the feeling of never finishing a project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lack of KIND and Deliberate post-mortems and incident reviews
&lt;/h2&gt;

&lt;p&gt;Incidents are inevitable and I would even posit that they are a sign of progress and change. If we are not deliberate on conducting the review without assigning blame, we could go down the slippery slope of not learning from the incident, prevent us from team accountability, and keep us from owning the entire lifecycle of the feature. This can contribute to a culture of fear of failure, thus never trying new things.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure to Embrace Automation
&lt;/h2&gt;

&lt;p&gt;Not embracing automation of process, deployment, and release can lead to tedium and release fatigue. Not automating deployment and shipping puts an easy target on the developer’s back leading to blame when something defective gets shipped. Not automating process and standards can lead to time unnecessarily spent on nitpicking and bikeshedding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lack of Defined and Documented Process and Rhythm
&lt;/h2&gt;

&lt;p&gt;We are creatures of habit and look for rhythm in our professional lives. A productive shipping team has purposeful process and a rhythm that is sustainable for the team. For some teams this may look like weekly cycle and for other teams it maybe a 6 weeks, but it is important to have that rhythm.&lt;/p&gt;

&lt;p&gt;I used to think being productive had mainly to do with our tech stack choices but experience has led me to believe it is more nuanced than that. I think I can say this on behalf all developers that we are content and happy when we ship something that make our customers happy. It takes a village to create and sustain an impactful product.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>team</category>
      <category>discuss</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Spaces</title>
      <dc:creator>Jinsy Oommen</dc:creator>
      <pubDate>Sun, 21 Jul 2019 16:48:00 +0000</pubDate>
      <link>https://dev.to/thegoodoommen/spaces-5bbj</link>
      <guid>https://dev.to/thegoodoommen/spaces-5bbj</guid>
      <description>&lt;p&gt;That second look&lt;/p&gt;

&lt;p&gt;Not because I'm extraordinary&lt;/p&gt;

&lt;p&gt;But because I look different&lt;/p&gt;

&lt;p&gt;I take up space in your world&lt;/p&gt;

&lt;p&gt;You want to contain me&lt;/p&gt;

&lt;p&gt;Within spaces you don’t occupy&lt;/p&gt;

&lt;p&gt;You like me from afar&lt;/p&gt;

&lt;p&gt;But not all of me and what makes me&lt;/p&gt;

&lt;p&gt;I am learning to push back&lt;/p&gt;

&lt;p&gt;Though I'm at ease where I am&lt;/p&gt;

&lt;p&gt;Dismantle the wall brick by brick&lt;/p&gt;

&lt;p&gt;If not for me, then for those who come behind&lt;/p&gt;

</description>
      <category>inclusion</category>
      <category>diversity</category>
    </item>
    <item>
      <title>13 things I learnt in my first year leading a software team</title>
      <dc:creator>Jinsy Oommen</dc:creator>
      <pubDate>Sat, 13 Jul 2019 13:51:33 +0000</pubDate>
      <link>https://dev.to/cascade-energy/13-things-i-learnt-in-my-first-year-leading-a-software-team-513a</link>
      <guid>https://dev.to/cascade-energy/13-things-i-learnt-in-my-first-year-leading-a-software-team-513a</guid>
      <description>&lt;p&gt;About a year ago, I moved into the role of a tech lead on my team. For some background, I work on an embedded software team within a larger Energy Efficiency Consultancy organization. Embedded Teams function very differently than teams in larger software organizations. You will be required to wear multiple hats, process will have to be built from ground up, you'll have to be very mission oriented, and you'll have to learn the business. I learnt a lot along the way, and I am grateful to my team for giving me space to grow and learn.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Context is everything
&lt;/h3&gt;

&lt;p&gt;People like being part of a greater mission. One of the ways to reiterate your company's mission is by providing context for everything your team will build. Over-communicate your roadmap, bring up your quarterly painted picture regularly. Connect stories back to the bigger picture. Connect stories to problems it could solve in your business domain.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Manage up
&lt;/h3&gt;

&lt;p&gt;As a Tech Lead, you have the opportunity of expanding yourself beyond the stories that your team works on. You have a chance to anticipate business needs or see places that need process improvement. Freely share your learning to your peers. &lt;/p&gt;

&lt;h3&gt;
  
  
  3. Document your decisions
&lt;/h3&gt;

&lt;p&gt;Decision making is tedious, and you may encounter decision fatigue. Document these decisions and make it freely available to your team.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Be selective of your advisors
&lt;/h3&gt;

&lt;p&gt;A lot of the advice for software development and management process is from a perspective of a company providing solutions purely through software. Be aware that sometimes it is harder to scale down advice than scale up. Read all the blogs/books you can, but do reflect on what works best for your team.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Be your team's biggest advocate
&lt;/h3&gt;

&lt;p&gt;Get to know your team in a professional setting, through regular 1:1s. Get to know their interests and how you can help them grow their career. Be a coach and a mentor. Recognize the value that each member brings to the team and give positive feedback generously.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Provide direction but let your team be autonomous
&lt;/h3&gt;

&lt;p&gt;Don't feel like you have to control every part of the software development lifecycle. Provide a framework where decisions can be made without fear of failure. Things can go wrong, but that's OK. We'll move on and learn from it. &lt;/p&gt;

&lt;h3&gt;
  
  
  7. Read code and participate in code reviews
&lt;/h3&gt;

&lt;p&gt;You may not be able to contribute to sprint cycles regularly anymore. Keep in the know by reading code that is being written and merged to production every sprint.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Do some spikes
&lt;/h3&gt;

&lt;p&gt;You do have the opportunity as a team lead to look at the bigger picture. Go ahead and do some spikes. Try various architectures, so you can help make informed decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Engage in customer support
&lt;/h3&gt;

&lt;p&gt;Delight the customer. Put yourself in regular customer service rotations to gain customer perspective and understand their pain points.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Broaden your skill set
&lt;/h3&gt;

&lt;p&gt;Now is the time to go broader on your T-shaped skill sets, rather than go deeper. Read generously about developments in the industry across your full stack.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. Learn about your business
&lt;/h3&gt;

&lt;p&gt;Become a business domain "expert". This will come in handy when you have to provide context to your team.  &lt;/p&gt;

&lt;h3&gt;
  
  
  12. Talk less, listen more
&lt;/h3&gt;

&lt;p&gt;Folks who speak the most benefit the least. Foster innovation on your team through a culture of knowledge sharing and brainstorming.&lt;/p&gt;

&lt;h3&gt;
  
  
  13. Don't be afraid to fail
&lt;/h3&gt;

&lt;p&gt;Go forth and fail, rise up, and learn. Be a kind, empathetic human being.&lt;/p&gt;

</description>
      <category>management</category>
      <category>techlead</category>
    </item>
  </channel>
</rss>
