Improving time to market with software modernization. Legacy Garage 3
00:00 → 00:02
Business and change are tightly linked.
00:02 → 00:06
Every company that wants to stay competitive needs to adapt
00:06 → 00:07
to changing market needs.
00:07 → 00:10
But implementing new features always runs the risk of slowing
00:10 → 00:13
time to market, especially when it comes to complex products.
00:13 → 00:16
These delays aren't always caused by the technical side
00:16 → 00:18
of product development.
00:18 → 00:22
Watch the video and see how you can improve your time to market.
00:34 → 00:37
I'm Slawek, Senior Project Manager at Merixstudio.
00:37 → 00:40
And I'm Andrzej, Software Architect at Merixstudio.
00:40 → 00:43
In this series, we present different ways of dealing with the most common
00:43 → 00:45
challenges of software modernization.
00:45 → 00:49
We draw on our experience and present solutions based
00:49 → 00:51
on the example of one product.
00:51 → 00:55
In this episode, we're going to focus on the example of Sweden
00:55 → 00:58
based company that created software for booking fitness
00:58 → 01:01
classes and personal training sessions.
01:01 → 01:03
At least that was the core service in the beginning.
01:03 → 01:07
However, this business model quickly evolved as the company
01:07 → 01:09
branched out into other sports.
01:09 → 01:13
As a result, user gained the possibility to book football
01:13 → 01:16
grounds or even swimming pool lines.
01:16 → 01:20
They were also able to scroll through training schedules and
01:20 → 01:22
pay fitness club memberships.
01:22 → 01:26
But the company is still growing and expanding its audience.
01:26 → 01:29
Now, there are a few different target groups and they are
01:29 → 01:32
not limited only to sports.
01:32 → 01:35
The client also focuses on education,
01:35 → 01:40
so users are able to book math or violin classes through the app.
01:40 → 01:41
As you can imagine,
01:41 → 01:45
extending the target audience and adding new functionalities
01:45 → 01:48
slowed down time to market.
01:48 → 01:49
How to improve it?
01:49 → 01:52
Let's take a look under the hood and find out.
01:52 → 01:56
First of all, there are some major issues on the technical side that need to be fixed.
01:56 → 01:58
The company's team is working with outdated libraries.
01:58 → 02:01
The overall code quality is low because every development team
02:01 → 02:03
that worked on it followed different standards.
02:03 → 02:05
Or sometimes, no standards at all.
02:05 → 02:07
The application is based on various modules.
02:07 → 02:10
For example, we have a module responsible for room reservation and
02:10 → 02:12
another one that allows scheduling a lesson with an
02:12 → 02:14
instruction in a room.
02:14 → 02:17
In reality, these two functionalities overlap and create a lot of
02:17 → 02:18
complexity on the backend side.
02:18 → 02:21
It also takes a lot of time to develop such components,
02:21 → 02:23
because the technical requirements set by the company
02:23 → 02:25
are not in line with the latest technological solutions
02:25 → 02:26
available on the market.
02:26 → 02:30
The company tried to migrate to the cloud to compensate for growing traffic.
02:30 → 02:32
The team on the client side did their best,
02:32 → 02:34
but the created AWS infrastructure was simplistic,
02:34 → 02:36
manual, and fragile.
02:36 → 02:40
The technical issues aren't the only ones to increase time to market.
02:40 → 02:44
The development process is another reason.
02:44 → 02:47
Firstly, there is no quality assurance involved in the product
02:47 → 02:49
development process.
02:49 → 02:51
There are no continuous integration or deployment
02:51 → 02:54
pipelines created for the project.
02:54 → 02:58
All the bugs need to be spotted by the development team
02:58 → 03:01
or unfortunately by the client.
03:01 → 03:05
As you can imagine, this significantly extends the
03:05 → 03:08
implementation time for new functionalities and poses a
03:08 → 03:10
high risk of progression.
03:10 → 03:13
The company started working on this project with a few
03:13 → 03:14
different contractors.
03:14 → 03:17
The cooperation was based on a team augmentation model,
03:17 → 03:21
which is a flexible outsourcing strategy that helps companies
03:21 → 03:23
add skilled professionals to their teams.
03:23 → 03:26
In the beginning, it functioned pretty well.
03:26 → 03:29
But as the months and years passed by,
03:29 → 03:33
the company was scaling up and adding new functionalities.
03:33 → 03:37
It opened itself to new branches of business just
03:37 → 03:39
like we've mentioned before.
03:39 → 03:43
Right now, the specialists on the company side are
03:43 → 03:46
responsible for organizing workflow, setting
03:46 → 03:49
requirements, and keeping the documentation up to date.
03:49 → 03:52
This workflow has become ineffective.
03:52 → 03:56
Moreover, it extends the development process as well as
03:56 → 03:59
the approval of changes and corrections.
03:59 → 04:02
Another problem is the cooperation model adopted by
04:02 → 04:05
the company and the various contractors.
04:05 → 04:08
They work independently, often without communication
04:08 → 04:10
between each other.
04:10 → 04:13
Sometimes, they even develop functionalities that had
04:13 → 04:14
different requirements,
04:14 → 04:17
but in the end turned out to be the same feature.
04:17 → 04:19
As you can imagine,
04:19 → 04:21
it significantly extended the time to market.
04:21 → 04:25
Lastly, there is no CI in the process.
04:25 → 04:30
The CI is crucial as it reduces human errors.
04:30 → 04:33
With proper setup, it ensures both our partner and the
04:33 → 04:37
team that the new version is stable and ready
04:37 → 04:39
to be served to customers.
04:39 → 04:41
So what can we do in this case?
04:41 → 04:43
Let's start with technological solutions.
04:43 → 04:46
At the very beginning, we need to go through, as we call it,
04:46 → 04:47
an adjustment phase.
04:47 → 04:50
The goal is to adjust the code quality and development tools
04:50 → 04:53
to our daily standards before starting any development.
04:53 → 04:55
A high quality base is fundamental for efficient work
04:55 → 04:57
and predictable delivery.
04:57 → 05:00
We distinguish three main areas for adjustment: development,
05:00 → 05:01
deployment and infrastructure.
05:01 → 05:04
Development improvements focus on reducing technical depth.
05:04 → 05:08
We update frameworks and libraries and remove obsolete elements.
05:08 → 05:12
Then, we ensure high code quality by using code verification tools,
05:12 → 05:14
automated APIs, and end to end tests.
05:14 → 05:17
It's an investment upfront that will ease the development,
05:17 → 05:19
making it more fluent in the future.
05:19 → 05:22
Next, we use a containerization approach for development and deployment.
05:22 → 05:23
Why do we do that?
05:23 → 05:26
To have a consistent environment on the developer's
05:26 → 05:28
machine and during the verifications.
05:28 → 05:31
We want to ensure that the same application version finally
05:31 → 05:32
lands on the production server.
05:32 → 05:34
The continuous integration pipeline is responsible for
05:34 → 05:37
packaging the code source into a container after each change
05:37 → 05:38
in the application.
05:38 → 05:41
Then, it runs a complete set of automated tests and
05:41 → 05:42
verifications on it.
05:42 → 05:45
Finally, the CI pipeline completes the checklist marking the package
05:45 → 05:47
as healthy and deliverable.
05:47 → 05:50
The next step we take to improve time to market is the
05:50 → 05:52
introduction of automated release management.
05:52 → 05:53
At the end of every sprint,
05:53 → 05:56
have an increment to be released as a new version.
05:56 → 05:58
The only thing that we need to do manually is to define the
05:58 → 05:59
application version.
05:59 → 06:03
The rest is done by an automated continuous deployment pipeline.
06:03 → 06:06
You click the button, mark the version and it runs.
06:06 → 06:08
What's more, we don't need to have a microservices architecture for
06:08 → 06:10
implementing this workflow.
06:10 → 06:13
The key is a well organized team that will handle this when
06:13 → 06:14
working with a monolith.
06:14 → 06:15
As I mentioned before,
06:15 → 06:18
the company has already tried to implement AWS infrastructure,
06:18 → 06:21
but it was done manually without any automation whatsoever.
06:21 → 06:24
It means we need to prepare the new architecture from scratch.
06:24 → 06:27
So now we define environments in the Terraform.
06:27 → 06:29
It allows us to keep track of every change using
06:29 → 06:31
infrastructure as a code approach,
06:31 → 06:34
as well as control multiple environments and versions.
06:34 → 06:37
The services powering the environments enable us to scale
06:37 → 06:38
based on future needs.
06:38 → 06:41
Integration with the cloud provides plenty of services
06:41 → 06:44
that can cover new requirements and speed up time to market.
06:44 → 06:48
Okay. Let's move on to the project management solutions.
06:48 → 06:51
We can streamline the product development process by
06:51 → 06:56
adjusting the cooperation model to changing product needs.
06:56 → 06:59
We conduct a workshop sessions to present the new approach
06:59 → 07:02
that will be more beneficial for the project and
07:02 → 07:05
significantly improve the time to market.
07:05 → 07:09
The company sees an opportunity in treating treating us
07:09 → 07:10
as technological partner.
07:10 → 07:12
What does it mean?
07:12 → 07:16
Firstly, by including our project manager in the process,
07:16 → 07:20
the client doesn't need to care for the entire workflow.
07:20 → 07:23
Instead, they can spend more time focusing on possible
07:23 → 07:24
app improvements.
07:24 → 07:29
Secondly, with our expertise in technology field,
07:29 → 07:33
we know how to choose processes and solutions to bring these
07:33 → 07:34
ideas to life.
07:34 → 07:38
Now, we can utilize our capabilities and focus group
07:38 → 07:42
development efforts on smaller end customers deliverables.
07:43 → 07:46
It's all about presenting a constant and predictable
07:46 → 07:51
pace, moving towards more significant milestones.
07:51 → 07:56
Previously, the team worked on a module like on a different version of the application.
07:56 → 08:00
It resulted in many conflicts with other similar modules,
08:00 → 08:04
extending delivery time and jeopardizing the quality of the platform.
08:04 → 08:06
In this model of cooperation,
08:06 → 08:11
a technological partner is not focused only on the execution of the plan.
08:11 → 08:14
The external team is also involved in the refining
08:14 → 08:18
requirements and ideas or even just visions
08:18 → 08:20
of the new functionalities.
08:20 → 08:21
Therefore, at this step,
08:21 → 08:24
we start verifying the product's direction with end
08:24 → 08:27
users before any development starts.
08:27 → 08:31
This approach emphasizes well suited solutions and eliminates
08:31 → 08:34
significant amendments after releasing the increment.
08:34 → 08:39
Of course, it translates into shortening the actual delivery time.
08:39 → 08:41
Besides the project management,
08:41 → 08:44
another important change is the introduction of quality
08:44 → 08:46
assurance specialists role.
08:46 → 08:47
Thanks for watching.
08:47 → 08:49
If you like this video and want to know more about software
08:49 → 08:51
modernization, visit our insights.



.avif)

.avif)
.avif)
.avif)