> Why ITSpree > Process and Quality Assurance

Process and Quality Assurance

we use agile/SCRUM with extensive QA & testing to deliver superior results

For us, a good customer is a satisfied customer. That's why when it comes to software development, one thing is of a top priority - a good development process and communication model - one that will ensure that the final product will be of a high quality, and will meet all the requirements of the customer. That's also why one of the key factors to ITSpree’s service is our custom agile development process which defines a way of planning, executing, reporting and finally deployment of a project.

We understand that working on-line with a nearshore company can sometimes be hard - especially when as a customer, you might want to have detailed view of what is happening with your project at any time. On the other hand, we also understand that every project should follow a given set of rules that will ensure its final quality and will make overall project management easier.

Our unique development process takes both of those requirements into consideration. It ensures that every project is being developed to the highest standards of software engineering, but on the other hand, it also let customers easily communicate with the development team, and get daily report on work progress.

A typical project done in ITSpree consist of several steps:

1. Planning and Designing

The first stages in project development is planning and defining all major business objectives. At this stage, we speak with our customers and try to understand what exactly they want to obtain. It is also at this stage where we try to actively participate in the planning process by proposing some extra features or technology platforms/solutions - always explaining why we think that proposed idea will be good for the project.

The next step in this stage is creating an initial, very simple functional specification. In many cases, a customer knows generally what system they want, but they don't have a detailed specification describing how exactly system should work. In such case, we are always happy to help and create one.

Once we have outlined a generic vision for the project, we plan the development and make the technical requirements a little bit more specific (this is called technical specification). The level of details at this stage is not too high because we only need to know the project outline and most important details like section, core features etc.

2. Development

The next step is to launch a development of the project this is done in two steps. First step is initial estimation of the product backlog (list of all required features) in terms of required time of development and estimated date of delivery of the complete product. We then organize the development in a series of sprints – typically a 5-days periods - which aim to deliver a selection of projected features. We then start to build project sprint by sprint (week by week) adding more and more functionality to the project.

While developing the project, we follow core SCRUM guidelines in terms of roles & responsibilities as well as communication model between development team and the client:
  • product owner – we select one product owner which usually is a person on the side of the customer (e.g. customer’s project manager responsible for managing outsourced development)
  • scrum master – which usually is ITSpree team project manager who’s goal is to deliver sprint’ results on time
  • each sprint (week) is started with sprint planning meeting at which we determine together with scrum master and product owner what features we are going to work on in upcoming week
  • each day we organize v. short internal daily review meetings for the team to catch up with how the progress of a sprint is being met
  • finally each sprint (week) is finished with sprint review meeting at which we summarize

While working on the project we put a great focus on on-going communication with the client (which is part of on-going development in person of product owner – and gets weekly review of the development status & product delivery estimates). This model of very close & frequent communication with the customer allows a maximum flexibility and late-changes implementation into the development cycle as well as full project transparency. The customer can always approach us with any new ideas or feature requests – and also have full access to the current phase of development, project delivery estimates, etc.

3. Quality Assurance & Testing

Quality Assurance and on-going testing is one of the core (yet, optional) parts of our development process which we always encourage our customers to apply. In a typical agile development process quality assurance will exist in forms:
  • on-going full business logic unit tests development (typically using some standard testing framework like JUnit, PHPUnit etc.)
  • continuous development approach – all code commits are automatically checked via automatic builds executed round of the clock 24/7
  • all feature implementations / sprints to pass manual freestyle and/or functional testing performed by a dedicated QA Specialist and based on user stories on base of which each features has been developed
  • each full release to pass full set of both: automatic built as well as functional / freestyle testing – optionally we also encourage customers to perform e.g. performance testing and other testing procedures depending from the type of the project, technology platform etc.

Detailed information about Quality Assurance service can be found here.

4. Knowledge Management

One of the benefits of using an external development company like ITSpree is ability to profit from shared pool of knowledge that we naturally grow within our company’s teams. This means that when you approach us to develop certain type of a solution – there’s a great probability that somebody at ITSpree has already worked in the past on a system that share some similarities with your project. This means that we will be able to extract and re-use that knowledge and deliver you a better, more efficient product than if you would build it on your own.

This type knowledge re-usage can be seen on different ‘types’ of knowledge – from more generic one e.g. how to design certain solutions, how to use design patterns effectively, how to use certain technologies like in-memory caching or cloud computing solutions – to more targeted ones e.g. how to work with certain specific video formats, how to design best solutions for very specific problems etc. We try to help those different types to spread across the teams by organizing internal free trainings for all our staff and by making sure that all team leaders and senior project managers have good review of other projects that are happening in the company outside of their teams.

Finally, we understand that knowledge management is crucial not just for our company but to our customers as well. This is yet another way in which your company can benefit from working with us. If we work on a project with a clients, we never try to hide or lock certain knowledge within our team – we are always happy to share it with your internal IT structures in any way necessary – from direct phone-calls and video meetings between IT teams, to code & solutions documentation either in our internal knowledge archive (wiki) or directly on similar customers systems. We understand that by trusting us to develop business critical solutions, customer not always require us to deliver top-quality products, but also wants the specific knowledge that resulted as part of the development effort, to make a circle and go back to their internal teams.
Work with us We guarantee cutting-edge technology expertise, top talents, rock-solid deadlines and exceptional customer care from day #1!