This article will describe tools that can assist in software development and teamwork. Whether we’re working as one of several team members or as a freelancer working on contract, these tools help us stay organized and not lose track during the chaos that can accompany many projects. I can say from experience that in many situations, these tools have been incredibly helpful in software development. I also remember how the lack of the tools listed below, or similar ones, could disrupt simple tasks and extend the work. Optimization, good communication, and a smooth workflow across various tasks are essential.

Table of contents:

  1. Code editor or IDE
  2. Source control system
  3. Continuous integration
  4. Code review
  5. Issue tracking system
  6. Communication
  7. Collaboration tools
  8. Feedback tools
  9. Conclusion

1. Code editor or IDE

And now, a great debate could arise about which editor is better: Vim or Emacs, Emacs or Vim… but that’s not the purpose of this article. Today, there are many paid and free tools on the market that allow for various code manipulations and are flexible in terms of configuration. Some of these tools have even become a standard for programming in certain languages and technologies used in specific types of projects. One thing is certain: a good IDE has an impact on how we deliver software. When we master keyboard shortcuts and useful features, we can significantly boost productivity in our development environment.

A few years ago, Eclipse and NetBeans were popular choices, but today, IntelliJ IDEA has proven to be the best for Java development. Android developers would likely say that Android Studio is the best choice, as it’s actually built on IntelliJ IDEA. Python developers often use PyCharm, while when it comes to Microsoft technologies, the go-to tools are usually Visual Studio or Visual Studio Code.

I still remember the days when Atom or Sublime Text were popular choices for many developers.

The choice of an IDE or editor is often influenced by personal experience. However, it’s worth considering which tools are used by the whole team or those with which we currently have the most experience.

2. Source control system

When working in a team, it’s a good idea to use a version control system. There is a lot of material online about how Git works, so I won’t list it here. One of the best sources is definitely the: Pro Git book. If we want to learn all the advanced features of Git and master this environment, this book is for you and is available online for free

3. Continuous integration

Continuous Integration is a software development practice where team members integrate their work frequently, typically on a daily basis. Each integration is verified by an automated build process that runs all automated tests to quickly identify any integration errors. The main goal of continuous integration is to reduce the risk of integration problems and enable rapid identification and fixing of regression and integration bugs.

One of the most well-known tools of its time was Jenkins. It allows for building projects, running specific jobs, and, when integrated with other tools, enables analysis, testing, compilation, and even deployment to various environments. How does it work? Essentially, it pulls the source code of a project from a repository and creates a fresh build. This can be triggered in several ways typically, by starting a process through a pull request, scheduling automatic builds, or manually initiating one.

When something goes wrong, we get feedback indicating that the build simply failed to build, there are warnings, or the build is unstable. In such cases, developers and often the entire team receive a notification, prompting them to take the necessary steps to fix the broken build.

Jenkins is highly configurable and flexible, allowing for a great deal of functionality, especially with sufficient skill and the right integrations. This approach eliminates the need to transfer files manually via FTP, as was common years ago.

In the era of widespread cloud computing, such as Azure, AWS, and GCP, we can deploy a CI service like Jenkins within such environments, deploying code from Jenkins to appropriate cloud services. Alternatively, we can leverage other tools that offer similar functionalities to Jenkins but are built into specific cloud platforms, such as Azure DevOps, AWS CodePipeline, or Google Cloud Build.

4. Code review

Code review (sometimes referred to as peer review) is a software quality assurance activity in which one or more people examine the source code of a computer program, either after implementation or during the development process. The persons performing the checking, excluding the author, are called “reviewers”. At least one reviewer must not be the code’s author.

Code review differs from related software quality assurance techniques like static code analysis,self-checks, testing, and pair programming. Static analysis relies primarily on automated tools, self-checks involve only the author, testing requires code execution, and pair programming is performed continuously during development rather than as a separate step.

Different developers have varying approaches to code reviews. There are also many tools that support the code review process for different projects across various platforms:

Code review tools. At least some of them ...
Code review tools. At least some of them ...

One effective way to conduct code reviews is to pull the code for a particular change or feature and then discuss it directly with the author. This approach allows for real-time, verbal feedback and often leads to more productive discussions.

Review board example
Review board example

Code reviews keep us updated on the team’s projects and, even more importantly, enhance the quality, maintainability, and stability of our codebase, which directly benefits the end users.

5. Issue tracking system

An issue tracking system is a tool that enables tracking tasks, bugs, and changes that arise during the software development process of a project. Such a tool allows us to establish a structured workflow for our project, providing feedback on the work progress. Typically, it also contributes to maintaining quality. Tools like Jira come with a default workflow when creating a project, but they also offer options for expanding and customizing the workflow with a variety of changes that can help manage project work efficiently. When multiple people work on changes, tasks can be divided, assignments can be set, and specific definitions of done can be established for each task. This helps to isolate work on individual features and prevents team members from interfering with each other’s work. Additionally, Product Owners and Project Leaders can stay informed of the project’s status.

There are many issue tracking systems available on the market, with Jira being one of the most popular, provided by Atlassian. In Jira, users can create backlogs, plan sprints, and set up workflows for various projects within the organization. Additionally, Atlassian offers Confluence, which essentially serves as an internal wiki for a project, enabling the team to create notes and build a shared knowledge base.

6. Communication

Communication is essential. Without good communication, issues will eventually arise that shouldn’t exist in a healthy organization. Communication can, of course, take the standard face-to-face approach, which has its significant advantages. However, in the era of remote and hybrid work whatever you call it, it’s far more common to use messaging apps and video chats. As you can probably guess, there are many tools for this purpose: MS Teams, Slack, Discord, Spark, Zoom.

7. Collaboration tools

Miro is a collaborative online whiteboard platform that allows software development teams to visualize, ideate, and collaborate in real-time.

It provides a virtual canvas where team members can create diagrams, mind maps, wireframes, and other visual representations of their ideas. Miro also offers a wide range of pre-built templates and integrations with popular project management tools like JIRA and Trello, making it an excellent choice for agile teams.

Miro screen example
Miro screen example

Some key features of Miro include:

  • Real-time collaboration
  • Drag-and-drop interface
  • Extensive library of templates
  • Integrations with popular tools

Figma - a tool for collaborative design. I’ve often worked on creating UI on the frontend side, and Figma as a tool has proven very useful, especially when collaborating with a UI/UX specialist. Often, it’s easier to present an application’s workflow during a meeting, where you can quickly and effectively illustrate and explain a graphical approach to solving a problem, whether to business stakeholders or someone just starting to work with the product. This tool is used by both large and small organizations and works excellently as a prototyping tool, turning static graphics into interactive prototypes.

Figma screen example
Figma screen example

I know how to use Figma, although I’m not a specialist in UI/UX design. The collaborative possibilities this tool offers are invaluable to our team. With Figma, our design processes are more efficient, and we can save on production costs.

8. Feedback tools

It’s often a good practice, after a sprint or reaching a certain milestone on the roadmap, to create an anonymous survey about how various things went during the sprint — whether well or poorly. One of the tools for this is SurveyMonkey. It’s a paid solution but can be used to gather feedback.

9. Conclusion

These are just a few tools that can help with managing and working on a project. At first glance, it may seem like extra work, but in reality, these are basic tools that have become standard in the IT industry and in project work. We should focus on project organization; this way, there is less chaos, and we can expect better results.

My site is free of ads and trackers. Was this post helpful to you? Why not BuyMeACoffee


Reference:

  1. You’re probably using the wrong definition of Continuous Integration
  2. Continuous Integration
  3. CI/CD Best Practices for Software Development
  4. Figma
  5. Miro