4 Steps to Innovate Faster by Building a World-Class Technology Organization - Veejay Jadhaw

Welcome!

Throughout this article you will find embedded links referencing my previous articles, on various topics such as Robotic Process Automation, Artificial Intelligence, Big Data, Cloud, SaaS, and how to approach building a Digitally Connected Software Platform.  Please do take a moment to read those, as they would provide more context.

Below is my point of view on how to enable businesses to improve speed to market by building a world-class technology organization. 

I have prioritized a 4 Key Step Framework


1 - Lead by Example, build a great team, culture and Implement Key Metrics: As a leader, it is important to lead by example and foster a culture of innovation. Secondly, as the saying goes, "if you don’t measure it you can’t manage or improve it".  Leveraging metrics and making decisions based on data driven hypotheses is a very critical component of building a world-class engineering organization. In today’s enterprises, tools and technology isn’t enough. Developers need to take full ownership of the development, testing, automation tools and, most importantly, building operational capabilities into the pipeline so the move to production is easier.  This requires collaboration, open dialog, and as Jeff Bezos says, “Disagree and Commit”.  Building this type of a culture will foster innovation, open dialog, break silos, and most importantly, it will build the foundation of your technology organization.  In terms of metrics, I would recommend defining, implement and tracking metrics in the following categories: Velocity, Productivity, Security, Quality, Complexity, Predictability and Customer Satisfaction.

 

2 - Architecture & Design: The world is transitioning towards open platforms underpin with Big Data, Machine Learning Analytic and Cloud / SaaS.  As a first step, I would recommend building your platform strategy.  My recent article on this topic will at least get you thinking about a digitally connected platform strategy approach From Architecture standpoint, while there are many different types of architectures and design patterns you could use, I am going to use a micro-services based architecture and containers as an example to build and ship quality software faster, and gradually moving away from a traditional monolithic architecture.  It will be important that your micro services are truly granular services that can run independently, else there is no point, and you will not realize faster speed to market.  While Micro-services are great, they are also complicated, and increases the point of failures – which is not a good.  Therefore, it is important to evaluate your business model, business objective, and select an architecture and design pattern that works for the business outcome you are looking to achieve.


3 - Containerization:   A must to implement.

We are familiar with shipping containers that delivery goods around the world.  What is put in the shipping container is received on the other end in the same, original condition.
Software containers are similar vehicles for delivering software that could be used to ship software and work as expected. Examples of what you can put in software containers includes almost anything, code modules, run time libraries, database, configurations, scrips, the list goes on.  Because of the ease of using containers, it’s not important to pack everything in one container.  You can have multiple containers loaded with different software components, libraries, databases, configurations etc.  There are times however, where it does not make sense to use containers, for examples a simple website that uses only uses HTML, CSS etc.   Point being let’s not complicate things when there is no business value.  Bottom-line, automate everything that you can, take all the necessary steps to automate your entire organization progressively to create efficiency.  Checkout my recent article on how to how to Automate an Enterprise using Robotic Process Automation.

 

4 - Continuous Code Integration and Continuous Delivery: A world class technology organization is capable of shipping quality code with a much higher velocity, sometimes multiple times a day {assuming the business model requires it} IF you have integrated your agile development methodology with an automated DevOps process.   I call it Agile + Auto DevOps = Boom!






Referencing the above diagram, listed below are some key point of failures that will impact your ability to become a world-class Technology Organization.  Therefore, you must address these issues if it exists in your respective organizations.

Plan:
  • ·       Inadequate or incorrect requirements definition
  • ·       User-stories incorrectly captured, insufficient information
  • ·       Persona-based planning / requirements, depending on the project technical architecture.
  • ·       design and performance SLAs need to be laid out



Code:
  • ·       Improper usage of frameworks, tools, technologies
  • ·       Poor understanding of requirements, communication gaps between developers, BAs & PMs
  • ·       Lack of rigor in usage of source-code management tools and version control, code merges in-frequent check-ins, or code commits without proper due diligence
  • ·       Lack of attention or knowledge of scalable design and architecture
  • ·       Strong collaboration and project management, with team leads performing periodic reviews with sprint teams


Build:
  • ·       Poorly componentized code, leading to dependencies between modules, causing build issues
  • ·       Lack of discipline for code commits and weak collaboration between teams


Test:
  • ·       Poor quality and coverage of tests, tests failing to keep-up as changes are made (stale tests)
  • ·       Lack of automation, end-to-end regression testing
  • ·       Lack of proper tool set and frameworks that aid testing
  • ·       Lack of scientific approaches in performance testing and tuning


Deploy:
  • ·       Lack of one-click automation in deployment encompassing various artifacts: code, environment specific configuration, database and other scripts, set up of reference or test data
  • ·       Complexity of deployment – usually around data & configuration management
  • ·       Lack of or inadequate tool usage, e.g., inadequate containerization
  • ·       Inherent application deficiencies in clear componentization, microservices design, architecture and scalability, legacy application components with little plug-and-play



Operate:
  • ·       Lack of personnel trained in infrastructure support or quick problem resolution
  • ·       Inadequate knowledge of Resource Management tools for the deployment platform



Monitor:
  • ·       Inadequate tool set or tool capabilities for efficient monitoring of application and infrastructure components
  • ·       Insufficient instrumentation, resulting in lack of vital information regarding application health
  • ·       Improper classification of telemetry data (e.g. DEBUG, INFO, TRACE)
  • ·       Lack of experts who can perform a root-cause analysis of where performance is lacking, or improper judgment of low-hanging fruit to improve performance


Feedback
  • ·       Inadequate or incorrect feedback regarding defects, functional or non-functional
  • ·       Low defect containment
  • ·       Improper tools or usage for capturing defects, or delays in resolution
  • ·       Improper classification and prioritization of defects, or lack of collaboration between teams, improper planning or weak project management



Popular posts from this blog

Steps to Enterprise Automation through Robotic Process Automation {RPA} – By Veejay Jadhaw

Framework to Build Digitally Connected Software Platforms, by Veejay Jadhaw