To run a professional software development team and have a clean development process requires the following minimal tools. Especially, small teams that write great software could do better if they have these tools when they develop software. That too at zero cost! Yes, totally "Zero" cost.
- IDEs
- Source Control
- Project Management Tools
- Communication
- Knowledge-base
It is great to know that these tools are available for zero cost.
IDE - Integrated Development Environment
Nowadays, all software development companies know the need for IDE. IDEs come with a lot of features that include language support, syntax highlight, code completion, code suggestions, indentation and a lot more. Some of the popular IDEs are
These IDEs support multiple languages. There are language focused IDEs IntelliJ Idea for Java, Atom for Web, Codeblocks for C++ and so on.
Source Control
Source Control is the heart of any development team. It would be surprising if a team did not use one. Unlike the old centralized source control systems like CVS and SVN, the modern distributed source control systems like Git, Mercurial, Bazaar etc., offer a wide array of features that include workflows, feature branches and many more. Those features enable integration with CI/CD tools, containerization etc.
Some of the popular cloud providers of version control are
The following self-hosted softwares
There is one underrated distributed version control that provides a wide array of features - bug tracking, wiki, forum etc - in a self-contained single executable is Fossil SCM
Project Management
Though GitHub and Gitlab provide issue tracking, milestones etc., a complete project management system goes a long way, especially in following well-established methodologies like Agile, Scrum and Kanban. Most are commercial but for small teams they provide a free option. The following are quite popular
- Atlassian JIRA - free up to 10 users
- Jetbrains YouTrack - free up to 10 users
- Trac Project - Free, Open Source, Self-hosted. Provides issue management, source control integration, wiki etc.
- Redmine - Free, Open Source, Self-hosted. Provides issue management, source control integration, wiki, forums etc.
Communication
Remote working and Work-from-home being the norm these days. Having a common communication channel is essential. The following are the popular ones
Knowledge base
Having an organized knowledge base like Project internal documents, Requirements and other related information is crucial to any project. As the project progresses, people don't remember the details where each document is resulting in confusion. To avoid such chaos later, it is better to document and update the details in a documentation system such as a wiki. The source control and the project management systems mentioned earlier provide options for wikis, however, sometimes it is preferable to have them separate. In such cases, the following could be used
- Atlassian Confluence - Free up to 10 users
- WikiJS - Free, Open Source, Self-hosted
- BookStack - Free, Open Source, Self-hosted
Having the right tools is one part of professional software development. The next part is to have the processes right that include having the right coding standards, Source control workflows and branching strategy, Development/Production Environments, Project Management process, Deployment Process and others.
We will see those in the upcoming articles. Happy Software Development till then!