Release Management as a Competitive Advantage

“Delivery focussed”, “Getting the job done”, “Results driven”, “The proof is in the pudding” – we are all familiar with these phrases and in Information Technology it means getting the solutions into operations through effective Release Management, quickly.

In the increasingly competitive market, where digital is enabling rapid change, time to market is king. Translated into IT terms – you must get your solution into production before the competition does through an effective ability to do frequent releases. Doing frequent releases benefit teams as features can be validated earlier and bugs detected easily. The smaller iteration cycles provide flexibility, making adjustments to unforeseen scope changes easier and reducing the overall risk of change.

IT teams with well governed agile and robust release management practices have a significant competitive advantage. This advantage materialises through self-managed teams consisting of highly skilled technologist who collaborative work according to a team defined release management process, that continuously improves through constructive feedback loops and corrective actions.

The process of implementing such agile practices, can be challenging as building software becomes increasingly more complex due to factors such as technical debt, increasing legacy code, resource movements, globally distributed development teams, and the increasing number of platforms to be supported.

To realise this advantage, an organisation must first optimise its release management process and identify the most appropriate platform and release management tools.

Here are three well known trends that every technology team can use to optimise delivery:

1. Agile delivery practises – with automation at the core 

So you have adopted an agile delivery methodology and your re having daily scrum meetings – but you know that is not enough. Sprint planning as well as review and retrospection are all essential elements for a successful release, but in order to gain substantial and meaningful deliverables within the time constraints of agile iterations, you need to invest in automation.

An automation ability bring measurable benefits to the delivery team as it reduces the pressure on people in minimising human error and increasing overall productivity and delivery quality into your environment that shows in key metrics like team velocity. Another benefit automation introduces is consistent and repeatable process, enabling easily scalable teams while reducing errors and release times. Agile delivery practices (see “Executive Summary of 4 commonly used Agile Methodologies“) all embrace and promote the use of automation across the delivery lifecycle, especially in build, test and deployment automation. Proper automation support delivery teams in reducing overhead of time consuming repetitive tasks in configuration and testing so them can focus on the core of customer centric product/service development with quality build in. Also readHow to Innovate to stay Relevant“; “Agile Software Development – What Business Executives need to know” for further insight in Agile methodologies…

Example:

Code Repository (version Control) –> Automated Integration –> Automated Deployment of changes to Test Environments –> Platform & Environment Changes automated build into Testbed –> Automated Build Acceptance Tests –> Automated Release

When a software developer commits changes to the version control, these changes automatically get integrated with the rest of the modules. Integrated assembles are then automatically deployed to a test environment. If there are changes to the platform or the environment, the environment gets automatically built and deployed on test bed. Next, build acceptance tests are automatically kicked off, which would include capacity tests, performance, and reliability tests. Developers and/or leads are notified only when something fails. Therefore, the focus remains on core development and not just on other overhead activities. Of course, there will be some manual check points that the release management team will have to pass in order to trigger next the phase, but each activity within this deployment pipeline can be more or less automated. As your software passes all quality checkpoints, product version releases are automatically pushed to the release repository from which new versions can be pulled automatically by systems or downloaded by customers.

Technologies:

  • Build Automation:  Ant, Maven, Make
  • Continuous Integration: Jenkins, Cruise Control, Bamboo
  • Test Automation: Silk Test, EggPlant, Test Complete, Coded UI
  • Continuous Deployment: Jenkins, Bamboo, Prism

2. Cloud platforms and Virtualisation as development and test environments

Today, most software products are built to support multiple platforms, be it operating systems, application servers, databases, or Internet browsers. Software development teams need to test their products in all of these environments in-house prior to releasing them to the market.

This presents the challenge of creating all of these environments as well as maintaining them. These challenges increase in complexity as development and test teams become more geographically distributed. In these circumstances, the use of cloud platforms and virtualisation helps, especially as these platforms have recently been widely adopted in all industries.

Automation on cloud and virtualised platforms enables delivery teams to rapidly spin up/down environments optimising infrastructure utilisation aligned with demand while, similar to maintaining code and configuration version history for our products, also maintain the version history of all supported platforms. Automated cloud platforms and virtualisation introduces flexibility that optimises infrastructure utilisation and the delivery footprint as demand changes – bringing savings across the overall delivery life-cycle.

Example:

When a build and release engineer changes configurations for the target platform – the operating system, database, or application server settings – the whole platform can be built and a snapshot of it created and deployed to the relevant target platforms.

Virtualisation:The virtual machine (VM) is automatically provisioned from the snapshot of base operating system VM, appropriate configurations are deployed and the rest of the platform and application components are automatically deployed.

Cloud:Using a solution provider like Rackspace to deliver Infrastructure-as-a-Service (IaaS) and Platform as a Service (PaaS), new configurations can be introduced in a new Rackspace instance is produced, instantiated, and configured as a development and test environment. This is crucial for flexibility and productivity, as it takes minutes instead of weeks to adapt to configuration changes. With automation, the process becomes repeatable, quick, and streamlines communication across different teams within the Tech-hub.

3. Distributed version control systems

Distributed version control systems (DVCS), for example GIT, Perforce or Mercurial, introduces flexibility for teams to collaborate at the code level. The fundamental design principle behind DVCS is that each user keeps a self-contained repository with complete version history on one’s local computer. There is no need for a privileged master repository, although most teams designate one as a best practice. DVCS allow developers to work offline and commit changes locally.

As developers complete their changes for an assigned story or feature set, they push their changes to the central repository as a release candidate. DVCS offers a fundamentally new way to collaborate, as  developers can commit their changes frequently without disrupting the main codebase or trunk. This becomes useful when teams are exploring new ideas or experimenting as well as enabling rapid team scalability with reduced disruption.

DVCS is a powerful enabler for the team that utilise an agile-feature-based branching strategy. This encourages development teams to continue to work on their features (branches) as they get ready, having fully tested their changes locally, to load them into next release cycle. In this scenario, developers are able to work on and merge their feature branches to a local copy of the repository.After standard reviews and quality checks will the changes then be merged into the main repository.

To conclude

Adopting these three major trends in the delivery life-cycle enables a organisation to imbed proper release management as a strategic competitive advantage. Implementing these best practices will obviously require strategic planning and an investment of time in the early phases of your project or team maturity journey – this will reduce the organisational and change management efforts to get to market quicker.

The Rise of the Bots

Guest Blog from Robert Bertora @ Kamoha Tech – Original article here

The dawn of the rising bots is upon us. If you do not know what a Bot is, it’s the abbreviated form for the word Robot, and it is a term that is now commonly used to describe automated software programs that are capable of performing tasks on computers that traditionally were reserved for human beings. Bots are software and Robots are Hardware, all Robots need Bots to power their reasoning or “brain” so to speak. Today the Golden Goose is to build Artificial Intelligence (commonly known as AI) directly into the Bots, and the goal is, for these Bots to be able to learn on their own, either from being trained, or from their own experience of making mistakes. There is after all no evidence to suggest that the human mind is anything more than a machine, and therefore no reason for us to believe that we can’t build similar intelligent machines incorporating AI.

These days Bots are everywhere, you may not realise it so here are a few examples that come to mind:

Trading Bots: Trading Bots have existed for many years, at least 20 years if not more and are capable of watching financial markets that trade in anything from currency to company shares. Not only do they watch these markets, but they can perform trades just like any other Human Trader. What is more, is that they can reason out, and execute a trade in milliseconds, leaving a Human Trader in the dust.

Harvesting Bots were originally created by computer gamers who were tired of performing repetitive tasks in the games they played. Instead of sitting at their computer or consoles for hours killing foe for resources such as mana or gold, one could simply load up a Bot to do this tedious part of gameplay for you. While you slept, the Bot was “harvesting” game resources for you, and in the morning your mana and gold reserves would be nicely topped up and ready for you to spend in game on more fun stuff, like buying upgraded weapons or defences!

Without Harvesting Bots and their widespread proliferation in the gaming community we are all very unlikely to have ever heard of Crypto Currencies, you see it can be argued that these would never have been invented in the first place. Crypto Currencies and Block Chain technologies rely in part on the foundations set by the computer gaming Harvesting Bots. The Harvesting Bot concept was needed by the Crypto Currency Pioneers who used it to solve their problem of mimicking the mining of gold in the real world. They evolved the Harvesting Bot into Mining Bots which are capable of mining for crypto coins from the electronic Block Chain(s). You may have heard of people mining for Bitcoins and other Crypto coins, using mining Rigs and the Bots; the Rigs being the powerful computer hardware they need to run the Mining Bots.

What about Chat Bots? have you ever heard of these? These Bots replace the function of humans in customer service chat rooms online. There are two kinds of Chat Bots, the really simple ones, and the NLP (Neuro Linguistic Programming) ones which are capable of processing Natural Language.

Simple Chat Bots follow a question, answer, yes/no kind of flow. These Chatbots offer you a choice of actions or questions that you can click on, in order to give you a preprogramed answer or to take you through a preprogramed flow with preprogramed answers. You may have encountered these online, but if not, you will have certainly encountered this concept in Telephone Automation Systems that large companies use as part of their customer service functions.

NLP Chat Bots are able to take your communication in natural language (English, French etc..), making intelligent reasoning as to what you are saying or asking, and then formulating responses again in natural language that when done well may seem like you are chatting with another human online. This type of Chatbot displays what we call artificial intelligence and should be able to learn new responses or behaviours based on training and or experience of making mistakes and learning from these. At KAMOHA TECH, we develop industry agnostic NLP Bots on our KAMOHA Bot Engine incorporating AI and Neural Network coding techniques. Our industry agnostic Bot engine is used to deploy into almost any sector. Just as one could deploy a human into almost any job sector (with the right training and experience) so too we can do this with our industry agnostic artificially intelligent KAMOHA Bots.

Siri, Cortana and Alexa are all Bots which are integrated to many more systems across the internet, giving them seemingly endless access to resources in order to provide answers to our more trivial human questions, like “what’s the weather like in LA?”. These Bots are capable of responding not only to text NLP but also to voice natural language inputs.

Future Bots are currently being developed, Driverless vehicles: powered by Bots, any Robot (taking human or animal form) that you may see in the media or online in YouTube videos are and will be powered by their “AI brain” or Bot so to speak. Fridges that automatically place your online grocery shopping order – powered by Bots, buildings that maintain themselves: powered by Bots. Bot Doctors that can diagnose patients, Lawyer Bots, Banker Bots, Bots that can-do technical design, image recognition, Bots that can run your company? … Bots Bots Bots!

People have embraced new Technology for the last 100 years, almost without question, just as they did for most of Medical Science. Similar to certain branches of Medical Science, Technology has its bad boys though, that stray deeply into the Theological, Social, Moral and even Legal territories. Where IVF was 40-50 years ago, so too are our Artificially Intelligent Bots: pushing the boundaries, of normalities and our moral beliefs. Will Bots replace our jobs? What will become of humans? Are we making Robots in our own image? Are we the new Gods? Will Robots be our slaves? Will they break free and murder us all? A myriad of open ended questions and like a can of worms or pandora’s box, the lid was lifted decades ago. Just as sure as we developed world economies and currency in a hodgepodge of muddling through the millennia we are set to do the same with Bots; we will get there in the end.

It’s not beyond my imagination to say that if Bots replace human workers in substantial volume, then legislation will be put in place to tax these Bots as part of company corporation tax, and to protect human workers it is likely that these taxes will be higher than that of humans. If a bot does the work of 50 people? How do you tax that? Interesting times, interesting questions. My one recommendation to any one reading this, is do not fear change, do not fear the unknown, and have faith in the Human ability to make things work.

Love them or hate them Bots are on the rise, they will only get smarter and their usages will be as diverse as our own human capabilities. Brave new world.

Click on the image below to see our bots: