Fast communication is a key factor. If you are still using emails or whatever I guess you are doing this the wrong way. Use modern tools such as slack or hipchat so you can keep track of discussions and collaborate faster with your teammates.
Do not be afraid to announce things in public channels so that you can bring everyone on the same page lightning fast. 1–1 communication is much more personal and emotional but you should avoid getting stuck in 1–1 gossiping.
Of course, we will have 1–1 discussions since we are humans after all. Try to be gentle with your teammates and show how much you respect them and how valuable you think they are. Admit your mistakes as a team leader and ask for their opinion about decisions you have to make. They are not robots and they need approval and reward as you do.
Do not exhaust mentally your teammates with innumerous useless meetings. Follow an agile pattern like scrum and prioritize things. Work with milestones and sprints. Use public communication channels a lot and share there things you need to share. Make them as short as possible. For non-regular calls remember to provide an agenda so that everyone comes prepared in the call. If you don’t, this meeting is already a failure and you should know this.
Block black boxes
Many developers love working alone and appearing after days bringing together their wisdom. Funny but true. Block this thing. Remote working is awesome but everyone should follow same rules else we are not a team but a kindergarten. So simple…
This might seem redundant but trust me there are still teams using SVN out there. Use Git version control system. It is solid and you will scale really fast. It will boost your collaboration since it is very difficult to lose code and also very easy to maintain tons of branches and features without affecting your master branch.
Modern platforms such as Github, Gitlab etc offer awesome systems to track tasks, assignments, discussions for a particular issue and many more. If you are not using these do it now in order to reduce wasted time and gain hell better overview and control.
Every ticket should be part of a milestone but what is a milestone? A milestone is a bigger feature or functionality that we want to deliver as a team and this gets splitted into many smaller assignments called tickets. Everyone should know why he / she is doing something and what we try to achieve as a team. That way he / she is far more productive and in the end of the day, he / she will take pride of his / her work.
No task is equal to the others in terms of complexity. Use tasks weight so you can calculate in a more efficient way, effort and time will be spent for a particular task.
Some tasks come always first and some others should follow. This is normal and will help you orchestrate all these pieces of code much better in the end. Also, you make things easier for your team’s members and you reduce extra communication to explain when to do this and that.
Making important decisions
Use a ticket for every important decision you have to make. Discuss with your team’s members and let them speak their minds. It is a free world and you are going to learn many new things out of this. There is nothing more interesting than discussing with other smart people about a topic and nothing more stupid than discussing with yourself and then announcing your decisions in public. Then ones who love doing this probably shouldn’t be team leaders in the first place.
When a decision is made document it. Use a wiki to write down all steps every guy should follow. Try to be descriptive by using markdown and providing well-written examples and code snippets. From now on everyone will be able to visit these documents and refresh his memory about things he misses without disturbing others or spamming communication channels.
Linting, linting & linting
Use linting a lot eslint, stylelint etc It is a life saver and a sign that your team is mature enough and provides quality by following some high standards. Providing some thousands lines of code that work so it is ok is out of question. You have to think about code maintenance early enough else it might be too late…
This is so important. Use CI from day one and TDD. Provide unit tests and use mocks. Do not rely only on end to end and BDD tests by using tools like selenium etc Don’t let others write tests for your code. Your code is your child so treat it well. Start simple and try out all small cases in your unit tests. Make them fail and check how your code behaves. Refactor your code some more by abstracting things more and more. Your code’s truth is in there and this procedure makes you a better developer.
This is a crucial mechanism and ensures that the code that gets pushed in master branch is AAA. Team’s level becomes better and better and coding standards are applied. Not everyone can be a code reviewer at first but try hard to promote more and more guys to this level of responsibility. Everyone should be prepared for that kind of duties and you can show your appreciation and your trust by giving him / her this opportunity.
If you found this interesting, you can follow me on Twitter at @fakiolinho. Check out some of my other articles below: