Quote
In our response lies our growth and freedom"
“The only way to discover the limits of the possible is to go beyond them into the impossible.”
Wednesday, 13 October 2021
Importance of Resilience in Business and Work
Friday, 23 July 2021
Federated Identity Management: The future of identity management
The Federal Risk and Authorization Management Program (FedRAMP) is a government-wide program that provides a standardized approach to security assessment, authorization, and continuous monitoring for cloud products and services.
FedRAMP enables Agencies to rapidly adapt from old, insecure legacy IT to mission-enabling, secure, and cost effective cloud-based IT.
Summary
Wednesday, 14 July 2021
Fall fast instead of Fail fast
Monday, 24 May 2021
Data Classification and Information Protection
Depending on type and nature of data it can be classified into various levels. Each level needs respective protection mechanism hence its important to understand and classify data into appropriate classes. Generally its classified from class 1 to class 5:
Class 1 (Public): Information considered public is classified as class 1 data. Example, non sensitive information in an organization available for external use.
Class 2 (Internal): Information generally available to employees and approved non employees. Example, Unpublished intellectual property, building layouts etc...
Class 3 (Confidential): Sensitive information within an organization, intended to be used by only specified groups of employees. Example, financial information, information protected by privacy laws etc.
Class 4 (Restricted): Information that is extremely sensitive and is intended to be used by individuals only within an organization. For example, Personally identifiable information, credit card numbers, personal health care information.
Class 5: Information that would cause severe harm to individuals or organizations if disclosed. Class 5 data includes individually identifiable information which if disclosed would create risk of criminal liability, loss of insurance or employability, financial, social or psychological harm.
Thursday, 6 May 2021
Matrix Organizations: How do they Work?
What is Matrix Organization?
What are the Pros and Cons?
Pros of Matrix Organization
Building a Productive Matrix
Top Management support
Adoption by Functional Managers, Project Managers and Project Personnel
Project Manager’s Responsibilities
- What is to be done?
- When will the task be done?
- Why will the task be done?
- How much money is available to do the task?
- How well has the total project been done?
Functional Manager's Responsibilities
- How will the task be done?
- Where will the task be done?
- Who will do the task?
- How well has the functional input been integrated into the project?
Project Manager has to be the Axis
- PM must ensure that technical decisions are made on schedule.
- PM Must review the key technical decisions and challenge them if necessary.
- As project integrator, has the overriding responsibility for evaluating every key project decision
- PM should determine how it interfaces with the other project tasks, and with project schedule and budget.
Relationship is a Two Way Street: KEY to Success
Supporting the Project Manager: Provide Clout

The balance of power can be tilted in either direction by changing any one or any combination of the following three factors:
- Administrative relationship: The levels at which the project and involved functional managers report, and the backing which they receive from top management.
- Physical relationship: The physical distances between the various people involved in the project
- Time spent on the project: The amount of time spent on the project by the respective managers
These three factors can be used to describe whether the matrix is strong or weak. The strong matrix is one in which the balance of power is definitely on the side of project management and vice versa.
Matrix organization has greatly added to the versatility and effectiveness of project management. The matrix has permitted project management to be effective not only for very large projects but small projects as well, and has been extremely valuable for solving multidisciplinary problems.
The matrix organizational form is only desirable if there is a real need for its added complexity. Not only is it not for everyone, but it cannot be guaranteed to work. It will only work if the entire organization, from top management to the project personnel, are thoroughly “sold” on the matrix concept. There are many reasons why the matrix will not work, but failure to lay the groundwork and fully prepare the organization is the principle reason for failure. The matrix will function and result in very improved project productivity if top management gives its unwavering support and if functional management and the project personnel accept the matrix as a “way of life” which can only be of great advantage to the company in improving output and profit.
Saturday, 1 May 2021
North Star Engineering Principles For Successful Software Development Organisations
In the world of fintechs, digital payments and technology transformation its critical to have a defined north star of engineering principles. This defined north star of engineering principles keeps organisations and their workforce to stay on course of its purpose, its customer, its products and the promise made to its stakeholders with minimal or no digressions. So let's take a look at evergreen principles which should always be kept as north guiding development organizations.
Evergreen Principles
User experience at the heart of engineering
Solving a real user problem should be an essential purpose of any software. Once ready, user experiences of using the software solution is critical to success. Customer delight is ultimate goal that needs to be targeted and tracked religiously. Metrics need to be defined and adopted to measure user experiences. Some of them can be behavioural (what users does) and some of them can be attitudinal (what users say). Constant monitoring of behavioural (error rate, time for task, response time) and attitudinal (Customer Satisfaction Score(CSAT), Net Promoter Score (NPS), System Usability Scale (SUS)) user experiences should be a mandatory for all organisations.
Plan for these, right from the start.
Security needs to be at the top of the table
In financial world security takes a defacto number 1 position. Though this is true for most other domains, apart from financial domain. Since protection of the users (business and consumer) and their data in an increasingly sophisticated cyber world is critical, to build the trust required to onboard and retain customers. Lack of security can quickly hurt businesses built over time through loss of revenue, intellectual property, and reputation. It should always be a top priority, no matter what software you build, operate or use.
Standard software security practices, such as no trust between application interfaces, protection of data at rest and on move, secure coding practices for developers, regularly reviewed authentication and authorisation policies should be a part of DNA of every software development company.
Build and Design Supporting Run Agility and Scalability from Start
Automated Testing is Critical
Always Build 12 Factor
Following is an introduction provided to 12 factor application methodology:
"Software is commonly delivered as a service: called web apps, or software-as-a-service. The twelve-factor app is a methodology for building software-as-a-service apps that:
- Use declarative formats for setup of automation, to minimize time and cost for new developers joining the project;
- Have a clean contract with the underlying operating system, offering maximum portability between execution environments;
- Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;
- Minimize divergence between development and production, enabling continuous deployment for maximum agility;
- And can scale up without significant changes to tooling, architecture, or development practices.
The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of backing services (database, queue, memory cache, etc)."
Let's take a closer look at twelve factors. The twelve factors to build software as a service successfully are:
- Codebase: Have one version controlled codebase, capable of deploying ephemeral instances.
- Dependencies: Explicitly declare and isolate dependencies. Dependency declaration manifest needs to have complete and exact declaration of all dependencies. Use dependency isolation tools during execution to ensure no dependencies leak in.
- Config: A clear segregation of code and config is mandatory. Since code should remain constant across instances but config varies. An applications 'config' is everything that is likely to vary between different environments such as staging, production, development etc. including the following:
- Credentials to external services
- Pre-deployment values, such as hostname/address for deployment
- Resource handles to database, Memcached, and other backing services
- Backing Services: Treat backing services as attached resources. i.e. any service the application consumes over the network as part of its operation/functionality needs to be treated as an attached resource. The code in a 12 factor application does not make distinction between local and third party services. Some common examples of backing services include caching systems such as Memcached, messaging queueing systems such as RabbitMQ, datastore such as Mongodb or cassandra, metrics gathering services such as New Relic/Dynatrace, SMTP services for outbound email such as Postfix.
- Build, release, run: Three steps transform a codebase to a deployed application, i.e the build, release and run. Twelve factor applications have a clear segregation of build, release and run stages.
- Conversion of code repo into an executable bundle by compiling binaries, fetching nd packaging dependent libraries and assets, on a specified version of code is commonly known as 'Build'.
- Addition of current or required config to the 'build' produced earlier is referred as release ready to be executed in the designated environment.
- Launch of the application 'release' in an environment is referred as 'run'.
- Processes: Execute the app as one or more stateless processes. 12 factor apps/processes are stateless and share nothing. Persistence is managed generally via a backing service like a datastore.
- Port Binding: Export services via port binding. For example, web apps export HTTP as a service by binding to a port and listen to requests coming on that port. A 12 factor app is completely self-contained and does not rely on runtime injection of a webserver into the execution environment for creating a web-facing service.
- Concurrency: Scale out via the process model. Processes are first class citizen in a 12 factor app, having similarities with unix process model of running service daemons. Each process handles their own complexity, threads, events; depending upon technology being used. Share nothing, horizontally partition-able nature of twelve factor applications makes concurrency easy and reliable.
- Disposability: Maximise robustness with fast startup and quick graceful shutdown. 12 factor application processes can be started and stopped as required i.e. they need to be disposable anytime and easy to create anytime. It facilitates robustness of production deploys, rapid changes to code/config through new deployments, and fast elastic scaling.
- Development and Production Environment Parity: Keep development, staging, and production environment as similar as possible. Minimise time, tool and people differences across environments including code and backing services. This prevents tests passing in lower environment, failing in production.
- Logs: Logs should be treated as event streams and need to planned from start to enable metrics monitoring and tracking using synthetic monitoring.
- Admin processes: Run admin or management tasks as one of processes.