
The work of a programmer is a struggle with complexity. One of the popular questions about cloud telephony is “Why use it, if you can take Asterisk yourself, do it, and do everything?”. A curious detail from practice: a lot of those who come to us after Asterisk. That is, first they come to us, they see that the platform costs money, they say “let's do everything ourselves” and leave. Six months later, they returned with the words "We realized that we want to go about our business, not Asterisk." As programmers, we love to deal with the complexity: replace Asterisk with a toolbox with JavaScript semi-finished products, use cloud services to work with code and tasks, divide everything into small parts and experiment with versions. As it turned out, not only we love it. On New Year's holidays, I accidentally read that Tolkien also had its own Git. Under the cut - adapted for Habr translation.
Did it happen that while reading a book you could not understand how a living person, in general, could write something so ingenious? For me, this book was The Lord of the Rings. When I read it, I realized that even over a hundred lives I would not be able to write a book so rich in details, so deep and beautiful. Since then, I learned a little about the creation of "The Lord", and this knowledge allowed me to reconsider the first impression. But the most amazing thing is how this knowledge intersected with the fact that many years ago I learned about writing computer programs.
It always amazed me how the development of a program can start from a single file, and, after many years of work, turn into such a huge system that one person will not even be able to come closer to understanding it. If you try to repeat the end result "from scratch", then you most likely will not succeed. It is so arranged. The software depends on the path that the development took.
Many times I personally participated in this evolution of unicellular software before the
“Cambrian explosion” . Saw it with my own eyes. But what I didn’t see was that it was just like writing books!
')
Creating good software is an evolution through iteration with the goal of survival. And in the same way good stories are created. They are united by the fact that they are created by our mind.
Mind needs an object for concentration. Each intermediate project status is such an object. The combination of such states inspires our minds to create something truly outstanding. Anything that will carry a barely perceptible trace of what was at the very beginning.
Let me tell you how it turned out that The Lord of the Rings is a good example of such a process ...
The Lord of the Rings was originally conceived as a continuation of The Hobbit. The publisher wanted to make even more money on the popularity of the book with the help of a sequel. And "The Silmarillion" was not such a sequel. So the Professor got to work to write a sequel. And it was awful.
The first version of the name was not “The Lord of the Rings”, but “The Return of the Shadow”. It was still a book for children. Frodo was called Bingo. The stranger was a hobbit named Trotter. Bilbo was going to marry. And the ring was still just a ring. The story did not have a clearly expressed motive and development vector. “What else can the hobbits do?” Tolkien asked himself. The idea of hobbits has exhausted itself. That “Lord of the Rings”, which we all love, was still very, very far away.
Draft for a draft Tolkien tried and searched for a direction for the development of history. It all started to spin when he
created the scene with the Black Rider. Initially, the Black Rider was the White Rider. It was Gandalf, who arrived to speak with Bingo. But suddenly an insight happened. The vibrating group of neurons conspired, and the color of the horse changed from white to black, and Gandalf transformed into a stranger wrapped in a huge black cape and hood. A new frame of history (English framework) began to create itself.
How do we all know this? Thanks to a lucky coincidence of circumstances and Christopher Tolkien, we have a
history of changes that his father consistently applied to The Lord of the Rings. Have a great
video from
dr. Corey Olsen , where he leads us by the hand according to what, in essence, is the Git log of the Lord of the Rings. This is magic from the real connoisseur of Tolkien and a talented analyst.
We see how the ideas of the book are formulated one by one in the text. It was a constant process of refactoring and developing new features. Some of these ideas have been preserved from the very first version to the final release. Many have been removed. Many have changed. Most of the dialogues were saved, but transferred to other characters who spoke them in completely different circumstances.
Reading this log, I experienced the same feeling that I feel when creating programs. The only difference was that as a result we got a non-working program, but one of the most powerful stories of all time.
I endorsed the old idea: any successful big system starts with a successful small system.
This applies to both writers and programmers. Your story or program doesn't have to be awesome from the start. Evolution and development will make it so.
In 2017, this is the lesson the Lord of the Rings gave me.