Like a good sculpture or carpenter, we choose our software development tools with care and consideration. We use tools such as Balsamiq Mockups and Draw.io to create illustrative wireframes that convey an overall impression of the software’s features, functionality, and basic navigation.
We tend to write code in Integrated Development Environments (IDE) dedicated to various programming languages such as PhpStorm for PHP, Eclipse for Java and Visual Studio for .NET, for example. Design, documentation, tracking, development, build, analysis, deployment, and maintenance can all be done from within an IDE.
The keystone of all successful software development is great project management. We use JIRA to help us plan, track, manage workflows and report on your project’s progress. Like the JIRA motto says, “The best software teams ship early and often“. Slack, the messaging, collaboration and productivity tool, is our first choice for team communications.
When it comes to storing the source code and version control we use the industry-standard Git VCS and store the source code on private, secure Github and GitLab repositories. To ensure a smooth software deployment regardless of the size, complexity, and scale of a project we use continuous integration and delivery tools such as Jenkins and Travis CI.
Establishment of the development environment for a larger software project can be cumbersome and time-consuming. We use Docker to maintain development environments for all the involved technical people. VirtualBox is also a very handy tool, as not all technical people in our team use UNIX based OS’es for their daily tasks.
As part of our overall Agile development methodology, our DevOps tools and practices mean continuous software delivery, shorter time to market, more robust, stable software. Finally, we work with familiar hosting providers like AWS and DigitalOcean to provide our clients with fully customised, highly scalable solutions.
Kubernetes in combination with OpenShift & Docker become handy when we need to provide an ecosystem which can be deployed and scaled quickly.
Whenever a software project requires lots of scheduled tasks (cron-jobs) to be executed, we entrust this task to Rundeck – a scheduling system which can be easily perceived and configured even by non-technical people.
When it comes to monitoring, we choose NewRelic, Tideways or Zabbix, depending on monitoring requirements and available maintenance budget.
When keeping application logs in files isn’t an option, we set up Graylog or ELK stack to accumulate all the output from the systems, to be able to find and explore activities efficiently in a vast amount of log data.