(In this SmartBits, Sudhir Patnaik outlines “Expectations of Senior Management“. The video is at the end of this blog)
Leadership is key. But more than organization and people leadership owning a substantial part of work is also needed. One can have an oversight on some part of the organization, but need to get hands dirty by owning areas that have no managers. This keeps one grounded and also helps develop empathy for their organization as to what they go through. Here are the expectations : (1) The ability to understand what the team is going through. (2) Show up in incidents, show up in incident reviews, show up in customer escalations (3) Keep learning newer technologies and catch up with what’s going on in the industry (4) Have the curiosity to look at everything from a metrics driven approach.
(In this SmartBits, Sudhir Patnaik outlines “ Extreme ownership mindset “. The video is at the end of this blog)
There is a tremendous shift towards a customer backed approach. Everything that we do is keeping our customers in mind and an extreme mindset of product ownership. The one scrum team mindset is driving phenomenal change in how we deliver products. This is where extreme ownership mindset comes into picture where a scrum team owns outcome for customer. The days are gone, when one has to develop, somebody else has to test and somebody else has to deploy. It has to be packaged in such a way that as a member of the scrum team every single member of the scrum team owns every single responsibility. If I am a developer or a test engineer, I own development, I own testing, I own deployment, I own support. That’s the team’s extreme ownership. That’s a disruptor.
(In this SmartBits, Sudhir Patnaik outlines “ Transforming test teams “. The video is at the end of this blog)
As a leader running platform engineering organization, industry
changes made us reimagine how we test software platforms. We decided that in
the context of extreme ownership mindset by Scrum team it is best that we
transform quality engineering organization and merge them with Scrum teams.
This required us to look at the entire quality engineering
organization, find out people well-versed in functional, performance testing
and security testing, and automation. In a step-by-step process, we did a shift left of
quality engineering organization, re-skilling
many engineers towards learning the development technologies. We moved one
function at a time into the respective Scrum team, and gave them about a year
to transform themselves into developers. We provided every training that was
needed.At the same time, we also trained developers to embrace functional
testing concepts. If one is the owner of a service, one owns its unit testing,
code review and its functional testing too.
From Quality Engineering perspective this meant that half of
quality engineering organization ended up merging with the Scrum team and
transforming themselves into developers in a period of one year. The remaining
half of the team still stay as a central organization, but largely responsible
for end-to-end and non-functional testing.
They are not executors of end-to-end and non-functional testing scripts, they have transformed themselves to become more creators of tools, frameworks and scripts that are needed to get these done. Then who executes those – “Well it is the Scrum team”!
(In this SmartBits, Girish Elchuri outlines “Adopting DFT thinking“. The video is at the end of this blog)
Understand big picture Part 1 When developing a product, one must have an understanding of the big picture. It’s not only about the product, it’s about the entire process of developing it. Putting oneself in the shoes of every role is a must be it a tech writer writing product documentation, quality engineer testing the product or a salesperson. One must understand the function of each of these roles for the success of the product . We must facilitate all these roles including quality while developing a product. We must treat ourselves as a product manager, a documentation person, a quality engineer or a marketing person in order to understand the roles better.
Put yourself in every role While trying to understand each role, we need to put in more efforts to make sure that the requirements of each and every person are met. Understanding the big picture from a product perspective, process perspective, and having an attitude of making this successful and facilitating this for every role in the product development and launch is certainly required. This is what is needed to be done and this is how we can contribute to make sure we achieve quality.
Understand big picture Part 2 Quality is not achieved by just meeting functional requirements, customer requirements, quality requirements or sales requirements. For example a perfectly working umbrella when opened the wrong way, passes the quality, but does not result in any sales as it is no more useful to the customers just like the popular phrase “operation successful but patient dead”. This should never be the case. At the end of the day, that product should succeed in the market Hence we need to have an understanding of the big picture and this is what needs to be understood by every person in the organization.
Inject probes to test better You talked about the ability to put in hooks, put in test switches etc. Do you think that is also a mentality that I have to develop, to facilitate the probing the system?
Absolutely. I put in probes to do scalability testing. If there
are a few isolated test cases that I am running manually, I can always go and
look at the log and manually do these things but when I am doing scalability
testing, that’s where I find the scale at which things will happen. It’s not
possible to manually collect this data and write them, hence the probes to
collect such information.
Attitude key to probe design So in my opinion, it’s the attitude that matters. When you have an attitude that I want to help this guy, be it a test engineer, documentation person or salesperson, then what I do is to facilitate those things to happen in the product. What will a sales guy want to do? Sales guy would want a demo system with live data. You should facilitate that in the product. You should facilitate creating scenarios so that it can be shown to customers. You cannot expect the sales guy to do it after the product is developed without assistance. That is why I say that attitude is key to fulfil the needs & expectation of every single person associated with the product.
(In this SmartBits, Zulfikar Deen outlines “Business mindset“. The video is at the end of this blog)
As a partner/solution provider, the first and foremost one is the need to have a partnership mind with the IT team of organization. It is about understanding the difficulties that have been articulated, spending a few of days with them in meetings and understanding the process and difficulties and empathise with the team.The solution needs to be planned right from the technology, to rolling out, to support along with the organization. Hence taking a partnership approach is of utmost priority.
Secondly the solution needs to be cognizant of the
whole life cycle of system, be it a patch upgrade,
support or training. Everything has to be taken into consideration for the
solution to be successfully used by the user, the whole chasm needs to be cast.
As a solution provider one must try to keep building these layers or parts of
the system and have a view of whole thing into the solution, as it gets much
easier then to roll it out.
Thirdly, never attempt to do a half-baked solution of production roll out, it is going to be very very challenging.
For instance if there are twelve thousand users one cannot control the
perception of users. Once the user gets the perception that the system is not
good, it is very difficult to recover
from there.
If we have to deliver a minimum viable product of
three features, we need to do it thoroughly well, make sure it is integrated
well and works well before we put it into the system. One should never have the view of handing
over the system tousers, get feedback and then figure out what to do with them. A very
different counter view of the DevOps process has been considered in this case.
Finally, always build in a bake-in adoption matrix, people don’t do that normally. If a system is rolled out, the management, CIO, or even we as a solution provider should be able to look at the adoption matrix as a business matrix, where in actual adoption, usage, everything has to be already baked. These are the views beyond technology, database or architecture and need to be part of one’s thought process and view when building a solution.
When we are actually working with the solution providers who are not large but small, there is always a thought about the risk of startup going down. Then what happens? How do we protect our business is always on our mind and we should never underestimate that thought process. The best way forward as much as possible is to build on open standards, open platforms. When we use open source , it gives a sense of comfort. If something goes wrong we will be able to find skills to manage this beyond. Otherwise we are already challenged with team that is not able to scale up with the rapidly moving technology. We can’t take one more solution and figure out what happens with the system. So it’s easier sell for a solution provider who build on open standards and take it to the market Open standards could be domain specific for example with healthcare it could be HL7. It could be technology specific. It could be domain, technology or either one of them build on open standards, making it easier for us to make the right decision.
(In this SmartBits, Anuj Magazine outlines “ On Career Growth “. The video is at the end of this blog)
Career growth can be divided into two
buckets. One is the nonlinearity aspect
of the career, and the other uni-dimensionality. One of the things found common
in most reasonably sized organisation is that each and every organization has
career paths and the way the career paths tend to get designed are that there
is an entry role that one gets into post college and then there is a role at
the top.
The role which is essentially at the
top of these ladders are of a VP or a Department Head. Looking at these career paths, the highest
designation in the organization is that of a CEO, if we associate these two
logically, we will tend to think why organizations do not give a path till the
CEO role in the organisation. This led to the question on the linear approach
of following the career paths, that are
designed in the organisation.
Mark Templeton CEO of Citrix for
around 20 years and quite respected in his field said that career paths up to
the top in the organisation rarely tend to be linear, they always zigzag. One
needs to figure out where the next dot is, to move forward. This questions the
rationale behind the linear careers. There is nothing wrong having a
predictable career path. It does help to solve a problem in the organisation.
For instance HR wants predictable processes, even employees want them too, and
there is nothing wrong with that, as not everyone wants to be a CEO. But there
are other merits to following a nonlinear path.
The second part is on the uni
dimensionality, let us take example of startups, .When the startup is new and
the product market fit is not achieved, people play different roles being in
one designation such as marketing, coding, testing or they may be hustling
around and doing sales. In early stage organizations, one can afford to be a
specialist in the interest of moving the organisation forward, but when it
comes to scale, the uni- dimensionality, the specialisation matter, of having a deep knowledge of one subject or
maybe a related set of technology help scales the organisation and go to the
next level.
Should I be a generalist or a
specialist? If you want to be a specialist, choose a field that is going to be
relevant in the time to come.The people who chose artificial intelligence and
machine learning fifteen years back are reaping the rewards of that. In IPL we
see around 200 odd cricketers from India in that competition, which is hardly
around two to three percent of the cricket playing population or even less and
these are like hyper specialised individuals who specialise in their areas.For
choosing a specialised field it is better to have the conviction to be in the
top ten or twenty percent so that one can reap the rewards in the time to come.
Generalists are people who are more adaptable, who can learn a new skill in a shorter time and deliver value and it is more akin to the gig economy. Pick up the rules for some time and then move on to something else. There is nothing wrong in both of them. Both have its merits and demerits. Hyper specialisation is going to be the thing in the future.
The QA profession has been under pressure from external forces, as decision makers in organization want to see more value. It comes to more of an economics decision, that we always called as cost of quality, we never use the term profit of quality. We need people who can represent QA in a boardroom where value can be showcased, and that is lacking at the moment.
(In this SmartBits, Tathagat Varma outlines “What is Agile?“. The video is at the end of this blog)
Software is a problem-solving process, where we are trying to take a shot at how we should be solving the problem. What is the best way of solving the problem? Looking at the philosophical element, a software is a way in which we are encoding a problem, solving from a given point of view. A designer would think of a particular way to solve the problem and encoding that in a medium. Software is only a medium. It could have been any other medium for example , in which a problem could be solved.
What is the right way for us to solve the problem? Should we have a world view which is based on ‘we-the-designer’ or should we have a world view based on you as a ‘we-the-consumer’. If you are the customer who is the real consumer of that? This needs to be understood.
Philosophically the first most important thing is to understand we are not building software for ourselves or for people like us. We are building software for a given audience and we need to be mindful and respectful of how they solve the problem. The philosophical element is really about, whom are we building for and are we mindful of the fact that this is how people solve the problem.
The mindset is the way, where we take the next step forward, where we say that now that we have understood the world view from how people look at it, how do we really solve the problem. Should we wait for a fully baked way of doing it. The basic idea is we cannot solve the problem in a single pass.
Every complex problem is best solved in a very iterative manner in a very collaborative way in which do not treat our consumers as just passive consumers i.e whatever we dish out to them, they will accept it. Even without the software they are solving the problem day in and day out which means they have some wisdom about how a good solution should work out. If I partner with them and treat them as a co-creator rather than a passive consumer then I can actually create a better solution. Mindset is all about stating that they are not passive consumers, they are co-creators, they are our team, so we start teaming up with them.
The Agile mindset very simply is something that we keep borrowing from the work from a Stanford professor Carol Dweck. She wrote this book on mindset where she talked about fixed mindset vs growth mindset, where the whole idea is that some people have a fixed mindset- this is the only way this should be done and have a very strong point of view. They are not willing to budge from that opinion. Then, there are people who think maybe there is a better way of doing it, maybe there are other ways in which we can grow, we may not succeed in that but in the process of doing it, will stumble upon the truth and that will help us eventually get to the right solution.
Having that kind of a mindset where we are open to experimentation, open to learning, willing to take some meaningful risk, not scared of failure, willing to keep iterating over is the need of the hour. We need to have a culture that really supports these kinds of mindsets. This is the third aspect here. In organisations where making mistakes is a considered sin, where an individual gets reprimanded for failing, Agile thinking will not work. Agile demands tolerance for intelligent failures. We need to have an appetite where we can say this person made a mistake. let us have a small party, let us learn from that person. If it is a great mistake we make a big deal out of that.
That Agile mindset will not fit into a very conventional kind of a culture where people say do not make any mistake, do everything right the first time, everything has to be Six Sigma. A very nice quote by a management professor Gary Hamel, where he said thank God for the biological screw-ups, if not for that we would still be slime, because in a Six Sigma world, evolution would not have happened, if animals did not genetically recombine with each other in novel ways.
If we are really looking at very creative ways of doing things and are looking for finding some novel solutions to that, one has to have a tolerance for bringing the Agile mindset into the workplace. Agile mindset is like the seed that requires an Agile culture as a fertile ground, otherwise it will not sprout. Tools, methods and processes are the fourth and the fifth-order extensions, because in order for us to do the job properly we need the tools. Unfortunately people get it totally wrong, they ignore the holistic part of why we are doing it, the whole philosophical element, the mindset and culture, they straight away jump onto tools and methods bandwagon, because that’s the easiest thing to sell. The tools, methods and processes are the fourth and fifth order functions of the core thing but the whole idea is if we don’t start on some of these basics, we will never get to the point. If we start only with the tools, it might give a short-term win but then it’s not sustainable and definitely not be scalable in the long run.
(In this SmartBits, Girish Elchuri outlines “Build in quality“. The video is at the end of this blog)
One of the important things we have to remember is that we can not add quality. Adding quality is not similar to painting a wall. It has to be built in and for that, we should have all the processes in place, starting from architecture, design and development and so on.
An example in this context would be the way a German car company makes cars. They build the car, do extensive testing, fix it and then only release it to the customers so that they get an excellent product. Looking at another company in Japan that makes high end luxury cars, when this company finds a problem in one of the cars before it is shipped off, they stop the assembly line. Then, they find out where the defect has been introduced, fix the process and throw away all the cars that are manufactured with that defective process, and start manufacturing again. The result is that Japanese car with the same quality and luxury of German car is build at one-third the cost. It is a classic living example we have.
Building quality through absolute processes is more beneficial, important and efficient than trying to add quality or stating that quality can always be added later. When a pizza gets burnt then can the quality assurance team make it proper? Certainly not, because it is a one-way process. It is important to realize that we can’t add quality.
We have to only build quality into a product as part of our architecture, design and development. It has to be the attitude of the organization. It has to come from top- down. Organizations, people and processes should have the attitude of building quality in and not adding it later.
(In this SmartBits, Zulfikar Deen outlines “System deployment architecture and testing“. The video is at the end of this blog)
it’s extremely important to understand system deployment architecture. Let’s say we are delivering the same system and as an organization we decide to deploy it in the cloud. It requires a completely different way of testing and we need to show whatever was appropriate works correctly.
If we decide to do a hybrid for various reasons, the solution remains the same, but as an internal decision-making, we may have to make a decision based on compliance. In India, we could take the data into the cloud without much of an issue, especially when the data centres are hosted here, but the same may not be the case in other countries. The same solution deployed differently in a different country implies testing has to be different. If it is a hybrid we are trying to work with the two different system fidelities, where part of the system sits on-premise, some of them on cloud. We need to be sure that the data flows through properly and it is secured.
We may not worry about system security between two systems if the entire system is deployed at one place, whereas if it goes through public and private clouds then testing has to be slightly different. If it is completely on-premise then deployment and testing differs.
If we decide to use a part of it even in the cloud and using only infrastructure as a service the testing would be different. Again if we use a part of a service, say using a data factory from Azure, the testing has to be different because we are using a service provided by the cloud in a different way. We need to make sure it works, if we decide to use advanced services. If we were to use it as part of a whole system, it can’t be tested on-premise. Definitely we need to understand the deployment architecture, how we are planning to deploy and the testing therefore has to be appropriately done for that.
(In this SmartBits, Yuvaraj Thanikachalam outlines “ What is Blockchain? “. The video is at the end of this blog)
The way we move files from one system to another system via copy and paste “Ctrl-C & Ctrl-V” is very popular with every computer savvy professional. On similar lines can we Ctrl-C and Ctrl-V the money? Why can’t we move the value in a digital format? A gentleman by name Satoshi Nakamoto wrote a white paper on Bitcoin. He was trying to decentralize the internet, by creating a mechanism in the digital world to move the value from one pocket to the other without any central authority in place. To do this, he took this problem and solved it by using peer-to-peer technology, encryption technology, and database technology. Bringing all this together he created a solution called Bitcoin which everybody referred to as a Blockchain. Bitcoin is one of the applications of Blockchain, it is not the Blockchain. Underlying technology which powers the innovation of moving money like a copy of a file from one pocket to another pocket solving the double-spending issue was revolutionary.