Imagine living for a few days without water or food. We, as human beings, need water and food to survive. They are essential to our survival.
What about software development teams? What tools are necessary for software development teams to survive? To answer these questions, I’m going to list the tools I’ve used in my 14 year career as a software developer.
1. Planning Tools
All starts with a general idea. Creating an user story is the beginning of the conversation. Jira, Rally, Fogbugz are tools that allow users to create tasks, issues, user stories. Once you have these items created, you need to start planning your work week. With Jira you can create sprints based on your schedule. It allows you to take into consideration your capacity and also the effort needed to complete these tasks. Having these planning tools is a must have tool for any software development team.
2. IDE / Editors
Visual Studio, SublimeText, Textmate, Vim, Emacs, Webstorm, Atom are some of the most popular IDE/text editors. In a Windows shop, Visual Studio is the go-to IDE. In my opinion it is the best IDE I have used. If you are a Ruby developer, Emacs and Vim are popular choices. The most important thing here is to pick the tool that allows you to be more productive.
3. Source Control
Git, Subversion, Team Foundation Server, Mercurial are source control management tools used in software development teams. GitHub is the place to share open source software and it is based on Git. Without having a source control management tool, your team will not be an effective team. My favorite tool in this category is Git. Bitbucket is an affordable solution when it comes to hosting your code in the cloud.
4. Continuous Integration
TeamCity, CruiseControl.NET, Jenkins, Travis CI, AppVeyor are the major players in this category. If you are in a tight budget, give Jenkins and CruiseControl a try. These are open source tools with hundreds of plugins available. If you want a more robust tool, I highly recommend TeamCity for your continuous integration needs.
5. Continuous Deployment
AWS CodeDeploy and Octopus Deploy are tools that our team is currently using to deploy our applications to production. Octopus Deploy is a tool that specialized in .NET deployments. For non-windows projects, Heroku is a popular choice that integrates with Git. To be a successful team, you must automate your deployments. No more manual deployments since they introduce the human factor and usually results in human errors.
6. Documentation
This is not a very popular word for software developers. No one likes to document their software processes but it is a must have tool to succeed. Confluence is a very popular choice when it comes to documentation.
I find it very useful to document your environment. What is the name of your development web server? Where do we host our code? If your team is growing, you need to document these items and encourage team members to contribute back.
Let me know if you have a similar list on your team.