Did you know ‘phased program’ – (waterfall SDLC) was developed by NASA
And inspecting the failed programs, this process was found to be extremely inefficient
The phased program / gated development process / waterfall model was said to be very good at trying to show an over-glorified picture of the software
The focus was on documenting rigorously and proof.
I guess that’s where the Agile manifesto said – we value working product over comprehensive documentation
Many of our teams might have moved into an ‘agile’ model, but this idea of valuing working software over documentation still has not gone away
We insist on over documenting nonsense stuff, and under-documenting where needed.
Classic example – still maintaining those long test cases, and having very less context around stories or importantly writing feature files to agree on the product’s ‘behavior’ with the team
#QsDaily #agile #testing
A guru of mine once said – You are paid exactly what you are worth – I thought he was joking
Looking back, I can say he was right, at least in the long run, here’s one reason why..
I was having a chat with fellow testers the other day talking about tester’s career progression.
The biggest mistake IMHO people make is to not learn how to solve problems..
In today’s world, all businesses are focused on solving their customer’s problems, especially in tech.
Folks hired in these tech firms primary role is to develop solutions to solve these problems.
A few people find this very taxing and unexciting, because they never trained themselves in problem solving.
If you are working in tech, regardless of your position in the org, your primary role is to develop solutions for the target market’s problems.
If you can’t handle that job, you have no place in tech, and let’s then stop talking about career progression (or griping about it).
If you are solving problems, and your organization is not treating you well, you can get a better opportunity and leave.
So, in the end, you are paid what you are worth..
I figured it out.. the first and most important KPI for software quality..
Can you guess?.
Time from ‘prioritizing a feature’ to the time it is ‘ready for deployment’ in production.
Now some might say testers don’t have control over the whole process, that is true but we should be working to develop that maturity
Or we might say time to market is not as important as quality of the product,
My answer would be – Quality is subjective, best to get feedback from people spending money determine quality
That does not mean we ship crappy stuff, some things are no brainier, seeing exceptions, basic functionality not working are obvious
The part which is subjective is, certain features we might feel are very helpful, or as the user expected and therefore give the product a higher quality,
In the end customer’s experience, they might see that as a hindrance in using the product and would have a different perspective of the level of quality here
So, anyone working towards developing software (including testers), the foremost measure should be: How quickly we can go from ideation to deployment.
#QsDaily #testingmetrics #transformation
After years of going around in circles, I’m going to get it done.
A set of quality metrics that help improve productivity, and I need our community to pitch in..
I’ve gone through relevant content I could find, and to be honest there is just so much on this topic, both good and bad content.
The mistake I have done and see other do is, we measure things we ‘think’ will generate value, like automation coverage, but never the actual outcome we want – time to market and product quality.
Also there are some process factors which usually get skipped, which are also responsible for hitting these goals
In lieu of these, want to classify the metrics in three categories with some “SAMPLE” metrics, not an exhaustive list, just to explain the heading better.:
- Practices maturity
- g. Scrum ceremonies and best practices in them
- Three amigo sessions
- Defining the complete user journey for each epic & feature
- Continuous testing
- Automation pyramid
- Business value
- Time taken from pull request to ready for demo
- Trend of issues coming from support which have to be fixed
Under these three headings will be a list for each.
Tech stack, money, growth or company culture, what is most important when accepting a new position?
From this list I’d say tech stack and company culture.
Technology stack is an important factor. Working on a platform which has demand in the industry certainly is more lucrative.
Company culture – Learning better ways of working is often not given due importance.
Being exposed to better ways of working where taking an idea from concept to implementation in the shortest possible time is vital. This is the core of a DevOps culture.
Money and growth are by products IMHO,
As one matures technically and learns efficient ways of working, money and growth should follow.
To transform your organization you need leaders.
And leaders are those who expect higher standards, from themselves (and others)!
The key in any transformation is to change behavior.
That requires leaders leading by example and demonstrating change.,
Then can the rest of the organization be expected to change.
Therefore leaders should put themselves to a much higher standard than others.
#QsDaily #transformation #agiletransformation #leadership101
What are daily stand ups for? giving status..
Actually, that’s not the main purpose.
The main purpose is to actively remove any impediments the team is facing.
Secondly, for the team to actively work towards a single goal, the sprint’s goal.
A stand up ran done correctly, helps in aligning purpose and gives a boost of optimism.
In Jeff Sutherland’s point of view, it’s a ceremony to create harmony between the team, what he calls ‘transcendence’
The three activities to discuss therefore are:
- What did you yesterday “to help the team finish the sprint”
- What will you do today “to help the team finish the sprint”
- Any obstacles in the “teams” way
Keep stand ups inspiring, people walking out should feel ‘hell yeah, let’s do this’..
Reference “Scrum” by Jeff Sutherland
#QsDaily #scrum #motivation #agiletransformation
Do super star individuals deliver greater results or super teams?
While we all might instinctively feel the team would do better but…
Super start individuals can sometimes deliver up to 10x results
That’s why companies tend recognize individual performers more.
However, super teams outperform other teams by 100x!
The ‘economies of scale’ come from alignment of purpose and empowerment
Now how do these 100x results come about? When scrum teams have:
- Autonomy. All the skills and needed resources reside within the team and they have no dependencies outside
- Transcendence. Alignment of purpose, everyone thinks and dreams of the exact same goals.
Reference: Scrum (By Jeff Sutherland)
The 900 miles journey in one night – just to meet and learn in person, that’s passion.
This was when Vignesh came over to meet in in NYC few weeks ago (details in post linked in comments)
Hard work and passion are a must if you want to advance your career
When I see people who don’t want to put the hours and want success, that’s like trying to learn swimming without getting into the water
I’ve also learned that’s not the only success criteria, you also have to be smart about what you are working towards and keep evolving your direction.
But by no measure does smart work mean you don’t put in the hours. There is no success without the grind.
If you are a tester and you haven’t been upgrading yourself, I wouldn’t lie your up for a tough time.
And it’s not just testers, the entire global economy is changing, t’s going to affect everyone, some a bit harder.
So instead of blaming developers and rest of the world, lets buckle up and get to learning.
More on that in the post below:
I’m uncertain as to why sometimes it’s so hard to explain the importance of ‘test leadership’.
People can have a lead architect, a lead product owner, a lead developer and even a ‘lead of leads’, but having a test lead would somehow kill autonomy…
The argument is in agile world the team does the job, so they should be self-reliant, and no one needed to ‘manage’ them.
What they fail to understand is testing with technical competence is not something abundantly available in the industry.
Most companies have to manage with the few senior resources they’ve got and use them to train rest of the teams.
IMHO the root cause is this deep-rooted ignorance that testing is just a matter of doing some ‘monkey testing’ and that’s about it.
I’d argue testing and specifically automation take as much resources as developing the service, whoever plays that role requires critical thinking, strong technical skill and exposure.
One would assume after decades of blunders and evolution we would have realized why strong testing is important, no wonder restating your PC when software is not working seems to be ‘perfectly normal’.
Generally how does your team go about doing testing or automation?
Most people (in my experience) jump right into writing test cases or automate written tests… anything wrong there?
The source of tests is usually a bunch of written statements without any context from which testers start create test scenarios
Occasionally might have a chat with the BA or product owner if they find the time.
What’s missing here is the context, the understanding of what problem we are trying to solve
Now just if you wrote a ‘story’ doesn’t mean you got all the context.
It is imperative to talk to marketing, product and support to understand why we are building this product, how is our solution different from others in the market.
Understanding the competitive advantage and pain points of the consumers gives the testers context and a yard stick to gauge what’s important.
Shadowing how the customers use the product in the field is another good way of gaining context into the solution.
Any other techniques you’ve used to understand the context better?
Why do many enterprises go through Re-Orgs?
Here are a few reasons I’ve figured out so far:
- To increase efficiencies
- To reduce cost
- Technological innovation
- New management comes in with a new mandate
The root cause of most of these is large organizations having problems with adapting to change and having a hard time innovating
Could be because of:
- People are far away from the vision of the organization, feel like a small cog in a big machine
- Extra governance, lots of red tape,
- People become complacent doing the same job day in day out
- It gets harder to hold people accountable due to long and complex processes
- People have no reason or motivation to change
IMHO the mother of all problems is lack of motivation.
Whatever course of action is taken to solve the organizational problems, if the teams are not motivated, long lasting change is highly unlikely to happen.
Leadership lesson – Give permission to challenge
What does this mean:
- People sitting at the meeting table should feel empowered to disagree with any point of view, especially if it is of the leaders in the room
Why is it important:
- It is not individuals who take the day, teams are the ones to bring success. Physiological safety is the secret of team’s success
- Unless the team feels they are empowered to speak their mind, physiological safety cannot exist.
How to do it:
- The leader should not share his / her opinion at the outset, so everyone feels comfortable to share their opinion
- Probe people to challenge the status quo
- Do not let anyone feel punished for challenging the status quo – ever
It is possible you might sometimes face confrontation for the sake of it and not for improvement. In such a case:
- Time box the discussions and assert a decision must be taken before a set deadline
- Try to use as much factual data as possible
- If a decision is being taken against what the data says, bring back the discussion to deciding based on data
- How Google works by Eric Schidt
- Chapter – Decisions, the true meaning of consensus
While redefining the QA function at work, I keep coming back to this question:
What is Software Quality?
If we deliver exactly what the requirements / user story says, is that quality?
We’d say that’s validation, so we must also do verification which is ‘are we building the right thing’,
The problem there is, in a large organization a bunch of ‘groups’ have to sign off.
Now the ‘end users’ (if you will) don’t align to a single version of what’s expected.
That’s why I sometimes feel developing software is not a science, it’s an art.
It’s an art to bring a vision of a select group of people to life.
The details of the vision for all might be different, but they all might be connected with a common emotion.
Therefore, in the end, it’s about answering to that shared ‘emotion’ of the stakeholders.
Going through the SAFe DevOps course I realized there were a few good points.Going through the SAFe DevOps course I realized there were a few good points.
Again I don’t believe in following any Agile framework to the book and take them as just guidelines, but the SAFe DevOps section does help to put things in perspective.
The image  attached is called the ‘DevOps Health Radar’ depicting the different stages of how an enterprise can deliver value to customers from:
1. ‘exploring’ an idea, to
2. Development, testing at speed through continuous integration, to
3. Deploying to a subset of users through ‘dark launches’ and ‘canary releases’, with sanity tests in prod,
4. To finally ‘releasing’ to all the customers on demand and validating the assumptions business had in the exploration phase
Reference:https://lnkd.in/fcZB5sB : Rights SAFe (Scaled Agile), Illustration graphics by Quality Spectrum
The new UAT: Dark Launches and Canary releases
Here’s what they mean and the difference:
Before that, UAT (User Acceptance Testing) is where once the software is shipped from IT, business / end users have a look and run their own tests to see if the product is as per expectations.
Now that was inefficient and UAT sometimes takes a lot of time, which can skyrocket time to market.
How the industry is solving it?
productionize the software, but to a user’s subset
Launch to a certain few clients / users of a certain market segment. The Idea is to get ‘real’ users actually use the product.
This way feedback from customers is quicker and as real as it can be.
To do dark launches or canary releases, besides the obvious of having scalable infrastructure,
You need to be able to roll back and fix forward real quick, for which you need CI/CD in place.
Because there is always a higher chance of something being missed, so we must be able to fix it real quick.
If you were to describe what QA’s role would be at an Enterprise level, what would you say?
Here’s my thought so far:
Fundamental goal: Validate goals set by business for the end product are achieved and highlight any risks to decision makers. This can be done by:
– Help POs, PMs and business in making sure the articulated user stories fit the purpose (question requirements)
– Ensure testability within the system architecture
– Foster a ‘quality first’ culture / build ‘testing acumen’ by promoting and teaching the test mindset within the whole IT organization
– Test the holistic system from end to end’s functionality, usability and non-functional requirements (performance / security)
– Ensure tests among different integrated systems and low level components are done
– Enable CI/CD pipelines to significantly reduce time to market
What else would you add?
#QsDaily #Enterprise #Testing #TestingAcumen
Universal truths to ‘internalize’ to really go agile:
1 – We cannot estimate effort
Without accepting this, we try to ‘accurately estimate’ the amount of work and run into the same trap
2 – We don’t clearly know the requirements
Again, instead of focusing on getting the product out in the hands of the customer ASAP, we sometimes try to ‘refine’ the product
Off course this is easier said than done. To significantly reduce time to market a lot of enablers would be needed.
However, without the mind set change, all the tools in the world wouldn’t bring about the desired results.
#QsDaily #Agile #estimation #requirements
When to ensure testability for your product?
While designing the architecture..
While mkst of us know this, very few actually see it through.
We build a piece of software and then decide how to test it,
Instead while designing it make sure you have ‘test probes’ in there.
When I worked for safety critical applications, we left test points on the PCB to check the circuit
Those points were not used for any feature of the product, but were there just to help test it.
So, testers get involved when the architecture is being designed,
Or the architects trained to ensure the system is testable themselves.
What is the difference between testing micro service and monolithic applications?
First off, the definitions:
Micro-services: Software is developed as several small ‘services’ which can operate autonomously
Monolith application: One giant software with all services within the same software package
The fundamental difference for testing these is scalability and integration.
Micro-services are designed to scale up and down as users of the service increase, so testing this scaling up and down is important.
Secondly the integration tests become more important. Communication between these services is different from a monolith and should be accounted for.
While there will be many more subtle differences in testing these depending on your context, these two areas would always be of importance.Anything else you would add to the list?
While DevOps is thought to be synonymous with tools and automation,
Actually, IMO, it has to do more with cultural transformation..
The ultimate goal of DevOps is to bring what we develop faster and more useful to our customers
While automation is certainly a big part, even more important is the culture.
The tools just fast track the thought process we have,
It’s the experimentation with different ‘thought processes’ which is the secret
I always quote “Companies to take ideas to in the hands of consumers the quickest will win”,
Because they can experiment easily, and don’t have to fear a failed experimentation.
Now if the culture is not there, experimentation will not happen.
Then all DevOps will do is to facilitate in getting more “crap” out of the production line, but just “quicker”…
#DevOps with #CulturalTransformation = Measurable business value
#DevOps WITHOUT #DevOpsCulture = Same old crap, just delivered quickly
Automation helps by doing repetitive tasks efficiently
What happens when your code is not exactly ‘reusable?..
Automation engineers sometimes are trying to script for the immediate test scenario
And forget the whole point of automation was reusability.
This is different from a script breaking from not have good selectors..
Writing similar code across the project in multiple classes / files
And again repeating that in mulitple projects across one on multiple products
So make sure to keep each component of the framework reusable
As reusable as possible, not for just your project, but if synergies exist, between projects as well.
The concept of ‘loosely coupled’ somehwat captures this idea.
#QsDaily #Automation #FrameworkDesign
More on the subject here:
A couple of ways to cope with web browser version updates,
Think about it, wouldn’t the developer be using some methods to write data in the fields? Or read data from them?
In few cases they are the same as the Selenium library would use, however in a few cases there would be some custom methods,
Written by the developer or provided by the framework.
Which is going to be called anyway on the mouse click / enter event, but can save you a lot of grief if Selenium has a hard time interacting with the element due to a browser update etc.
Working together with teams can be difficult sometimes,
Instead of treating the situation as ‘Us’ Vs ‘Them’, here’s what I think:
All of us have similar desires, dreams and fears.
And each person is operating under certain limitations restrictions imposed by the environment they are in.
Mostly their behavior is driven by goals and limitations around them.
Being empathetic and really trying to understand thier limitations makes things a lot easier
It’s hard, time consuming and requires more attention,
But has lasting results and builds trust.
Granted cannot mot be done for every situation,
But where taking this hard route possible, this can do wonders,
Time and again I have experienced exponentional results with this, more on that in a separate post.
#QsDaily #Positivity #Empathy
Time, Money, Freedom; What’s more important..
Time is the single most valuable asset, here’s why:
– There is more than enough money and resources to go around, we’ve trained ourselves to believe in scarcity and spend our whole lives chasing it.
– In this age I suppose freedom is a relative term now, someone is more free than the other based on their circumstance,
– But NO ONE is absolutely free of any consequence. You are as free as you ‘think’ you are!
– The asset which is truly scarce is time.
– It cannot be replicated, or bought. A second gone is lost forever.
Successful people utilize their time to the fullest. The one to manage time the best will win.
An inspiring video from Arnold Schwarzenegger where he talks about his success and how he managed his time shared below.
#QsDaily #time #success