Code Reviews are a great way to use the experience and knowledge of a team to create good software. Not all review processes are enjoyable, though.
Here are 6 tips to make your review process better and more enjoyable for everyone!
🧵🔽
1️⃣ Make Expectations Clear
A good review process should both be standardized and individual. The terms of the process should be written down and transparent for everyone on the team. Each team member should know what is expected of them and all team members should agree ...
... on the terms. Changing the terms should always be a democratic process within the team. If the team disagrees on changes or terms, it should discuss the issues until there is consent.
On the other hand, the process should be flexible enough to allow for individuality.
Reviewees should be able to ask for more in a specific review when they see the need for it. Sometimes, very important features or complex problems need more characteristics reviewed than usual.
2️⃣ Don't Demand Changes, Make Suggestions And Explain
To make a review an inclusive process, making suggestions is better than simply demanding changes. If reviewers simply demand changes without explaining why, they lift themselves a level above the reviewee and give ...
... them a feeling of having to justify themselves. This can go so far that reviewees stop using their own thoughts and style of problem-solving and instead use a way that guarantees them the most positive review experience. In the long run, it hurts the team and the product.
So, instead of stating "You must change this", it's better to go with "If we did it this way [suggestion here], we could solve issue x and y I can imagine arising when we further go down the current route."
3️⃣ Be Open For Discussions
A healthy discussion can do wonders. Individual issues found in reviews should be discussable. Every participant should have the chance to state their opinion and give reasons for why they think their solution is a good idea.
Those discussions should go for as long as necessary until all participants can agree on a solution. No individual team member should have the power to simply end a discussion. A discussion is finished when it is finally solved and a solution can be implemented.
4️⃣ Eliminate Personal Code Authorship
All source code should belong to the whole team. No individual code ownership should exist. Personal code ownership can lead to developers taking criticism personally, especially in reviews.
The whole team is responsible to create a good and maintainable product. Bad code is the mistake of the whole team, never of only one individual.
Developers create code on behalf of the team and reviewers ensure that the team's code meets certain criteria.
Switching to this mental model of "our code", and not "my code", can enable developers to focus more on the overall goal and less on the personal aspects of being hurt when whatever they produce does not pass a review flawlessly.
5️⃣ Reserve Enough Time
A review should never be rushed. If it takes an hour of focused work to do a review, then be it. Even if a review takes two or more hours, it's necessary.
A rushed review can lead to many issues being overlooked which in return hurts ...
... the team later, either by leading to errors in a staging environment or even worse in production.
This is also something management usually needs to understand. A review is a part of quality assurance. Cutting time for it hurts the overall quality and maintainability.
6️⃣ Automate The Boring Stuff
Checking for code style or common security issues should be automated. Style issues can be overlooked in reviews too easily and spotting even the most obvious security flaws is sometimes difficult.
Automated pipelines can run whenever a review is created. Checkmarks in the review then show reviewers whether basic checks succeeded or failed. They can then concentrate on everything that can't easily be automated and have overall less to do.
7️⃣ Quick Recap
Now that we are through, let's do a quick recap of the six tips that will help you to make your review process better and more enjoyable.
- Make Expectations Clear
- Don't Demand Changes, Make Suggestions And Explain
- Be Open For Discussions
- Eliminate Personal Code Authorship
- Reserve Enough Time
- Automate The Boring Stuff
And now, try to implement some of those tips and you will see how much better your review experience will become!
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Proof-Of-Work is the name of a cryptographic algorithm that is used for some blockchains when new blocks are to be appended to the chain.
Let's take a higher-level look at how this one works, shall we?
🧵🔽
1️⃣ The Basics
This algorithm creates a system in which one party (the prover) has to prove to one or multiple other parties (the verifiers) that they put in a certain amount of work for some purpose.
The work the prover has to put in is moderately hard to very hard, while the verifiers can pretty easily check whether the proof is correct. This creates an asymmetric system.
The original idea was to create protection against DDoS attacks and spam.
What are **some** possible applications of Blockchain technology?
Are there only cryptocurrencies? Are there more possible applications? Let's take a look at three possible applications outside of finance here to give you a general idea of what is possible.
🧵🔽
0️⃣ Foreword
A blockchain can be used to solve a lot of problems. Cryptocurrencies are only one possible way of applying the technology but there is way more to it.
We can take a look at some possible applications and what they each provide to users.
1️⃣ Social Networks
The current generation of social networks is centralized. Whether we talk about Facebook, Twitter, Instagram, TikTok, or whatever else. They all own your account, your content, your followers, and everything else.
Bitcoin is breaking record after record, but there must be more to the technology than just crypto, or not? Well, we can take a look at the underlying technology first to understand what it actually provides to us.
🧵⬇️
1️⃣ Foreword
This will be a high-level overview to give you an intro to blockchain technology. With further threads, we will dive deeper and deeper, so don't be sad if something you really looked forward to isn't included as detailed as you would have wished for, yet!
2️⃣ Client-Server Architecture
Before we dive into blockchain technology, we should take a look at how most of the internet works. We need this to understand the fundamental differences between a traditional model and the change blockchain technology brings.
Perhaps you have already thought about it or never felt the need to. However, taking a look at it might be worth some of your time.
Want to join me? Great, then let's go!
🧵🔽
1️⃣ Foundations
Have you ever bought a new computer or notebook? You pick a machine suitable for your needs, place an order and wait that it arrives. If it's a gaming PC, you'll sometimes have to build it yourself. That machine has to be placed, plugged in, needs to ...
... have it peripherals connected, etc.
It's the same process for servers. A server is nothing else than a computer that is specifically designed to run 24/7, host some form of software, be connected to a network, and so on. As it has some pretty special requirements ...
Here are _some_ of the most essential git operations you will need when working as a developer.
🧵🔽
1️⃣ Create A New Repository
This is the most basic command you'll need. When you start a repository locally, your start with git init.
2️⃣ Clone A Repository
You can clone a remote repository to get a local copy of it. Your local repository is connected to the remote one so you can pull in changes and push yours to the remote.