Working on projects

Those who plan do better than those who do not plan even though they rarely stick to their plan.

What is a software project?

All software projects at Infinum are different, but all software projects at Infinum are also pretty much the same.

Each software project in active development will usually have one or more members from these respective teams:

These people make up a project team. The role of the project team is to:

So there are three sides to a software project at Infinum:

And each project has the following constraints:

While deadlines and money are things that definitely affect the scope of a project, your job is to always focus on quality above all else.

This is why companies have quality assurance, because when there is a separation of concerns, there's also space for someone who puts overall quality first. Developers primarily care about code quality, designers primarily care about UI and UX, and you can primarily care about how these two gel together to form a perfect little application that will please the client, please the audience, and be the envy of many.

While other people's motivation might change, yours never does. In full recognition that quality is a team effort and everyone should drive towards it, you must always stay aware that it is your first and foremost responsibility.

Of course, you as a project member are also responsible to take care of time and budget in the ways that pertain to your line of work:

This is how all software projects are the same. The only way to convey how they differ among each other is for you to go out there and start facing specs, bugs, clients, deadlines...

Project phase lifecycle tl;dr

This will all be elaborated below, but here's a short tl;dr on what a project's phase will look for you from beginning to end. For the purposes of this example, the focus is on mobile apps.

  1. Help out with the definition of designs and requirements (make sure you are active during meetings)
  2. Test feature tasks and report bugs and UI/UX improvements
  3. Write test cases for each feature and automate certain aspects of testing
  4. Continue testing until bugs are resolved and a final build is ready
  5. Before release, do an update test and full regression test
  6. Check that build in the production environment (Google Play Beta, Testflight)
  7. Release the app (preferably using staged/phased releases)
  8. Check our crash reporting tools for spikes (e.g. Crashlytics)

A project's rhythm

A project has its motions and paces. For you as a QA engineer, it will predictably speed up and slow down several times in its lifetime.

This is how we can break down a typical software project in time.

Bizdev phase

Research phase

Design phase

Pre-development phase

Development phase

Pre-release phase

Post-release phase

Always

Whatever phase the project might be in, you can always:

Main and support tester

Since we have a lot of projects and projects are not always in sync with each other, a tester's load might go up and down during the year.

To mitigate this and avoid overtime, most projects have a main tester and a support tester.

A main tester can redistribute his/her workload to the support tester when he/she is simply not able to meet the project's demands.

In case you're the main tester and you're not sure whether your project has a support tester assigned or not, you can check with your team and ask someone to take this responsibility.

Software development methodologies

There are plenty of ways to organize a software project. Since your job is to take care of testing and other quality processes, it is important that you are familiar with different approaches.

More on this later, but for now, check out this cute graphic...

project-methodologies.jpg


working-on-projects.gif