What a backend developer should know. From Frontendent to Backend

Vacancy:
bACKEnd Web Developer

One of the demanded specialties in the field of web development is the creation of a backend, that is, the server part of the web application. For the successful employment of professionals, a certain luggage of knowledge and skills is needed. Representatives of companies tell what specialists they would like to see in their team

  1. What knowledge and skills should the backend-web developer have?
  2. What is the toolkit of a backend web developer?
  3. What are the company's requirements for the formation of potential employees?
  4. What are the requirements for work experience?
  5. Are there any special requirements that are due to the specificity of the company?

Arthur of Bozhenov, Senior Programmer of the Department of Internal Automation Positive TECHNOLOGIES

Timur Himullin, Natural Engineer for Automation Testing Department of Development Technologies POSITIVE TECHNOLOGIES

1. Arthur Bozhenov: The backend web developer must have the following skills and knowledge:

  • multi-threaded programming;
  • the principles of ACID (atomicity, consistency, isolation, reliability) and their application in practice;
  • general principles of network architecture and protocols;
  • the life cycle of the HTTP request / response, the passage path;
  • protection of network connections (HTTPS). Authorization. Setting access rights to resources;
  • REST, ODATA, WebAPI, SOAP;
  • web services;
  • web application hosting (IIS, NGINX, Lighttpd, Node.js, Apache);
  • scalability of the solution, balancing / routing requests;
  • logging;
  • data caching;
  • data storage (adequate choice of storage method depending on the task);
  • work with large amounts of data.

2. Arthur Bozhenov: Basic toolkit backend web developer:

  • comfortable IDE (Visual Studio, NetBeans, etc.);
  • services or utilities for creating / viewing / modifying Regex expressions, JSON, XML, text in improper encoding;
  • Google and Stackoverflow;
  • MongoDB / Redis / Memcached;
  • ElasticSearch / Kibana;
  • RabbitMQ / ZeromQ / MSMQ and other MQ.

Timur Himullin: As for the IDE, this is the case of taste, at least notepad (sabloim, NPP), but I would have looked better in the direction of Jetbrain products, and others who are well integrated with each other.

3. Arthur Bozhenov: Higher (optional) technical (required). Experience practical work more important.

Timur Himullin: As for education, it is better technical or mathematical.

4. Arthur Bozhenov: 3-5 years of non-frontend development.

Timur Himullin: For backend developers, I can not clarify.

5. Arthur Bozhenov: Analytic mind.

Timur Himullin: The real skill to work in the team and the ability to negotiate. A developer who does not know how to model and proceeds to work immediately without thinking by the overall architecture and interaction of all application modules, I would not take anywhere. On the outsource let sit!

Evgeny Kuzin, Head of the Network Projects Department,LLC "Doctor Web"

1. First of all, the backend web developer must have a common baggage for all developers - engineering thinking, the ability to enter the essence of the task, decompose it to the components and correctly select the tools to solve it.

Web application architecture differs significantly from the architecture of ordinary applied software First of all, dozens at the same time, and sometimes hundreds of users can work with web applications. Customer isolation from each other, system security, calculation of an increase in productivity by scaling the system and the associated architectural and technical solutions are completely fallen on the web developer's shoulders.

Secondly, it is important for the web developer to respond sensitive to the development of the Internet, analyze the technologies and tools used.

The web developer should not be afraid to master new technologies, should be easy to rise (compared to colleagues - application programmers) and be able to act quickly.

2. I do not call specific programs, because for each aspect equivalent options are possible.

Of course, the browser, with all the extensions necessary for analysis, verification and manipulation with elements and scripts on the web page. Then the utilities that allow sending a variety of custom HTTP requests (since 95% web development is the HTTP protocol) and analyze traffic and data exchange and data exchange in detail between the client and the server. Also a backend web developer need text editorIt is desirable with the support of the programming languages \u200b\u200bused, debugging tools, profiling and control the versions.

Separately, it is worth mentioning tools for writing or generating technical documentation. Documentation is good, good documentation is also not bad.

And, of course, the main tools are head and straight hands.

3. It is absolutely necessary to know Russian, be able to clearly and clearly state your thoughts in communicating with colleagues, both in writing and orally. For the rest, we do not require applicants on the obligatory manner of higher technical education or the availability of any certificates - solve the quality of work and practical knowledge.

4. Here is the same principle as with education. Experience, experience - unconditional pros, but we consider each candidate individually.

5. If we talk about developing precisely for the Internet, then the web development itself already presents the creation of an application that works in a public environment for the user, the true intentions of which are unknown. Programming any action, you need to ask yourself questions: what if the user (an attacker) automates the infinite execution of this action? What if the input data of the application will be arbitrarily edited? That if the link to this service gets in open accesswill it be transmitted via an IM to another user? Etc.

By virtue of the specifics of our activity, we often proceed the road to attackers, and the data with which we work are of great interest in certain circles, so some of our web applications require particularly thorough protection.

Nikolai Netherry, Head of New Development, Badoo

1. The backend web developer in Badoo, like any good engineer, should be able to understand the task and be able to effectively solve it in the framework of the available technologies and tools. We use PHP + MySQL, so our web developer must first of all free possess PHP and SQL. Must be responsible and strive to do its work well - to observe the deadlines, understand the product / technical value of the task, responding for the final quality.

2. The basic set is PHP, MySQL, Nginx, Git, Jira, IDE, favorite browser and command line. In addition, we have a large number of different tools, systems, libraries that developers are used everywhere to solve certain tasks. Some of these tools are available in Open Source, for example, PINBA is a real-time PHP monitoring agent, our code formatting tool is PHPCF, PHP-blocking for the LEPTICA library.

3. If a person satisfies our skills and knowledge requirements, then we are ready to offer him a job regardless of his education.

4. The situation is similar to education situation: no stringent and formal requirements.

5. Our projects have a large audience and sufficiently loaded PHP-backends. In the peaks they handle up to 50 thousand requests per second. In this regard, we pay special attention to the topic of productivity. It is necessary to understand the basic principles of caching, replication, optimal work with data, optimize consumption and distribution of resources. Be able to see and localize a productivity problem at any level.

Denis Streetov, Head of the Technological Development Department and maintenance of the company "NTC IT ROSA"

1. The candidate for such a position in NTC IT Rosa will be needed by the following skills:

  • good knowledge of Ruby On Rails 4.x;
  • familiarity with Behavior-Driven Development;
  • familiarity with the principles of collective development - versions control systems, task trackers, and so on;
  • experience with databases (both relational and NOSQL);
  • experience with SLIM / HAML;
  • knowledge and experience with JavaScript / coffeescript;
  • cSS / SCSS knowledge.

2. In the NTC IT Rosa for web development currently used Bootstrap framework, as well as JavaScript framework Angularjs. PostgreSQL and Redis are used to store data. Development on Ruby On Rails is conducted in accordance with the Behavior-Driven Development approach using the RSPEC toolkit.

3. The presence of higher technical education will be a plus, but in the first place we will not look at the diploma, but on the skills and experience of a potential candidate.

4. Experience is desirable from year to year in projects, where those mentioned in the first paragraph of technology (at least Ruby On Rails) were used.

5. The backend-web developers in NTC IT Rosa work mainly over the ABF development and assembly system used to create our main products - line distributions of Linux OS and products under this OS. Therefore, it will be a big advantage if a candidate for this vacancy is familiar with Linux and with assembling packages for this system. It will not be further acquaintance with other technologies used in ABF - virtualization (in particular, LXC), configuration management systems (for example, Ansible) and code storage systems (primarily Git).

Sergey Kazantsev, senior developer, "Kaspersky Lab"

1. Becasend developers are responsible for the code performed on web servers.

Thus, backend developers should understand not only programming languages, but also server architecture, databases and network interaction protocols.

2. The developer must know at least one high-level programming language, framework for efficient web development and web server.

Popular bundles can be:

  • C # + ASP.Net + IIS;
  • Java + Spring MVC + Apache Tomcat;
  • Ruby on Rails + Nginx;
  • Python + Django + Apache;
  • Php + apache;
  • ... or their combinations.

Many company web services are built on the basis of Microsoft technologies and platforms .NET, but Ruby On Rails, Perl, PHP are also applied.

In the arsenal of a good backend developer there are always tools:

  • traffic monitoring: Fiddler, Wireshark;
  • profiling performance, memory and database requests;
  • quick search logs: grep.

3. Mandatory skills to work with databases, queues of messages and large projects for the use of distributed cache.

4. The required experience may depend on the position that the applicant claims:

  • 1 year - junior web developer;
  • 2-5 years - web developer;
  • 5-7 + - Senior / Lead Developer.

5. The specific requirements of the Kaspersky Lab can be attributed to knowledge of cryptography, potential threats to web applications and ways to prevent them.

Ilya Kutukov, Senior Programmer, Specialist in Web Engineering in Parallels

1. We in Parallels are now openly two vacancies for such specialists - the leading web backend developer (http://hh.ru/vacancy/12586616?query\u003dparallels) and the leading web bachend developer and architect (Python ) (http://hh.ru/vacancy/12599030?Query\u003dParlels), so that we know exactly what we want from such specialists. It is understood that a person coming to us owns the necessary programming languages \u200b\u200band technologies to work sufficiently. In addition to checking Coding Skills and overall erudition, we give a test on the architect - the text that is a freely written and knowingly incomplete TK on the development of the system. Further, asking the candidate to clarify that it is not clear to him, what additional questions he has and how he sees the main components of the system, the data scheme, how everything will change with increasing the load, the amount of data, and where can be neglected.

2. The main toolkit - IDE (I will clarify that we are in the team prefer pycharm), the developer's environment, that is, a set of programs that makes it as much as possible on the filling of combat servers, but at the same time with the ability to quickly understand what is happening, VCS, Head scripts. Of the interesting, relatively new tools, technologies and approaches, I would also like to mention the "reactive" approach (AKKA, RX. *, Apache Storm, etc.), which requires the developer of thinking at the level of messages, events and their modifications. As well as microservice architectures that are well complementing their interface description languages \u200b\u200b(Thrift, Avro, Protobufs, JSON Schema), which make it possible to create contracts for which data is being exchanged.

3. Education for us does not play a fundamental role.

5. We have backend developers work on such functionality as Parallels Myaccount, Access Portal, Desktop Portal, in solutions such as Parallels Access (solution remote access) and Parallels Desktop for Mac (launch on Machs of different operating systems and their applications without reboot), with various infrastructure solutions. Therefore, we have such a specificity as Zero-Downtime, and well, if a person not only understands what changes should be made, but also how to do it, not affecting users.

Konstantin Kichinsky, Expert on Strategic Technology, Microsoft Russia

1. Knowledge and skills necessary for a backend web developer:

  • Network Architecture, Protocols, Communication Channels.
  • The technological stack corresponding to the project (for example, C #, .NET, ASP.NET or JavaScript / TypeScript + Nodejs) + control underlying the operating system (for example, Windows / Azure + PowerShell).
  • Automation of deployment and testing (including load).
  • Understanding cloud features Main providers (Microsoft Azure, AWS), including providing the scalability of services.
  • SDL and in general safety issues (including encryption and authentication).

2. Tools: Visual Studio, Git + the rest depends on processes and technological stack.

3. Education: Profile (IT) + Practical experience, welcome quality knowledge in specific areas (also safety or ensuring the fault tolerance of the site).

4. Experience: practical experience in real projects, including participation in OS projects.

5. Specific requirements: Azure.

Alexander Mountain, Director information technologies Mail.Ru Group.

1. First, he must know the backend - its main programming language, database, the principles of organizing server applications. In addition, he needs knowledge in the web: the HTTP protocol device, CSS capabilities, at least the elemental ownership of HTML and JavaScript. And finally, he must be a good developer - to be able to debug its own and someone else's code, to properly use classical algorithms, choose relevant data structures.

2. The main tool is, of course, the programming language. The language defines the second level of the toolkit: standard for this framework language and library kits. Then go databases: most often MYSQL or PostgreSQL - and NOSQL storage facilities, such as Tarantool or Redis.

3. There is no formal requirements for the diploma during the device to work in Mail.Ru Group. It is much more important for real skills and projects in which he participated. Mail.Ru Group has two large educational projects: a technopark on the basis of MSTU Bauman and Technosphere on the basis of the IMC MSU, whose goal is to give students specific skills in the field of web development.

4. There are no formal requirements again, but in general it can be said that the developer becomes completely independent somewhere after two or three years of experience "The second number".

5. The backend development was traditionally the heart of our company. The backend developer should be really the best in everything - smart, creative, responsible, neat, as well as a good team player and preferably with a lug around the head. From a technical point of view, our specificity is that most of the backend is written on C ++, and not scripting languages \u200b\u200b- high loads forcing it.

Alexander Nedzelsky, ITSoft Web Studio Head

1. If we talk about a certain collective image of a bachend developer, then:

  • understanding the OOP, design templates, knowledge of basic algorithms and data structures;
  • possession of one of the programming languages \u200b\u200b(or several);
  • experience with DBMS, knowledge SQL;
  • understanding the principles of designing relational databases;
  • experience with popular frameworks;
  • experience with versions management systems;
  • basic knowledge of HTML, CSS, JavaScript;
  • the ability to set up a test environment.

2. "Notepad" and head on shoulders. And if seriously, any IDE / editor and the test area. Usually, the tools are selected depending on preferences / tasks / capabilities.

3. Strictly higher technical.

4. The presence of completed and working commercial projects.

5. We are developing web applications, sites and services mainly on PHP / MySQL. At the same time, we use Yii / Symfony and 1C-Bitrix for standard solutions. Therefore, relevant experience and knowledge is important for us.

Eduard Gursky, Technical Lead in the Internal Development team, JetBrains

1. The backend-web developer is, in fact, a person who develops the server logic and aware of which context it will be executed - in the context of web applications. If the backend-web applications are implemented in Java, and in most cases it is so, in fact, the same specialist apply all the same requirements for knowledge and skills as the usual Java developer: knowledge of language, understanding of work and Devices of the main library components of Java SDK, etc. However, experiences are also added with various web frameworks (simplifying the implementation of Dependency Injection, MVC, etc.), the ability to evaluate and improve the performance of the application, its scalability. It is necessary to take into account and understand how quickly the user application will receive the result of the server code, as well as how safely and rationally, the other server functionality is rational through the user's browser.

Often the backend web application requires integration with third-party services or export of its functionality as an external API. The developer must understand how such tasks are being implemented which protocols and mechanisms are used for this.

Despite the fact that such a person is mainly engaged in the development of the application server logic, the need to debug or prototyping using the client part of the application. From here, it follows the need to understand the operation of the TCP / IP protocol, HTTP protocols, the principles of the browser interaction with the web application, basic knowledge about layout, CSS styles, JavaScript capabilities.

2. Usually this IDE for development. You also need to use a profiler to solve productivity tasks, excessive resource consumption, etc. In our team, we use Intellij Idea.

3. We do not impose any formal requirements for the level of education of candidates. More important experience, understanding and intelligence, and, of course, the motivation of man.

4. Any experience in the development of Production web applications, of course, is a plus. Knowledge and skills described above cannot be present at a specialist in the absence of relevant experience. On the interviews, we usually we are interested in the details of participation in various projects specified in the resume in order to assess the experience that the candidate could be purchased by implementing such tasks. A specialist who tried various approaches and technologies to solve similar tasks in developing web applications that can analyze the pros and cons of each approach, is a very interesting candidate.

5. The experience of developing applications using JetBrains products is welcomed. We are all in the company try to use our products, because they are comfortable and because we want to make them even more convenient!

Also recently, we practice the development of web applications in the Kotlin language. This gives a number of significant advantages, and also makes the process of writing code on it more enjoyable. The desire of the candidate is welcomed to study new languages \u200b\u200band new approaches to the implementation of web applications.

Dmitry Ovchinnikov, web developer
Natalia Beetle, Recruiter in SOOO "Game Stream" in the Minsk Center for Development Wargaming

1. The backend developer requires a deep understanding of the web: from the formation of an HTTP request on the side of the browser before the implementation of intersperson communications using various protocols. Web in Wargaming is not only a "personal account" of the player, but also a lot of services providing uniform authentication, registration, participation in the referral program, etc.

It is also important to have engineering thinking. Combined with a large technical horizon, this makes it possible to offer effective solutions.

And, of course, be sure to write quality code. The face of a programmer is its code. Knowledge of major architectures and modern programming patterns is often mandatory when working in a large team over a complex project.

2. In wargaming the stack of technology used is quite standard: the main array of web projects is developed on Python, some services are written in PHP, and others, critical to speed and parallel computing, on Erlang. MySQL is used for storage, for cache - memcached. Rabbitmq selected as a tire of messages in the company. From frameworks - Django and twisted. If we talk about the front part, then this is a common BACKBONE / Underscore / jQuery bundle.

As for the development tools, in wargaming we adhere to the position "What is better for the developer". Someone uses modern IDE, someone more comfortable feels with VIM or Emacs. It does not matter, with the help of which tools we carry out our work, if the result is convenient and useful services that make millions of players every day around the world every day.

3. We do not have formalized requirements for the level of education. Profile (technical, mathematical) education will be a plus, as it indicates the presence of a fundamental theoretical preparation of the candidate, but it is unlikely to become a decisive factor when admission to work. We understand that knowledge in the field of mathematics, OOP, classical algorithms and data structures can be obtained independently. Preference is given to candidates with experience. Also, the ability of a candidate to solve engineering tasks and make engineering solutions, and not just write code.

4. Requirements for work experience depend on the vacancy. If we invite a young specialist, first of all we will look at his "home projects" and university developments. We must be confident that a person came to us not by chance, it was a conscious choice that can be confirmed by real examples of at least small, but completed projects. When it comes to an experienced specialist - the requirements are more specific. We are important to experience in multiple areas: databases, Linux, web server (Apache, Nginx), knowledge and understanding of caching systems (Memcached), messaging systems (RabbitMQ), and experience with frameworks (Django, twisted). Experience in optimizing high-load projects will be very useful and will allow you to quickly join the development process and work with maximum efficiency for yourself and team. For leading experts and experts, in addition to the above, a wide technical horizon and experience with a variety of technological stack are important.

5. Support for web infrastructure for a huge number of players of the Wargaming.net universe implies the ability to work with high loads and lay in the application architecture the ability to operate large quantity Requests.

In addition to readiness for Highload, it is important to remember the safety. Therefore, the web developer in Wargaming is obliged to know about the mechanisms of countering major threats and ensure the reliability of its code.

Prepared Igor Strompel

SUPERJOB.RU portal research center Especially for the "system administrator" studied employers' offers. By the position of the backend-web developer, special requirements are not yet defined, they are mainly similar to the fact that they are presented to programmers.

Java programmer

IT.
Telecommunications
Industry
Production
Building
Property management
Services B2V. Sales B2B Sales B2c.
I. 65 000 – 80 000 54 000 – 71 000 50 000 – 67 000 60 000 – 75 000 50 000 – 65 000 50 000 – 64 000
50 000 – 64 000 42 000 – 57 000 40 000 – 53 000 45 000 – 60 000 40 000 – 52 000 40 000 – 51 000
II. 80 000 – 90 000 71 000 – 87 000 67 000 – 85 000 75 000 – 90 000 65 000 – 83 000 64 000 – 87 000
64 000 – 72 000 57 000 – 70 000 53 000 – 68 000 60 000 – 70 000 52 000 – 66 000 51 000 – 70 000
III 90 000 – 150 000 87 000 – 125 000 85 000 – 115 000 90 000 – 130 000 83 000 – 120 000 87 000 – 125 000
72 000 – 120 000 70 000 – 100 000 68 000 – 92 000 70 000 – 100 000 66 000 – 96 000 70 000 – 100 000
IV 150 000 – 200 000 125 000 – 150 000 115 000 – 150 000 130 000 – 180 000 120 000 – 170 000 125 000 – 160 000
120 000 – 160 000 100 000 – 120 000 92 000 – 120 000 100 000 – 145 000 96 000 – 140 000 100 000 – 130 000
Cf. 125 000 110 000 100 000 115 000 115 000 110 000
100 000 88 000 80 000 92 000 90 000 90 000

Odd wage lines - Middle MSK, even - on St. Petersburg

Salary range Requirements and wishes for professional skills
Range I.
  • Incomplete higher education (technical / IT)
  • Excellent knowledge HTML, CSS, Java, XML
  • Knowledge of object-oriented programming principles
  • Knowledge of theoretical foundations of database development
  • Knowledge of English at the level of reading technical documentation
  • Java programming experience from six months
Range II.
  • Experience with Web Servers and Application Servers
  • Java programming experience from 1 year
Range III
  • Higher education (technical / IT)
  • Knowledge Design Templates Java and J2ee
  • Experience using special tools (Hibernate, Spring, Struts, etc.)
  • Experience in the development team
  • Experience with versions control systems
  • Experience with DBMS (MS SQL Server or Oracle)
  • Java programming experience from 2 years
Range IV.
  • The presence of qualifying certificates
  • Experience design information systems and preparation of project documentation
  • Experience with integration solutions (IBM WebSphere, Oracle Fusion MiddleWare)
  • Experience in the development of multi-level applications
  • Java programming experience from 3 years
Possible wishes:
  • knowledge of English in the colloquial or free level
  • skills Manual Developer Group

Valery Chernetova prepared, superjob analyst leader


In contact with

  • Transfer

This list appeared as a personal memo on topics that I discussed with colleagues and friends and in which I wanted to understand the deeper ...

I am not a big lover to ask technical questions on the interviews: for me it is better to sit so much with a candidate (or a candidate) at a keyboard over some real code, a real problem - and a whole day to engage in pair programming, it is desirable alternately with the rest of the team. But I believe that some technical questions can be a good starting point for the beginning of a fascinating and pleasant conversation and will allow each other's deeper.

A number of issues related to the server part are collected in this repository, which can be used when checking potential candidates. In no case is not recommended to ask everything Questions to one candidate: it will take several hours and does not make sense at all, because they cover a too wide range of topics. No one can know everything. Choose the most relevant section and most interesting questions to expand the conversation.

A warning

Most of the questions are open, some simply do not right or wrong Answer. On the contrary, they should be a starting point of the conversation, which in an idea should better show human abilities than a simple answer. Personally, I generally preferring questions, the answers to which I myself do not know.

Again, I emphasize that it is hardly enough to ask questions. At the end of the interview, spend a long session of pair programming: this is one of better optionsTo understand the style and approach each other - and give to understand the candidates, what to expect from future work.

This project was created according to the sample of "questions for an interview for the work of the Frontender" from @darcyclarke.

Where are the answers?

Sooner or later I will complement the article with the appropriate answers. I would be grateful for any help!

Questions on design templates:

Why global objects and statics is evil? Can you show on the example code?

Tell us about control inversion and how it improves the organization code.

The Demers Law (the principle of minimal awareness) states that each program module must have limited knowledge about other modules and must interact only with direct "friends" (sometimes it is formulated as "Do not talk to strangers"). Can you write a code that violates this principle? Why is his bad organization and how to fix it?

Active-Record is a design template that encourages the implementation of functions to itself, such as Insert, Update and Delete, and properties that match the columns of some basic table in the database. Do you think and experience, what restrictions and pitfalls have this template?

Data-Mapper is a design template that encourages the use of a layer of converters (maps) moving data between objects and database, at the same time maintaining their independence from each other and from the converter itself. In contrast to this template, in Active-Record, objects directly include operations to save themselves in the database and properties corresponding to the basic tables in the database. Do you have an opinion on these templates? In what cases do you prefer one of them to another?

Why when administered to NULL often mention "a billion dollar error"? Want to discuss techniques to prevent this, such as the NULL Object template presented in the GOF book, or optional types?

Why is the composition often better than inheritance?

What is the safety level (Anti-Corruption Layer)?

Singleton is a design template that creates one instance of the class for a single object. Write the right one (Thread-Safe Singleton) is not so easy. Try?

The ability to change the implementation without influencing the client part is called an abstract data presentation (Data Abstraction). Write an example that violates this property, then correct it.

Write a snippet of the code that violates the principle of don "T Repeat Yourself (Dry). Then correct it.

How will you deal with hell dependencies (Dependency Hell)?

Why is Goto - is it evil?

The principle of reliability is the general rule of the organization of the code that recommends "Being conservative is that you send, and Liberal in what you accept". It is often formulated as "Being tolerant reader and cautious writer". Want to discuss the meaning of this principle?

Discussion separation - design principle for separation computer Program For individual areas, each of which is responsible for its task. There are many different mechanisms for separating responsibilities (use of objects, functions, modules or templates, such as MVC and the like). Want to discuss this topic?

Questions on the organization of code (Code Design):

It is often said that one of the most important tasks of object-oriented design (and the organization of the code as a whole) is a strong clutch and weakliness. What does it mean? Why are they so important and how to achieve them?

Why in most languages \u200b\u200bthe array index starts from scratch?

How does tests and TDD affect the organization code?

Write a code fragment that violates the principle of Don "T Repeat Yourself (Dry). Explain why he has a bad organization, and correct.

What is the difference between clutch and connectedness?

What is refactoring?

Are comments in the code are useful? Someone says that they should be avoided if possible, and ideally they do not need at all. Do you agree?

What is the difference between the organization code and architecture?

Why are TDD tests written before code?

C ++ supports multiple inheritance, and Java allows the class to implement multiple interfaces. What effect does the use of these funds for orthogonality? Is there any difference in the effects between the use of multiple inheritance and multiple interfaces? Is there a difference between using delegation and inheritance? [This is a question from the book "Pragmatic Programmer" Andrew Khanta and Defvida Thomas]

Pros and cons storage of the logic of the subject area in stored procedures.

In your opinion, why the object-oriented organization dominates so many years on the market?

If your code has a bad organization, how do you understand it?

Questions in programming languages:

Tell O. three main The disadvantages of your favorite programming language.

Why increases interest in functional programming?

What is a closure and what is it useful for? What is common with closures and classes?

When is it convenient to use generics?

What is high order functions? What are they needed for? Write such a feature in any language.

Write the cycle, then convert it to a recursive function using only immutable structures (i.e. without variables). Describe it.

What does it mean when language considers functions as first class objects?

Show an example when an anonymous function can be useful.

Why do you need namespace? Come up with an alternative.

Tell us about Java and C # compatibility (or select two other arbitrary languages).

Why many developers do not like Java?

What makes a good tongue good and bad tongue - bad?

Write two functions, one referentially transparent, and other referentially opaque. Let's discuss them.

What is the stack and what is a bunch? What is stack overflow?

Why is it important that the functions are first class objects in the language?

In some languages, especially with a functional approach, a technique is allowed, which is called comparison with the sample. Does she know you? How does the sample mapping differ from the SWITCH design?

Why in some programming languages \u200b\u200bexceptions are not implemented? What are the advantages and disadvantages of this approach?

If Cat is Animal, then is it true that Takecare - This is Takecare. ?

Why in java, c # and many other languages \u200b\u200bdesigners are not part of the interface?

In recent years, a lot of noise around Node.js. What is your opinion about the use in the backstand language, which was originally conceived to work in the browser?

Imagine that you have a time machine and there is an opportunity to return at a certain point in time in Java history (C #, Python, Go or something else) and talk to some of the creators of JDK. What would you try to convince them? Delete controlled exceptions? Add unsigned primitive types? Multiple inheritance?

Web Development Questions:

Why are native cookies and third-party cookies are processed so differently?

How would you manage the numbering of versions of Web Services API?

From the point of view of the backend, is there any disadvantages or obstacles to the introduction of single-page applications?

Why do we usually strive so much so that the service was stateless? What is so good in the stateless code? Why and when condition storage (statefulness) is bad?

REST and SOAP: In what situations you will choose one of these approaches, and in what other?

In web development, the Model-View Controller and Model-View-View-Model approaches are largely similar both in the besende and in the front. What do they imagine and why appropriate to use them?

Database questions:

How do you post the application from one database to another, for example, from MySQL in PostgreSQL? If you have to manage such a project, what problems do you expect?

Why does the database regard NULL as such a special case? For example, why in SQL SELECT * from Table WHERE Field \u003d NULL does not give recording with the NULL field?

ACID is an acronym for Atomicity, Consistency, Isolation, Durability (atomicity, consistency, isolation, stability). Most database engines guarantee these four properties for transactions in the database. What do you know about it? Want to tell you more?

How would you deal with the transfer of the DB schema, that is, how do you automate the changes in the DB scheme as the application is developed from the version to the version?

How to implement a lazy load? When is it useful? What are underwater stones?

The so-called "N + 1 problem" occurs when the code must load child elements from the "Parents-descendants" relationship in ORM with lazy boot, and therefore, send a request for the parent record, and then one request for each subsidiary. How to solve the problem?

How do you find the most cost requests in the application?

In your opinion, is it always necessary to normalize the database? When is it advisable to use denormalized database?

One of the methods of continuous integration is called a blue-green debt. It consists in using two industrial operation environments, as much as possible - and deployed in one of them during the other, and then secure traffic switching from one environment to the second after testing in a convenient setting. This method is complicated if the debt involves changing the structure or content of the database. I would like to discuss this topic with you.

Questions on nosql:

What is consistency ultimately (Eventual Consistency)?

What about the CAP theorem, give examples of CP, AP and CA systems.

How do you explain the splash of interest in NOSQL lately?

How does NOSQL solve the problem of scalability?

In which case, will you prefer a document-oriented DBMS like MongoDB instead of a relational DBMS, such as MySQL or PostgreSQL?

Questions on the version of code:

Why is the implementation of branches in Mercurial or Git easier than in SVN?

What are the pros and cons of distributed versions control systems, such as Git, in comparison with centralized VCS like SVN?

Can you describe the workflow GitHub Flow and Gitflow?

What is Rebase (Move)?

Why is the merger easier to exercise in Mercurial or Git than in SVN and CVS?

Questions about parallelism:

Why do you need a parallelism? Explain.

Why is it so hard to test multi-threaded / parallel code?

What is the status of the race? Write an example on arbitrary language.

What is mutual blocking? Can you write some code that suffers with mutual locks?

What is resource hunger (Process Starvation)? If necessary, let's consider its definition.

What is a non-blocking synchronization algorithm without expectations (wait-free algorithm)?

Questions about distributed systems:

How to test the distributed system?

In which case, do you apply asynchronous communication between two systems?

What are the main underwater stones of the remote challenge procedures?

If you create a distributed system for scalability and reliability, what different problems may occur in a closed and secure network environment - and in a geographically distributed and public system?

How to ensure the fault tolerance of the web application? Desktop application?

How to cope with failures in distributed systems?

Let's talk about different approaches to restoration of working capacity (reconciliation) after a network connection violation.

What are the misconceptions about distributed computing?

When you apply Request / Reply, and when Publish / Subscribe?

Suppose that the system with which you work does not support transactionality. How would you implement it from scratch?

Questions about the life cycle software and manual team:

What is flexibility (Agility)?

How will you work with a legacy code?

Say, I am your project manager and not an expert in programming. Try to explain to me what is a legacy code and why you need to take care of the quality of the code.

I am the executive director of your company. Explain to me Kanban and convince you to invest in it.

What is the main difference between the flexible development methodology and cascade model?

Being a group leader, how do you solve the problem of too much meetings?

How will you cope with the project that is carried out with a strong delay?

"People and interaction are more important than the processes and tools" and "cooperation with the customer is more important than the harmonization of the terms of the contract" is half the values \u200b\u200bproclaimed in Agile-Manifest. Let's discuss them.

Tell us what decisions you would take if there were the technical director of your company.

Is there any benefits from program managers?

Make a working schedule, using a flexible schedule (that is, without the installed working time) and the interest policies "take when you need".

How would you handle very large teaching and convince the developers not to leave the team without increasing the salary? What good can the company make them to stay?

What are the three main quality you value in colleagues except programming?

What three main things about programming need to know the humanities, in your opinion?

Imagine that the company provides you with one month and budget to improve the quality of everyday life of you and your colleagues. What would you do?

Questions on logic and algorithms:

Write a FIFO queue using only LIFO stacks. Then create a lifo stack using only FIFO queues.

Write a fragment of the code to overflow the buffer.

Write a factorial with an end recursion.

In any language, write the REPL, which immediately displays the entered values. Improve it to the RPN calculator.

How would you designed a utility for defragmentation?

Write a program that generates random labyrinths.

Write an example code that creates a memory leakage.

Generate a sequence of unique random numbers.

Write an example of a simple garbage collection system.

Write a simple broker of messages in any language.

Write a very simple web server. Make a plan of functions that need to be implemented in the future.

How do you sort the 10 GB file? How do you come to making changes to a 10 TB file?

How do you find duplicate files program through?

Questions on architecture on:

When cache is not needed and even harms?

Why does event-oriented architecture improve scalability?

What makes the code readable?

What is the difference between developing design (Emergent Design) and evolutionary architecture?

Horizontal and vertical scaling: what do they differ? When to apply one thing, and when is Other?

How to work with the interception of control in failure (failover) and user sessions?

What is CQRS (Command Query Responsibility Segregation)? How does it differ from the old principle of Command-Query Separation?

What is a three-level architecture?

How will you design a software system with scalability?

What strategies to solve the C10K problem?

How do you design a decentralized (i.e. without a central server) P2P system?

Why is CGI not scaled?

How do you protect your systems from binding to the Supplier (VENDOR LOCK-IN)?

What are the shortcomings of the design template "Publisher-subscriber" when scaling?

What happened since the 80s in the development of processors, why is it important for programming?

At what stage of the life cycle should consider performance and how?

How does the problem of refusal failure may not appear because of the DOS attack, but because of the bad design or due to the problem of architecture?

What is the relationship between performance and scalability?

When is it acceptable to use strong engagement (Tight Coupling)?

What characteristics should the system be posted to go to the cloud?

Does the unity of the design of the land of architects? Simply puts: Can a good design arise from the collective efforts of all developers?

What is the difference between design, architecture, functionality and aesthetic qualities? Let's discuss it.

Questions about service-oriented architecture and microservice:

Why in SOA long transactions are not encouraged, and instead they are invited to use SAGA?

What is the difference between SOA and microservice?

Let's talk about the numbering of versions of web services, version compatibility and critical changes that break backward compatibility.

What is the difference between transaction and compensating operation in SAGA, in SOA?

When is Microservice too micro?

What are the pros and cons of microservice architecture?

Safety Questions:

How to write a secure code? In your opinion, is it the responsibility of the developer or should this be a separate specialist in the company? And why?

Why do you say that you should not try to invent or design your own cryptography rules?

What is two-factor authentication? How do you implement it in an existing web application?

If you do not handle the logs carefully, there is always a risk that confidential information will come there, including passwords. How do you prevent such a problem?

Write a snippet of the code subject to SQL injection and correct it.

How can I find a vulnerability for SQL-injection by the method of static code analysis? I am not waiting that you will write the finished algorithm, as it is too big, but let's discuss the general approach.

What do you know about cross-site scripting? If you do not remember, let's see his description on the Internet and talk about it.

What do you know about the cross-seated query fake? If you do not remember, let's see his description on the Internet and talk about it.

How does https work?

What is the attack "man in the middle"? And why HTTPS helps protect against it?

How can you prevent theft of a user session? Most likely, you remember what theft is a session or cookies, otherwise we read the Wikipedia page together on this topic.

General issues:

Why is it important to function programming? When should I use the Language of Functional Programming?

How do companies like Microsoft, Google, Opera and Mozilla earn on their browsers?

Why does the opening of the TCP socket bears big overhead?

What is important to use encapsulation?

What is a real-time system and how does it differ from the ordinary system?

What is the connection between real-time programming languages \u200b\u200band memory allocation in a pile?

Unchanging is the practice of a single setting of values \u200b\u200bat the time of creating an object, and these values \u200b\u200bare then never changed. How does the immutability help to write a safer code?

Pros and cons of changeable and unchangeable values.

What is an object-relational gap (Object-Relational Impedance Mismatch)?

What principles do you apply to determine the size of the cache?

What is the difference between TCP and HTTP?

What are the compromises of the rendering selection on the client side and on the server side?

How to develop a reliable communication protocol based on unreliable?

The inventor of the zero pointer Tony Hoar once said "I can call it with my billion dollars mistake," because it will attract "countless mistakes, vulnerability and systemic failures, which probably caused suffering and damage to a billion dollars over the past forty years." Suppose you want to eliminate the possibility of using zero pointers in your programming language: how do you decide such a task? What consequences can it have?

Open questions:

Why do people resist change?

Explain the concept of the threads with your grandmother.

As a developer, you simultaneously want and apply innovation, and be predictable. How can these two goals exist together with each other within the same strategy?

What makes a good code good?

Explain how streaming broadcasting is carried out and how you implement it.

Suppose your company gives you one week to improve life for you and your colleagues: how do you use this week?

What did you find out for the last week?

In any design there is aesthetic element. The question is, this aesthetics is your friend or enemy?

Name the last five books that you read.

How do you implement a continuous delivery approach in a large successful company, for which the transition from a cascade model to the continuous supply approach is not trivial due to its size and business complexity?

When does it make sense to reinvent the wheel?

Let's talk about the invention of the wheels of anew, the syndrome rejection of someone else's development and practice of using the company or a team of developers of its own services and products (Eating Your Own Food).

What do you first automate in the current workflow?

What are the difficulties in writing software? What makes it difficult to support software?

Do you prefer to work on completely new projects (Greenfield) or continue the current (brownfield)? Why?

What makes the operating system when there is no command for the execution of a specific code and it looks unoccupied? I would like to start a conversation about interrupts, demons, background services, surveys, processing of events, etc.

Explain Unicode or transactions in the DBMS of the five-year-old baby.

Give arguments in favor of monolithic architecture.

What does it mean to be a "professional developer"?

Programming is art, craft or engineering? Your opinion.

Why are corporations worse introducing innovations than startups?

Your last achievement you are proud of?

Questions with code fragments:

What is the result of the execution of this function javascript?

FUNCTION HOOKUPEVENTS () (FOR (VAR i \u003d 0; I< 3; i++) { document.getElementById("button" + i) .addEventListener("click", function() { alert(i); }); } }
What about erasing the types, which will give such a Java code and why?

ArrayList. Li \u003d New ArrayList (); ArrayList. LF \u003d New ArrayList (); if (li.getclass () \u003d\u003d lf.getclass ()) // evaluates to true system.out.println ("Equal");
Can you detect memory leakage?

Public Class Stack (Private Object Elements; Private Int Size \u003d 0; Private Static Final int default_initial_capacity \u003d 16; Public Stack () (Elements \u003d New Object;) Public Void Push (Object E) (EssureCapacity (); elements \u003d e;) Public Object Pop () (if (size \u003d\u003d 0) Throw New EmptyStackException (); Return Elements [- size];) / ** * Essure Space for at Least One More Element, Roughly * Doubling the Capacity Each Time The Array Needs to grow. * / Private void objectCapacity () (if (elements.length \u003d\u003d size) elements \u003d array.copyof (Elements, 2 * Size + 1);))
Can you get rid of the Switch switch and write more object-oriented code?

Public Class Formatter (Private Service Service; Public Formatter (SERVICE;) Public String Dothejob (STRING THEINPUT) (String Response \u003d Service.ASKForPermission (); Switch (Response) (Case "Fail": Return "Error"; Case "OK": return string.format ("% s% s", theinput, theinput); Default: Return NULL;)))
Can you get rid of IF operators and write more object-oriented code?

Public class TheService (private final FileHandler fileHandler; private final FooRepository fooRepository; public TheService (FileHandler fileHandler, FooRepository fooRepository) (this.fileHandler \u003d fileHandler; this.fooRepository \u003d fooRepository;) public String Execute (final String file) (final String rewrittenUrl \u003d FileHandler.getXMLFILEFROMFILENAME (File); Final String Executionid \u003d FileHandler.geteExtionIdFromFileName (File); if ((executionid \u003d\u003d "") || (rewrittenurl \u003d\u003d "")) (Return "";) foo knownfoo \u003d foorepository.getfoobyxmlfilename rewrittenurl); if (knownfoo \u003d\u003d null) (return "";) Return knownfoo.dothat (File);))
How to make a refactoring of such code?

Function () (HRESULT ERROR \u003d S_OK; IF (succeeded (operation1 ()) (IF (SUCCEEDED (OPERATION2 ()) (IF (SUCCEEDED (OPERATION3 ())) (IF ELSE (Error \u003d Operation4Failed;)) ELSE (Error \u003d Operation3Failed;)) ELSE (Error \u003d Operation2Failed;)) ELSE (Error \u003d Operation1Failed;) Return Error;)

Back-end developer (from English. Back-end (reverse side) Developer) This is a specialist who is engaged in a software-administrative part of a web application, internal system content, server technology - database, architecture, software logic. The profession is suitable for those who are interested in computer science (see the choice of a profession for interest in school subjects).

Bec-end developer is an invisible front fighter.

Modern sites, web applications and games have become very complex, so a whole team of specialists work on them. To create a full, beautiful, functional and user-friendly site, a consistent work of the front end and back-end developers is needed. This is speedy job to create a website or web application and makes it easier for its service.

Speaking figuratively, back-end development is the creation of a car engine, while the front end development is the creation of the design and functions of the machine control. The back end developer works in close connection with the front-end developer, receiving user information from it and returning the resulting result.

Basic tools back end developer - server programming languages: such as PHP, Python, Ruby, Java, Perl, Node JS (software platform). In addition to Node JS, it is useful to learn Express (library to interact the Node JS platform with a server) and a MONGO DB (database for obtaining and storing information).

As additional funds Symfony, Codeigniter, Yii, Zend Framework, Kohana, etc. are used for storing data using MySQL / SQLite.

Features of the profession

Modern developers not only write code for programs. So worked programmers 10-15 years ago. Currently, such a term is inappropriate, because in work it is often possible to do without writing code, simply connecting the finished parts into a single configuration. And programmers are now called the "developer" or "engineer".

With the development of IT-sphere, projects are becoming more complex and are a designer that can be collected using ready-made solutions (frameworks) for almost any tasks.

Thus, the pro-end functionality of the developer looks like this:

  • design of the service architecture;
  • creating a site core;
  • development of the platform and the main functional;
  • work with code architecture;
  • development of applications that support user interface and safety;
  • control over the state of servers (combat, test and worker);
  • control of versions, databases, continuous integration.

Pros and cons profession

High-paying and demanded profession.

Place of work

Site development companies, web applications, mobile applications.

Important qualities

  • analytic mind
  • logical thinking
  • initiative
  • ability to plan and follow the plans
  • teamwork skills
  • flexibility of thinking
  • responsibility, perseverance, purposefulness
  • focus on the result and quality
  • the desire to continuously study the new and its application in its work

Professional knowledge and skills

Knowledge of at least one programming language: Go, C, C ++, Perl, Python, PHP, Ruby, Java.

  • the ability to write fast, beautiful and correct code;
  • knowledge of popular Web Freignors (Django, Flask, Spring);
  • skill design databases and optimize requests;
  • knowledge of modern programming paradigms;
  • knowledge of design patterns;
  • understanding of web services, interfaces;
  • english to read technical documentation.

Where to learn from back-end developer

Trains (in person, Moscow). International educational institution specializing in computer education. Working since 1999. 42 branches in 16 countries of the world. The largest Authorized Training Center Microsoft, Cisco, Autodesk. Students receive international certificates and international diploma. The main goal is the employment of every graduate.

Higher education:

In order to become a true professional in the field of back-end development, it is necessary to have a basic profile education, which can be obtained in the following universities:

But it is important to remember that university fundamental education lays the foundation for education, but not enough for current knowledge about modern technologies. Therefore, self-education is important in this area to keep abreast of all new technologies and tools. But, in turn, the lack of profile education affects at that moment when something ceases to work and the person does not understand - for what reason. A specialist with fundamental education, of course, does not know everything, but he has a major skill - where to find and how to use the necessary knowledge.

Modern employers, as a rule, do not impose formal requirements for higher education candidates for office. For them, the most important experience, intelligence, motivation of a specialist.

Warry payment (how many back end developer earns)

Salary on 09/16/2019

Russia 40000-100000 ₽

MOSCOW 80000-300000 ₽

Stairs Career and Perspectives

From the position of the back-end developer, after developing the skills of the developer front end, the direct path to full-stack developer. For further growth, it is necessary to constantly learn from the new: study in detail the development technologies software products, configuration and configuration of service systems.

The transitions within the departments are sometimes related differently. Someone is simply familiar to see any career changes within one company through the prism of posting posts. Someone does not consider it possible to change the scope of activity, even if it is adjacent to the current one. Third, in principle, we are confident that the transition from the Department in the Department means that a person takes the position of "either a fish, nor meat, and it is unlikely to achieve something significant.



At the same time, some employers welcome this in every way and consider something like a fuse from burnout - a person will change focus of attention, will change the department or department, but will not change the work itself as a whole.


My name is Kostya, and I work in QIWI for almost 4 years. Today I will tell you how successfully switched from frontend development in Backend.

Frontend

In QIWI, since the end of 2014, I started working as a developer of iOS applications, and, in principle, a couple of years was engaged in the development of a QIWI wallet. At the same time, I can not say that it was boring - the tasks were quite different and within the same application: we were engaged in the integration of the wallet with other services, revenge the bugs, tightened the animation. In addition, there was an advanced experience on creating an application for Apple Watch. Then she expanded a little focus and worked even over the iOS application for "conscience".



And then, then I started moving slowly into the back. In terms of flexible methodology, it is even convenient - I switched, in the first sprint could do some kind of bachenda tasks, and in the second to carry out the integration of the API, which I wrote.


But in the backend, at that time there were too few developers and a too hefty backot, so in the end I still switched to the backend completely. What I am doing now is the classic tasks of the backender - I am writing a code in our microservice, Chiny Bugi, I am engaged in refactoring, I comprehend Kotlin. There is an opportunity to work on the fresh product of the company - QIWI Investor.


By the way, I can not say that for these two years it turned out somehow I walked in the front, I clearly realized that there was also there, where to develop. For example, I see what is happening in the Mobile Development team now, and I understand that I would stay there, I would continue to grow further with the guys.


So there was a Win-Win situation here - I wanted to help the team and product (the advantage in the development was very not towards the backends) and gain new knowledge. Timlids understood everything and let me go without any complaints, and also products.


In addition, the knowledge I wanted to diversify to not be attached to one platform (Android I don't like a little bit, but Apple still gives the position). Well, there was a desire in case of what to be able to take and make yourself an application for yourself (and front, and backing), if some kind of cool idea suddenly appear. So far, it was not useful, though.

Backend.


Of course, the first problem with which you come across such a transition is gaps in the match. In my case, these were some subtleties of working with databases, but it helped here both the ability to self-educate and the team - the guys responsive and always ready to help and explain something in detail. In QIWI, in principle, with learning at any stages, everything is fine, whether you are at least Junior at the very beginning of work, at least this is how to decide and change the sphere a couple of years later.


No one was annoyed that first time I obviously worked not so effectively, because in a lot it was necessary to enter (but in the long run the team is still in winning).


Of course, I had a little experience in different areas - mobile games and web, but it was all, rather, attempts to felt their own, rather than stinging practical serious experience.

The impressions of the backend after the Frontend

No work with UI. At all. Previously, I had to kill the time to correct bugs in the UI, now there is no. Cons of such a position - the end user does not see the results of a specifically of my work, as it was with the front. I tried to determine what is harder - backing or front, and realized that (personally for me) was heavier to always work with multithreading and a network stack. And here is no longer so important - you are for the front or for the back. At the front, I just encountered such tasks for the first time, without preparation, and on the backend, with any experience.


It is possible to gain experience and do something cool in any area, there would be a desire and prerequisite, there are practices here - to do something (and do well), and that it worked securely and easily supported. And for the backender is not so critical of the presence or absence of experience in the front. If the development takes into account all the little things, hesitates the corner-case and as a whole understands how his API will use, then it will make it all as it should.


It is easier for me to discover possible problems Just because I know the features of the implementation of our mobile applications. But this is not some kind of superposableness - this is a set of knowledge that any other beckened, which often works with fronts.

That in the end

Backend-Development has become another good experience for me - I learned to write code and revw, think over the architecture. It is actually interesting.


But at the same time, trying live that the front is that back, I will not say that in the case of which the backend would immediately choose at the very beginning of the career. It is still important for me to see and understand how my product perceive users. With backend, it's all pretty ghostly.


Most likely, choosing the sphere now, I would go to Gamedev or Web Front. Web still remains a good platform for the launch of new products, and at the same time ceased to be terrible and difficult to understand. All of these tutorials from spaghetti code and Callback-Hell remained far behind, fortunately.

Frontend is a development user interface and functionality that work on the client side of the website or application. This type of development can be attributed to everything that the user sees, opening the Web page. The frontend developer collaborates with designers, programmers and UX analysts to create a convenient and demanded product.

To clearly understand what Frontend-Development is, open the page of any site - you will see the interface in front of you. By right-clicking, you can see the code of this page in the browser.

This code is an example of a frontend developer, it is downloaded to the user's browser, and you can see it with my own eyes. The page code describes everything you see in front of yourself: colors, layout, fonts, location of graphic elements and so on.

Frontend development includes:

  • HTML (Hypertext Markup Language) - Language of document marking, with which the page structure is formed: headlines, paragraphs, lists, and so on;
  • CSS (Cascading Style Sheets) - language for description and stylization external view Document. Thanks to the CSS code, your browser understands how to display elements. CSS Specifies the colors and font parameters, determines how different site blocks will be located, and so on. It also allows you to output the same document in different styles, for example, for printing (conventional or braille font), output to screen or reading voice;
  • Javascript. - This is the language that was created in order to revive web pages. His task is to respond to user actions, handle clicks on the mouse, move the cursor, keystrokes. He also sends requests to the server and loads the data without rebooting the page, allows you to enter messages and much more.

What is backend-development?

Backend-Development is a set of hardware-software, with which the logic of the site is implemented. Simply speaking, this is what is hidden from the eye of the user and occurs outside his browser and computer.

For example, when you enter a request on the search page page and click the key ENTERFrontend ends and begins backend. Your request is sent to the server. Google or Yandexwhere the search algorithms are located. It is there that all "magic" happens. As soon as the information you were looking for, a return to the frontend zone appeared on the monitor.

By and large, the server is the same computer, only more powerful. It stores data and responds to user requests.

Backend is the process of combining the server with the user.

The backend developer can apply any tools available on its server. He has the right to choose any of the universal programming languages, for example, Ruby, PHP, Python, Java.

Also for backend development used different systems Database management:

  1. MySQL;
  2. PostgreSQL;
  3. SQLite;
  4. MongoDB.

Depending on the type of product, a backend developer duties can change greatly. Such a specialist can create and integrate databases, ensure security, create technologies. reserve copy and recovery.

How do Frontend and Backend interact?

Frontend and Backend interacts in a circle: Frontend sends user information in BackenD, it is processed and returns back, taking a clear form.

As a rule, different specialists are engaged in these types of work, but it is desirable to understand the principles for which colleagues work. For example, the interface designer is important at least in general terms to know what is a backet of the project to which it is engaged. This will help him adequately appreciate what technical capabilities can be at the site or application.

There are several options for the interaction of Frontend and Backend:

  • HTTP request is directly sent to the server, the server is looking for information, embeds it into the template and returns as an HTML page;
  • Option using tools Ajax (Asynchronous JavaScript and XML). In this case, the request sends Javascript.downloaded to the browser, and the answer comes in XML or JSON format;
  • Single-page applications that download data without updating the page. This is also done with aid Ajax or Freymvorkov Angular and Ember.;
  • Ember. or library React Help use the application and on the server and in the client. Frontend and backend interact via Ajax and HTML code that is processed on the server.

As we see, modern development is a complex and multi-level process, which is divided into two parts: client and server. In the arsenal frontend- and backend programmers there are a lot of tools, the choice of which depends on the tasks and complexity of the project. Both types of development include technical and creative components.

The responsibilities of frontend- and backend developers are usually divided, but there are times when the programmer has to solve problems that arise both on the server side and in the client part. Often in the market you can meet specialists who confidently feel both in the frontend, and in backend and can combine two types of work.

You can start your way in Frontend and Backend-Development from a 12-month Skillbox. It is suitable for newcomers and programmers with small experience. For the year, students' listeners in practice will explore the main programming languages \u200b\u200band create their own portfolio, which will help to find promising and well-paid work.