<?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: Ilia Menshikov</title>
    <description>The latest articles on DEV Community by Ilia Menshikov (@unkmas).</description>
    <link>https://dev.to/unkmas</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%2F91665%2F0c54b96e-1a17-4a5f-84e0-f9c98691fbb7.png</url>
      <title>DEV Community: Ilia Menshikov</title>
      <link>https://dev.to/unkmas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/unkmas"/>
    <language>en</language>
    <item>
      <title>Documenting agreements</title>
      <dc:creator>Ilia Menshikov</dc:creator>
      <pubDate>Fri, 10 Feb 2023 12:42:22 +0000</pubDate>
      <link>https://dev.to/unkmas/documenting-agreements-5m5</link>
      <guid>https://dev.to/unkmas/documenting-agreements-5m5</guid>
      <description>&lt;p&gt;Agreements are an essential part of software development. They lower development costs and make developers' lives easier. But there is a problem - they often complicate things because they aren't properly documented and conveyed across the team by word of mouth, like old fairy tales. While spreading, agreements change. Suddenly, new details appear, and old ones are gone. By the end, every team member has their own agreement picture in the head, and even that picture sometimes fades away.&lt;/p&gt;

&lt;p&gt;Even worse - when teams start documenting these agreements, they do it haphazardly and often create a mess of loosely coupled documents, half of which are not even up-to-date.&lt;/p&gt;

&lt;p&gt;In this article, I'll tell you &lt;em&gt;the right way&lt;/em&gt; of documenting agreements, so they will help you.&lt;/p&gt;

&lt;p&gt;So, how can we make agreements helpful? We not only have to document them but also do it so that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;they were easy to use;&lt;/li&gt;
&lt;li&gt;following these agreements required minimal effort;&lt;/li&gt;
&lt;li&gt;it would be easy to understand if these agreements are still valid;&lt;/li&gt;
&lt;li&gt;it would be easy to understand why these agreements even exist;&lt;/li&gt;
&lt;li&gt;ideally - they were automated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One can come up with lots of ways to classify agreements. I will split them by their abstraction level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;code-level agreements;&lt;/li&gt;
&lt;li&gt;architecture-level agreements;&lt;/li&gt;
&lt;li&gt;processes-level agreements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agreements on different levels require different ways to document them and bring different benefits. Let's take a look at each level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code-level conventions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6EhAALhV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/77wnguruchygh97q40q2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6EhAALhV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/77wnguruchygh97q40q2.png" alt="Code-level conventions" width="880" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The aim of these agreements is to make code uniform, comprehensive, and readable. Here are some examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We use double quotes instead of single ones.&lt;/li&gt;
&lt;li&gt;We don't call ENV directly from the code except in the &lt;code&gt;Config&lt;/code&gt; class, where we wrap these calls into methods.&lt;/li&gt;
&lt;li&gt;Service objects have postfix &lt;code&gt;Service&lt;/code&gt; and one public method &lt;code&gt;call&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These types of agreements are created to lower the reader's cognitive load and help him become used to unknown code faster. Like Martin said, code is read up to 10 times more than written. Despite your opinion on the Ruby on Rails framework - it has an incredible &lt;code&gt;convention over configuration&lt;/code&gt; principle at its core, which allows any Rails developer to open someone else's project and immediately navigate it pretty well.&lt;/p&gt;

&lt;p&gt;So how to document these conventions? Linter tool! If there is no suitable linter rule, write your own lint. Almost every linter allows you to do that: here is an example in &lt;a href="https://developer20.com/custom-go-linter/"&gt;Go language&lt;/a&gt;, and here is for &lt;a href="https://evilmartians.com/chronicles/custom-cops-for-rubocop-an-emergency-service-for-your-codebase"&gt;Ruby&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Using linter for such conventions brings you three benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There is no need for a developer to think about them - linter will highlight every error and often even fix them for you.&lt;/li&gt;
&lt;li&gt;If you use code reviews in your team - you free your reviewers from thinking about these things and give them more time to look at more important things.&lt;/li&gt;
&lt;li&gt;The developer will see a problem at the very start of the development cycle, so he will fix it immediately without spending time to return to the context later. It becomes cheaper to keep the agreement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One more bonus: writing a new linter rule is excellent training for a junior developer. While completing this task, he will learn a lot about code parsing and building AST and understand language more deeply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture-level conventions
&lt;/h2&gt;

&lt;p&gt;This is a higher-level type of agreement that aims to make your architecture thoughtful, coherent, and uniform. A few examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We use the Python to write regular services and Elixir in the highloaded parts of the system.&lt;/li&gt;
&lt;li&gt;The backend returns errors in described format.&lt;/li&gt;
&lt;li&gt;Each service is required to send metrics in prometheus, on the &lt;code&gt;/metrics&lt;/code&gt; endpoint, the port for sending metrics is configured by the &lt;code&gt;PROMETHEUS_PORT&lt;/code&gt; environment variable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Such agreements not only reduce cognitive load, but also solve three more problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reduce operating costs. If the services are launched in the same way, with same logs format, publishing the same metrics, then it is much easier to maintain the service and cope with incidents.&lt;/li&gt;
&lt;li&gt;Reduce design costs. The developer doesn't need to design the architecture from scratch every time - you thought in advance, and now he needs to design only a specific feature or service, without worrying about basic things.&lt;/li&gt;
&lt;li&gt;Reduce communication costs. If the server's response or event format in Kafka is predetermined, developers don't need to discuss their interaction each time, instead they can simply refer to the convention.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Such agreements are more complex, and I prefer to fix them in two steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 - Describe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Architecture Decision Record (ADR) is a tool for documenting such agreements. Its charm is that it captures meta information along with an agreement: why such an agreement was adopted; what alternatives were discussed; when it was last revised; is the agreement still valid?&lt;/p&gt;

&lt;p&gt;This allows the new team member to understand the reasons for the decisions made and not ask people around about it.&lt;/p&gt;

&lt;p&gt;ADR consists of several main blocks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What problem does the agreement solve?&lt;/li&gt;
&lt;li&gt;What options for solving the problem were considered, and what were their pros and cons?&lt;/li&gt;
&lt;li&gt;Which option was chosen in the end?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There may be additional blocks - for example, implementation costs calculation.&lt;/p&gt;

&lt;p&gt;It's more convenient to keep ADR in a system where one can see the history of changes and discussions. My choice is Github and Notion, each with its pros and cons. The advantage of Github is that it has a review tool and version history out of the box. Notion can be a good solution due to the convenience of working with databases and tags. And also - non-developers can easily handle it.&lt;/p&gt;

&lt;p&gt;If you want to get started with ADR, I recommend looking at the &lt;a href="https://github.com/joelparkerhenderson/architecture-decision-record"&gt;repository&lt;/a&gt;, where you can find different ADR templates and examples of how to use them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 - Automate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ADRs are more challenging to automate than code-level conventions: design linters have yet to be invented (what a pity!). Nevertheless, it is possible to partially automate them, depending on what kind of agreement it is.&lt;/p&gt;

&lt;p&gt;Create and update service templates for agreements on languages, libraries, and embedding services into infrastructure. Then the developer won't write new services from scratch but rather copy it from the template and immediately receive the configured Dockerfile, metrics publishing, etc.&lt;/p&gt;

&lt;p&gt;Similarly, you can create class generators within one application. Suppose you had agreed on several application layers (controller =&amp;gt; form =&amp;gt; service object). In that case, you can make a simple console command that will generate all layers for a new feature at once.&lt;/p&gt;

&lt;p&gt;If you have agreed on some principles that cannot be automated in this way, you can organize checklists that are automatically added to a merge request or a task in the tracker; thus, the developer can quickly go through them before passing the task on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Processes-level agreements
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--roaMxjGr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/adcuz08jvs4v9vzotpha.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--roaMxjGr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/adcuz08jvs4v9vzotpha.png" alt="Process-level agreements" width="724" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are many agreements for processes in each company, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description of how hiring in the company works.&lt;/li&gt;
&lt;li&gt;Description of the release rollout process.&lt;/li&gt;
&lt;li&gt;Requirement for design reviews for large tasks.&lt;/li&gt;
&lt;li&gt;Conducting a team meeting twice a week with a discussion of current tasks and obstacles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Until recently, I did not think about documenting these agreements, although they significantly affect the company's success. Documentation of these agreements not only carries benefits of the types mentioned above but also allows you to rationalize the processes, transfer them to the visible plane and think about their expediency.&lt;/p&gt;

&lt;p&gt;I got the idea from &lt;a href="https://youtu.be/oxHzIdpLjmc"&gt;Vitaly Sharovatov&lt;/a&gt;. He proposed a tool similar to ADR - Process Decision Record (PDR). The only difference is that instead of architectural decisions, it describes decisions about processes. In addition, he suggested putting a "rethink date" in each PDR - a date when you return to the document to see if it still solves your problems in the best way, &lt;em&gt;n&lt;/em&gt; months after adoption (by the way, the same can be done with ADRs ).&lt;/p&gt;

&lt;p&gt;As for automation, there is little you can do. You can automate some processes by setting up a workflow in Jira, setting reminders for meetings, or creating a bot that automatically prepares a presentation of the week's results (I did this, though, in a foreign company).&lt;/p&gt;

&lt;p&gt;But often, you can't really automate processes, and your main goal is to make them easier to follow than not follow. Nevertheless, documenting agreements will still be helpful, even if your processes are already easy to follow - formalization and rationalization will allow you to improve them.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, what's the result?
&lt;/h2&gt;

&lt;p&gt;Documentation and subsequent automation are beneficial: time spent on development decreases, applications become more supportable, and processes become smarter.&lt;/p&gt;

&lt;p&gt;One could think that all this is unnecessary bureaucracy because "we are good guys - we can develop code without it." But in fact, agreements will save you substantial amounts of time and money and protect employees' nervous cells. Sure, you don't need to deal in absolute and reject anything that goes against agreements - this may be a sign that the agreement needs to be updated or that you didn't initially think about some of its aspects.&lt;/p&gt;

&lt;p&gt;If you haven't yet started documenting agreements in your team, move from lower abstraction levels to higher ones: start from code-level agreements, then architecture-level, and only then cope with the processes-level. Agreements documentation is a habit to develop in your team, and starting with less abstract concepts is much easier.&lt;/p&gt;

&lt;p&gt;In addition, not all types are described in the article. For example, you can document the design agreement as library components.&lt;/p&gt;

&lt;p&gt;Each new type of agreement goes through the same three stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Figure out how to document it.&lt;/li&gt;
&lt;li&gt;Figure out how to automate it.&lt;/li&gt;
&lt;li&gt;As time passes, ensure it saves more resources than it takes to keep it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And the last one. During the documentation process, it may be found that some of the existing agreements are apparently, not justified by anything, waste your team's time, and are generally harmful, but you are already used to them. In this case, you have to overcome the habit barrier in the team's minds and convince your team that the rejection of agreements is sometimes more important than accepting them. But that's an entirely different story.&lt;/p&gt;

</description>
      <category>documentation</category>
      <category>architecture</category>
      <category>docs</category>
      <category>management</category>
    </item>
    <item>
      <title>Why Developers Should Own the Product and How it Will Make Them Happy</title>
      <dc:creator>Ilia Menshikov</dc:creator>
      <pubDate>Sat, 04 Feb 2023 16:41:00 +0000</pubDate>
      <link>https://dev.to/unkmas/why-developers-should-own-the-product-and-how-it-will-make-them-happy-5akg</link>
      <guid>https://dev.to/unkmas/why-developers-should-own-the-product-and-how-it-will-make-them-happy-5akg</guid>
      <description>&lt;p&gt;I have been working as a software engineer for ten years. I managed to work in different companies: product-based and outsource, large and small. For the last three years, I have also been a manager — I manage a team of developers and help them develop and hire new people.&lt;/p&gt;

&lt;p&gt;I’ve noticed that developers often think of their job as “writing code”, “adding features”, or even “closing tasks in Jira”. I used to think the same way. Today, I will explain why this approach limits growth and, more importantly, happiness.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mindset
&lt;/h2&gt;

&lt;p&gt;So what does “ownership” mean? In my opinion, every developer should remember that he is a part of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a business,&lt;/li&gt;
&lt;li&gt;a product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Accordingly, the developer’s task is to help the business grow and improve the product. It implies that the developer must:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;know the product and its subject area;&lt;/li&gt;
&lt;li&gt;know the product’s users;&lt;/li&gt;
&lt;li&gt;understand how the business works;&lt;/li&gt;
&lt;li&gt;understand product metrics;&lt;/li&gt;
&lt;li&gt;know the direction the product and business are taking;&lt;/li&gt;
&lt;li&gt;understand what other departments in the company are doing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Collectively, this is called product thinking. Together with personal interest, proactivity, and most importantly, responsibility for successes and failures, it makes up the concept of “ownership” of the product.&lt;/p&gt;

&lt;p&gt;This approach requires significant personal effort. Why would a business go for it, and why would you?&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits for the business
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn4fo5bqvihxtzc6xj5o1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn4fo5bqvihxtzc6xj5o1.png" alt="Benefits for the business" width="800" height="355"&gt;&lt;/a&gt;&lt;br&gt;
A company benefits from having product-minded developers in many ways. I’ll name the main ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Things Done
&lt;/h3&gt;

&lt;p&gt;If a developer considers his only task to be writing code, he abandons the task as soon as it leaves his area of ​​responsibility. Then tasks often return from testing because the developer did not really check the result. Then the branch with the code freezes and does not get in production. People forget to roll out the experiments or to turn on feature toggles.&lt;/p&gt;

&lt;p&gt;Such problems can and should be fixed by changing processes, but when the developer owns the product, he doesn’t consider the task completed until it is in production. Therefore, he checks everything carefully, ensures it’s in production, and checks if everything is set up, configured, and rolled out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choosing the right software architecture
&lt;/h3&gt;

&lt;p&gt;A developer that knows the domain, the product, and its users can make better design decisions by predicting possible future changes and the consequences of his choices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Higher Efficiency and Creativity
&lt;/h3&gt;

&lt;p&gt;Employees work better this way, an explanation later in the article.&lt;/p&gt;

&lt;h3&gt;
  
  
  Proactivity
&lt;/h3&gt;

&lt;p&gt;This is the most crucial point. A developer who feels like he owns the product does not wait for instructions but is proactive. They warn about risks in advance, correct mistakes, and come up with suggestions.&lt;/p&gt;

&lt;p&gt;To summarize: the company gets a more efficient and responsible employee, whose decisions turn out to be correct more often. Isn’t it amazing?&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s in it for you?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwaz8020n4199wez20lid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwaz8020n4199wez20lid.png" alt="What’s in it for you?" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  You will be more valuable to the business
&lt;/h3&gt;

&lt;p&gt;I described above why you become more valuable to the company. Good employers notice this — you get more freedom, more opportunities, and in the end — more money and stocks.&lt;/p&gt;

&lt;p&gt;The most successful developers who grow in this direction eventually move to a stage where a hypothetical James Brown no longer gets invited to the position of a developer. He is invited to the role of James Brown! The company hires him as a person who makes business better no matter what he’s doing.&lt;/p&gt;

&lt;h3&gt;
  
  
  You will work in the best companies
&lt;/h3&gt;

&lt;p&gt;The skill of product ownership will force you to choose those jobs where you can apply it. In such companies, you will get more freedom, grow much faster, and develop different abilities, and great like-minded specialists will surround you. The last point is essential and often underestimated — our environment shapes us. You become more active and professional in the company of enthusiastic, energetic, professional people.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s talk about happiness
&lt;/h2&gt;

&lt;p&gt;The last advantage I’ll talk about is, in my opinion, the most important. So I will pay a little more attention to it.&lt;/p&gt;

&lt;p&gt;Why do we even live? Many generations of philosophers have been trying to answer this question, so that I will leave the task to them. Instead, I propose to think about &lt;em&gt;how&lt;/em&gt; we live.&lt;/p&gt;

&lt;p&gt;Look, there are 24 hours in a day, of which 8 (ideally) we sleep. There are 16 hours left, of which work takes up half. If we take into account our other activities: commuting, shopping, working out, meeting with friends, etc., it turns out that we spend more time at work than with our family. As a rule, we treat a spouse’s choice very responsibly: we don’t get married just like that. We live together to be &lt;em&gt;happy&lt;/em&gt;. Why do we talk so little about happiness at work if we spend so much time there? Why do we stay for years in dull jobs, doing uninspiring things?&lt;/p&gt;

&lt;p&gt;Can’t we make it &lt;em&gt;better&lt;/em&gt;?&lt;/p&gt;

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

&lt;p&gt;I think we can, and the key is in owning the product. There are several points from which you can see the connection between happiness and owning your product.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ownership and Alienation
&lt;/h3&gt;

&lt;p&gt;The reflections on alienation first appeared in the works of John Locke, then developed and became a full-fledged theory in Hegel’s and Feuerbach’s works. Marx, on the other hand, transferred this problem from a religious perspective into a common one. I will not bother you with a lengthy analysis of these philosophers’ thoughts and will give you the main ideas relevant to today’s article.&lt;/p&gt;

&lt;p&gt;Marx wrote extensively about &lt;em&gt;alienation&lt;/em&gt; — the separation of the worker from the results of his labor and the very process of production. A person works but does not feel any connection to the final product: every day he screws the same bolt on the conveyor and doesn’t feel that he is creating something big, because his part is so small and monotonous. The worker doesn’t see the point in the work — all his activities come down to just turning one bolt. Moreover, the worker doesn’t use the product he creates because he can’t afford it.&lt;/p&gt;

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

&lt;p&gt;The economic part of the problem affects us to a lesser extent: today we earn quite a lot compared to a worker in a factory (albeit less than a factory owner). But the psychological part is very relevant: developers often lose the meaningof their work. Their actions at work seem meaningless to them, they feel unnecessary, and they live an unhappy life. If your job is to complete a flow of tasks in Jira, if you don’t know why you perform this or that task, if every new day at work is the same as the previous one, are you that different from the factory worker?&lt;/p&gt;

&lt;p&gt;Developing a sense of product ownership will allow you to cope with the psychological part of alienation from your work. Choosing a company that offers equity will also help with the socioeconomic one.&lt;/p&gt;

&lt;h3&gt;
  
  
  The value of your product
&lt;/h3&gt;

&lt;p&gt;We have an interesting cognitive bias in our heads called &lt;a href="https://thedecisionlab.com/biases/ikea-effect" rel="noopener noreferrer"&gt;the IKEA effect&lt;/a&gt;. The fact is that we value things much more if we had a hand in creating them. People are willing to pay more for a cupboard they build themselves, and &lt;a href="https://www.psychologytoday.com/us/blog/inside-the-box/201401/creativity-lesson-betty-crocker" rel="noopener noreferrer"&gt;cake mix sales go up if you have to add a real egg yourself&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The feeling of belonging and ownership of the product will make you appreciate it more, be proud of it, and therefore feel the importance and see the meaning of your work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Motivation and types of people
&lt;/h3&gt;

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

&lt;p&gt;Modern business often relies on carrots and sticks, although &lt;a href="https://www.econstor.eu/bitstream/10419/55603/1/505087677.pdf" rel="noopener noreferrer"&gt;research shows&lt;/a&gt; these methods are unsuitable for creative work. People who feel competent, autonomous, and connected to each other work &lt;a href="https://uvi.edu/files/documents/College_of_Liberal_Arts_and_Social_Sciences/social_sciences/OSDCD/National_Self_Determination_Richard_Ryan_and_Edward_Deci.pdf" rel="noopener noreferrer"&gt;much more efficiently&lt;/a&gt;. They are also &lt;strong&gt;happier&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At the same time, there are differences between people; what Daniel Pink called Type X and Type I. Type X are people for whom extrinsic motivation is paramount: how much money they will earn and what rewards they will receive. People of Type I are primarily interested in internal motivation — satisfaction from work done. It doesn’t mean that Type I works “for food”, it means that after the basic needs are covered, money and fame cease to be their primary incentive.&lt;/p&gt;

&lt;p&gt;Type X is predisposed to “type A behavior” — the desire to achieve constantly and a tendency to compete. Type I tends to “type B behavior” — a calm and deliberate life.&lt;/p&gt;

&lt;p&gt;Where am I going with this? Research shows that both types of people perform equally well. But people with Type A behavior are more stressed, more often unhappy, and they’re also much more likely to die from heart disease:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No significant differences were found between Type A and B agents and three measures of sales performance and one measure of general job satisfaction. Type A behavior among the sample was associated with measures of stress and number of health complaints.&lt;br&gt;
— Matteson M. Matteson, Michael T., John M. Ivancevich, and Samuel V. Smith. “Relation of Type A behavior to performance and satisfaction among sales personnel.” Journal of Vocational Behavior 25.2 (1984): 203–214.&lt;/p&gt;

&lt;p&gt;Results revealed that JAS-defined Type A’s and Type B’s did not differ in their attributions for success, but Type A’s made more internal attributions for failure than did Type Bs. This attributional difference was due to the Type A’s tendency to attribute failure to a lack of ability.&lt;br&gt;
— Musante, Linda, James M. MacDougall, and Theodore M. Dembroski. “The Type A behavior pattern and attributions for success and failure.” Personality and Social Psychology Bulletin 10.4 (1984): 544–553.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Product ownership will allow you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;feel more competent because you not only know how to write code but also understand why to write it;&lt;/li&gt;
&lt;li&gt;get more autonomy because you are less tied to the person who sets your tasks. You will make many more decisions on your own if you understand what you’re doing and why;&lt;/li&gt;
&lt;li&gt;strengthen communication with other people because now the rest of the employees around you — sales, marketing, product managers, and support team are no longer strange people who ask for odd things. Now you know why they want the changes and speak the same language as them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A sense of competence, greater autonomy, and a better understanding of the other people in the company will change your motivation and behavior towards Types I and B, respectively, and thus make your life calmer and happier. And at the same time, maybe save you from an early death.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;What is the result? Focusing on product ownership will make you a more valuable professional and, most importantly, a happier person.&lt;/p&gt;

&lt;p&gt;The manager should think about building a culture in the team that will not interfere with product ownership, or, even better, helps the team develop this feeling in themselves. So your developers &lt;a href="https://www.researchgate.net/publication/332494069_Happiness_and_the_productivity_of_software_engineers" rel="noopener noreferrer"&gt;will work better&lt;/a&gt;. And die less often :)&lt;/p&gt;

&lt;p&gt;I will also note that when you own the product literally (by owning equity), it is much easier to feel involved. So, it would be best if you choose companies that are partially or wholly owned by employees. If you have founded your own company, consider sharing a part of it with the team: research and practice show that this path leads to success.&lt;/p&gt;

&lt;p&gt;Be happy!&lt;/p&gt;

</description>
      <category>happiness</category>
      <category>productthinking</category>
      <category>alienation</category>
      <category>career</category>
    </item>
  </channel>
</rss>
