“I'm just a project enthusiast and user of the Dart language” - an interview with Ari Lerner, the author of the famous ng-book
How to write nine books on completely different technologies, including Angular, Vue, React, React Native and others? What is the most important thing in training, what is a “hallway chat” and in general, what does Dart and Flutter have to do with it?
Today our guest is the author of many books and articles on programming, including ng-book - Ari Lerner . What will be the further book that the author thinks about such a ... contradictory language as Dart, and why it is so important conferences to communicate, ask the guys from software HolyJS Conference Committee ( Dmitry DmitryMakhnev Makhnev and Eugene bunopus Cat ).
- Hello. In our interview there will be three sections, in the first we will talk about you, in the second about Flutter, and the third will be final. Let's start to tell you a little about yourself?
- To begin, I would like to thank you for the invitation - I am very pleased to have the opportunity to speak at HolyJS. As for me, I live in Brooklyn in New York and I program as much as I can remember - my first language was assembler in the early 1990s. At the moment I am doing blockchains and deep learning, so far separately. For the most part, I work with clients, helping them get on ICO (Initial Coin Offerings), helping them to work with “token economics”. And still lives with me a wonderful dog Ginger, a mixture of Chihuahua and Corgi - I can talk about it endlessly.
- What does she look like? The size of a chihuahua, but shaggy, like a corgi?
- Yes, this is a reduced corgi with a chihuahua's muzzle. Very nice.
- What do you earn now? Do you write books or work in a company?
- Both. I am writing a book, but it no longer takes all my time. Until I decided what to do next, I work for myself.
- As far as I understand, you founded Fullstack.io 5 or 6 years ago?
- Yes, it was in 2012.
- Tell us about it.
- Fullstack consists of two parts, it is a publishing house of textbooks on programming, as well as an educational platform. With regard to the publication of textbooks, our main audience is professional developers, but we also provide textbooks for universities, schools, and advanced training programs. In addition, we conduct online and live training, usually as part of advanced training. We work with companies like General Electric, Walmart, with armed forces and so on.
- Great. Do you compete with O'Reilly, or do you have a completely different field?
“We are doing things in many ways similar to what O'Reilly does, but we do not directly compete with them, because we have a completely different scale - we do not represent a threat to O'Reilly's world domination over programming books. In addition, we have a slightly different approach. Usually, books are not updated after publication, so as soon as you read it, it is already out of date. If you buy a book from us, we provide constant updates with it.
- Do you publish paper books, or just electronic ones?
- And those and others. We sell paper books through Amazon, but they cannot be updated. Electronic books purchased on Fullstack are automatically updated. You cannot update via Amazon - they have too tight controls.
- As far as I understand, you are the co-author of many books on Fullstack.io - Fullstack React, Fullstack React Native and, of course, the famous ng-book. To write a book, you need to be very familiar with the subject area you are writing about - be it Angular, React, Vue or anything else. What does your preparation for writing a book look like?
- Good question. Let me first tell you how I started writing books at all, and why do I like this activity? And then we go on to how work is going on each individual book.
- Yes of course.
- In 2012, I reached the ceiling in the company where I worked, and decided that it was time to leave. I created my startup - believe it or not, but it was a scheduling company. For her, I wrote an elegant Erlang and Python backend, it seems, with a touch of Ruby. But there was no good frontend, so I began to explore various frameworks and came across Angular. It was a long time ago, before version 1.0. I started writing frontend for my startup, and I really liked Angular, but the documentation was just awful. To understand how this framework works, I began to read the source code and understand how it works - so my close acquaintance with Angular happened.
- Does this happen automatically, with the help of handlers who follow all this information in the documentation?
“We have handlers that track release cycles, but unfortunately, almost everything else — editing the content and images — is done manually. We have hooks for React, and we have automatic code updates, but the content has to be updated manually.
- Clear. As far as I know, you are the co-author of many books. Is it harder to write a book alone or with someone? How do you organize your work, how do you synchronize chapters?
- Just like when collaborating on an application, we use Git to unify the content, so we have versions and branches. Writing a book in collaboration can be difficult, although I think it is somewhat easier in the case of books on technical specialties than on non-technical ones. I think the hardest thing is to ensure a uniform tone for all sections, and determine which demos to use. But, in general, this is not a very difficult task. All attention is absorbed by writing and editing, and we are constantly in touch with each other, which greatly simplifies the process. Over the years, we have developed letter templates that ensure the unity of style to all our numerous authors. And we do our best to ensure that our co-authors write with us, not for us. We position ourselves as a team in which everyone works with each other, and not as a publishing company, for which the authors work. In addition, we are all co-editors for those books that we write. Having an editor or editors helps ensure a consistent style throughout the book. Each author edits a section written by another author.
- Do you use flexible methodologies like Scrum when writing books?
- Yes, but not too active. We hold a kind of modified stand-up meetings, but not every day, but every week, or a week, depending on the pace of work on the book. If I work alone, then my whole stand-up is that I open my text editor, but if I work with someone, then we are constantly in touch with each other through Slack and Google Hangouts.
- How long does it take you to write a book?
- It depends on what kind of book it is, whether I work with co-authors, on the speed of the framework. For example, I wrote ng-book in four months, working in the evenings and on weekends. But for me it is absolutely unimaginable speed, I still do not understand how I managed to do so much. Usually one book takes from six to twelve months.
- Here I can only talk about my personal experience and how Fullstack works. We have many situations where we do not speak the language into which the book is translated - for example, most of our books are translated into Chinese, and I do not speak Chinese. True, over time I learned a few words, I have a special application for this, Babbel, with which I learn foreign languages. But in the case of Chinese, the best translations were obtained when our translator was also a programmer at the same time. Thanks to this, for any questions, the translator was easier to ask us a question in English, and then correctly translate the answer into Chinese. In Russian, I, unfortunately, do not speak either. I can say "bicycle" - although no, as you hear, even this I can not say. Of course, it's hard not to know the language in which the software is written.
- A similar situation was with Vue. As far as I know, his first releases had rather bad documentation, and many issues were described in Chinese. As far as I know, now the mandatory requirement is English.
- Yes it is. I am lucky that my native language is English. Even though I’m not perfect on it, I don’t have any problems with the documentation. I believe that translations are very important. In addition, we live in a time when machine translation is becoming more and more qualitative, especially due to deep learning - this is one of the reasons why I became interested in deep learning. However, I do not think that for all these problems there is one panacea.
- I recently stumbled upon a heated discussion in the Russian part of Twitter. One party to the dispute argued that translations are by definition evil, because programmers are required to know English, it is an international language for everyone. Others said that for juniors and those who do not speak English well, the documentation must be translated. Do you have an opinion on this controversial issue?
- Yes, we can discuss this in person. Now let's talk about books - they are becoming less popular than before, due to the emergence of platforms such as Media, Twitter, and so on. Do you think books disappear?
- I am not convinced that books are becoming less popular. I believe that everyone works and learns in different ways. Online services in their function are similar to classes in classrooms. And it seems to me that online learning is suitable for developers who want to learn different languages and frameworks differently. Some people find it easier to work with documentation, others - with source codes, some work better in groups, others - alone, through trial and error, or reading books on trains and airplanes and then implementing what they read in practice. On the other hand, I taught in classes where everything was exactly the opposite and where the students simply could not sit down for a book, it gave them nothing. Not that they are not able to read at all, they simply receive less from reading than from working with other people. I think One of the very important achievements of the Internet for the programmer community is that it has made learning more accessible and success more achievable. Sites and services like Medium or Coursera help spread knowledge and make possible a variety of ways to learn. I am proud to be involved in this evolution of education. Perhaps in the future our books will become interactive, and we will be able to combine them with online courses.
- I remember that once books were sold from a CD or DVD with examples. Now this format is out of fashion.
- Yes, now everyone prefers to send zip-archives - for example, we combine all our demos into one zip-archive. One of the most useful tools we have developed allows us to write all the source code used in the book in one place, and then we have tools that automatically update it from the original sources. Suppose we need to select a row, class, object, or function that we discuss in a book. We have tools through which you can make direct links to the source code. This is also useful because every time you download a book, the source is updated. So we do not write the source directly into the text, but into a separate file.
- My next question will be related to the previous one. You said that everyone learns differently and I, as a developer, can read books, watch videos on YouTube, read articles on a platform for learning. But why should I attend conferences?
- This is a good question. Offhand, I can name two reasons why it is worth doing. The first is the most obvious: presentations and reports at conferences are usually well thought out and specifically designed for viewing. As a rule, such a report is devoted to a clearly defined problem - for example, refactoring. When you sit in the audience, where there is a good report on refactoring, it is as if you are refactoring yourself, you are included in the presentation, in the process. Well, for me the personality of the speaker, his emotions are always interesting.
The second reason is less obvious. I call it “hallway chat” - besides the actual reports, you meet and communicate with people who do the same thing as you. Our activities as developers are by definition individual - but when you begin to communicate with many other people who are in the same space as you and are doing the same things as you, this activity automatically becomes social. Another benefit of “socializing in the lobby” is that you meet people who need your services, your technical knowledge or teaching experience. In my experience, we find more customers than anywhere else — even our books and our videos.
- You have already written a lot of books - tell me, what are you working on now? Maybe some spoilers?
- Now I mainly deal with blockchains. If we talk about blockchains, augmented reality, deep learning, in these areas it's great that they are very popular now, so at almost every conference I attended over the past few years, I entered into very lively discussions with people interested in these items. And often it could be the front end developer on Google, who in his spare time deals with other topics.
- The book is mainly devoted to EOS - this is a fairly new blockchain. It is similar to Etherium, but created using LLVM, and this allows you to write a contract for anything that compiles into LLVM, including C ++.
- Deserialization and the like.
- While Clojure, for example, is something completely different. And with Dart it is cozy, as under a blanket.
- Yes, I wrote on Clojure - everything is upside down.
- What kind of applications do you think you can - or need - write to Flutter? Is it possible to write a bank client, a financial application or an application that requires many screens? Or is it just good enough to write “Hello World” on it?
- So far I am very impressed with the speed of development and the speed of the interfaces I created on Flutter. If you choose between native development or a cross-compiled framework like Flutter or React Native, a lot depends on your team. In a properly designed application, I think there is no limit on the number of screens you can write - here Flutter is not inferior to other options. If you have a small team and you need to bring your application to as many users as possible, regardless of platform, without sacrificing the performance of your application in runtime - definitely use Flutter. If you have a lot of employees, and there are developers with a lot of experience in writing native code, then rather the question arises as to how you will recruit your team - will you recruit people, Writing perfectly in Java or Swift, or people who can write code for the frontend of your web application, and for the backend on the server, and for the mobile application. And here, I repeat, the advantage of Flutter for me is that it allows you to write in a language with which I am well acquainted.
If you answer your question more directly, Flutter is great for apps that display some content — for example, it would work for Twitter. The situation is different when you need performance that only a native application can provide, for example, in the case of AR and VR applications. My only AR application is written in Swift, and I haven’t translated it to Flutter yet. In part, this is because both on iOS and on Android are very convenient frameworks for virtual reality and augmented reality.
- You mentioned that Flutter would be suitable for writing Twitter - but Twitter is now written in PWA. Can I compare Flutter with applications on PWA? They are also cross-platform, and they have many other similarities.
- I think this is a somewhat controversial statement.
- It seems that in 2013, when they announced the creation of Dart, there was a lot of excitement around it, but then many people forgot about it, and now in many communities you can hear that Dart is dead and there is nothing more to expect from him. What do you think about the future of Dart and Flutter, and about the future of Dart apart from Flutter? After all, there are AngularDart, and Dart for the backend.
- Good question. If I knew the answer to it, then I would sit somewhere on a warm beach, or on my own yacht with a helipad. If you make any assumptions, then first you need to say that I do not belong to the Flutter team - I am just an enthusiast of the project and a user of the Dart language. I think the Cupertino library - Flutter interface for iOS - will grow. And, it seems, the Flutter team wants to add the ability to write native desktop applications to Flutter - but I’m not sure about that.
As for the creation of Dart, then, in my opinion, it was announced too early, and this led to excessive enthusiasm and premature hopes. In 2013, it was the year of EcmaScript and, I believe, it was an obvious brute force on the part of Google to try to influence the ECMAScript team. And besides, Flow and TypeScript from the point of view of typing in the language, have become more popular. I wish Dart and Flutter all the best, especially with the upcoming release of version 1.0 of Flutter.
- Great! Thank you. I would like to talk about conferences. What is most important about them?
- As I already mentioned, for me in conferences the most valuable is “hallway chat”. And here a lot depends on the conference participants themselves. Interesting content, memorable speakers and events related to the conference help to create and strengthen a community of like-minded people. All that helps this community thrive is important. And, as I said, I like to go to conferences, because they make my work social, not individual.
- As far as I know, this will be your first trip to Russia?
- What are your expectations from Russia, from Moscow and from HolyJS?
“Since, apart from Moscow, I will not see anything in Russia, the first two parts of the question will be, in essence, one and the same. As already mentioned, I have never been to Russia - I mainly traveled to China and the countries of that region, that is, to Taiwan, South Korea. As I understood from what I read about Russia, you have a different culture, you do everything a little differently than we do, and it will be very interesting for me to find out how it looks in practice. This is one of the reasons why I like to travel - I am always curious how other people live and what their priorities are. New York has its own culture, and all my acquaintance with Russian culture comes down to getting a visa and visits to a local restaurant. So what awaits me is a new and fascinating experience, what kind of experience it will be - I cannot predict.
As for HolyJS, as far as I know, the developers in Russia are very purposeful, smart and accurate. I do not want to offend anyone in France or in England, but there the severity can rather be found in communication, so I look forward to serious technical conversations with serious techies. Developers in Russia, in my opinion, are very cool, and I would love to talk with you personally and with your community.
And, of course, I expect a cold in Moscow.
- What are you, what a cold, -10 or -15 Celsius, utter nonsense.
- Just? Then I will be in shorts.
- Great. By this time, Flutter will be out of beta.