Professional Software Development at Zero Cost
Tags: programming, softwaredevelopment, tools, free
Published: 2022-05-26 12:27:53

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

- [Visual Studio Code](https://code.visualstudio.com)
- [Eclipse](https://eclipse.org)
- [Apache Netbeans](https://netbeans.apache.org)

These IDEs support multiple languages. There are language focused IDEs [IntelliJ Idea](https://jetbrains.com/idea) for Java, [Atom](https://atom.io) for Web, [Codeblocks](https://codeblocks.org) 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

- [GitHub][1]
- [Gitlab][2]
- [Bitbucket](https://bitbucket.com) - Free up to 5 users

The following self-hosted softwares

- [Rhodecode](https://rhodecode.com/) - supports Git, Mercurial & SVN
- [Gitea](https://gitea.io/en-us/)
- [Bazaar](http://bazaar.canonical.com/en/)

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](https://fossil-scm.org/)

## Project Management

Though [GitHub][1] and [Gitlab][2] 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](https://www.atlassian.com/software/jira) - free up to 10 users
- [Jetbrains YouTrack](https://www.jetbrains.com/youtrack/) - free up to 10 users
- [Trac Project](https://trac.edgewall.org/) - Free, Open Source, Self-hosted. Provides issue management, source control integration, wiki etc.
- [Redmine](https://redmine.org/) - 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

- [Slack](https://slack.com)
- [Zulip](https://zulip.com)
- [Zoho Cliq](https://www.zoho.com/cliq)
- [Microsoft Teams](https://teams.microsoft.com)

## 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](https://www.atlassian.com/software/confluence) - Free up to 10 users
- [WikiJS](https://js.wiki/) - Free, Open Source, Self-hosted
- [BookStack](https://www.bookstackapp.com/) - 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!

[1]: https://github.com "Github"
[2]: https://gitlab.com "Gitlab"