How we work
We strongly believe that for a great software development we need at least three issues to be considered: software development process, quality assurance, and management. We do our best to follow standards and guidelines we have adopted or created. But we always remember that software development is rather a mixture of art and science than manufacturing lines of code.
Software development process
Being agile does not mean to be chaotic. We have mature and tailored software development process which includes following activities:
- functional and technical design
- design review
- coding and unit tests coding
- code review
- functional and system testing
- system and software maintenance
Throughout the years of working on complex software products we introduced tools and procedures supporting work on many product branches in a distributed environment, including:
- highly distributed compilation
- automated build servers, code propagation servers
- automatic test execution scheduler on a cluster of servers
- performance monitoring tools
All those tools work together with development support system built on top of JIRA with many customized plugins which integrate bug tracking with requirements tracking, feature tracking, test results tracking and many others.
We believe that quality assurance is a part of software development process. For that reason, we include QA activities in our everyday work:
- Test planning in parallel with feature design, test development together with actual code development, peer reviews, testing and code analysis.
- All design and coding products are reviewed, sometimes even multiple times in case of incremental and targeted reviews.
- Unit and module tests are implemented by developers with continuous measurement of code coverage.
- Functional tests for system level are designed and implemented using IBM STAF Framework.
- All tests are executed automatically by Continuous Integration servers (Build Monkeys) combined with an issue tracking system.
- High code quality is also ensured by compliance to the coding standards and by static code analysis.
We agree with values and principles stated in Manifesto For Agile Software Development.
Scrum has been adopted to be our process template and tailored to our needs and characteristics of the product and environment.
For us, to be agile means:
- iterative development with timeboxing an definition of work done
- collaborative problem solving with cross-functional, multi-skilled teams
- software development with comprehensive design and documentation
- transparency and visualization of release plans, features, tasks and progress
- best practices like CI, unit testing, daily scrums
- fixing bugs ASAP
The 9LivesData way of working constantly evolves as we constantly inspect our process and adapt it to every new challenge we encounter.
We don't shy away from improving even the organization of our customers always aiming for better communication and cooperation.