Easily share best coding practices from your IDE with your team
Tags: codequality, codereview, programming, beginners
Published: 2021-08-27 14:20:17

## 🤝 Why sharing best coding practices?

Each developer has their own experience and their favorite ways of writing source code. Some have been influenced by reading the ***[Clean Code](https://dev.to/gonedark/writing-clean-code)*** book from Uncle Bob. Others have been shaped thanks to mentoring or training with a specific developer. In any case, we can assume each developer writes code while trying to apply best practices. 

Thus, developers have **heterogeneous** knowledge. Ask 100 developers to implement the same feature, and you'll be likely to get a majority of different implementations.  

Within a team, developers should **align their** best coding practices to ensure source code uniformity and quality. While source code remains in the company over the years, developers are volatile. Best practices should **remain the same** for whoever works on the project, so they need to be persisted, documented, and known by developers.

Let's an example of how you can use [Promyze](https://promyze.com?utm_source=DevTo&utm_referral=referral) to reach that purpose in a simple 3-steps process.


## 🔎 1. Identify practices in your IDE

Have you ever been in a situation where you're reading a source code and thinking, *"Mmmh, I think this should be done in another way"?* Or inversely, you could think "*Oh, this is exactly the right way to do it*." What do in such a case? Send it to Slack but with the risk of few considerations from the team?

Assume this function in JS, and take a look at the for loop : 

```jsx
async getUsersProfilesData() {
    const users = await this.APIService.getAllUsers();

    const usersWithProfile = [];

    for (let i = 0, iMax = users.length; i < iMax; i++) {
        usersWithProfile.push(await this.getUserProfiles(users[i]));
    }

    this.$scope.$apply();
}
```

We could be tempted to use [Promise.all](https://promyze.com/simplify-promises-async-await/) function to avoid blocking calls with the **await** keyword. 

This is something you can easily do with Promyze's IDE plugins (available so far with VSCode, Visual Studio, and all the JetBrains suite). Let's see here with the VSCode plugin, we just select the snippet and create a new practice : 

![Best practice creation with Promyze](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s9ixkz75ol8pawelggmu.PNG)

The plugin prompts for a little information, such as a name and some categories for the best practice. Of course, I could instead identify an existing best practice.

![Set the practice name in VSCode](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c6vs4wmcrggdq0s2754l.PNG)

That's the idea, and all developers should be doing those operations 2 or 3 times a week, for instance. 

You can also add a correction to illustrate how it should be done, but you can also identify positive examples if you consider that a best practice has been followed.


## 💬 2. Discuss and make decisions

All those contributions come to the team's space in Promyze. Once a week or every two weeks, the team gathers for an **hour-session** and reviews all the identified best practices. That's what we call a **Craft Workshop**.

Here, Bob explains the *Promise.all* mechanism and why it should be used in the project's code. The discussions and **knowledge sharing** happen, and participants give their opinions. The team will decide either to :

- Validate the practice and add it to their repository
- Discard the practice since it's not relevant in this context
- Refine it and add more description
- Start a battle to share arguments

![Craft Workshop to discuss about best practices](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0r26egqywokrzcbt4adr.PNG)
A very useful feature is that each identified example and counter-example of practices will be kept in its **documentation** in Promyze. 


## 🚀 3. Manage your practices and share them with other teams

That's how you can start creating your practices repository. 

It's common to have multiple teams in an IT organization. That's why Promyze has been designed to define and share practices between teams or **communities of practices**. 

Each team may decide to make their practices publicly available. This can be relevant if you have a team dedicated to spreading the best React or Spring practices, for instance. Craft Workshop can be run within a team or across teams on specific topics.

![Best practices repository](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vj4dpbi66908zgrw9769.PNG)

This is just a quick introduction, but there's more you can do with this solution. In the next article, we'll see how [Promyze](https://promyze.com?utm_source=DevTo&utm_referral=referral) can help developers with automatic suggestions while coding and doing code reviews.