📜 ⬆️ ⬇️

How IT professionals work. Maxim Zelinsky, Sberbank-Technology

We continue to ask specialists about the mode of work and rest, professional habits, the tools they use, and much more.

It will be interesting to find out what unites them, in what they contradict each other. Perhaps their answers will help to identify some general patterns, useful tips that will help many of us.

Today, our guest is Maxim Zelinsky from Sberbank Technologies. His company has many internal projects. Maxim offers a life hack, which is suitable for those who do not consider themselves to be multi-genius geniuses.
')


What do you do in the company?

I am responsible for the development of the Platform for the tasks of the Unified Frontal System - a system that will serve all Sberbank clients in all channels (branches, Internet banks, mobile applications, ATM and so on). Our team is engaged in high-load and high-availability architecture, is responsible for the selection of technological solutions and creates system and infrastructure services.

One word (phrase) best describes how you work:

Hardcore Research & Development (R & D).

How many hours a day do you spend on work?

I get that I start working when I go to the subway. When I come to work, meetings, meetings begin, and somewhere in the evening I can continue to work, then I finish at home. The total is 11-12 hours.

What else are you doing on the way to / from work?

When I don’t rake the working mail in the metro, I usually read books or manuals on new technologies. You should always be on the "edge of the knife." It is clear that there are people who know these technologies better than me. And I am glad that they work with me, in my team.

How many hours do you sleep?

I try to sleep 8 hours.

What kind of manager do you personally use?

I tried Trello. And now sometimes I use it.

What kind of task manager do you use / issue tracker / repository?

SberTech uses the Atlassian stack: JIRA as the issue tracker, Confluence for the wiki and Bitbucket for the Git repositories.

What is your working environment? Framework, other third-party products?

For artifacts, we use Nexus, where, in addition to Java artifacts, we also store JavaScript artifacts in the form of NPM modules. Build with us on Jenkins.

In general, everything is pretty simple here: the frontend is JavaScript, the backend is Java.

As for technology, we are sitting tight on React for both the web and mobile. Now we are actively piloting React Native for applications that are used by Bank employees.

Do you have any internal projects, libraries in your team and why were they created?

Our team, in fact, is only engaged in the creation of libraries for developers who are already implementing business solutions based on the Platform for different channels (Internet banks, mobile applications, and so on).

At the same time, we try to be practitioners and create libraries only for those cases that, firstly, are real (sometimes you have to appeal to YAGNI ), secondly, they imply reuse between different teams.

On the backend, we use Spring projects, and we gradually rewrite them for our tasks. In general, projects that develop as part of Spring, if you do not take the Spring Framework, are very different in quality and sometimes not quite compatible: Spring Session, which we used, does not fully support the Servlet specification in terms of working with HttpSession, which manifested itself in very strange behavior Spring Web Flow, which we also used.

At the same time, Spring Web Flow itself ceased to be suitable for our tasks: we had to first strongly modernize it to support the SPA (SWF is focused on server-side rendering), and after numerous attempts to make it work stably (and partly because of ill-conceived mechanisms for extensions) we wrote our analogue, fully designed to work with SPA, and which, I hope, we will soon upload to open source.

What annoys you most when you work?

All my career I have always adhered to the principle of You Build it - You run it. When a development team and a support team are one team (let them linearly submit to different managers), they have one goal, which is responsible both for the time-to-market of the new functionality, and for its reliability and performance.

Sbertech has a separate development team and a separate operating team. We try to interact, we communicate very closely, but our KPIs do not always coincide. Because of this, conflicts arise: we want to quickly implement something, and the operations department is interested in everything to be tested and to have absolutely all the mechanisms for fault tolerance. Sometimes it’s justified, but sometimes it’s just overhead. In the era of Agile, such a construction, in my opinion, should undergo changes. As an important step, a project on the introduction of DevOps practices is now taking place in Sberbank and SberTech, we will all see the first results already in 2017.

I am impressed by the system that is used, for example, by Google - when each team has its own budget for the availability of the system that it manages. That is, if over the course of several releases the system is constantly falling, then until the budget catches up, operation blocks new releases. But at the same time, if there is a budget, the team chooses itself what solutions for reliability it uses and how, and the operation does not have the right to block releases.

What professional literature would you recommend?

In my opinion, the best book on architecture is Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives . There all aspects are considered: what is architecture, who is its customer, what aspects should be covered in architecture and so on.

The second book on architecture with an emphasis on reliability - High Availability and Disaster Recovery: Concepts, Design, Implementation . It is a bit outdated, but there is such a section: an analysis of the value of fault tolerance solutions. We usually start with some simple and relatively cheap solutions: for example, we put balancers. At the same time, we can end with a terrible hell, which quite a bit adds reliability to the project, but the development of this piece of functionality costs a lot of money. This book teaches a rational approach: there is always single point of failure, and that if it is not there, then we simply do not know about it.

From light reading, I recommend - Release It . I find this book useful for absolutely everyone: developers, architects, managers.

What do you prefer: electronic reading rooms or paper books?

Prefer paper. But usually technical literature is a book of 600 pages. Therefore, we often have to use electronic readers - for this I use the first-generation iPad. But I still try to buy paper books so that at least they stand in my home library.

What technology (computers, tablets, smartphones) and operating systems do you prefer at work and at home?

All my mobile devices are Apple. At least a few years ago, their main advantage was high quality. Unfortunately, now they have become much worse. But I have an old white plastic MacBook that just doesn’t kill: I only occasionally change the battery there, and that’s it. Even the HDD is worth native.

At work, we have Windows (except iOS developers, of course), but recently a pilot project was launched to switch to Linux. Many colleagues immediately fit into this project.

Do you listen to music when you work?

No, I prefer silence. Music distracts me.

Which life hack allows you to be more efficient?

What I learned from my own experience is the need for delegation. At the same time, you should try to hire people who are smarter than you, so that you can trust them with tasks that you can't even handle. All the time itself is impossible.

What applications and services can you do without in your work or in your personal life?

Obviously, mail. WhatsApp - I have almost all my friends there. Trello is my task tracker and activity tracker.

What would you recommend to a person trying to go the same way?

Self-education is the most important. You may have little experience, and now you are still studying at the institute, but you know well, for example, Core Java, tried different technologies for yourself and did some small projects of your own. In this case, you are already worthy to work in companies where you treat applicants as people. It's just that in some companies there is a hard pre-screening: no experience - they don't even look.

And we always look at all the candidates and draw conclusions only at the interview. I don’t even look at the summary, I just leaf through it so that I don’t have a bias towards the person.

Therefore, we must constantly engage in self-education. At the same time, it is necessary to understand the basics well - it's okay that the candidate forgot the API of some component, but if he can tell how he works inside (or at least assume, if not quite correctly), this is already 100 points ahead.

The same applies to programming languages ​​- I believe that one should always be well versed in at least two languages, preferably diametrically opposed: for example, Java and Python, or .Net and Erlang. Sometimes an ecosystem of a single language or technology severely limits thinking.

Source: https://habr.com/ru/post/317730/


All Articles