If you have done hiring in the past then like me you have read CV's over the years where the list of technical abilities of the applicant reads like a person who is a genius. They can code in any language better than a senior programmer, manage any database like a skilled DBA, and design and debug websites like a seasoned web developer. This type of CV is not isolated—it is endemic.
There is too much smoke and mirrors around technical requirements when hiring. They lack detail and specific examples. They request far more than is required in the actual job or completely create a misunderstanding of what the job entails. For an industry built on brain power, we are woefully inadequate at explaining what we want in a QA/test employee, and that probably applies to most IT jobs. This critical analysis of technical job requirements is to create a debate on the subject and offer a possible solution.
Here are sample technical requirements for two real QA jobs I found on the Internet:
b) Knowledge of server-side technologies, such as Java, PHP, and Ruby
c) Understanding of how an OS works, command line tools, and shell scripting
d) Experience with SVN, ANT, GIT, or general configuration management methodologies
e) Ability to create and implement cross-browser HTML/CSS/JS
a) Software test experience in web- and Java-based technologies
b) Working knowledge of and demonstrable trouble-shooting skills on Linux/Unix environments
c) Working knowledge and experience of relational databases and SQL
d) Experience with web app automation tools, such as Selenium, Soapui, and Jmeter
e) Knowledge of Python and/or Groovy scripting is desired
Now, these technical job requirements are really typical in job postings, but what do they actually mean? Take Job 1: A job applicant could visit Wikipedia to read up on those skills listed in a), memorize the explanations for the interview, and the interviewer might think she has a brilliant match.
Further, what does “experience of” these technologies mean? Does it mean the applicant can write code in all of them or has used each technology in detail? Does it mean the applicant can edit XML files or create new ones that can be used as test data? Maybe the applicant just hung around Ajax developers for a while; would that be experience of Ajax?
Given the situation above, this is the type of technical job requirements I would like to see:
- The tester will take ownership over a test environment that replicates the production site.
- The tester can run various SQL statements like Select, Update, Create, and Delete. The tester can also use MySQL features to achieve above results.
- The tester can navigate in Linux, do grep-type searches, and execute required files.
- The tester can edit configuration files to create test data.
- The tester can use browser tools like Chrome developer tools and Firefox Firebug to locate where problems occur.
- The tester understands web server/client technology and the basics of programming, so he can communicate with developers on technical issues.
In the categories below, this position would be suitable for a tester with Level 3 capability.
An industry standard of technical capability would greatly assist any tester when putting a resume or CV together. Wouldn’t it be easier for the tester and hirer to read from a common set of technical levels? In this scenario, a tester doesn’t have to bluff and an employer doesn't have to guess the actual testing ability of the applicant.
In an attempt to offer a possible solution, a system of certificates for technical knowledge could be created by a group of respected test professionals or a group like ISTQB that could revisit their current offerings in order to meet this need. The tester would have to pass an exam that questions the tester on database architecture, SQL queries, programming concepts, different languages, developer/tester tools, etc. The current tester certification courses don't give employers a view to the technical ability of a tester. This needs to change to allow testers to give better visibility of their capabilities.
Below are the levels I recommend with their associated technical proficiencies:
Level 1—Minimum Technical Capability
This level would be suitable for a usability tester.
- The tester understands general personal computer terminology—both hardware and software.
- The tester understands information technology, e.g., knows the difference between wireless and bluetooth.
- The tester can use different operating systems, e.g., Windows versions, and Apple operating systems.
- The tester can use basic features of MS Office productivity packages like Word and Excel, e.g., can a tester create a test case spreadsheet with results and graphs?
- The tester can use defect management systems
Level 2—Basic Technical Capability
This level would be suitable for some games testing and localization testing.
- The tester has a very good knowledge of hardware and software in a PC.
- The tester understands mobile technology terminology and can navigate around a smartphone and tablet device.
- The tester can use most main features of MS Office productivity suites, e.g., can create formulas in Excel.
Level 3—Intermediate Technical Capability
This level would be suitable for general website testing from games, social media, financial, and telecommunications.
- The tester understands database architecture, web servers, batch jobs, etc.
- The tester can create basic SQL queries like Select, update statements.
- The tester can work in a Unix or Linux test environment.
- The tester understands how to execute different script types.
- The tester understands how to use different testing tools like record/playback tools.
Level 4—Proficient Technical Capability
This level would be suitable to work in the automation side of the job with some training.
- The tester has a programming qualification.
- The tester can do shell scripting.
- The tester can use Selenium or another tool to automate dynamic pages on the website.
Level 5—Expert Technical Capability
This level would be suitable to work as a software developer in test or as a senior automation engineer, as well as offer other technical abilities.
- This is a qualified programmer with experience working on programming projects.
- This is a programmer who works in testing to create automation scripts using an automation tool like QTP.
- This tester can program in a language like Python, Java, C, PHP, Perl, etc., to create tools to help with testing.
Alternatively, an exam that just highlights knowledge in specific areas—e.g., SQL ability, programming ability, web architecture knowledge—might be a better approach. This method would be specific on actual technical knowledge of the tester. It would be transparent to the industry what the technical ability is unlike University degrees that can be shrouded in mystery to the technical attainment of the individual.
To conclude, I have pointed out why there is a need in the industry for transparent qualifications or a set of qualifications that the industry has trust in. While testing theory is great, hirers want specifics, not aspirational achievements when it comes to technical knowledge and ability. This is a win-win situation for the industry and the tester. It's crucial that we ask the testing profession to debate this subject and develop a solution to the testers’ dilemma of how to explain their technical ability in a real and substantive manner.
What do you think? Do you see a need for standards as a means to substantively demonstrate technical ability to potential employers?