Service Overview

Table of content

Software Audit

This service is mainly dedicated to companies who already have established development processes, but it seems to be inefficient or slow. The audit embraces the whole software development life cycle from its beginning till the end. We take into account every aspect, not only on the code level. Our goal is to identify delivery and maintainability bottlenecks. During delivery level, we try to understand what steps are taken from idea generation until getting the feature deployed to production. Maintainability level involves analysing architecture as well as quality of the code, its readability and modularity. As the outcome of the audit, we preparea document containing all found issues, possible approaches to solvethe problems and suggestions on process improvements.
If you want to learn more, here is a detailed plan of how we conduct an audit:

Introduction meeting during which we establish the scope of an audit

The purpose of this meeting is to determine your needs and specify our work scope.

Domain knowledge crunching

Documentation review

Before diving into the code we need to understand the reasoning behind the project technical decisions. We evaluate how the documentation diverges from the code. We assess its usefulness and whether it is not misleading.

Code structure review

We analyse the query path and use cases along with the model. We investigate whether the code is divided into coherent pieces called feature slices.

Architecture review

Armed with domain knowledge and reasoning behind project decisions gained thanks to team discussions and getting familiar with the documentation, we are able to learn more about project architecture. At this stage, we focus on reviewing communication patterns between internal and external services.

Production code quality review

Now we get to the heart of the project. There is an industry saying “code doesn’t lie, everything else can”. During the code review, we concentrate on the methods/functions naming, names of variables, size of functions, model fitting.

Test code quality review

We treat tests as production code. We review the quality of the code, proportions of different types of tests, dependencies between test code, use case coverage, and code coverage.

Infrastructure review

We verify how implementation is done in terms of infrastructure. We check the process of security updates, the process of updating libraries, and we analyse metrics.

Development process review

What are the steps from idea generation till deploying to production?

CI/CD pipeline review

Continuous integration is coupled with the development process so to achieve quicker delivery we should first improve the development process. We analyze the release cycle, CI/CD pipeline and automation of the process.

Outcome: Audit document explaining downsides, providing recommendations as well as corrective action plan.

Project Kick-off

That service is mostly directed to early stage startups. We will validate your ideas on both technical and business levels.
We are going to ask all those uncomfortable questions that arise from our understanding of the business you want to run.
We will try to help you to prepare the development plan and point out all areas the team should particularly think through. The outcome will be documented with all architectural recommendations.

Establish the scope of work

We want to understand where you are with your product and where you want to be. Together, we are going to list all aspects of the product we would like to focus on.

Event storming meeting and Event modeling process level

That stage has a form of a workshop. We are willing to understand what your business is about and we use Event Storming (depending on the product we may also use Domain Storytelling) to achieve that. After the workshop we should be aware of the problem you would like to solve and how you want to solve it.

Discuss product road map or create one (optional)

There is a saying in the time management domain, “How do you eat an elephant?” and the answer is “Piece by piece”, and that is how we are going to help you prepare a road map for your product.

Custom Development

First we are going to establish what kind of people you need and then provide you with a dedicated team to develop your product. A deliver a fully operable team of developers to coin your product plan to the actual software. We believe in tight cooperation with the business and a secret ingredient in a form of a deep understanding of requirements. That is why we follow Domain Driven-Design practice, strategic and tactic design.
Quick agile development cycle provides quick feedback to business which allows us to correct our tracks.

Briefing/Planning meeting

The objective of the meeting is to get to know each other better, as well as briefly understand what kind of product you would like to build. We are eager to learn how your product roadmap looks like, and how it is reflected in your backlog. Based on that input, together we are going to estimate your development needs. After that, we set the team on our side up and start iterative delivery of your great product.

Iteration process:

Development

Let’s begin the boring development stuff :) We develop what was established according to task acceptance criteria. The result of our work is a functioning feature in the pre-production environment. We use continuous delivery as our tool for quick releases, and business can decide what is deployed to production. Every potencial commit is ready to be deployed on production.

Demo

At the end of iteration we show what was done by presenting new application features. You will have a chance to play with the new functionalities and give us your feedback.

Retrospective/Feedback

We need to make sure we are on the right track whether everything is working as intended and meets expectations. The objective of this meeting is to ask inconvenient/unpleasant questions, prepare ideas on how we can improve, and create a correction plan if necessary.

Consultancy Per Hour

If you have a hard technical problem or you simply need advice on the development process, we can help. You are going to meet with one of our best developers who will be available for you on a video call (onsite is also possible just after the pandemic) for the time we agreed upon. Sometimes it happens that to give proper answers and some improvement advice we need to prepare offline. In that case, we have to settle the time limit. Providing us with a list of questions/problems before the meeting is most desirable.

Briefing meeting

We go through every problem/question from the list and discuss it. Some of them will probably need more explanation, some of them we will be able to answer straight away, and some of them will be noted down so we could prepare a comprehensive answer. Some of the problems might be more complex and will require from us a moment to think or even have a brainstorming session. In this situation we come back to you as soon as we are ready to elaborate on these issues.
Document with all unanswered questions from first meeting We prepare answers for all questions/problems on paper.
If it is required, we can present our answers in a meeting, during which you could ask additional questions much quicker.

Team Extension

If you have established your development machine but it seems like there is a need for a little more horsepower, that service is for you. You will get just a small extension of your current team which will follow all your practices and processes. We believe a small extension (1-2+ devs) is working best in nearshore setup. In offshore setup, on the other hand, the extension needs to be a little bit bigger meaning 2-5 devs. The team is self-organizing but still follows your development practices. All developers report directly to you or people in your company.

Introduction meeting/brief meeting to establish capability needs

We ask about the project you need help with. What kind of technologies are used there, so we could better understand what kind of developers you need. The last thing is to determine the number of needed developers and how their cooperation with the already existing team will look like.

Describe and propose a developer profile

After the briefing meeting we will do our best to find a developer who fulfills your seniority and technology stack level requirements. We will provide you with a list of potential developers.

Gather all required resources and accesses and together we will prepare an onboarding list for our developers.

Introduce developers to the rest of the client team

At that meeting the whole team is present to have the opportunity to get to know each other better. It would be good to establish a host developer for each of our devs to do a smooth introduction to the project. One of our recommendations to make the onboarding process effective is to do pair programming (client dev and our dev) during 1-2 first iterations.

Or
Catch us by