ISOLUTION is an engineering company that has always focused on creating products that deliver value to our Business Partners and their customers.
Every software development company refines its software development process, and each has a different idea on how this can be performed. It’s not an easy task because it depends on many components, such as: business domain, organization culture, cooperation model, technology and many others.
In this article, we will present our approach to delivering projects (our work rules), which attempts to combine the best practices taken from Agile, Scrum, Kanban, Lean, CRISP DNA and Management 3.0 and fitting them to our context along with our own ideas. We are constantly looking to streamline and improve the quality of our work.
In ISOLUTION our teams are divided based on competency, e.g. Programmers, Analysts, PMO/Scrum Master, Testers. Project teams are built by combining people from different substantive teams. Each project creates a specific “project culture”, depending on the project context.
Each project participant has 1 or more roles within the project with specified responsibilities. Both project roles and responsibilities are determined on a per project basis.
In addition, each project at the beginning tries to take from:
solutions previously developed within other projects (strong>Solution Registry), e.g. module for sending e-mail, RWA/PWA application framework, integration with PayPal/Slack/JIRA, CI/CD, etc.
Best Practices that allow us to learn from previous experience, such as: DoD, DoR, task < 1 MD etc.
Principles of Project Management that provide a framework for each team to initiate a project and further adapt it to their own context.
Each project uses a set of Best Practices, Project Management Principles and ready-made solutions. Of course, these are adapted to the need of the project and expanded. The Solution Registry and Best Practices are our internal assets, built through years of experience. In the rest of this article I will focus on describing the Project Management Principles, which have become sort of a Manifesto.
While outlining principles according to which we wanted to work while creating innovative digital products for our partners, we tried to focus on guaranteeing good quality of work and delivery of business value. Below you will find our Manifesto with a brief overview.
We want to make sure that the project/product is important to the client, and that they have all the necessary resources to carry out the project. It is especially important for us that the client appoints a specific person who will fill the role of Product Owner.
We take what’s best from SCRUM, Agile, Kanban, CRISP and Lean approaches. The cooperation is based on a partner relationship in accordance with an Agile agreement.
Billing is done on a TS basis after each sprint.
This means that we don’t want to compete by providing the lowest rate, but by providing the lowest final cost of creating a product and delivering value that will support our clients’ business.
We build a partnership relationship with the client based on trust. The client has constant access to all project artifacts. He is informed on an ongoing basis about the status of the project. Important project parameters for us are: % of scope realization, % of budget realization, team satisfaction level (Happiness Index).
The growth of our team and their job satisfaction is very important to us. We believe that a well-built, motivated and committed team is able to transform even an average idea into a great solution.
We make sure that the team formation process takes into account the potential and competencies of each person, as well as their personality style and motivators. We want to provide the team with psychological safety and an environment which ensures the possibility of making mistakes. From our point of view projects are realized by people who are members of the project team. Ensuring a good working environment for them is critical.
The team has a right to make mistakes.
Creating digital products is unique. The team must be comfortable working in an environment that gives room for mistakes to be made faster. We want the entire team to focus on quality and delivering value, not the constant fear of making a mistake.
We believe in the synergy effect.
A well built team is strong and provides value. We believe in the team over the individual.
We talk about problems when we notice them.
We build proactive, responsible and committed teams. We follow the principle that we talk about problems immediately, we do not wait until the last minute.
The team estimate is “sacred”.
We trust the team to estimate as best they can at any given time with specific knowledge of the task.
A person capacity = 32h
Each person has 32h of capacity for the week, with the remaining hours to be used for rituals and communication.
We like clear rules. By following them, we can build relationships based on trust and focus on quality and providing valuable products.
The backlog of tasks per sprint is fixed
Once a Sprint is planned, we do not allow the scope to be changed, and if necessary we change to a Kanban-based approach.
Every task is recorded and estimated.
Only such tasks that have undergone this are allowed.
The estimated tasks are less than 1 MD.
The whole team participates in the estimation. We believe that dividing large tasks into smaller ones, each of which can be completed within 1 working day, facilitates planning and work.
A developer’s working day (8 hours) is really 5 hours of work
Research indicates that for creative tasks, effective working time is 5-6 hrs max. We believe in this. We believe that in order to deliver valuable products to our clients we need to be creative, rested and engaged. We need to have time for a break, fun and relaxation.
We know the completion criteria for the task (DoD)
The rules according to which we consider a task as completed are set before, not after its execution.
We fill in the TS everyday.
We want to be fully transparent with our clients. Daily completion of TS by everyone allows us to take care of the budget of the project.
We deliver working software every day
Using CI/CD/Devops we automate the processes involved in software development.
DEMO is run by the client
The acceptance of our work is done by our client with us attending. He is the one who runs the DEMO.
Planning
The customer is involved in the planning. His involvement is critical to us.
Prioritization
It is the client who decides what is important from the business point of view. He regulates the order and pace of work.
Sprints
By default, we work in Sprints. We execute as many tasks in them as provided by the team capacity.
Estimation error
Creating digital products is unique. It’s a creative task done as a team. Therefore, it is important for us to provide the team with an environment for creative work, where they will not be afraid to make mistakes faster, learn from their mistakes, improve the process, take care of quality, correct and improve the code. In order to achieve this, we work using the principle that if there is a deadline overrun, the client agrees to extend the delivery time or takes the task off (paying for the existing time) and puts the task back into the backlog.
Waiting for work to commence
We care about delivering value to our customers and the quality of our work. We also care about the development of our business. In case of waiting for the client to deliver artifacts (such as environment, test execution etc.) we agree with the client how to use this time. The client pays for this time.
Organizing project work is part of our culture. You’ll be able to read more about it in our next blog post and also on our website. #staytuned