Software Testing part 4

Recently I read an article stated that software is a boring job (Sit in front of computer all day) and software testing is a low skill, not respected so instead of study computer science or software engineering, students should study something else to do “Important things”. I do not know what the author has in mind about important things but as a software professional for more than 30 years, I know that software is NOT a boring job but a highly creative career because it requires a lot of thinking, analyzing and innovating. Software testing is NOT a low skill but an important part of the software development process. It requires software tester to have is a logical mind to analyze the rational of a software process to identify defects and make sure that the final product meets the requirements. Testing is a very challenging job, for example testing a computer game designed to stimulate emotion from players requires testers to have both emotional and subjective decisions. Testing critical softwares such as a satellite or airplane computer systems requires testers to focus on every possible scenarios to eliminate all risks and prevent disasters.

Contradict to the notion that software people sit in front of a computer all day, a good software engineer is not just technical but also business people. They always engage with customers, users, managers on daily basis so they could have clear understanding of the business requirements. The job of a software engineer is to create products that meet the requirements of customers, users, and managers. By fulfilling these requirements, they solve problems, analyzing issues; create innovative products which are not only a favourable things but also fun things for everybody. In order to engage with their users effectively, professional software engineer must possess a technical standpoint and the business view to understand what the business is trying to achieve. When facing a challenge they are excited, their emotional run high and they begin to analyze the situation in a logical approach to create the best solution possible. Many software engineers told me that they believe the architecture, design and programming of software are an “art” and they are both scientist and artists. They feel like scientists because it requires logical thinking, analyzing and organizing but also artists because they create intellectual thing and transform them into physical things – a software masterpieces just like musicians, painters or writers because their products are the results of highly creative minds, definitely not something boring.

Traditionally, software engineer is not so vocal about their works and the positive benefits they are bringing to the business and society. They suffer long hours of working just like musician works hard to find perfect harmony or a poet tries to come up with perfect verses. However, different from artists who work mostly alone, throughout the development of software, software engineers are constantly engaging with each others to maintain a positive relationship with their customers by communicating and demonstrating how their products will meet customer’s requirements. The connection between an emotive approach and business and technology issues in a development environment becomes clear when assessing the success that software people achieve in delivering positive outcomes for the business.

Unfortunately, I also found that many software testers who are trained in the traditional process of testing code based on the programming language only and often fail to engage effectively with the business and thus achieve a lesser degree of success and respect. Software testing is one discipline among many of software engineering training but in traditional computer science, it is merely focus on programming testing, not much in design testing, architecture testing, requirement testing, business verification, quality attribute testing and emotional testing. For example they may not understand the importance of capturing information that demonstrates the value testing is bringing to the business or the excitement of testing the “feeling” of users when using the product (Usability testing in computer game industry) but only know how to test code.

Using an emotive approach to testing will also enable software engineers to bring the software discipline to life – using real life examples of projects that have failed due to shortfalls in the testing and quality assurance procedures will be much more effective than the traditional “code first ask question later” approach. If software engineers can engage the business and technology industry on an emotional level, they will understand the added value and business benefits of testing as well as how it could be an exciting thing. Testing is really the “whole brain” approach because it requires both logic and emotion in guiding the software development in eliminating errors and risks via logical and structured approach. Traditional training stated that testing preparation happens after programming is completed which is really too late because it only focus on detecting defect of the implementation (Coding). Software engineering training focus on testing at every phases of the development life cycle, which mean testing starts when the project starts and test cases and test scripts must be prepared as early as possible.

I believe software testers have critical role in the success or failure of projects and they need to engage the business at the earlier stage, focusing on every details effectively to determine the requirements from the project and really get to the lowest levels of what users and customers want. In doing this, disaster can be averted, using of the product could be fun and businesses will start to realize the true benefits of successful projects. I believe software is an exciting job and software tester need to be recognized on what they have contributed.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University