Neil Price-Jones, Quality Assurance expert and founder of NVP Software Solutions, talks to Justinmind about QA, prototyping and the secrets of a flawless software development lifecycle.
For 24 years QA expert Neil Price-Jones has been bringing his eagle eye for detail to software testing in sectors as diverse as finance, telecommunications and pensions. He’s a Certified Quality Analyst and Software Tester, is a regular speaker at some of Canada’s best-known Quality Assurance conferences and is a Board member of TASSQ, the Toronto Association for System & Software Quality. And that’s before we get on to NVP Software Solutions, the company he founded back in 1993 as a test automator and which is still going strong today.
Justinmind caught up with Neil to find out what’s new in software testing, and to discuss connection between prototyping and Quality Assurance in the software development lifecycle.
Can you tell us what an average day in the office looks like for you in the NVP office?
Most recently an average day in the office would depend on what particular offering we are dealing with on that day. Assessments would consist of talking to clients about their Quality Assurance issues; analyzing the results of the conversations and working on recommendations and road maps to get the client to better processes. This may morph into Consulting to implement those recommendations for the client. Consulting also includes improving processes for Quality Assurance and Testing without necessarily having an Assessment in hand. A Management day would consist of planning and managing a particular set of tasks and people for a particular project (usually high risk) and bringing the QA and QC to a successful conclusion on time and under budget.
You set up NVP in 1993. How has software testing and QA changed over the intervening two decades?
There are many more packages and apps that are used to build a solution these days. In 1993, people built a solution (usually in-house) for a particular need – it worked in isolation. Now people are buying and assembling components. We have gone from testing a monolithic solution to testing the packages and their integration points. We now depend on the vendors to make sure their own packages are technically sound and tested and we deal with the integration. Software is no longer hidden in a data centre somewhere; it is available to the final clients outside and around the world. This makes a huge difference to the Security and ‘ilities’ of testing requirements.
Streamline your QA process with Justinmind prototyping tool
Can you explain the connection between prototyping and QA in the SDLC?
Usually the last or second to last phase of testing is the UAT (User Acceptance Testing). Frequently this phase is delayed or time compressed. If this is first chance the user has to see the interface and provide feedback it is very late and almost impossible to change. A prototype greatly reduces the stress level at the UAT late in the project and also helps pinpoint some earlier errors.
A prototype moves the Quality Assurance earlier and makes it easier.
What are the most common mistakes you see in software development projects and how can people avoid them?
The usual answer to this would be the Requirements are wrong but we (as in IT) have a long history of not pushing back hard enough on the requirements to ensure they are correct before we go off and start development and all the other pieces of the SDLC. We are too eager to get started. Some well planned projects I have worked on had such a good set of requirements that there was little to do.
How does QA testing fit into an agile SDLC? And what’s the role of prototyping in facilitating an Agile development project complete with QA testing?
Although the Agile manifesto and guiding principles say nothing about QA, the most common implementation of Scrum includes the idea that the code released at the end of a sprint has been tested and is fully functional. We still need to plan and test; it is just that it is a short timeline and limited regression ability. Prototyping early in the project and in any particular sprint allows the customer (who is supposed to be present) to see what they are getting as opposed to just listening to what can be a very technical discussion.
Can you give us an example of a time when testing on a prototype helped you contribute to the improvement of a new software?
We were working on a system that distributed Royalties. The design and development process was module driven since we had a number of functions and the design worked out that way. Part way through we generated a prototype for one particular module and built testcases for that prototype. The client’s statement when they saw it was: “if that is the way it works; it is not going to work for what I want – we need to rethink this before we get to coding”. A lot of time and funds were saved as a result.
What advice would you give for anyone looking to start a career in software?
If you are interested in technology and being a technical expert, then be prepared to learn several completely new technologies. You always need to jump to a new technology. No test tool I learned early in my career is still around. They have all changed. If you want to end up in management, then look at the soft skills.
NVP also provides consulting to software start-ups. What’s the place of QA in a start-up and what makes someone a good candidate to be a QA manager in a software start-up?
The place of QA in a startup is to adapt the correct processes to the risk and size of the start up. QA can evaluate whether things are on the right track and analyse results and metrics to check for trends. Processes always must have a positive ROI for them to be effective. A good QA manager in a start up has two levels: On one level they are carrying out the day-to-day Quality Assurance and Software Testing activities. On the second level they are looking at where processes can be made easier or faster without impacting the start up.
Download Justinmind free below and implement your Quality Assurance processes earlier in the software development lifecycle!