Alexander Kondov joins us to talk about books and front-end programming, and about writing, in words and in computer code. We will make detours through philosophy and artificial intelligence.
“Programming is an art, not engineering!” goes the creed of today's guest.
Why does he think so?
The three of us, him, me and ChatGPT, are sitting in a digital tavern, chatting over a cup of digital tea about those big questions that stir us all…
– Life today is a digital tavern!
But you know that better than I do, and in a moment it will be clear why. You work as a front-end developer, which is how I earn my bread too. I have two books, and so do you. You wrote “Tao of React.” How did you bring philosophy and programming together?
– In the very first winter of the pandemic I was brutally burned out. I wasn't used to working from home, endless hours, nothing else to do. And I had told myself I needed variety, change, to switch technologies.
I thought: “But I've been working with React pretty much since it came out, and I want to write down all the principles I follow somewhere; they might come in handy if I ever come back.” I sat down and wrote a very long article on my blog with a working title along the lines of “Best Practices.”
At the same time, though, I had buried myself in the “Tao Te Ching.” In that period I had gone through all the easily digestible philosophical literature I could get my hands on. I said to myself: “Tao of React it is!” I'm very bad at promoting the things I make; this is one of the few articles I decided to share on Reddit.
I post it, go to bed, and in the morning I have 250 notifications,
lots of people writing to me: “This is hugely useful, it helped me so much! I've wondered about these things for ages.” All the principles I put in were based on my own experience, not on how things are done in general, but rather: if you're in this situation, do this, because the other thing will cause you such-and-such problems down the road.
A lot of people said it was useful. Someone shared the article in a newsletter and jokingly wrote: “You could put a $10 price tag on it and sell it as a book.” And I thought… why not actually do it?

– And you did? For my first book it took 33 years for a worthy story to land on my head…
– I fleshed it out, improved the examples, added things I had left out of the article. I roughly doubled the content, put a price on it and released it.
At first it was so clumsy… I had never written anything longer than a blog post, and at some point I just couldn't take it anymore. It takes an awful lot of editing; every passage seems badly written once you've slept on it…
At some point I realized this book would never be finished if I kept going like that. So I told myself: I'll release it. At a 50 percent discount, with the typos, unedited, but the essence is there. And if anyone buys it, I'll keep improving it.
It turned out to be useful to quite a lot of people; they needed to draw on that kind of experience. When you watch a course, you learn how to work with the little Lego pieces, but to build a ship you also need some principles to follow. Later I made the second book on the same principle, about Node.js. One is 150 pages, the other 180. Both are collections of experience, gathered rules.
It was simply the thing I would have needed when I was starting out. An empty zone: when you start programming there's a huge amount of content, but after that first step, when you want to move on to more complex applications, to handle these tools more finely, you just start learning by trial and error.

– Do you think we build software thoughtfully enough today? We supposedly use the rules from Uncle Bob's antediluvian days, yet since then writing programs seems to have become something entirely different…
– I have to give every experienced programmer's favorite answer: “It depends.”
There are many good principles in some of the old books, but applying them is quite different nowadays, partly because of the way the industry moves.
Today speed matters even more in writing software, and that changes things.
If in the past you could draw an architecture diagram and work on nothing but that for six months, today you're at a startup that six months from now may or may not exist. You change things, remove things, add ideas, and you can't count on having a long-term plan.
There's a reason the principles were conceived the way they were; it's just that now they have to be applied in a direction that fits today's needs.
Software is young as an industry, but it has well-thought-out principles, and I believe it should develop through evolution,
not revolution. There's no need to forget everything that came before every few years and start from scratch. The economic forces pushing the industry are quite different, but software can be written today the way it was written years ago.

– In what direction should that evolution go?
– We should talk more about principles and rethink them.
I have one very concrete idea. In my ten years of work, the most important principle I've learned is to separate the business logic from the rest of the application. For one thing, it gives us speed and modularity and helps us cope with change.
What matters to me are the principles; technology keeps changing.
– What do you think about the arrival of AI? Will it help us in that direction?
– I think it will raise the level of abstraction. I don't think we'll be out of work any time soon.
If we look at it historically, we no longer use punch cards, we don't write instructions for the processor, we have high-level programming languages. You no longer need your own server or have to write configuration files. I think writing code is heading in that direction too.
What I notice is that, using these technologies,
little by little I'm turning into a conductor rather than a musician.
I have to remember fewer notes, but what matters to me is having an ear for what sounds good, which code does the job for me right now.
Every algorithm, every task I want to do, the AI does much faster than I could. Recently I was working on something super specific that would have taken me days, and it managed in seconds. But I had to steer it several times toward what was needed; if I hadn't had the eye or the taste, it wouldn't have worked.

The way I picture it, the level of abstraction will simply rise. I don't think knowledge will become unnecessary, how algorithms work, for example.
Only I don't know whether in ten years the level of abstraction won't be such that we just describe what we need and that's it.
The good side is that there will always be something for me to create!
Let me tell the joke I keep repeating lately: drywall is always an option; either way you're creating with your hands. One job is maybe a bit dirtier than the other, but…
– I have a similar joke. That in my thirties I already changed my profession once, and in my forties it will be harder to learn to lay tiles, which also takes a dexterity I don't have. But it really looks like in our line of work fewer people will be able to do more…
– I'm honestly not at ease. I realize I have to keep up with these things, and at some point I may have to make some change in my career. At least for now it seems there is change in the industry, but it isn't abrupt. I see teams of five where two leave and nobody new is hired, because the rest can cope.
Ever since I've been doing this, over the last ten years, everyone said: “Sure, AI will do the dumb stuff.” And now suddenly we're cleaning data and it's painting pictures.
Whoever was making predictions back then would never have said anything like that. They would have guessed that AI would drive the trucks first, and
what happened? We're still the ones driving the trucks, while poetry and the arts are a solved problem.

– You said a programmer's job is to create, but most colleagues wouldn't agree. They see themselves as engineers, people who make something standardized.
– And again… it depends. There's no single truth you can state about programming without someone showing up to reply: “But if such-and-such happens, your solution won't work.”
Maybe the final product you have to make, a set of instructions for the processor to execute, is engineering work.
But the path you take to get there is creative work. There are many analogies with writing.
And in other directions too. I'm not a chemist, but a chemical formula either yields the final product or it doesn't. Whereas in programming there are as many opinions as there are people. One and the same thing, under different circumstances, needs and technologies, can be expressed in very different ways. So the way we work is often not so much like the scientific model as like a writer's. You start, you write a rough draft, you just want it to come out somehow; you're not chasing speed or complexity, you just want it to work. Then you start changing, improving.
I find it really funny when programmers start explaining how this is a super-logical, engineering profession and not a creative one. Yet if you take three people and tell them to agree on whose code is cleaner, they won't reach an objective verdict, because each develops a taste, arrives at certain principles and ideas about what clean code is, about what a variable ought to be called.
As many people, as many opinions. For me, that's the creative part!

– For me it feels very natural to alternate between writing code and writing texts. They're different enough, and the other activity always “runs” in the background. In my case, though, it's rather because they're different: when I write, I let the creativity loose, while when I code I try to stay within frames, within rules.
– In writing you have rules of language too; you just follow them intuitively. Spoken language, like a programming language, also has a grammar, and we stick to it so that we can express ourselves.
– The logic here is also tied to the abstraction we mentioned. With today's programming languages you really do tell the machine what to do almost in English.
– Even more so with the arrival of artificial intelligence. English has turned out to be the most powerful programming language.
– There are beautiful books, works of genius. Can there be beautiful code, code of genius?
– I think it's in the eye of the reader. I've seen a few lines of code in my career; I don't know if I can call them beautiful, but in them I can appreciate the craftsmanship of the person who wrote them. When you see it,
you appreciate that someone really put a lot of thought and effort into it. I was going to say “suffering” too, and that's not ruled out.
Interestingly, when I hear “beautiful code” I don't associate it with running fast. When we chase certain metrics, we're usually inclined to sacrifice everything and write only so that something works. To me “beautiful code” is more about appreciating a person's work. That they've organized it, written a comment where they thought it was needed, used understandable names, so that reading the code comes close to the normal way the brain takes in a sentence.

– So here we are, sitting in the digital tavern… That's also the name of one of your ventures. How did you come to it?
– I'm not an extrovert; social contact tends to drain me. But every now and then it happens, on some late night with a good friend or simply with an interesting person, that we get talking and pick up some topic,
something we most likely won't find an answer to, be it the Universe or artificial intelligence.
Something with a very wide field to roam in, where the answer isn't black or white. I take great pleasure in communicating with people that way.
A fun fact is that I don't drink; I've been a complete teetotaler for ten years. Lots of friends joke that I of all people made a project tied to a tavern, where the prizes are little beers.
– And how does it work?
– The app is super simple. Everyone gets the same question, meant to make them think, to look into their thoughts and come up with something interesting to share with the others. It's pseudo-anonymous; you can pick a nickname. The catch is that after a few days, when the question closes, what you've written disappears for everyone else.
Here comes the other side of the tavern. I believe
writing is an irreplaceable way to keep yourself in good mental shape.
Just as workouts are for the body, for me writing is for thinking. There's a line, I can't find who said it, but I love it: “If you think but don't write, you only think you're thinking.”
I wanted to create a place where people are provoked into writing, so they can dig deep into their thoughts and see what's really rooted there! When I start writing, I often notice that some abstract thought born in my head isn't exactly what I imagined. And I think that process would be very useful to others too.
Of course, there's also the purely selfish side: I'm really curious what people have to say on topics that matter to me, and I wanted an excuse to ask them.

– Digital cheers! How many people have visited the virtual pub so far?
– The tavern idea came because very often, late at night over a drink, people start picking apart politics, the questions of the Universe, of life. I wanted to create a place like that which works around the clock. Every few days you get a question and think it over, with a limit of between 10 and 100 words. You answer, but you can see what the others have written only after you publish yours. You enjoy their writing for a few days, and then the question changes.
Several hundred people signed up, and about half of them answered at least one question. I still count that as a kind of victory; quite a few people plucked up the courage to pour out their thoughts.
I wanted to create a place where guests are inclined to talk about things beyond the everyday. To share their thoughts on more abstract questions. Yes, there are countless forums, a whole heap of places where you can go and pour out your thoughts.
But what I wanted was to nudge people into taking part. 90 percent of those who visit forums, Reddit or other platforms only read. They passively like something but don't join the process itself.
– You can always put questions like these to ChatGPT, and it's quite likely no one could tell whether you really wrote the answer yourself.
– True.
– Isn't that a bit depressing for someone who writes?
– I won't lie. Yes, it really is. When I read a book,
I like knowing that what's written was born of meaning, of some emotion, some experience, that someone sweated and pondered every word
of that text. That they edited it a thousand times, wondered whether this was its place, built plotlines, thought about exactly what they wanted to say.
Stephen King says writing is the most primitive form of telepathy. Somehow, when you read, you get inside the author's head. You see their way of thinking, the way they express themselves. With ChatGPT I sometimes read something and wonder: did anyone really write this, did anyone think it? Or does it just have a taste for what is meant to be said?
This is perhaps the only area where I'm not a fan of this breakneck progress.
I want to read something written by people!




