Technologies

The Right Tool for the Job

It is important to select the best technologies and tools when building software solutions. There is no such thing as "one size fits all" when it comes to building software, as the best tool for the job relies on a multitude of factors, such as the team building the solution, the existing infrastructure and processes, the hosting environment, the future plan for the software and of course the requirements.

 

Existing Infrastructure & Processes

Assuming that your organization already have inhouse infrastructure and processes with regards to developing and delivering software based products to users, it is essential that the upcoming solution takes these into account, i.e. by adapting the new soluion to the existing environment or adapt and optimize the existing processes and infrastructure to the new solution as it is being developed.

We have had success using tools to automate many of the processes regarding the software development and deployment process. We use tools and processes such as:

Configuration Mgmt.
Configuration management tools like Puppet and Chef can fully automate server setup, resulting in many hours saved when setting up multiple environments, i.e. testing, staging, production. Servers being setup in a matter of minutes also makes it very simple to scale horizontally, by increasingthe number of servers based on the load, while at the same time enforcing a homogeneous hosting environment.
Continuous Integration
Continuous Integration servers like Jenkins and Teamcity, make it simple and effective to execute tests and build releases on every change to the underlying codebase. This ensures higher quality of releases as well as making the build and release process as automated as possible, which helps avoid big bang releases and instead focuses on incremental improvement of the product.
Semantic Versioning
When other teams and systems are dependant on a system, e.g. an API, it is important to manage the changes in the software and communicate these to other parties in a simple and effective manner. We often use a semantic versioning scheme along with descriptive changelists to ensure that the inevitability of changing software does not result in a bad user experience.
Cloud Hosting
Depending on hosting requirements, hosting a system (or parts thereof) at a cloud hosting provider such as Amazon or Linode can provide great cost savings as well as the ability to scale horizontally when needed. That being said it is important to note that cloud hosting is not a magic bullet, just as your physical hosting infrastructure needs attention, so does a cloud hosting infrastructure. Furthermore the potential cost savings of utilizing cloud hosting also depends heavily on the ability to, and ease of, deploying the software, because you have to scale the amount of servers down in times of low activity and up in times of high activity, to achieve any cost savings compared to physical servers.
Open Source Software
When building software, there's often little to no reason to reinvent the wheel, meaning the are a multitude of high quality open source software products, libraries, platforms and frameworks in existence, with very permissive software licenses. We often utilize these when building software solutions simply because they provide great quality at an affordable cost as well as enabling fast time to market when developers who are familiar with the given platform, can focus on providing value to the end-user.

 

The Current & Future Requirements

The fact that requirements change is a well known fact in todays software world, where things usually move relatively fast. Taking that into account from day one, when building a software solution, greatly increases the chance of success, however that is defined for that particular project.

Agile Methodologies
Instead og seeing changing requirements as something scary to be avoided, agile software development methodologies embrace changing requirements as a fact and have processes built from the ground up with that fact in focus. We have had great success in using both Scrum and Kanban for projects. It is of course important to note that the agile methodologies value doing what works as opposed to implementing a process because a book says so. In that way, the agile methodologies themselves are constantly changing.

About

BitMasch provides IT consultancy services to clients all over the world. We are located in Copenhagen, Denmark.

Follow Us

Company

BitMasch ApS
CVR: 32349528

Based on design by Blacktie.co