How do you sometimes want to stop the wild development race and enjoy the thoughtful, measured writing of code. There is not enough time to think about algorithms and study promising architectural options for the system. How drawn to reach out to the stop-cock and stop the frenzied conveyor for stamping short-lived solutions.
If you’re tired of endless deadlines, meetings, and sprints, then you might like the concept of slow programming. At its core, it is completely opposite to the mainstream – the constant acceleration of development. Let’s try to consider all the pros and cons of this concept.
Slow programming is part of the larger Slow Movement. This is a cultural trend that more and more people are consciously turning to. The slow movement has many currents and directions that are united by one common idea: people are tired of the crazy rhythm of life, they want to slow down and enjoy work, education, reading, eating and other everyday activities again.
Slow art promotes not only the careful and thoughtful creation of works of art, but also protests against the rapid run of tourists through museums and attractions.
Slow reading fights against unnatural speed reading and agitates for slow and thoughtful study of books, rereading and analysis of texts.
Slow eating is just regular healthy eating without any junk food or convenience foods. Supporters of this trend advocate the return of the feast culture and the preservation of national and regional culinary traditions.
Slow television is opposed to clip editing, jerky rhythm and unprecedented drop in the level of television transmissions. Channels that broadcast many hours of meditative recordings of nature, trips, and travels are gaining more and more popularity.
Slow travel, in turn, condemns too fast travel, which greatly reduces the pleasure of travel and dulls the impression of an unfamiliar country. This is also where slow photography comes in. She calls for thoughtful rare shots, instead of tens of thousands of photographs that end up in the digital archives of their authors.
There is also slow gardening, slow education, slow upbringing, slow science, slow fashion… The number of directions of this movement is constantly growing. People want to be finally left alone and allowed to live for their own pleasure.
Programmers are people too and are also pretty tired of the endless pursuit of ghostly indicators and results. Therefore, in this series of directions, slow programming arose.
The concept of slow programming implies:
thoughtful and thoughtful design;
great attention to detail;
The pursuit of excellence.
Let’s try to figure out what this means in practice.
1. Careful design
To program something
unnecessary, you need to first design everything properly. This means you need:
how to analyze user experience;
search for optimal solutions;
think about and test different implementation options.
Any good, solid thing starts with research and design. In today’s corporate world, this job is usually done by non-programmers, but it’s not that important. In any case, it’s definitely not worth rushing here – before cutting off, you need to properly measure it.
2. Programming without a computer
Remember the memes about “lazy” programmers who, instead of diligently banging on the keyboard, are doing who knows what? From point of view
effective manager To an outside observer, they simply spit at the ceiling and receive a salary in vain.
It is difficult to explain that:
almost any piece of code requires thought and several internal iterations of its improvement;
the programmer should not start development immediately after receiving the TOR;
thinking about algorithms away from the keyboard is an important part of his job.
By the way, the quality of this very work cannot be estimated by the amount of code written per unit of time.
3. Striving for excellence
Everyone knows that perfection is impossible to achieve, you can only strive for it. But I want to at least start moving towards it. This requires:
careful design and design of the application;
painstaking search for the most effective solutions;
R&D is the search for the best solution through experiments.
One way to improve code quality is through pair programming. For managers, this is a nightmare: doubling the resources to solve the problem.
Perhaps, at some point, the thought may come that perfection is minimalism and simplicity: code, interface, architecture. It is hardly possible to achieve true perfection based on a lot of superfluous add-ons, libraries and frameworks. Perennial legacy also does not add elegance to the system.
4. Quality and debt relief
Revising and refactoring old code is just as important as developing new code. Naturally, refactoring should be done carefully—slowly and thoughtfully. And be sure to accompany testing – regression and automatic.
The term “technical debt” is best left out of the lexicon altogether:
everything that is required for the project is done immediately, and not postponed for later;
no temporary compromises, “crutches” and “bicycles” for the sake of deadlines.
5. Enjoy the process
This point is the most “selfish”, but perhaps the most important. Slow programming is a way to turn coding into an art again. This is the way to return to the programmer:
pride in one’s work and in the product of one’s labor;
a healthy balance between work and life;
comfortable rhythm of work processes;
opportunity for self-development.
Faster doesn’t mean better
Many articles and books teach us how to become more efficient and work faster. At the same time, for some reason, an equal sign is put between efficiency and speed. The corporate world requires constant acceleration and reduction of labor costs. We are surrounded by rapid iteration techniques, task trackers, and deadlines. Everything is aimed at quickly making a profit and reducing the time between design and implementation.
This means that there is less and less time left for quality work. Sometimes, of course, masterpieces are obtained by accident. But most often, in order to make something of high quality and beautiful, it takes time. It’s just that we don’t have it.
Taking off rose-colored glasses
Now let’s look at the other side of the problem. Let’s stop dreaming of a perfect world with
turquoise unicorns bottomless barrels of labor. In today’s corporate reality, slow programming is a utopia:
business is aimed at making a quick profit and getting ahead of competitors;
an increase in labor costs reduces the profit and competitiveness of the solution;
the game is not worth the candle – an ideal spherical product in a vacuum, which took a year to develop, becomes obsolete a month after release;
everyone wants to know when they will make a profit – nobody needs endless projects with the impossibility of predicting deadlines and results;
it will be difficult for a slow programmer to work in a team in which the rest write code quickly;
no one needs masterpieces, sales records are for one-day crafts.
There is also the danger of falling into a tailspin of perfectionism – any project can be improved indefinitely. It is important to know when to stop here.
In addition, on the horizon loomed something – as we are scared in the media, ChatGPT will soon be able to replace developers. It will be enough just to correctly set the task, and the solution is once and ready! Without any deadlines and costs – the exact opposite of slow programming. The point is small: to know only how to correctly formulate this task.
However, there are still oases where slow programming will not be a black sheep:
pet projects where a slow programmer is his own boss;
Research within the framework of large commercial projects is a dedicated sandbox for a leisurely search for truth.
Sergei Pavlovich Korolev once said: “You can do it quickly, but badly, or you can do it slowly, but well. After a while, everyone will forget that it was fast, but will remember that it was bad. And vice versa”. The concept of slow programming is one of the efforts of caring professionals to bring quality, reliability and beauty back to our world of short-lived plastic solutions.