How to onboard a legacy software project smoothly? Part 2 | IT's time to talk #8

00:00 → 00:00

Hello there.

00:00 → 00:04

Last week, we published the first episode on

00:04 → 00:06

handing over legacy projects.

00:06 → 00:10

Today, please welcome the second part of the episode.

00:14 → 00:17

Have you been ever dealing with a legacy project,

00:17 → 00:21

like a commercial project that has been already taken over

00:21 → 00:25

where from day one, have been handling some very,

00:25 → 00:27

very tough, difficult issues, something

00:27 → 00:31

critical, something security related, something that could

00:31 → 00:36

burn the entire business and put it into dis disgrace.

00:36 → 00:38

Have you been ever dealing with such situation?

00:40 → 00:44

Unfortunately, yes. And this is, like, the the common thing.

00:44 → 00:49

Like, changing vendor software vendor is very painful process.

00:49 → 00:51

So, usually, the company can like,

00:51 → 00:53

tries to postpone that

00:54 → 00:56

as far as possible.

00:56 → 00:59

And you very often,

01:00 → 01:03

when company enters our door,

01:04 → 01:07

it's already quite severe.

01:08 → 01:12

And, yeah, I've worked with with

01:12 → 01:15

software project that had

01:15 → 01:19

security issues very critical from the day one,

01:19 → 01:23

and there's, like, huge amount of pressure to fix them.

01:23 → 01:24

But on the other hand,

01:24 → 01:28

you still have limited knowledge about about the

01:28 → 01:32

system, so you need to make sure that you're confident

01:32 → 01:36

enough to deploy and to fix those changes,

01:36 → 01:39

and you're not going to jeopardize the interest of the

01:39 → 01:40

company even more.

01:40 → 01:43

So, yeah, it's it happens,

01:43 → 01:46

and you need to be very care

01:46 → 01:49

careful in cases like this.

01:51 → 01:53

Alright. And, Krzysztof?

01:53 → 01:53

Yeah.

01:53 → 01:57

I mean, I have this one interesting example of a system that I

01:57 → 02:00

already mentioned of a central admin

02:00 → 02:05

In ecommerce company that was developed as

02:05 → 02:09

the first main system and then spread throughout the company

02:09 → 02:13

used in all of the departments to have an overview of static

02:13 → 02:15

customer and transactional data.

02:15 → 02:18

And the main stakeholder became the the customer

02:18 → 02:22

care with, like, hundreds of agents using it on a daily basis.

02:23 → 02:26

So the problems that we are facing were really, like,

02:26 → 02:28

random and

02:29 → 02:31

unknown downtimes.

02:31 → 02:36

And, literally, it took the team that was already changing

02:36 → 02:40

the system and maintaining the system a couple of good sprints

02:40 → 02:43

and Additional experts from the from the

02:43 → 02:45

company to identify the root cause of the issue.

02:45 → 02:51

And in the end, it did not require really code changes.

02:51 → 02:55

The problems were located within the DevOps and

02:55 → 02:59

container or balancing area of of the app.

03:00 → 03:04

But the lesson learned from this for me was that the

03:04 → 03:07

human factor is super important

03:07 → 03:11

Because there was, like, really strong unwillingness from the

03:11 → 03:14

development team to work with this legacy stack.

03:14 → 03:19

So what I would hear as a product owner those days was like, hey.

03:19 → 03:20

Let's rewrite it.

03:20 → 03:24

We don't understand it. It doesn't make sense.

03:25 → 03:29

Yeah. We tried a couple of times already. It did not work.

03:29 → 03:33

So this was the main thing to overcome to really fix it

03:33 → 03:38

and make it stable because transitioning from

03:38 → 03:41

this legacy project will be anyways

03:41 → 03:43

many years in diverse.

03:43 → 03:45

So that's that's one thing.

03:45 → 03:48

Like, many times the development teams

03:49 → 03:54

keep a keep an blind eye on the business goals

03:54 → 03:58

of of what they're maintaining and just look at this legacy

03:58 → 04:01

system from a technology perspective.

04:02 → 04:05

But, yeah, we succeeded, so everything is possible.

04:05 → 04:09

So development teams often complain about the lack

04:09 → 04:12

of documentation of projects that are

04:12 → 04:13

handled over.

04:14 → 04:16

Do you have, let's say,

04:16 → 04:19

some types of assets that you appreciate the most, like,

04:19 → 04:21

I don't know, diagrams and so on?

04:21 → 04:24

What is useful to take over a project,

04:24 → 04:26

especially if the

04:27 → 04:31

if the assets standing behind it are limited?

04:32 → 04:36

I would probably repeat myself

04:36 → 04:39

and say that documentation of the parts that are not included

04:39 → 04:44

into the code base is crucial just because code

04:44 → 04:48

base by itself is quite good

04:48 → 04:50

documentation because at the end of the day,

04:50 → 04:54

you've got quite concrete explanation of how

04:54 → 04:56

things work.

04:56 → 04:59

Maybe it's not that easy to understand,

04:59 → 05:02

but if you've got, like, enough time,

05:02 → 05:05

you can go through the code base and understand how it works.

05:05 → 05:10

What is usually critical is things

05:10 → 05:14

that are not so called managed dependencies.

05:14 → 05:16

So we Have got those system,

05:16 → 05:20

and we don't have access to the code base, and no one.

05:20 → 05:22

Nobody knows how they work.

05:22 → 05:27

And any documentation on that part usually is, like, very,

05:27 → 05:28

welcome.

05:29 → 05:31

So this is the the one thing.

05:31 → 05:34

In, like, maybe not such

05:34 → 05:36

severe cases,

05:37 → 05:40

like architectural diagrams and

05:40 → 05:43

infrastructure diagrams.

05:43 → 05:45

And

05:45 → 05:48

some test cases are, like,

05:48 → 05:53

very important because you can understand how

05:53 → 05:56

the system works, how to deploy that system,

05:56 → 05:59

and how this system is composed.

05:59 → 06:02

So maybe you can ask further questions.

06:03 → 06:08

Especially, I would consider test cases very

06:08 → 06:12

helpful, but still you need to,

06:13 → 06:14

like,

06:16 → 06:19

have in the back of your head that

06:19 → 06:21

they may be not full,

06:21 → 06:26

and there might be some areas that are not covered by

06:26 → 06:28

the the the the documentation you've got.

06:28 → 06:31

So you need to

06:31 → 06:35

limit your your trust when to dealing

06:35 → 06:39

with such documentation as well.

06:39 → 06:40

Okay.

06:40 → 06:42

Yeah. It's always outdated.

06:42 → 06:43

Never

06:44 → 06:45

never perfect.

06:45 → 06:47

I would even lower the bar.

06:47 → 06:51

It's always highly incomplete even with fresh projects.

06:51 → 06:55

Like, customers come to us with ten months year

06:55 → 06:59

old code base, and, they have something.

06:59 → 07:04

But in the end, it's usually you know, it helps a bit,

07:04 → 07:07

to kind of start into the project,

07:07 → 07:10

but really does not answer, majority of the questions.

07:10 → 07:12

I will just add one more artifact,

07:12 → 07:16

which is architects architecture

07:16 → 07:21

decision record that is really so nice to have if

07:21 → 07:25

you can understand based on that the history of the

07:25 → 07:28

decisions being made and why certain things

07:28 → 07:30

work the way they they do.

07:30 → 07:34

Because it's it's often easy to jump into conclusions, hey.

07:34 → 07:37

They use this or that or it doesn't make sense.

07:37 → 07:41

But, if you understand the context and the history,

07:41 → 07:46

I think it always helps and also kind of allows to not

07:46 → 07:51

to make the same mistakes and not to fix things that

07:51 → 07:52

are like balance.

07:52 → 07:57

So, again, that's something I rarely see,

07:57 → 08:01

and we offer this creating architecture decision

08:01 → 08:05

record as an extra kind of

08:05 → 08:07

documentation entity.

08:07 → 08:10

But I think this is super helpful.

08:10 → 08:14

Unless you have people that are willing to work with you and clarify.

08:14 → 08:17

But, again, changing the vendor legacy system,

08:17 → 08:21

people are gone or really not, contracted anymore.

08:22 → 08:22

Yeah.

08:22 → 08:26

And I would say that there's a survivor bias,

08:26 → 08:29

like the the reverse version of a survivor bias.

08:29 → 08:33

So, usually, when someone wants to change

08:33 → 08:39

the vendor, this is because they didn't have proper documentation.

08:39 → 08:43

So when they struggle with the internal

08:43 → 08:46

rotation, the new team members couldn't, like,

08:46 → 08:49

learn and onboard fast enough.

08:49 → 08:53

So you'll end up with a situation where

08:53 → 08:56

you won't be able to find those documents.

08:56 → 09:01

If you were, probably the need of replacing the vendor

09:02 → 09:04

wouldn't exist in the first place.

09:04 → 09:07

So this is very often the case,

09:07 → 09:09

I would say.

09:09 → 09:09

Yeah.

09:09 → 09:12

I mean, sometimes even people realize, like,

09:12 → 09:14

product owners or stakeholders,

09:14 → 09:17

I don't know what this system is really doing.

09:17 → 09:19

Like, I am not sure about this or that.

09:19 → 09:24

There's no documentation. So much time passed by.

09:24 → 09:26

And, what we start with is,

09:26 → 09:30

a test plan or regression test suite and and all of this stuff

09:30 → 09:31

that are missing.

09:31 → 09:32

So,

09:33 → 09:35

yeah, totally agree.

09:36 → 09:38

Thank you.

09:38 → 09:43

So legacy projects are usually associated with a great

09:43 → 09:46

amount of resources that are already burned.

09:46 → 09:50

And by saying resources, we mean money,

09:50 → 09:52

but also ours.

09:52 → 09:55

And, also, think that we do not like

09:55 → 09:57

called resources, but it means people.

09:57 → 09:58

Yeah?

09:58 → 10:02

And and, usually, when such project is approaching us or

10:02 → 10:06

stakeholders of such projects are approaching us,

10:07 → 10:09

they are already tired.

10:09 → 10:12

Their resources may be limited.

10:13 → 10:16

They might be, let's say,

10:16 → 10:19

exhausted already because of the project,

10:19 → 10:22

that consumed so much time and so many resources.

10:22 → 10:26

What can we do to help people in such situation?

10:26 → 10:30

How can we help organizations that already burned a

10:30 → 10:33

lot to build a project, to build, for example,

10:33 → 10:35

a product that doesn't work yet?

10:38 → 10:43

So I'm a huge proponent of evidence based product ownership.

10:43 → 10:47

So it means that before we are going to do something,

10:47 → 10:49

let's create a hypothesis.

10:49 → 10:54

What are we going to achieve? How are we going to measure?

10:54 → 10:58

Maybe we want to introduce the measurement before we are going

10:58 → 11:03

to implement anything and then make sure that we've

11:04 → 11:06

we've reached our goals.

11:07 → 11:11

First of all, we're going to gain some trust from

11:11 → 11:16

the stakeholders that might be discouraged to to

11:16 → 11:19

continue the project in general even.

11:19 → 11:23

So I think trust is the the most important

11:23 → 11:27

issue, and the best way to to to

11:27 → 11:32

regain trust is to make sure that your goals

11:32 → 11:35

are transparent and they are met.

11:37 → 11:39

So that that would be my approach.

11:39 → 11:42

And, obviously, it depends, like,

11:42 → 11:46

case by case what the goals should be,

11:46 → 11:50

but measuring what matters is is the most important

11:50 → 11:52

part and tracking the progress.

11:52 → 11:54

Okay.

11:56 → 11:57

K.

11:57 → 11:58

I'll Yeah.

11:58 → 12:00

I'll just add, you know,

12:01 → 12:05

really reflecting on on what what was the

12:05 → 12:08

history of of of the development and

12:09 → 12:13

stop pouring money into a leaky bucket Because

12:13 → 12:17

as as you kind of ask the question,

12:17 → 12:21

it's often the case that you put more and more into a legacy

12:21 → 12:25

system, and you really have diminishing results.

12:25 → 12:29

And understanding why, I think it's key

12:30 → 12:34

because there are so many strategies that can be employed

12:34 → 12:38

that this time is really good

12:38 → 12:41

invested before jumping and changing or rewriting

12:41 → 12:44

or whatever.

12:44 → 12:45

So

12:46 → 12:48

that's a big money saver potentially.

12:49 → 12:50

Alright then.

12:50 → 12:54

Gentlemen, one of my last questions thank you again.

12:54 → 12:57

One of my last questions today may may even sound

12:57 → 13:01

stupid, but people ask this question.

13:01 → 13:02

And I think that,

13:03 → 13:05

it's good to, let's say,

13:05 → 13:08

give a little bit of overview to the public.

13:09 → 13:12

If we are taking over legacy project and we know

13:12 → 13:15

that refactoring or even

13:15 → 13:18

replatforming will be required,

13:19 → 13:21

where we should start?

13:21 → 13:22

Shall we start with the back end?

13:22 → 13:25

Shall we start with the front end?

13:25 → 13:29

Shall we, I don't know, work a little bit on the UI,

13:29 → 13:31

on the security?

13:31 → 13:32

What do you think?

13:32 → 13:35

What is a good starting point in a legacy project?

13:36 → 13:39

I would say that ROI is the most important

13:39 → 13:41

metric

13:42 → 13:43

that I would focus on.

13:43 → 13:45

So

13:47 → 13:49

it obviously

13:49 → 13:52

depends on the current issues.

13:52 → 13:56

Maybe we've got a platform where we waste

13:56 → 14:00

tremendous amount of money just because of poor

14:00 → 14:04

click through rate and the acquisition the

14:04 → 14:07

customer acquisition is, like, very high.

14:07 → 14:12

And fixing this would actually solve the the the the the the issue.

14:12 → 14:15

So the it would be UX, UI based,

14:15 → 14:20

maybe even copy can change the way users operate.

14:20 → 14:25

But it may be that those the same users don't want to sign

14:27 → 14:30

in to the platform just because it's so

14:31 → 14:35

the performance is so low that they are,

14:36 → 14:39

discouraged to to to use the platform.

14:39 → 14:41

And you can learn

14:42 → 14:45

in the data that, for instance, in ecommerce platform,

14:45 → 14:49

every fifty milliseconds of the delay will

14:49 → 14:52

decrease the amount of

14:53 → 14:55

items that you are going to sell.

14:55 → 14:56

So

14:57 → 15:01

still, it might be back end oriented.

15:01 → 15:04

It may be UI oriented. It may be front end oriented.

15:04 → 15:08

The ROI is the most important factor to

15:08 → 15:13

consider, and you need to work very closely with

15:13 → 15:15

the product owners to understand

15:15 → 15:18

the whole picture.

15:19 → 15:20

Yeah.

15:20 → 15:23

I would say don't ask this question in engineer because

15:23 → 15:27

then depending on what kind of engineer you

15:27 → 15:29

ask, you will get one of these answers.

15:29 → 15:33

Like, you know, you ask if a React developer and

15:33 → 15:38

if he sees, like, I don't know, view UI or whatever, he say, hey.

15:38 → 15:41

Let's let's refactor front end.

15:41 → 15:45

And the the the the situation goes on.

15:45 → 15:48

So definitely go to the business or a product owner

15:48 → 15:52

person and then work from there with the proper engineers

15:52 → 15:56

depending on the area that is in the spotlight.

15:56 → 15:57

Yeah.

15:57 → 16:02

Don't treat everything as an age just because you you are a hammer.

16:03 → 16:06

Alright then. Thank you very much.

16:06 → 16:11

One last question, and let's eventually try to make it short.

16:11 → 16:14

However, this is gonna be a tough one.

16:15 → 16:19

Sometimes we need to deal as a software vendor with,

16:19 → 16:23

I would say, divorce situation where we are taking over a

16:23 → 16:26

project from a previous vendor, and, obviously,

16:26 → 16:28

the previous vendor is unhappy with that situation.

16:28 → 16:30

What can we do?

16:30 → 16:33

What are the good practices to make it happen, like,

16:33 → 16:36

a gentle way, in a smooth way without any

16:36 → 16:40

obstruction and any sacrifice coming from the client?

16:42 → 16:47

I would say don't depend too much on them.

16:47 → 16:51

Like, make sure that you can reach your goals even

16:52 → 16:56

if the cooperation is

16:57 → 16:58

a a bit rough.

16:58 → 17:00

So this is one thing.

17:00 → 17:01

And, like,

17:02 → 17:06

a bit of diplomacy is never a bad thing, I would say.

17:06 → 17:09

So even if, like, the the the coach is rubbish,

17:09 → 17:12

it doesn't mean that they didn't do their best.

17:12 → 17:17

So, like, be be be kind and be be nice.

17:17 → 17:20

I would say be aware that they may

17:21 → 17:24

don't know how the system works.

17:24 → 17:27

Maybe they work in the company for a short time.

17:27 → 17:32

So this is still something that you need to you need to consider.

17:32 → 17:38

And I would say that the it's very important

17:38 → 17:42

to create transparent transition plan

17:42 → 17:44

and responsibilities

17:46 → 17:50

before the actual transition is going to happen.

17:50 → 17:55

A very important part that needs to be considered as well

17:55 → 17:58

are all of the manual process that the current

17:58 → 18:01

team is

18:03 → 18:04

do on the daily basis.

18:04 → 18:09

Very often, those processes, they are not documented.

18:09 → 18:12

They're not included into the code base,

18:12 → 18:17

but somehow they are important to maintain the system.

18:17 → 18:21

And this is very important to retrieve this information from

18:21 → 18:25

the current vendor because you won't be able to find

18:25 → 18:27

it anywhere else.

18:27 → 18:30

Gentlemen, I think this was a good interview.

18:30 → 18:31

It was very insightful one.

18:31 → 18:36

I think I hope that the people who are watching us will get

18:36 → 18:39

something for themselves, some words of advice,

18:39 → 18:42

something that they can use in their professional world.

18:42 → 18:46

Obviously, we encourage our viewers to ask questions.

18:46 → 18:50

You can drop us an outline via email, on LinkedIn,

18:50 → 18:51

using our social media.

18:51 → 18:53

Feel free to drop comments.

18:53 → 18:56

We are super happy to provide encourage and to provide

18:56 → 19:00

knowledge on the topics that are

19:00 → 19:02

important to you.

19:02 → 19:05

This was Merixstudio It's Time to Talk Show.

19:05 → 19:07

My name is Mike Lisewski.

19:07 → 19:10

Thank you very much, and have a great day. Thank you. Bye.

19:10 → 19:10

Thank you.

19:10 → 19:12

Thank you so much.

Let's connect and build together