Tie your shoelaces and pull up your pants!

Original author: John Sonmez
  • Transfer
So what is slowing down software development?

Think about this question for a second. How is it that the longer you develop something, the more difficult and unpleasant it is to add new features to your application, to saw through the architecture?

And why were tasks so easy to solve before, but now they look confusing and difficult to implement?

It would seem that the situation should improve, because you have been in the project for a long time, haven't you? Why is everything happening the other way around?



Looking for answers


Well, do not blame yourself for the fact that the answers do not pop up in your head on their own, most developers suffer the same. Yes, and questions, you see, are not easy.

If we knew the answers to all the questions, then there would be no problems.

Nevertheless, you will come across more than once managers, customers and even other developers who unsuccessfully continue to search for answers to these same questions.

And first of all, everyone begins to blame the process. After all, it is obvious that problems with the process adversely affect the speed of development.

It makes sense. Nevertheless, I found that often this is not the root of your problems. If the team is not sitting idly by, and important tasks are correctly prioritized, then most likely the process is not guilty.

I want you to understand me correctly here. That is, the two things that I mentioned are not the only ones that should excite you, I’m just trying to say that since most of the time the team really works on things that are really important for the project, you won’t be able to magically establish processes, at least somehow This significantly increases the productivity of team development (in most cases).

The following options are also considered:

  • Pair programming
  • Change the scan to kanban?
  • Shouldn't we define backlog differently?
  • Maybe we should use parrots to evaluate tasks? Storey points? Or even let all the backlogs be the same size?
  • Do we need more developers? Or business analysts?
  • Should I reorganize teams?

Of course, these are all wonderful questions that you should ask yourself from time to time, but I constantly make sure that there is another forgotten bigger problem ...

YOUR CODE!




Let's do a little experiment.

Forget about all the processes, forget about scrum and backlogs and story points and everything else.

You are a Developer. You need to do your task, change something in the code. You are sitting alone, there are no processes, analysts. Only you and your work.

You can think about something that you did recently or are developing right now, I just want you to abstract from everything that does not directly relate to the design or coding of this feature.

Surely you will have approximately the following thoughts:

1. This feature will be implemented quickly and simply, I know how and where to add it, everything will be tip-top!

So, great! It turns out that in fact you have no problems.

2. Something I do not understand what needs to be done. How and where will it be used in the system?

Hmm, in this case, you most likely have some problems with the process. Maybe you need a statement of the problem more clearly or you should ask more questions. That happens, really. Semi-finished ideas get into the process and someone will definitely have to run around and move their brains before the developers can actually tackle them.

3. I'm afraid to change something, it's almost impossible. Before you begin, you will need to dig into other parts of the application and understand: what, how and why it works (and how it should work at all).

It is not sad, but this is the most likely outcome. Something between the second and third paragraph, because they have one and the same reason - the finished code and either deceased, or "she-no" architecture.

And I continue to face the fact that the development of most applications is slowed down due to the code of the applications themselves or the loss of the original design.

But you will see similar problems only in successful companies, because ...

Sometimes you need to run with loose shoelaces


There was a time, I advised a couple of failed startups. And I must say, they had one thing in common (as in most other startups): zero problems with the code. Yes, excellent code base, combed, well-groomed, it smells nice.

I have seen the best architecture and perfect code on dead startups.

Maybe it looks like I'm contradicting myself. I’ll explain now.

The problem is that startups with sparkling code are not keeping up with the market. They stand at the start and tie beautiful bows on their shoelaces, look around and carefully examine each place where they are going to put their foot on.

What's happening? They create beautiful code, cool architecture. But too late. Competitors are pushing ahead andThe two crypto not-quite-programmers-but-I-bit-coded cheerfully walk around you with their VB6 application, written last night on my knee . Yes, it may not be exactly what the customer wanted, but how quickly!

But what, do I really say now that you need to write a napkin govnokod and quickly pass it, otherwise a failure?

Or am I saying that you cannot grow a successful office on good practices and quality code?

Not. But I'm trying to say that most successful companies first of all focused their efforts on the customer in time and only then on the software.

In other words, if you look at the code of a dozen successful companies over the past five years, in 9 of them you will find shitty architecture and a system quite distant from the original design and good manners.

So what about the pants?




Okay, what am I doing all this for?

Winning companies run and survive! However, after 5 years, they still continue to run as hard as they can and their ugly laces begin to untie.

They may not even notice that their shoelaces are untied until they tripped over them a couple of times. Nonsense, they still keep running. On the one hand, this is good, because this is what makes them prosperous, and others who decided to stop and, left far behind, tie their shoelaces, are shamefully losers.

The problem usually makes itself felt after about five years of continuous running, when companies decide that it is time to move to a new level. Until now, they have had a good run, wagging from side to side and trying to keep their legs apart enough to really not get on the laces.

It is just a little that slows them down and therefore they continue to run, violently riveting features and spraying with saliva.

And now from shaking pants start to fall from them! But serious companies do not have time to slow down for no reason and start pulling up their sliding pants!

From the outside, it all looks very positive. They blush, give their best to continue to run at the same speed, but their pants and loose laces are enough to make the run turn into awkward brisk walking. An old woman with weights on her ankles gives them a head start , but they are still too busy to take a break and pull up their pants! And from the last time we have not yet made up!

And then they start to think. What to do? How to solve the problem without slowing down or pulling up your pants again? Improvisation begins. They are trying to jump. Someone even gets the idea that you need more legs ... =)

I think you caught the idea. In fact, you just need to ...

Stop, tie the laces and finally pull up your pants!


I hope that the analogy is clear and now you understand what is happening with the ossified architecture and stale system code.

While you are racing with all the foolishness, your shoelaces are untied, and your pants are steadily starting to fall off the application, all this makes you really slow down.

And it will get worse until you finally find that you are actually moving backward.

Unfortunately, I have no magic answer. If you can accelerate by scoring on the architecture and design of the system as a whole, sooner or later you will have to pay and refactor everything normally.

Perhaps you will start from scratch. You may have to combine all your forces to put everything in order. In any case, you have to stop. Although maybe someone tried to tie shoelaces on the run? =)

Do not be sad; you have not done anything wrong. Moreover, you survived when others were too careful and failed. Just do not ignore your pants, in which you get confused at every step, do something scary!

Note perev .: I am not a translator, I am the same as everyone else, so a more or less free translation came out. I tried to convey the irony of the article. Please write about typos and omissions in PM. Thank you for your attention and have a nice day!

Also popular now: