Outcome: Audit document explaining downsides, providing recommendations as well as corrective action plan.
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:
The purpose of this meeting is to determine your needs and specify our work scope.
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.
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.
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.
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.
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.
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.
What are the steps from idea generation till deploying to production?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.