Software Testers: Who is your boss?

I was spending some time with a software test engineer (Software tester) recently and have a simple realization to share.

“How come this runs so slow?”
“Oh it runs just fine, just some problems only in IE browser”
“Why?”
“Probably IE’s Javascript doesn’t run so well”
“Yes but soooo slow?!?”
“Yes… but my Lead has seen it and knows about it”
“Which means it doesn’t matter?”
“Well not that… client has also agreed to Chrome-only support”
“The site will support only Chrome?”
“Yes, we described the problem and got client to agree to it”
“Do you have it in writing?”
“Yes”
“Very good. But why is this the case in first place?”
Developers told me the 3rd-party component doesn’t run on IE.” (look on face: how does it matter since client has agreed anyway)
“You mean a best-selling web UI component library doesn’t run well on IE???”
“Yes that’s what developers told me”

After some pushing and research, it finally turned out that developers had to use another method of data access and voila! – everything ran smooth on all browsers.

No doubt, the incident above and its subsequent resolution display several best practices. Get acceptance criteria in writing. Make sure client understands limitations. Don’t trust explanations! Be hard-nosed. Use common sense (how can a best-selling web UI library possibly not function well on IE!). Don’t let your personal love override the obvious (Chrome is great but that doesn’t mean you can force users to switch).

An aspect I would like to focus on is: to whom should the software tester be responsible? Project Manager? Team? CEO? Entity/person who is paying for work?

In the course of project teams and organization and “reporting structure” and salary and revenue and a zillion other things, we forget what is obvious. In reality, the Lead/Manager doesn’t matter. The developers do not matter. The CEO doesn’t matter. The client doesn’t matter! They are all illusion, maya.

The only person who matters, the only person who finally decides, is the user. A software tester is responsible towards only the system being tested, and users of that system.

In the short run, you can get away by keeping your Lead/Manager happy. You can get away by accepting superficial wave-of-hand explanations from web application developers. You can get away by getting clients to agree to something illogical. You can get away by using bureaucracy to cover your behind – “I have it in writing”.

You can get away because the short run is imperfect. The short run can hide. But the long run is all about the right thing. The good thing. The correct thing. Quality. Truth. Details. Finesse. Care. The long run exposes everything.

The right thing here is to find and fix the problem, or find a workaround if it cannot be fixed.

If you do not, all might be well at the surface. But when the user rejects it in the marketplace, everyone loses. And why? Because we ignored her when we should have paid attention. We got confused by irrelevant intermediaries (colleagues, lead, client, CEO) and forgot who the software is being built for.

In the example above, the user is taken for granted. The user is actually expected to tolerate slowness, or switch her browser if she wants to enjoy our system. The IE user votes No and many users are IE-only. Yikes, that pinched!

As a software QA tester (whether for a web site or web application or desktop system or mobile app or server software and so on), you are the user’s voice and warrior. Don’t accept reasons. Make your point. File issues where you see issues. Revolt till someone notices. Help in getting the right thing done. Ride alone if you have to, but ride the right path.

Honestly, you are not alone in getting deceived by quick things. It is the same thing in business. Business gets confused by targets and profits and “customer satisfaction metrics”, because those are the quick and measurable things, although they are not what business is about. Business is about doing the right thing for people, not only the legally right thing.

Software testing is about doing the right thing for users, not only the officially right thing.

Thanks!

Author – Chinmoy Panda

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Group Code Review

Group Code Review :

As part of CodeCAT (an area under the umbrella initiative we have at Mindfire called Catalyst – an initiative to improve competency of every person involved in software development) we have been doing code reviews regularly. After every review we post the findings in GPS (our company’s intranet) so that everyone else in the company can go through the review and get to learn from that.

In the beginning the enthusiasm was there but over time what we observed is that mostly people do not go through other’s code reviews. So the intent of spreading the knowledge of one code review (which is typically a one to one session) to many others was not being met. I started taking awareness sessions for all people in batches – things improved after that but not as much as we would have loved it to be. Something had to be done !!

Since we were clear on two basics things – one is the quality of code review being done was good and second was we were sure what we needed to improve,i.e spreading the knowledge of one review with others. This awareness of our strength and area of improvement helped us in coming up with an effective solution. We decided to start “Group Code Review” – call 5-10 developers to a room and have 1-2 code reviewers, pick 1-2 projects randomly and start doing a code review there itself. The intent was to spread knowledge and sensitize people not to repeat silly mistakes.

We anticipated that people might object to this way of review so what we did is we started collecting opinion/views from the codeCAT team members(of 25 persons). We had a lot of discussions on the pros and cons of having something like this – people might like it or might not.

After a lot of discussions we finally agreed that since our primary intent is to spread knowledge among more people and at the same time ensure that reviewees take up code review comments seriously and work on improving their code quality – what we decided to do is have the first round of group code reviews done team wise and by the team lead (the team lead had the flexibility to call other reviewers too). So instead of the earlier plan where we thought to call randomly 10 people working in one technology (but in different teams) and have 1-2 codeCATs assigned who in the meeting itself pick out few people for review, we called people working in 1 team for review. Since the concept was new to start with – we realized the earlier approach will not work because people might not feel comfortable. So we called 7-8 people working in 1 team to a room and got the code of 1-2 persons reviewed by the team lead (if he happens to be a CodeCAT – in the first phase we called teams whose team leads were CodeCATs). The review session was used as a forum to not only identify mistakes done by developers but also was used as an interactive discussion forum where people got a chance to ask questions and understand why something will not work and what changes need to be done to make it work.

So far the feedback from the team members, who participated in the reviews , has been positive and people seem to be liking it. Ofcourse the next round of reviews will be a little challenging when we pick groups of 8-9 people randomly and assign a reviewer who they have not worked with. I will keep you posted on what our findings are after we do that plus things that should be taken care of to make group review more successful.

Author – Atma Prakash Ojha

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Mindfire 2.0 – A Vision for 2011

Sometimes organizations take time – years – to reach a stage from where they leap. Mindfire Solutions is today at that stage.

As we move forward to our next year in operation, allow me to close my eyes and see where we are next year. In one year from today…

I see new faces. The 300 freshers we selected between Nov2010 and Mar2011 have joined us in Jul2011 and are getting on to projects after some intensive training. I also see the remaining 700 of us helping and guiding the new people to get on-board.

I see more and better facilities and infrastructure – our second Bhubaneswar center in operation since Feb2011, our new NCR (Delhi) center of 500 capacity just becoming operational, our Bangalore center with 150 capacity operational since Mar2011, and our search has begun for 150 capacity centers in Kolkata (or similar) – to suit the rapid growth we are facing. I also see construction of Mindfire Towers at Bhubaneswar with 1000 capacity going strong since Feb2011, on track for opening in Apr2012.

I see a new workplace environment. All our cubicles were broken down in Mar2011 and replaced with open-table Agile layouts, everyone works off laptops, there are bean bags and sofas scattered inside the office, Wii game consoles, napping pods and relax spaces, vibrant colors, LCD screens running mixes of interesting things ranging from the occasional matches to tech videos. Lot of people work from home either temporarily or permanently, and we have a virtual workforce distributed all over the country.

I see a new working style. Everyone works with cooperation and collaboration, helping each other improve. Competition is with self, not others – how do I improve myself every single day? Leads, senior colleagues, everyone in the team and outside is thinking of how to help everyone else. We understand that our value does not come from designation or position. Our value is due to the value we provide to others around us.

I see the most out-spoken atmosphere any company has ever seen. We discuss and disagree (and agree) openly and without fear. Sometimes our thoughts are appreciated by everyone else, at other times they are not – but we accept that as part of life and move on to our next thought. The more we express ourselves, the better we feel and the greater the progress of the organization. This has begun to happen now because we understand after some discussions during Dec2010 – that at Mindfire there is no senior, no junior, no management – we are all in this together.

I see fantastically improved quality of work. We are committed to the work we do – small or large project, small or large client, we do our best. And our best is much better than it is today. We take responsibility, we earn our respect from our colleagues by doing stuff and not by flashing our credentials, we take pride in our craftsmanship and results. The quality improvement and skill improvement focus, the learning and knowledge and better-talent initiatives we started in Dec2010 have succeeded.

I see more and better people eager to join us. From all over the country, freshers to experienced, different technologies, different skills, different roles – all kinds of people – we are flooded with people who want to join us. Growth and learning opportunities, salary, responsibilities, environment – people like what they get at Mindfire. Among other things, the new salary levels we announced in Dec2010 for campus hiring has helped us attract talented people.

I see more and better clients eager to work with us. New and old clients, clients who come to us on their own having heard of our good work from others and clients who we pursue to get their projects, tech-deep clients and big-business clients – all kinds of clients want to work with us. The new messaging we began in Dec2010 has resulted in a unique position in the minds of clients. The sales offices we established in 10 different regions in US/Europe, starting in Jan2011, have taken client touch to a whole new level and enabled new relationships of a different scale.

I see new areas of work. We launched our BI/DW practice in Feb2011, our ERP practice in Mar2011, and our RIM practice in Apr2011 and have already completed some projects in each. We launched our Technology-oriented SIGs in May2011 and our System-based focus areas in Jun2011.

I see a new set of leaders and new styles in old leaders. The new leaders we identified in Dec2010 and fast-tracked internally have delivered responsibilities they could not believe themselves to be capable of, the new leaders we hired in Jan-Feb2011 have carved a greater path for Mindfire, and current leaders are at a higher level of maturity and responsibility after seeing what Mindfire is truly capable of.

I see us blazing the trail in innovation. Mindfire Labs is fully in operation and has delivered 5 innovative products for a better world. Several of our online systems and communities have succeeded in their objectives. 100Drivers has generated employment for 1000 unemployed youth since taking off in May2011, A/B/C have caused action towards better safety, government and education, and X/Y/Z have collectively generated great traffic and revenues. Most of these ideas were brainstormed and finalized during Dec2010-Jan2011, and then developed using an open-source mechanism where all of us could contribute in creating systems for a better world.

I see us doing innovative good for society. We are taking care of the upbringing of 100 children as per the scheme announced in Dec2010, the shelter we had planned together is under construction to house 100 children since Apr2011 (to be ready by Mar2012), our education scholarship scheme launched in Mar2011 has touched 100 children already, and we have just completed our 25th medical camp having started in Jan2011.

I see a new level of trust among us. People understand what Unlimited Leave is and why we are unique in having it, what a zero-hierarchy organization is and why we have it, what a zero-rooms organization is and why we have it, and so on. Those who were not comfortable with such organizational ideas and believed in traditional industrial/factory models of work, those who want respect due to designation and not talent, those who do not match the fundamental principles of the new Mindfire, those who do not understand quality and do not worship work, those who cannot adapt to changes – they left us before Apr2011.

Ladies and gentlemen, welcome to the new Mindfire – Mindfire 2.0. This is it.

Author – Chinmoy Panda

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Why the name “Mindfire”?

I have often been asked why we are named “Mindfire” – what does it mean?

When I decided in 1999 to create an organization focused on software development, several candidate names cropped up. I was very clear that the name had to embody the factors and spirit of software development success, based on my observations of this industry that I was and am so passionate about.

Numerous names were tossed around. I felt “Mindfire” hit bullseye.

In any field of human endeavor – bull-fighting or buildings, singing or software – nothing succeeds unless you have a balance between “mind” and “fire” – between the smarts required to do something and the action orientation required to do anything. However the criticality of this balance is perhaps the most intense in the field of software.

In software organizations, I had observed two causes of failure. On one hand, you had young and intelligent people who had the raw “intelligence”, but didn’t have an adequate action orientation toward actually doing things, learning things, delivering things – that killer instinct would be missing. On the other hand, you also had a terribly large number of people who would run around being “visibly loud”, doing things and lot of things with a lot of “fire” – but who perhaps did not have sufficiently sharp minds required in software development.

Obviously, I wanted everyone who joined Mindfire to succeed greatly in their careers. For this, our organization had to constantly remind them about this balance between mind and fire that was key for them to succeed in their chosen career. And what better way than to name ourselves accordingly!

Hence, Mindfire.

PS: Having observed hundreds of software engineers in the last 11 years at Mindfire, I have come across a new rare species which makes me feel the name needs an addition. A couple engineers had both the mind and the fire in place, but thoughts and movement in the wrong direction! So today I would perhaps call ourselves “MindFireArrow”: to succeed in software development you need to have mind and fire in equal measure, and both pointed in the right direction.

Author – Chinmoy Panda

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Sidejacking: How to prevent Firesheep from hijacking your session

Sidejacking, a technique of hijacking web sessions of other users in the network, has suddenly gained much attention on the Internet, thanks to a new Firefox extension Firesheep.

In a sidejacking session, the attacker sniffs data packets of the transactions over the network and steals cookie which the attacker can then use to impersonate the victim on the site the user is currently logged in. Even if they have encrypted login pages, unsecured HTTP sites use cookies to identify you during the entire session and this is what the attacker exploits. An attacker with certain tools can steal the cookie during transaction and use it to make the server treat the hijacker as the legitimate user. This vulnerability has existed since a long time but exploiting it was never so easy nor was it as alarming. Continue reading Sidejacking: How to prevent Firesheep from hijacking your session

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Social Ego – How company branding fuels it.

Ever wondered why idol worship as a concept came into existence. If as our scriptures say that GOD is omnipresent then why was a place of worship created and why inside that a figurine of God put ?

I think it was done because to imagine God and pray in open space was not working out for people, they needed a face to imagine and a symbol or idol to look at and then attach the same reverence and awe that they had for the internal belief called God. In short we as human beings externalized our internal belief and source of inspiration so that we can easily connect with it on a frequent basis.

Point is why am I saying all this ?

I wanted to draw a correlation to another place (which is also called as a place of worship) and the need to externalize our social recognition so that we derive pride from it easily and regularly. All of us work at some place or the other and might be all or some of us would be proud to be working at that place. We are convinced that it is a good place to work and we feel proud to be there. Problem or insecurity creeps in when the name of the work place is not famous in the outside world. Whenever you move out of office and talk about your workplace and the work that you do and do not see the respect or pride in other persons eyes or behavior your social ego is badly hurt. Some of us who are more mature and who do not need someone else’s appreciation to move on in life and be happy, manage easily but for the rest of us self doubt and frustration creeps in. We tend to distrust the company/office and feel cheated or we might just decide to leave since it does not give us the recognition that we are craving for. Hurts all the more when your near and dear ones hesitate talking about your workplace because they do not feel proud saying it.

Here comes the need to externalize the brand and the values or things that you like about your office or workplace. As the brand building gathers momentum and becomes famous in itself you realize that it makes your life all the more easier. Now your social ego is massaged nicely – you just say the place you work and rest of the things are taken care of by the person you are talking to.

Even though technically it is still the same place and the same values and work standards that you are maintaining but suddenly you feel more worthy because others feel that way. Of course for the persons who were matured enough to feel good without the brand externalization hardly see the difference, they felt good earlier and would continue feeling that way.

The intent of my writing this article was to explain the concept of brand building keeping in mind the effect it has in boosting morale of people. Of course there are a host of other areas for which brand building is used for but I have tried to explain only one aspect of it.

Now the question I want to ask is – do we actually need to externalize our self respect so as to derive social recognition or just let the way things are and convince ourselves that it hardly matters what others think about us ? Please share your views.

Author – Atma Prakash Ojha

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Future of software development and software testing

The pace at which technology is advancing and tools are being built I think in future the role of software engineer will go through a major change. Smart tools will ensure that you need not know the syntax of a language or the inner workings of how it will interact with the database server etc etc. All you would need to be a good software programmer are tons of aptitude and a thorough understanding of the business for which the application is being built.

A typical developer would not necessarily be someone who has worked on a particular technology for 5-6 years rather it would be someone who has worked in a particular business domain for 4-5 years. Unlike at present where we need people to learn and keep themselves updated about the technology they work in, say someone who claims to be an expert in .Net should know what new features .Net framework 4.0 has , going forward a software developer would need to be updated on all the applications of every technology that are in the market and which one has what good feature – from usage in business point of view. He would not be required to learn the nitty-gritty of a technology rather he would be required to learn and be updated on the features that any technology has and should have the aptitude to use the one that suits the requirement best. Every company would have only a handful of network/IT support guys to take care of the system configuration needs.

In such a scenario the role of a typical tester (in terms of the work that she does at present) gets blurred somewhere. Since the developer’s scope of work would encroach upon the testers work she has to innovate to be of good use in the software development process. In fact the future would be more favorable for testers because of their expertise on application knowledge, of course only those who have build a thorough expertise on the domain they work in and have kept themselves updated on all the different technologies that are available in the market will excel. The fact is there would not be separate roles of developers and testers – we will have only system and application specialists. Anyone who is abreast of new technologies and has a strong knowledge on 1-2 business area will rule.

Keeping such a scenario in mind I think the current testers should start preparing themselves for the future by focusing on broad system knowledge rather than knowing the syntax of only one language. Someone at present who is into testing a banking application which is built in .Net might think she has to learn about banking domain as well as something about .Net to be an expert tester but that need will no more be there in future. She would need to know about banking domain and in addition should know what the system architecture demands and which technology in the market caters to it. Development of tools and addition of developer friendly features ensure that you need not be an expert syntactically to write your application using their language rather all you need is aptitude and awareness of the features of the technology itself – so learning about these things would help.

Author – Atma Prakash Ojha

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •