A company's strength comes from its team and the structure that they have set in place for working on projects throughout its organization. You can hire some of the best people in the world to work for your company, but unless you have a well-oiled machine where everything works to a high level of efficiency, then you are unlikely to get the best out of them. Throughout my career, I have worked for various companies which include startups, small companies, medium-sized companies, and even large ones.
So with all of this experience under my belt, I have been exposed to working in different environments, both fast-paced and slow, with different methodologies and hierarchies for getting the job done. In this article, we‘ll be going through some modern techniques and tools which companies can implement to make their team of developers more efficient and performant.
Onboarding can either set your team up for success or problems down the line depending on how well it’s done. A good onboarding process will have documentation for everything related to the project, which can include best practices for writing code and good ways to raise a pull request (PR). You could take it a step further and have another more senior developer on the team help new juniors set up their development environment and act as a buddy so that they have a point of access whenever they need to troubleshoot something.
Thinking back I can remember some really bad onboarding experiences that I’ve had to endure in the past. In one case we were working with a legacy codebase and the documentation was extremely out of date and a convoluted mess. It was unintuitive, and created a very negative experience full of stress and disbelief at how complicated it was.
The smoother the onboarding process, the happier the developer is going to be. New juniors are always going to be eager to get up and running on a project, so it’s in your team's best interest to get them up and running as quickly as possible to avoid a scenario where they are blocked and unable to contribute. A bad team spirit will deplete morale, so try to avoid doing this.
When it comes to doing project management there are quite a few ways that a company can approach this. The first step would be deciding on a project management methodology. There are different methodologies that can be implemented, but two of the most popular ones are Agile Scrum and Kanban.
Many tools exist to help us manage our teams and projects. Some of the most well-known tools include:
What is Agile Scrum Methodology
The gist of Agile project management is that everything is done in iteration and the work is completed by the teams in timeframes known as sprints. With Agile there is a process that manages a backlog of tickets, the sprints, and reflection in addition to other meetings which are often referred to as ceremonies. Agile sprints can last a few weeks, and prior to a sprint, the team comes together to agree on what features, bugs, or issues are going to be worked on.
There are different ceremonies that have to be attended throughout the duration of a sprint which you will attend as a team. There will be a sprint planning meeting that occurs before the sprint begins and this is where the team will talk about the story points which will be associated with all of the story tasks with a maximum number assigned for the sprint. With this number in mind, your team will be able to see how achievable it is to complete all of the tasks during the current sprint.
In some cases, there could be additional backlog refinement meetings which could happen during a sprint where it is determined if some tickets need to have their story points changed, or splitting bigger stories into smaller stories if they are too challenging for example. Agile sprints are designed to improve the next sprint by learning from mistakes and using the iteration to boost productivity and performance while adding more significance to the client.
So let's break down Agile Scrum and see how it looks in steps:
The project team lead goes through the backlog of tickets and decides which ones are going to be worked on during the sprint.
Right at the beginning, the team will work on sprint planning where they will discuss which tickets are going to be in the current sprint. This also gives the team a chance to assign story points which are essentially a way to give a difficulty rating to each task so that everybody is aware of how long it could potentially take.
Throughout the sprint, teams will have meetings (usually a daily standup) which happens first thing in the morning before you start working on your tasks. So you go around the team and everybody gets a chance to say what they did yesterday, what they will do today, and if there are any blockers that are causing them issues with the work.
When the sprint comes to a close, there is a further meeting called a sprint retrospective where the whole team comes together and talks about what went well and what they could have done better. This cycle repeats for every sprint.
What are Kanban Boards
Kanban Boards are great for having a visual view of your project management structure. They display information in columns which show each stage of a process. In their most basic form, you only need 3 columns. To Do, In Progress and Done. On GitHub, you can create a simple Kanban project board for your project with various tasks, issues and pull requests for each item.
It gives you a top-down overview of the project and you are able to see which team members are working on a task and their progress. Trello is probably the most popular example of an application that uses Kanban Boards.
Agile Scrum tends to be the preferred choice when choosing a methodology, so the final step would be figuring out which tools you want to use. Nonetheless, using a system that has tickets like Jira is an accepted standard and these tools share many similarities, so there is nothing stopping you from using more than one if it works for your use case.
The next area that needs to be covered is collaboration and communication between team members, both within the software development division and with external divisions. It’s highly important for software engineering teams to have soft skills such as strong communication. Additionally, having the right tool can create a significant difference in the way that team members interact with each other. These days it’s quite common to be working in a remote environment, so it’s even more essential that your company uses tools that are very good at messaging and video calls.
Some of the more popular tools in this category include:
The Google and Microsoft ecosystem is huge and the products and services included in their packages create a fierce rivalry and also an opportunity to choose the right set of tools for your company. You would need to choose between Google Docs, Microsoft Office, Outlook, Gmail, and their corresponding messaging tools like Google Meet, and Microsoft Teams.
As an alternative, Slack and Discord offer options for setting up a messaging structure as well which can even work with your CI/CD pipeline.
Creating a high-performance and welcoming environment for your team of developers does not need to be difficult to achieve. Even if it seems that you need to put in a lot of time upfront, by helping your developers thrive, you will set your organization up for long-term success. These days the tooling is fairly good, and the most important aspect is ensuring that the onboarding process covers all of the details so that your developers understand how to use the system.