Software development is rarely as simple as opening an editor and writing some code, even when it's just one person working on the application. Setting up a new team or project can be complicated and time-consuming.
Before you begin, you will need to make sure you have a robust and reliable development environment in place that includes all of the tools and resources you'll need not just to write code, but to make sure your team works efficiently. Every software development project will require tooling beyond the specific technology stack. These tools will help you plan, collaborate, provide source control, allow issue and feature tracking, and support the build and test workflow.
In the past, these areas have each required a manual process that is often fragile, slow, and prone to error. Or maybe you've used expensive and complex tools with ongoing updates and maintenance and that keep your project resources in application silos. Custom tools usually end up being more expensive, resource-intensive, and distracting. You should be writing application code, not tooling.
This article takes a look at each step in the development process. We'll consider which tools a team needs to be productive today, along with setup and integration considerations.
Planning and Task Tracking
In the planning process, product features are proposed, investigated, and assigned to someone to implement. Doing this manually with a spreadsheet or other document may work at a very small scale, but this approach breaks down when team or product complexity grows. The initial requirements are captured, but they are not linked to features and work items.
Once the team is up and running, there will be a flow of changes, new features, and bugs that need to be documented and tracked. Many teams use tools like Asana or Jira. Jira can link up issue documentation and status code changes as long as you're working with Bitbucket — both products are owned by parent company Atlassian. Asana, Jira, and similar tools are feature-robust, but can seem overwhelming to many teams, who feel like they need to invest more time in learning the tools and getting set up than actually coding.
The Git style of distributed changes has taken hold industry-wide over the past 10-15 years. You can now host a shared Git repository or sign up for one of many Git online repositories (like GitHub, GitLab, or Bitbucket, for example). Source control is another example where each developer is required to register an account and gain authorized access to the source repositories.
Git-based source control is popular, but there is quite a steep learning curve. That said, Git easily supports single developers working on their own projects and ramps up to support very large teams and complicated projects. Git can also be integrated into many other aspects of your build and deploy systems.
Unfortunately, Git doesn't integrate with the rest of your workflow tools out of the box. For example, it does not tie directly to your ticketing system, Kanban board, test, build, or other systems. You'll typically have to set that up and maintain it yourself.
Continuous integration and deployment
Continuous integration (CI) and continuous deployment (CD) are major components in the efficient operation of a modern software development team. DevOps is the concept of grouping and automating oversight of the software build, test, and deployment process. The idea is to make these processes straightforward, consistent, repeatable, and useful to the team.
Tools such as Jenkins, Bamboo, and TeamCity are commonly used to help automate this process. They are fantastic tools but must be integrated and monitored with your source control. This integration takes time and some experimentation. Development time spent setting up this type of integration is valuable.
DevOps workflows ensure an orderly process as ideas turn into features, as features are implemented in software, and software is delivered to customers. In some cases, this means written procedures that are time-consuming to keep track of and follow, increasing new team member training time and allowing the possibility of user error.
For example, to release a source change to the deployment system, a few things might be required. First, all automated tests must run and pass. Second, at least two reviewers must approve the changes. At this point, the workflow would detect that all requirements are satisfied. At this point, the code will be released into the automated deployment system.
This could be a manual checklist process, but DevOps teams are increasingly able to create rules-based automated workflows that take human error out of the process and adding peace of mind.
Setting up the environment for a software development team can take weeks or months — and often ends up being an ongoing work item.
An alternative to all that effort is ossum.cloud. Ossum streamlines software development, from idea to release. The UI is thoughtfully implemented to minimize setup. Features are obvious, without a lot of training or digging through documentation.
Ossum provides flexible and configurable Kanban planning, tracking, workflow management, source control, and integrated DevOps with your favorite CI/CD tools like Jenkins, TeamCity, and Bamboo.
Try the “Totally Ossum” subscription free for 30 days right now! https://www.ossum.cloud/accounts/sign-up-trial