
As you know, Tinkoff.ru customers see before themselves not a bank branch, but the interface of a site or a mobile application - so for the company these two things are especially important. We recently
asked her about mobile development. And now, on the eve of the HolyJS conference, where the developer of Tinkoff.ru,
Alexey Nosov, will deliver a report, asked questions about the JS / frontend: both to Alexey himself and the head of the company's HR projects,
Olga Shpuntenko .
Alexey Nosov
- Introductory question: what are you working for in the company?- I am engaged in projects of remote customer service. Although I have internal customers, strategically we are engaged in improving the quality of our service. For example, a certain number of requests from customers for a particular user-story accumulate, and they do not stand in backlog, but are executed quite quickly for themselves. We optimize our existing projects not always within the framework of the product, but within the framework of customer service, we influence the conversion.
')
- A year ago, under “How we are developing a new frontend Tinkoff.ru”, you could read that the company does not feel the need for Redux, and now you can see its references in your vacancies. Has the situation changed for a year?- When we started, Redux was in its infancy, it is not clear where and how it would develop. Now we use Flux, it is much more suited to our requirements for architecture. However, this does not prevent us from taking useful stuff from Redux. In the vacancies we write about Redux, because the experience of using it for us is an indicator: the candidate understands something about the modern application architecture, how to manage the data flows of React / Redux applications, and that means that he will quickly figure out our architecture.
- And the bank as a whole, and you personally use RxJS - can you tell us more? Why initially felt the need for it? Faced with the pitfalls?- We had a problem with taipings for specific Rx classes used in testing. RxJS itself is rather heavy, but if you choose the right assembly, you can reduce the weight. In general, RxJS is a library that allows you to work with asynchronous data streams, which can be viewed as arrays and implement a reactive programming paradigm for interconnecting application components that generate and consume these events. Using Rx, you can implement complex logic in a few lines using pure functions, eliminating possible side effects and problems during the debugging phase.
In Tinkoff for Business, we use RxJS everywhere. Benefits can google - at least, this is a convenient data binding, one way data flow, which allows not to be confused with the direction of the data. We felt the need for RxJS, when it became difficult to maintain old applications on the first Angulyar, using promises and emitters that were loosely connected and could be forgotten about. When we rewrote our messenger on Angular 2 and RxJS, the performance immediately increased, support became easier. There are no underwater stones, but, of course, there is an entry threshold - you need to rebuild thinking (so-called data streams).
- Among backenders, the bank is known for its active use of Scala, which is quite unusual - is there anything so unexpected in the technological stack of the frontend?- We do not have a goal to bring in more exotic things: many new people come out for projects, I don’t want to waste their time and force them to wade through the wilds. We use trend and popular approaches, but we also experiment. For example, with a functional approach, we use the ramda library (an alternative to lodash).
- What to expect from your report to HolyJS ?- I will talk about cobrauzing - a demonstration of the screen of our client to the call center operator. The report is called “How to do it easy,” but it’s not at all easy to explain to a grandmother from Tambov how to buy Amazon shares. I will not reveal technical details, come to the report :)
Olga Shpuntenko
- Tinkoff.ru is a very atypical bank - and how does this unusual effect on JS-development, what is your specificity?- Our specifics - first make MVP, check the idea, and if it fires, optimize and develop further.
There is such an interesting compromise - on the one hand, you need to make such code so that a quickly proven idea can then be easily developed. At the same time, it is necessary to strictly comply with the security requirements - we are a financial institution, we work with private customer data, all this requires additional control. On the other hand, if you write a beautiful academic code, but the idea does not pass the test, it will just have to be thrown away, and this is insulting.
Our priority is interface performance. When the test stage has already passed, we, of course, optimize and squeeze everything we can - the size of bundles, cache requests, and in principle try to reduce their number.
- The company has long used AngularJS, then moved to the new Angular ("Angular 2"). Has the recent release 4.0 become a significant event for you and are you going to switch to it?- We are preparing for the transition to Angular 4, we have already transferred one of our projects - Starter (this is bootstrap, from which we launch all our new projects). The advantages are that it optimized work with AOT and server rendering. There are some difficulties for hybrid applications - for example, problems with the upgrade-adapter, but we will soon completely transfer them to Angular 2.
- Tinkoff.ru also conducts meetings on Angular, and there are no videos from the latter - is it worthwhile in the future to carefully follow the schedule in order to make them personally? Why from possible technologies mitapas focused on Angulyar?- The last meeting was with an online broadcast, because we no longer accommodate everyone :) We’ll put all the videos on our YouTube official channel, and on our website, meetup.tinkoff.ru. You can also leave your e-mail to receive alerts about upcoming events - so do not miss it.
We are happy to host different communities, and our guys participate in different meetings and conferences. We decided to carry out Mitap on Angulyar for a very simple reason - at that time nobody did them :) There was little documentation then (in Russian, and there wasn’t any), and we already had something to show on the sale. And the eternal holivar between React and Angulyar is generally a fertile topic - there is always something to discuss, share approaches. Well, and throw, of course.