Source: DZone Collaboration tools play an important role in bringing teams together. They help you collaborate, plan, and execute work to achieve common goals. Effective teamwork and collaboration go hand in hand when we talk about productivity. For many years, email has remained the #1 channel for online collaboration. However, this has changed recently, especially now that companies have realized how unproductive emails can be. According to Forbes, office workers spend about 2.5 hours reading and writing emails every day. Online communication and collaboration tools can reduce this huge amount of time. Here are a few reasons why it makes sense for you to choose a collaboration tool.
Teams can work remotely
One of the benefits of using online collaboration tools is that it gives everyone the opportunity to work from the comfort of their home. This not only improves the morale of team members, but also allows each of them to work in a way that suits them.
Rely less on email
Collaboration tools encourage a more casual approach to communication. You no longer have to write the same pleasantries over and over again—you can get straight to the point.
Convenient document management
How many times have you received five different versions of the same file, resulting in confusion later because no one knew which one to use? Collaboration tools allow you to seamlessly share files and documents, which can then be easily filtered or sorted.
Monitor your team's progress
Can't figure out who is doing what now? This often happens when you manage a huge team. Sometimes it becomes difficult to keep track of all the updates in real time. Nowadays, collaboration tools come with built-in and integrated task management tools that allow you to track, control and stay updated on projects and team progress online.
No more unproductive meetings
You can avoid unproductive meetings by interacting with your team members through the software. 23% of workers think meetings are a waste of time. By using meeting management software , you can be more productive with your team. Let's check out the list of the best free collaboration tools.
Slack needs no introduction. It is considered one of the most widely used collaboration software. It is an ideal tool for internal business communication as it allows you to create different channels and allows you to add an unlimited number of team members. Depending on how many people are on your team, you can create a channel for each department, such as sales, marketing, DevOps, support, and so on. You can also create a group chat within a channel or collaborate with a team member directly using private messages. Slack supports voice and video calls if you don't feel like typing a lot.
Pricing:
Slack comes with a free plan that is suitable for small teams. With the free version, you can integrate up to 10 third-party apps and also make video calls. Standard and Plus plans for Slack start at $6.67 per user per month and $12.50 per user per month, respectively, when billed annually.
Skype is another great tool for online collaboration. If you work in a company that relies more on voice and video communications, Skype is a great choice. Additionally, the interface and features of this app are very similar to social media chats, which not only makes communication convenient but also keeps all team members engaged.
Pricing:
Skype is free online chat and video conferencing software. Skype for Business costs $2 per user per month and comes with additional convenient features such as up to 250 online meeting participants, enterprise-grade security, and employee account management.
Flock is another communication platform similar to Slack, with a simple interface and built-in productivity tools. Flock's other collaboration features include polling, note-taking, and workflow automation. Flock also has built-in task management that allows you to create tasks with one click.
Pricing:
Flock is a free online collaboration tool with basic functionality. Flock's Professional plan costs $4.50 per user per month, billed annually.
Imagine Facebook being limited to just your coworkers and bosses. It is the central hub for all your workplace communications. Workplace is not a tool for a single department or team, but is designed to bring everyone together. Just like Facebook, you can chat, create groups, plan events, go live, or record videos for later viewing.
Pricing:
Facebook's Workplace has both free and paid versions. The premium version costs $3 per user per month and includes advanced enterprise features such as built-in integrations, custom APIs, monitoring tools, SSO, and more.
Convo is an advanced social collaboration tool that lets you keep your team engaged and productive at the same time. It replaces traditional one-to-one communication with one-to-many communication. With its news feed, you can stay up to date with all the latest activities of different teams in your organization. This makes the application very effective for cross-functional collaboration.
Pricing:
Convo is free for up to five team members. Convo Pro with advanced functionality costs $9 per user per month.
Career Tips for Junior Developers
Source: Dev.to Aspiring developers often ask me how they can accelerate their professional development. In other words, they want to learn how they can quickly become effective team members, familiarize themselves with the huge code base and everything they need to do their job. Moving to a new job can be stressful even for a senior developer. If we are talking about beginners, then it is doubly difficult for them. Let's look at four strategies for improving the professional level of a junior developer, which allow you to quickly get used to the workplace.
1. Ask a lot of questions
First, don't be shy to ask a lot of questions. And more importantly, don't be afraid to do it. Finding the courage to ask something can be difficult. For many, this means they don't know everything. But is it worth worrying about? The field of development is so vast that no one can know everything about it. When asking questions, especially in a public forum (like your company Slack channel), you may have doubts: “Will my coworkers look down on me for not knowing this? Will they stop trusting me as a programmer? At times like these, it's important to remind yourself that everyone starts somewhere. Even programmers with 30 years of experience were once in your shoes and tried to navigate the vast field of development. Secondly, if you have a question, then it is very likely that this topic is also interesting to other people. By having the courage to ask openly, you will not only help yourself, but also your colleagues. Remember that everyone is susceptible to impostor syndrome. Every developer at some point feels like he's not good enough, that he doesn't deserve to be in his position, that his peers will realize how little he knows and he'll be exposed as a fraud. Don't listen to that voice of doubt. Third, when you ask your question in a public forum, it becomes documentation that you can return to later. That's why I always recommend that developers who send me private messages ask questions in public Slack channels instead. After all, then any team member (or even several people) will be able to answer the question, and the answers will be useful not only to the one who asked, but also to those who were embarrassed to ask. Additionally, the discussion will be searchable, which will help anyone who has the same question in the future. Now let's turn to experienced developers who newbies often ask for advice. You, as experienced programmers, determine the culture of your company: will this company and team be a psychologically safe place where people can ask questions without being criticized? Be smart when responding to questions, or you will create an environment where your colleagues are afraid to speak up. When Google conducted a study to determine the factors that contribute to high team performance, psychological safety came out top. Team members need to feel safe and know that it is okay to be vulnerable around each other. Now let's go back to the juniors again. What questions could you ask to become a more effective team member? Here are a couple of examples:
Could you tell me about the architecture of our application? What frameworks and libraries do we use?
Could you show me the directory structure of our codebase? Where is the code? How is it organized?
What does the development process look like? What type of Git workflow are we using?
How does the release happen? How does new code get into production? How often is new code released?
Why is function X implemented this way?
Why are we using library A and not library B?
These are all great questions to ask not only junior developers, but also anyone starting to work in a new place.
2. Ask for help when you need it.
Likewise, it is important to ask for help when you need it. Struggling with a difficult task is an integral part of learning. If you are constantly led by the hand and not allowed to work independently, you will not be able to progress quickly. But there are times when it's best to admit that you need help. A good rule of thumb is if you get stuck on something, give yourself another 15 minutes to try to figure it out on your own. Then, if there is no success, ask for help. This delay before asking for help sets a time frame for completing the task so that you don't spend forever on it. Moreover, it forces you to try again to solve everything on your own (after all, you can’t give up right away). And if you just don't want to ask for help, a time limit will give you extra motivation! Don't expect to solve the problem yourself - remember that you are being paid to do the work. From a financial point of view, spending hours on something without making any progress is extremely ineffective. Especially if a colleague can quickly give you advice and thereby solve your problem. Don't forget that a team is needed to help each other. Experienced teachers and mentors, when helping juniors, often use Vygotsky's theory of the zone of proximal development and scaffolding (even if they know nothing about them). The zone of proximal development (ZPD) is “the distance between what a student can do without assistance and what he can do with the support of someone with more knowledge or experience.” Scaffolding is a method of providing students with guidance to help them work within the framework of an HPD. Thus, an experienced mentor gives the novice developer as much advice as necessary so that he can independently complete his task.
3. Constantly learn
The software development industry is changing all the time. New languages appear, previously popular libraries and frameworks are replaced by more modern technologies, new design trends arise and disappear. To keep up in this fast-paced world, you must constantly learn. Developers can't just finish college or courses, get a job, and never go back to school. We learn every day. In the book “Extraordinary Success Stories,” Malcolm Gladwell formulated the “10,000 hour rule,” which then became very popular. It states that to become an expert at something, it takes approximately 10 thousand hours of work in that field. Naturally, the more you work at something, the better you get at it. However, the 10 thousand hours rule after a book is published has already been refuted several times. It turns out that it's not just how much you exercise that actually matters , but also how you do it. “Practice” and “deliberate practice” are two different things. When you learn to play a musical instrument, you need to be intentional about how and what you practice. If you're learning a particular song, you won't just repeat it over and over again. Simply losing every time from start to finish is ineffective. Most likely, some parts of the song will be more difficult than others. With deliberate practice, you play four difficult bars over and over again until you get it right. And after that, move on to the next part. The same concept applies in development. No need to fuss with everything. Choose consciously what you want to study. If you feel like you're having trouble writing unit tests, take a tutorial on unit testing with Jest (or any other course on any other testing framework for your language). If you're trying to learn React, read the documentation: React is damn good! Try to understand the basics of the technology your company uses. Get to know AWS, Heroku, or whatever IaaS/PaaS providers you use. If you're a front-end developer, learn the framework or UI library your company uses, such as Angular, React, or Vue. If you work with databases frequently, learn about the differences between SQL and NoSQL and their strengths and weaknesses. In other words, take the time to sharpen the saw. Stephen R. Covey, in his book The 7 Habits of Highly Effective People, lists “sharpening the saw” as the seventh and final skill. He gives a parable about a woodcutter who, with great difficulty, saws the forest with a dull saw, but refuses to sharpen it, because he does not have time for this: he needs to saw. It’s easy to fall into the trap of focusing solely on current tasks during work hours. Your working hours are tracked and paid by your employer. It makes sense that you should spend this time working, right? However, such thinking is shortsighted. It's like cutting a large tree for hours without spending time sharpening the saw. Yes, while you are sharpening your saw, you are not sawing. But the sharper the saw, the more effective your future work will be. As a result, you will be able to cut down a tree in less time than if you had not stopped to sharpen the saw. Good employers recognize this truth and actively encourage employees to spend a few hours a week on focused study. Feel free to spend time reading an article or watching video tutorials during work hours. If you do this to improve your skills, you will become a much more effective developer than if you spent all your working hours just solving production problems.
4. Participate in code reviews
Finally, take part in code reviews. All reputable software development companies have implemented review procedures to maintain the high quality of their code base. Code review is usually viewed as a control practice. This helps ensure that the code uses good design patterns, that the code is clean, that it is properly tested, and that potential problems are avoided. But just as important, code reviews also promote knowledge sharing. When you create a new merge request and ask colleagues to review your code, you're inviting them to give their feedback. This way you can learn about a variety of things. For example, about ways to refactor code, about a data structure or design pattern that is more suitable for your case, about your violation of best practices that you have not yet learned. Code review is one of the best learning opportunities, and it's built right into the development process! Code reviews can be emotionally challenging. People will criticize your creation, many people will be offended by this. Try to remember that even if some of your code is bad, it doesn't make you a bad developer. Get rid of your ego and keep in mind the end goal - producing high-quality code and sharing knowledge. When preparing a merge request, always treat reviewers with respect. They take the time to help you, so make sure you have good commit messages and helpful merge request descriptions. And, of course, check your code yourself before doing this. Nothing irritates a reviewer more than reviewing code without understanding the context and having a lot of commented and poorly formatted code. Don’t be afraid to check the code of other developers, even seniors, yourself. Nobody is perfect, and senior developers make mistakes too. By studying the code of more experienced programmers, you can see how they write and structure it, how they name variables and solve complex problems. By emulating the programming style of your senior colleagues, you can quickly improve the quality of your own code. Google has excellent guidelines for reviewers as well as code authors . I recommend reading both sections.
Conclusion
If you are to remember only one thing from this article, let it be the topic of focused study. Figure out what you need to learn and focus on those things. Engage in deliberate practice. Be curious and try to satisfy your thirst for knowledge. All this will contribute to your long and successful career. Good luck!