Working on projects
Last modified on Tue 05 Mar 2024

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 get 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 ebbs and flows. As a QA engineer, you can expect it to fluctuate in speed and intensity at various stages throughout its lifecycle. Let's dive into the breakdown of a typical software project timeline:

Bizdev phase

Research phase

Design phase

Pre-development phase

Development phase

Pre-release phase

Post-release phase

Always

Irrespective of the project phase, you can always:

Onboarding someone new to a project

What you can do:

  1. Talk about work processes
  2. Introduce the team - who are the people you are going to be working with, what do they do, what are they like, what type of communication is expected
  3. Always make yourself available for questions and answer them the best way you can
  4. Share some tips and tricks
  5. Overlook (in a helping manner) the work done and help remedy the mistakes

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