The process of software engineering is rife with negativity. Some examples:<p><pre><code> - Code review is important, but it is a necessarily a critique, and sustained code review can wear both submitter and reviewer down.
- Bugs happen. And they get fixed! But you'd be lying if you said you didn't check to see if you were the one that introduced the bug.
- Dealing with fires.
- Staying on top of security is constant and infrequently terrifying.
- Open source software rarely sees all the value it brings to the table; conversation usually focuses on issues and shortcomings.
</code></pre>
Negativity abounds. It's a wonder that all of our mental states aren't reduced to the equivalent of an anxious chihuahua. Has anyone been successful in introducing some positivity in the engineering process? I have precious few examples:<p><pre><code> - GitLab selects an MVP [0] for its releases, putting their name at the top of the release notes, very publicly awarding recognition.
- GitHub has introduced the "Discussions" page recently, frequently containing a "Show and Tell" category [1], helping open source maintainers see their hard work in action.
- Gamification and badge awarding has been explored [2], although it's non-trivial to introduce (and if there's talent disparity on a team, leaderboards and badges could actually be demoralizing and counter-productive)
</code></pre>
> Note: While ideas like <i>go out for beers with the team once in a while</i> is helpful, I'd say that's more of a social band-aid. I'd like to focus the conversation on the engineering process specifically.<p>[0] https://about.gitlab.com/releases/2021/01/22/gitlab-13-8-released/<p>[1] https://github.com/laravel/framework/discussions/categories/show-and-tell<p>[2]
https://www.dalsat.me/download/publications/saner2017.pdf&sa=U&ved=2ahUKEwiluunw6fjuAhVgJzQIHWLQDQsQFjAAegQIAxAB&usg=AOvVaw1yAwqK5Vjml9jXFR7Bhxk0
Trying to manufacture positivity through policy or forced work requirements rarely has the desired effect. Most people see this for what it really is: Another performance they have to put on to appear as one of the positive people.<p>The only sustainable solution I've found is to lead with positivity, and not tolerate negativity. Put people who can lead with positivity in management positions. Remove negative people from leadership roles. Don't tolerate negativity.<p>> Code review is important, but it is a necessarily a critique<p>Code review is only negative if you frame it as such, or allow the team to frame it as such.<p>We frequently have to mentor new employees to understand that code review comments are not equivalent to social rejection, not equivalent to being demeaned, and are simply a constructive group learning process.<p>This is where positive leaders are essential: If your leaders are introducing code review as "Yeah, it sucks to get your code torn apart..." then everyone is going to view it as a painful process where the goal is to please your peers. If you instead introduce code review as "Code review is a great way to get feedback, get some more eyes on your code, hone your skills, show others what you're doing, and spread understanding of your domain" then people tend to start to like it.