When you work with a team of programmers, anything that can help the process run smoothly and well is worth a lot of time and money. We will discuss a few different tools that can help your team get more organized.
Hosted Git solution (Gitlab, GitHub, Etc.)
Of course, if you are working with others, you will need some form of source code control that is accessible to everyone. But when it comes to choosing the right one for your team, there are a few options to consider.
First, there are GitHub, which is by far the most common Git provider. It’s great and offers a ton of features, but it focuses more on open source public collaboration rather than the needs of private teams. GitHub offers unlimited private rest for free since last year, which will suit most small projects. If you have to host it yourself or need enterprise features, you can pay for GitHub Enterprise, which costs $ 21 per user, per month, with a minimum of 10 users.
If you want something more focused on private teams, you may want to consider GitLab. In addition to being a complete hosted Git solution, it also provides many tools for teams wishing to adopt a DevOps workflow. GitLab issues is a basic Kanban board, like Jira, which is used to track issues. GitLab CI can run automated builds and tests similar to Jenkins, a crucial part of a CI / CD pipeline.
You can also run the free and open-source community edition of GitLab on your own servers, under your own domain. If you want to pay for more features, the basic version is $ 4 per user, per month, with the standard version at the same price as GitHub at $ 19 per user, per month.
These are the two big ones, but there are many other solutions. Atlassian’s BitBucket integrates very well with Jira and Confluence, and AWS CodeCommit works smoothly with their CodePipeline CI / CD solution.
Problem tracking (Jira)
Software development is complicated and without direction, it can be very difficult to work together. Having some sort of problem tracking is a necessity to do anything.
The most popular and widely used solution for this is Jira from Atlassian Software. Jira is a Kanban board – basically, individual “problems” are represented by cards in a list. Several lists can be found on a table, such as Backlogged, In Progress and Done. The cards move from list to list according to their stage of development. Problems can be commented on, linked to other problems, sorted into large feature blocks and assigned to other team members. You can read our guide to use it here to learn more.
If you don’t want to pay for Jira, GitLab problems are a free alternative, and Trello is a simple Kanban solution that isn’t just for software development.
Automated CI / CD (Jenkins, CodePipeline)
Continuous Integration / Continuous Deployment (CI / CD) is the process of releasing new code updates very often, usually at least once a day. This process is very difficult to follow without some sort of automation to handle the boring parts, like creating and testing new versions and sending updates to your servers.
Jenkins is an automation server, originally written for Java. It can do many things, but it is commonly used to automate builds and tests. With plugins, it can be extended to automate deployment on your servers.
If you’re on AWS, you can use their own CI / CD pipeline, called CodePipeline. This automates each stage of development, from source control, to construction and testing, and to deployment to various AWS services, such as EC2, ECS and even Lambda.
File and document sharing (G Drive and Confluence)
It is an important but often overlooked element of a team’s toolbox. You should not rely on sending emails to each person for each document. Instead
For many people, Google’s G Suite (specifically Google Drive) works well for this. If you don’t want to pay for the accounts of everyone on your team, a shared Google Drive folder with their personal emails will work fine. Dropbox is another solution, also offering a business version for paying customers.
If you’re looking for something a little more professional, you may want to Confluence, from Atlassian. Confluence is a collaborative workplace for working together on documents, much like G Drive, but for businesses. The best part is, like Jira, it’s free for up to 10 users, and costs $ 5 per user, per month, after that.
Docker is a tool for running applications inside containers, which bundle all the dependencies and code your application needs to run inside a single, easily distributable file.
The advantage of running your application on Docker is that your development environment will be exactly the same as your production environment and exactly the same as everyone else’s development environment, which alleviates the problem “it is broken on my machine! “
Docker also facilitates deployments. Since you don’t have to worry about the server it is running on, you can run Docker on anything, including services like AWS Elastic Container Service, which run containers without provisioning the servers. If you have to manage a whole fleet of containers, orchestration tools like Kubernetes can also handle this.
It won’t be for everyone, as it requires teaching all of your developers how to actually use Docker, and it can certainly get complicated. But, the benefits for most teams will far outweigh the initial headache, and that is at least something to consider. You can read our guide on the packaging of your application with Docker to start.