Working methodologies


We strive to help you acquire the agility you need to build markets and introduce new products and services. With Code Factory you have access to our world-class capabilities which accelerates delivery, offers control and focus for hard-to-manage projects and can reduce your operating costs, also freeing up your internal staff for other priorities. Our expertise, scalability, nearshore locations and engagement models mean that we can offer you quality service at exceptional value.

AGILE DEVELOPMENT


Over the last 10 years we have worked with different methodologies, from the very formal like Waterfall, RUP and CMMi to the iterative ones (MSF) and the more agile like Scrum, Lean or Extreme Programming.
We can embrace and follow your methodology, we can adjust our methodologies to suit our clients’ needs or you can use our extensive knowledge and we can recommend to be used a specific method. We tailor our methods and we have fine-tuned the processes to meet your needs in order to provide the right mix of control, documentation and design of activities.
Our main objective when choosing your project methodology is to be sure that your business needs are met with lowest Total Cost of Ownership (TCO) and increased Return on Investment (ROI).
We can easily undertake software development process according to the V-Model, yet we are ready to shift any time to the Agile methodology, or engage our highly skilled software engineers into the XP (Extreme Programming) methodology. Quality is closely monitored in all of the above mentioned cases.

SCRUM Methodology

Code Factory has taken a pragmatic approach and adapted the standard Agile Scrum practices so that each project is tailored to our client’s specific needs and existing processes. Agile processes can deliver successful systems quickly. It stresses on continuous communication and collaboration among developers and customers.
Agile methods are used as a response to unpredictability, where the requirements are not clear, or they change very often. The main advantages to this approach, is that all the work is divided into small iterations, usually two to four weeks, when the team re-evaluates the requirements, and can change direction at the right time, if needed.
We work in two to four weeks iterations, depending on what we have agreed with our client, in a homogeneous team, consisting of a Scrum Master, business analysts, software developers and testers, always ready to respond positively to change requests, determined by the market or the product owner. All the work is divided in epics and user stories and we keep a close relation with the Product Owner, including them as much as possible in the user stories estimation. After establishing the team velocity, we can easily create a schedule, and decide the milestones for every iteration.

The 8 step process used by Code Factory:
1. Preparation (Initial Set Up phase – minimum 3 – 5 days)
2. Sprint Planning (10% of Sprint)
3. Sprint Development (72% of Sprint)
4. Product Increment (0,5% of Sprint)
5. Sprint Review (6.5% of Sprint)
6. Feedback and Production Release (5% of Sprint)
7. Sprint Retrospective (2% of Sprint)
8. Feedback and Production Release (5% of Sprint)

Extreme Programming (XP) Methodology

Extreme Programming or XP is an Agile programming and software developing methodology, improving software quality and facilitating quick responses to the fast-changing needs and requirements of the customers. This is a convenient approach as Extreme Programming processes involve frequent releases of the product and allows customers to specify new feature requests.
This methodology relies on object-oriented approach. Releases are made in short iterations as opposed to other development methodologies. XP involves a lot of communication between the customers and developers in order to better understand the implications of the problems that are to be solved, in both directions.
Code Factory uses this methodology because we have projects incorporating a lot of innovation, and the beneficial aspects of traditional programming be taken to the extremes. Despite the fact that release dates have to be met more frequently than in other methodologies, we are capable of providing very well planned schedules and deadlines, working at a constant pace. We are able to meet rapid changes and a rich flow of ideas from the customer side, and provide quality feedback on how customer requirements can be translated into programming specifications.
When using XP we have to plan, by using stories created and ordered by customer value; we have to design; to code by focusing on unit tests to exercise stories, emphasizing use of pairs programming to create story code and by utilizing continuous integration and smoke testing and to test by creating unit tests before coding are implemented using an automated testing framework to encourage use of regression testing, by integrating and validating testing on a daily basis, by using acceptance tests focused on system features and functions viewable by the customer.
Iterative development with continuous integration, manual, automated and performance testing is at the heart of our development process to build robust, flexible and scalable applications. Being agile means that we can build high quality applications quickly and cost effectively, and incorporate changes throughout the duration of the project lifecycle.
Naturally, Agile works best in conjunction with proven software engineering principles such as test driven development / BDD, automated builds, automated regression testing, and architectural best practices.
In order to attend our business objectives we use the SAFe (Scale Agile Framework) framework. SAFe is a proven framework for applying Lean and Agile practices at enterprise scale and we use it to have a significant increase in employee engagement and productivity, allowing for a faster time to market and better quality by decreasing the number of bugs.

Lean/Kanban

Kanban, Scrumban and lean development in general are the second leading approach to agile software development.
There are certain circumstances in which the requirements or priorities change at such a pace or the solutions are needed so quickly that ensuring even a minimal sprint duration would be impractical and in these cases Scrum is not the most efficient development approach to be put in place, in order to respond to these needs.
Therefore, in order to enable our clients to better adapt to the market demands, we also embraced the Kanban method for agile software development. Kanban is a technique for managing a software development process in a highly efficient way. Kanban is a lean agile system that can be used to enhance any software development lifecycle including Scrum, XP, Waterfall, PSP/TSP and other methods. Especially maintenance projects or projects with a short development cycle perform better when developed using Kanban method.
Rather than working in time-boxed sprints, Kanban puts limits on how many features a team can work on at a given time. Therefore the main difference between between Kanban and Scrum is that Kanban methodology sets a limit for the work in progress for a specific flow, allowing to better focus on the quality of the software development, in a fast changing market.
The advantages of using Kanban in software development are that the newly defined feature is available for immediate release into production and so the team can already start working on the next highest priority, despite the fact that the priority has just been defined.

V MODEL SOFTWARE DEVELOPMENT

The V-model represents a software development process which may be considered an extension of the Waterfall model. In addition to being a highly disciplined approach, it promotes meticulous design, development, and documentation necessary to build stable software products.
Widely known, the essence of the V model is that the development consists in pairs of „definition” and „verification” steps (the descending and the ascending line of the V), with the implementation cycle in the middle. Usually it starts with requirement analysis and the creation of the Requirement Specification, followed by the Functional Specification and finally the detailed Design Specification. After implementation, we assist the first-level unit tests, integration tests and finally the system verification and validation. Each step is followed by a peer review, thus ensuring that the development goes on the right direction.
Sometimes there is referred the extended V model, where the very first step is to create a concept about what has to be made, and the very last step is an user support and maintenance. The model shows early the conception gaps and ensures that the offered solution will meet the needs as expected. Furthermore, this model allows good estimates helping partners to negotiate fixed-price agreements.
We believe that on the well-defined projects the V model can minimize the project risks, can guarantee quality, and can reduce the costs on the project life. However, there where the requirements are not well defined and are frequently changing, the use of the V model can bring too much overhead.