No formulas

Celfocus Agile and DevOps

Call To Science — Nov 2017

A People-Centric and disciplined approach to continuously deliver value to customers in an agile way

The business world is changing at an accelerating pace: it demands more and more effectiveness (solving customer needs and seizing business opportunities) and a relentless focus on efficiency (technical excellence, higher quality, safer and shorter time to market). Use technology to solve complex problems in a more efficient way.

Many ideas were experimented with success, achieved maturity and started growing organically in Big IT companies (Google, Microsoft, Facebook, Amazon, Uber, etc…) making them much more competitive and innovative in comparison to others. Ideas such as Agile development, DevOps, Continuous Integration, Continuous Delivery, Infrastructure as Code, Test Driven Development, Cloud come with a common objective:

  • For Developers: To get their code out quickly and correctly to the people who use it, in safe, small, incremental steps.
  • For Business: To get their ideas out quickly and correctly to the customers who use it and have a faster return of investment.
  • For Customers: to get real value every time they need it.

Celfocus’ Agile and DevOps Transformation is starting and we aim to achieve a level of maturity, grow organically to encompass several parts of these techniques and methodologies in a flexible and smooth way. The sentence that we choose to define our Celfocus Agile and & DevOps way is “A People-Centric and disciplined approach to continuously deliver value to customers in an agile way.

For many years, Celfocus followed a project based approach using Waterfall. Our goal is not to stop doing it, we want to have a strong support of a dual delivery model (waterfall and Agile) in order to adapt the best process according to the context. There’s no one model fits all, what we do well we need to preserve and keep evolving. Agile is not new at Celfocus, several initiatives have already taken place in the past, examples like EOL or GCC provide us with best practices and lessons learned to apply for future projects. However, if we want to create a supportive culture of agile we need to expand the knowledge and share these examples across the organisation creating a learning organization.

So first let’s clarify in a simple sentence the meaning of each technique and methodology:

So what is Agile and DevOps?

Agile is focused on value. It’s a collaboration methodology, with a cross functional team that works on a very interactive (constant inspect and adapt work) and iterative (small and often development cycles) way to deliver the highest value to customers in the shortest time possible. Within Agile there are several frameworks such as Scrum, Kanban, RAD, AUP, ASP, etc.

In the beginning of agile, teams missed the “last mile”(put in production as fast as is developed). Several techniques and operations were developed to make the entire process more efficient. Joining Agile with these techniques was named DevOps, we can name it Agile 2.0 as well ☺︎

DevOps combines the cultural and technical philosophies of software development, quality assurance, and IT/InfoSec operations into a single system of systems that is managed as a whole. The purpose is to deliver applications and support services at a much higher velocity and efficiency.

CI (Continuous integration): Software development practice where team members integrate their work frequently, leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.

Continuous Delivery: is the ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way.

Cloud: Type of Internet-based computing that provides shared computer processing resources and data to computers and other devices on demand.

Infrastructure as a service (IaaS): online services that abstract the user from the details of infrastructure like physical computing resources, location, data partitioning, scaling, security, backup etc.

Platform as a service (PaaS): development environment to application developers. Cloud providers deliver a computing platform, typically including operating system, programming-language execution environment, database, and web server.

Test Driven Development (TDD): TDD is a software development process that relies on the repetition of a very short development cycle: Requirements are turned into very specific test cases, then the software is improved to pass the new tests, only.

So what changes?

Culture: Change our attitude

Code: Change the way we code

Normally when we hear about DevOps, we think about tools, yes it’s important but most importantly are the people. This is a cultural change and if we aren’t open to change or a new collaboration model, there’s no Agile or DevOps.

Benefits

  • Faster time to market - When teams work together to automate the build and deployment, environment provisioning, and regression testing processes, developers can incorporate integration and regression testing into their daily work and completely remove these phases.
  • Low risk releases - make software deployments painless and achieve zero-downtime deployments that are undetectable to users.
  • Higher quality - When developers have automated tools that discover regressions within minutes, teams are freed to focus their effort on user research and higher-level testing activities such as exploratory testing, usability testing, and performance and security testing. Ensured quality is built into products and services from the beginning.
  • Better products. Collect feedback from users throughout the delivery lifecycle based on working software allows us to test ideas with users before building out the whole feature and avoid a significant part of the features normally built that delivers zero or negative value to business.
  • Happier teams. Techniques such as continuous delivery makes releases less painful and reduces team burnout. Furthermore, when we release more frequently, software delivery teams can engage more actively with users, learn which ideas work and which don’t, and see first-hand the outcomes of the work they have done. By removing the low-value painful activities associated with software delivery, we can focus on what we care about most—continuously delighting our users.
  • Lower costs - By investing in build, test, deployment and environment automation, we substantially reduce the cost of making and delivering incremental changes to software by eliminating many of the fixed costs associated with the release process. Delivering SW with higher quality will reduce the time spent on work (new feature) than rework (bug fixing).

Agile Cycle Roles, Artefacts and Events

To see the meaning of each item, please consult our guide here.

So, what is Celfocus doing?

Being part of an IT organization means we hear the word “transformation” daily, perhaps even more frequently. Like other well-worn terms such as “Digitization,” “DevOps,” or “Agile,” transformation can mean a lot of different things depending on the specific organization, the team, or the individual person saying or hearing it. At its core, though, transformation is not an empty concept — far from it! And for us it means Creating a Supportive agile culture in Celfocus evolving from a “doing agile” in isolated projects to “being agile”.

  • To achieve that we need to develop a standard behaviour of continuous learning (of competences, new ways of working, etc.) and improve (of processes, systems, etc…) to become more proactive and responsive to outpace the competition through continuous innovation and enable sustainable growth.
  • For any transformation we need to have a Core team with knowledge and motivation to break barriers and engage others to achieve a moment where Agile and DevOps grown organically. Meet the team here.
  • Formula of success:
    • Define Pre-sales strategy with right messages about the agile/devops model, benefits, teams, commercial model and technology.
    • Design Assessment model during setup phase of the projects focusing on Technology, Processes and Organization/Culture. Identify how agile client wants to be vs how agile client can be, compare both, identify the gaps and define a strategy plan to have Celfocus team working on agile collaborative model with our clients since day one, using best SW practices and technologies(automations) and define a vision/roadmap on how to reach a higher level of maturity and scale to multiple teams/organization.
    • Develop Celfocus Agile Adoption framework. We are collecting best practices from Scrum, Kanban and Lean to design the most simply and efficient model.
    • Perform Assessment of teams: Coach teams in place to adopt the best agile practices and achieve higher level of maturity. Measure success, identify improvement and never let the team slowdown in terms of ambition.
    • Create a learning organization: Develop an internal training program focus on topics regarding new ways of creating and delivering value:
        • Foundation (Agile, DevOps, Engineering, …).
        • Organizational Agility (towards an evolutionary learning org).
        • Cultural Change (towards collaboration).
        • Technical Excellence (CI, CD, Automation, etc.)
        • Strategy and Sales.
      • The content should be contextualized according to the target (Executives, Managers, Developers, Operations, Testers, Analysts, Project Managers, etc.)
      • Workshops, coaching, boot camps are part of the activities that we would like to promote
      • Invite Celfocus employees to be volunteers in this transformation, helping us share the knowledge with more people as fast as possible.
    • Spread the Knowledge: invest on communication creating a centralized confluence space for Agile and DevOps. Share Celfocus agile guide, Celfocus Agile successes and lessons learn, best practices from market, new technologies, events (meetups, conferences, summit, etc.). By the way our community space is live and has lots' information on Agile and DevOps, consult it here.
    • Lead experimental projects regarding innovation
  • Projects in Place:
    • VF-IE Siro is our first pilot to achieve DevOps.
    • VF-IE Fixed IT is a DevOps to Be.
    • DevOps Internal team responsible for the development of Celfocus Continuous integration/delivery Framework.
    • Vodafone Germany new project for Digital Consumer and for Enterprise will adopt Agile.
    • Several other units such as Unified Communications, Online, IoT, Integration are taking steps to become agile and some of them are already doing agile today.


Frequently asked questions

What’s the differences between Agile (Value driven) and Waterfall (Plan driven)?

When should we do Agile or waterfall?

First items to assess:

  • Inappropriate Need for Agility: This refers to situations where, from a business or software development perspective, adopting agility does not add any value.
  • Absence of Executive Support: If committed support from executive sponsors is absent, then effective and substantial change in the organization is unlikely to occur.
  • Lack of sufficient funds to support agile adoption effort (Training, hiring, physical workspace, tools etc.).
  • Type of projects:

Cynefin is a decision framework that recognises the causal differences that exist between systems, proposing new approaches to decision making in complex social environments. Agile is more adequate for Complex problems but also fits well with complicated. Waterfall is more oriented for complicated and Simple problems. There no best methodology to cover chaotic problems!!



Did you know?

  • Celfocus Continuous integration/delivery framework is one of the most advanced and completed that we are seeing in the market. It’s being used for automation testing in more than 10 projects and uses 16 open source tools (SoapUI, Restassured, selenium, cucumber, Junit, Apium, browsermob proxy, docker, Jenkins, Nexus, Maven, Slack, Bitbucket, SonarQube, Jira and Ansible).
  • Amazon does more than 100 thousand deployments in production per day.
  • Facebook’s new features are already in production at least 6 months prior to being released to clients. They use Canary deployment process to have zero downtime.
  • Microsoft evolved from a non-open source culture to the biggest IT company using and promoting Open Source.
  • Capital One(Banking), after a transformation program, is now recognized as the Netflix of banks due to their capacity of innovation and provide fast value to customer.
  • Netflix has a “simian army” that means an “army of robots” testing failures of their systems using automation. During the last failure of Cloud AWS, where Netflix services are hosted, Netflix customers felt no downtime of their service.
  • Google implemented Blue/green pattern as deployment process to have zero downtime and no roll backs.

Just bear in mind: there isn’t a magic formula. It’s all about collaboration, continuous, daily improvement—the constant discipline of pursuing higher performance.

References:

The difference between management and leadership