Sunday, June 13, 2021

Architecting for Continuous Delivery


This short article will provide details about the various architecture specific requirements for good implementation of continuous delivery. It emphasizes on the need of the system to be architected/designed for continuous delivery.

  • Deployability- The system should be well thought from the perspective of ease of deployment.
  • Security-Security vulnerability should be well thought and should be built into the architecture.
  • Loggability: The system architecture should consider aspects related to the logging requirements. It should cover what to log, logging mechanism/ log format, log size etc.
  • Modifiability: The size of the requirements should be considered so that the modifications in the systems can be easily deployed.
  • Monitorability: The system should be designed in such a way that the interfaces should be able to monitor the state and performance (and related aspects) of the system.
  • Testability: The system should cover the aspects of testability of the system and cover details of pipeline (where each pipeline serves as quality gate)

Product Quality-Where do you stand

 


Wednesday, November 18, 2015

So..What is your Quality Quotient? :-)



(Image Courtesy: https://www.linkedin.com/company/quotient-ltd-)
So..What is your  Quality  Quotient? :-)   
8 years back, late in the evening I was packing up to go back home from office, I found one of my teammate, a developer, working alone. I asked him “Why don’t you go home as it is late”. He told me that “tomorrow  I have  to deliver 2 stories for testing to the test team and I want to ensure no defects from test”. Later I used to observe that the  person always used to take pride in the work which he delivers  and his aim used to be ensure zero issues or complains from his work. I was really touched and still whenever there is a context of “Building a brand and having credibility for oneself”, I remember that person.
In my experience, I have seen that when the work is done by certain set of members it always comes out with good quality. If there are some products released by some companies we are very sure that, it would be  of good quality. If there are products from certain country we are very confident that that Quality is high. For example “Made in Japan” always had a brand for quality and in my opinion it still has. Cars from Germany always have a brand of precision and quality. Similarly watches from Switzerland. Being in Quality Assurance for a large portion of my professional life, I always used to wonder that how is it possible that there is a pattern at individual, organization and country level. I have also met many very high performers in various organizations and I have seen an underlying behavioral pattern. All of these high performers have a strong underlying commitment. Commitment to always consider Quality above all, commitment to go beyond their responsibilities, commitment to update their own skills to ensure that the output, which they deliver always come up with good quality. Based on these observations and my own experience working in Quality, I want to say that at all levels there is Quality Quotient. Like Intelligence Quotient and Emotional Quotient, to deliver work with good quality, we need to have high Quality Quotient. Quality Quotient is not any a big jargon or funda, it is what differentiates between a product which is of low quality to high quality, it differentiates between a country which always deliver with poor quality versus a country which is known for the high quality and individuals who always gives quality output irrespective of the situation in which he or she is.
So what is Quality Quotient? It is the ability to effectively apply the power of Intelligence and emotions for producing anything with high quality. It can be applied at individual, organization, and nation or at any level.

Quality output is not about mere intelligence. It  starts with right thinking. In this post I would list done some of those factors derived based on my experience in working in quality assurance. These factors can be applied at all levels for anybody irrespective of the domain we are in. These are purely my personal opinion and I have found a strong correlation between the quality of the output and these factors. Well I don’t have correlation coefficient and regression equation for that J


(Image courtesy: www.thinklink.com)
Intelligence (Know)

Know your Quality Goal and Plan for it:  We need to have a quality goal and have a plan to achieve that. Quality Goal for a mobile app may be different than for a network management system. In the former, usability aspect should be the key quality goal. Even if we have zero defects in the app, but not very user-friendly, in my opinion we have not identified the right quality goal. Once we have identified the Quality goal we should plan to achieve it.  The plan can be at year/month/week/daily level. For some project or individuals, we may or may not document the plan. But as long as the clarity is there how to achieve that , I feel it is fine.
Know your Done Criteria: For every work, task or activity, we must define the Done criteria. When can we say that the activity is really completed. Many times the defects come when we complete the task without meeting the Done criteria.
Know your Strength and Weakness: We must know our true strengths and Weaknesses and we should be very frank with ourselves on this. If we really understand our strengths and overcome our weaknesses through that in a systematic manner, it would be really great. Sometimes we don’t do real competency assessment and don’t take actions for improvement of our skills and knowledge. If we can't do right assessment about our competency, strength and weaknesses, in my opinion we can never achieve good quality and quality will be a matter of sheer luck.
Know your Stakeholders:
We must pay special attention to our customers, stakeholders or the real audience. We must understand their real requirements and try to validate that as soon as possible in an iterative or quick fashion. Stakeholders are members who have direct or indirect interest in the success of the work or project. We must keep our stakeholders updated about the work and the progress of that. It gives a lot of confidence about us and our work. Sometimes I have seen that we do many things but we don’t keep our customers and stakeholders in loop. This really worries them and creates a kind of vacuum. Timely progress update is not a mundane task. Also this should not be considered as some kind of marketing about ourselves. This is an important activity and we must do that.

Self Review, Self Review, Self Review
Harry (name changed) always finishes his task very quickly and gives to the technical reviewer. Reviewer knows that Harry doesn't finish the task completely ("Done criteria" don’t meet). How do you feel about Harry.. I am very sure all of us would agree that this is not good.  We all may have an "Harry" in us who wants to complete the task quickly and move to the next work. Only the members who reviews his/her own work and then give it further in the chain for review or release, delivers with good quality. My personal opinion is that we are our brand and any work that goes out from us should have a signature of quality. Self Review can help in that. We should never be in a hurry to pass the work to next in the flow or the chain without doing adequate check by ourselves.


(Image courtesy: judythewriter.com )
Emotional (Believe)
Believe that Your Output is your brand
We should believe that every output which we deliver is our brand and we must take pride in what we deliver. Every time when work is delivered from our side we should think that our credibility is at stake if the output has any issue. Any good brand or name is built after years of hard work and consistent quality. One mistake can damage the whole name. So our approach should be to consistently deliver with same quality irrespective of whether the work is small or big.

Believe in Quality First, Always..
Sometimes we believe that when many task comes in parallel, mediocre or little less quality is ok as people know that we had been good and we are doing many things in parallel, so there will be a discount in the way people look on to us on quality. My observation is that people forget what situation we were when something was developed or delivered.  It is the product or service which we deliver that remains. No customer wants to know what as a service provider, we are going through. Sometimes the customer may empathize with us. Quality of our product, services or anything will outlive us and the situation in which we are in.



Believe in going an Extra Mile for Quality
My experience is that every time we may not get all situations favorable to ensure quality output. Sometimes it may that our competency is not up to the mark for the deliverable or time available is short or any other. In all such situations do we go beyond our limits to ensure that what we deliver goes with good quality. If we feel we can’t deliver with the right quality, do we refrain ourselves from delivering. Remember every time we deliver, our credibility and our brand is at stake. We are our brand. We should do everything possible one time and every time to delivery this.
Retrospect in yourself.. continuously improve..
I have seen many times whenever there is an issue or problem; we first look for external factors for the problem. As humans our first nature is to defend ourselves and find faults in others work due to which the problem came. In my opinion even if the proportion of the problem from our side is 0.01%, we should retrospect and improve on that part. Of course, we should not take accountability for others problem. It is needless to mention that. This can help us in focusing on continuously improving ourselves. It will keep us grounded and ensure that every time we learn something from our mistake. Lets say even if the problem is not from our side we will learn from the mistakes from others. Remember life is too short to make all the mistakes which others have done and then learn from it.
Quality is a result of Intelligent effort
I believe that quality output is not a matter of luck, it is the result of intelligent effort. With luck we can deliver good product or services one time or two times but only through intelligent effort we can deliver quality output in a consistent way.
(Image courtesy: grouphigh.com)
I believe that Intelligence and Emotional aspects are equally important for giving quality product and services. I have seen a pattern in this in many individuals, teams and companies. Quality of anything starts with me, us and the team. Everybody should take equal responsibility in that. Let’s build and give quality products, services and take pride in being ourselves. Remember we are our brand..


Architecting for Continuous Delivery

This short article will provide details about the various architecture specific requirements for good implementation of continuous delivery...