Какой язык программирования выбрать для работы с данными?

Необходимость знания иностранных языков

  • Возможность удалённой работы в международных командах и зарубежных проектах. Кроме престижа и интересных задач, это ещё и заработная плата в долларах или евро (при нашем курсе неплохая история).
  • Возможность работы в международных заказных проектах.
  • Доступность всех материалов по разработке, записей лекций, конференций, курсов и т.д. Фактически у вас исчезают ограничения в самообразовании, все ключевые материалы мира программирования становятся доступны.
  • Возможность эмиграции при наличии такого желания.
  • Возможность стажировок в крупнейших ИТ-компаниях.
  • Дополнительный фактор карьерного роста.

Базовые требования к профессионалу

  • Знание хотя бы одного «серверного» языка программирования: PHP, Go, ASP.NET, C/C++, Python, Ruby, Java. В некоторых случаях достаточно знания JavaScript для бэкенда (Node.js), но это скорее как плюс, чем как пункт.
  • Знание API (REST, SOAP — всё реже).
  • Понимание принципов работы серверов Apache, NGINX, IIS и проч.
  • Навыки написания юнит-тестов и покрытия кода тестами.
  • Основы сетевой безопасности и знание инструментов её обеспечения.
  • Знание популярных веб-фрейморков, которые способны решать задачи разработки конкретного приложения.
  • Навыки написания запросов к БД и проектирования баз данных.
  • Знание основ фронтенда — и это не плюс, а обязательный пункт, иначе вам придётся крайне непросто проектировать и писать приложение.
  • Администрирование UNIX или знание Linux (можно любого одного дистрибутива).
  • Знание принципов работы HTTP (кэширование, авторизация, структура сообщений, заголовки, коды ответов и проч.)
  • Модель OSI. 
  • Навыки составления и оценки технического задания (ТЗ) — очень важный навык, который необходим для сбора самой точной информации о требованиях к ПО. 
Стажёр (Intern) Младший (Junior) Средний (Middle) Старший (Senior) Ведущий (Lead)
  1. C++
  2. C#
  3. Golang
  4. SQL
  5. .NET
  1. PHP
  2. Python
  3. Java
  4. Java spring framework
  5. PostgreSQL
  1. PHP
  2. Python
  3. Java
  4. PostgreSQL
  5. Java spring framework
  1. PHP
  2. Java
  3. Python
  4. PostgreSQL
  5. Java spring framework
  1. PHP
  2. Java
  3. MySQL
  4. PostgreSQL
  5. Высоконагруженные системы
—  + ООП, фреймворки + ООП, фреймворки, Docker + высоконагруженные системы, ООП, фреймворки, Docker + Linux, ООП, фреймворки, Docker

Топ-5 востребованных технологий у специалистов по данным «Хабр Карьера», 2 полугодие 2019 года, нижняя строка — «дополнительные» скиллы.Принцип формирования списка: пользователи, внося данные о заработной плате, указывают скиллы, которые у них в приоритете (что они умеют делать!). То есть это не требования работодателя, а навыки специалистов каждой категории.роадмап, но уже для бэкенд разработчика

Корпоративные системы для коммерческой службы и развития бизнеса

DSS

Система поддержки принятия решений (СППР, Decision Support Systems, DSS)Почти что физический прототип СППР. Первый прототип — подкидывание монетки на основе теории вероятности :-)

  • Хранилище данных — сбор и хранение данных из внешних и внутренних источников.
  • Графический интерфейс пользователя, с помощью которого он сообщает системе, какие данные из системы ему нужны и как их обработать.
  • Модели — наборы алгоритмов и процедур для обработки информации.

CRM

Customer Relationship Management (CRM-системы)RegionSoft CRMRegionSoft CRM Enterprise PlusГлавное окно RegionSoft CRM. Лого можно менять на лого вашей компании. Кликабельно.

Первичные ключи

Первичный ключ (Primary Key) — это особый тип индекса, который является идентификатором записей в таблице. Он обязательно уникальный и указывается при создании таблиц:

CREATE TABLE `users` (

 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

 `email` varchar(128) NOT NULL,

 `name` varchar(128) NOT NULL,

 PRIMARY KEY (`id`),

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf-8

При использовании таблиц InnoDB всегда определяйте первичные ключи. Если первичного ключа нет, MySQL все равно создаст виртуальный скрытый ключ.

Кластерные индексы

Обычные индексы являются некластерными. Это означает, что сам индекс хранит только ссылки на записи таблицы. Когда происходит работа с индексом, определяется только список записей (точнее список их первичных ключей), подходящих под запрос. После этого происходит еще один запрос — для получения данных каждой записи из этого списка.

Кластерные индексы сохраняют данные записей целиком, а не ссылки на них. При работе с таким индексом не требуется дополнительной операции чтения данных.

Первичные ключи таблиц InnoDB являются кластерными. Поэтому выборки по ним происходят очень эффективно.

Временные типы данных в MySQL

Тип данных Размер Определение
DATE 3 байта Дата. Формат — YYYY-MM-DD. Допустимое значение от 1000-01-01 до 9999-12-31
DATETIME 8 байт Дата и время. Формат — YYYY-MM-DD HH:MM:SS. Допустимое значение от 1000-01-01 00:00:00 до 9999-12-31 23:59:59
TIMESTAMP 4 байт Дата и время. Реагирует на изменения таблицы, устанавливает дату и время последнего изменения таблицы. Формат — YYYYMMDD HHMMSS. Допустимое значение от 1970-01-01 00:00:01 до 2038-01-09 03:14:07
TIME 3 байт Время. Формат — HH:MM:SS. Допустимое значение от 00:00:00 до 23:59:59
YEAR(Size) 1 байт Год. Формат — YYYY или YY. Допустимое значение от 1901 до 2155 или от 70 до 69 (1970 — 2069)

Объекты репликации

Максимальные размеры и количества для различных объектов, определяемых в компонентах репликации SQL Server .

SQL Server Объект Replication Максимальные размеры и количества для SQL Server (64-разрядная версия)
Статей (публикация слиянием) 2048
Статей (моментальный снимок или публикация транзакций) 32 767
Столбцов в таблице* (публикация слиянием) 246
Столбцов в таблице** (моментальный снимок или публикация транзакций SQL Server) 1000
Столбцов в таблице** (моментальный снимок или публикация транзакций Oracle) 995
Байтов на столбец, используемый в фильтре строк (публикация слиянием) 1024
Байтов на столбец, используемый в фильтре строк (моментальный снимок или публикация транзакций) 8000

* Если для обнаружения конфликтов применяется трассировка на уровне строк (по умолчанию), базовая таблица может содержать не более 1024 столбцов, однако столбцы из статьи должны быть отфильтрованы, чтобы было опубликовано не более 246 столбцов. Если применяется трассировка на уровне столбцов, базовая таблица может содержать не более 246 столбцов.

** Базовая таблица может включать максимальное количество столбцов, разрешенное в базе данных публикации (1024 для SQL Server), но столбцы должны быть отфильтрованы из статьи, если они превышают максимальное количество, заданное для данного типа публикации.

Вилки проекта

Существует множество форков MySQL , включая следующие.

Текущий

MariaDB
MariaDB — это разработанная сообществом ветвь системы управления реляционными базами данных MySQL, предназначенная для бесплатного использования под лицензией GNU GPL. Разветвление было инициировано первоначальными разработчиками MySQL, которые разделили его из-за опасений по поводу его приобретения Oracle.
Сервер Percona для MySQL
Percona Server для MySQL , созданный Percona , нацелен на сохранение тесной совместимости с официальными выпусками MySQL. В Percona Server для MySQL также включен XtraDB , ответвление Percona для механизма хранения InnoDB .

Заброшенный

Морось
Drizzle была бесплатной системой управления реляционными базами данных (СУБД) с открытым исходным кодом, которая была разветвлена ​​из ныне несуществующей ветки разработки 6.0 СУБД MySQL. Как и MySQL, Drizzle имеет архитектуру клиент / сервер и использует SQL в качестве основного командного языка . Drizzle распространялся под версией 2 и 3 Стандартной общественной лицензии GNU (GPL) с частями, включая драйверы протокола и репликацию сообщений по лицензии BSD .
WebScaleSQL
WebScaleSQL — это программная ветвь MySQL 5.6, о которой 27 марта 2014 года объявили Facebook, Google, LinkedIn и Twitter как совместные усилия по обеспечению централизованной структуры разработки для расширения MySQL с помощью новых функций, характерных для его крупномасштабных развертываний, таких как создание больших реплицированных баз данных, работающих на фермах серверов. Таким образом, WebScaleSQL открыла путь к дедупликации усилий, которые каждая компания вкладывала в поддержку своей собственной ветви MySQL, и к объединению большего числа разработчиков. Объединив усилия этих компаний и включив в MySQL различные изменения и новые функции, WebScaleSQL нацелен на поддержку развертывания MySQL в крупномасштабных средах. Исходный код проекта лицензирован в соответствии с версией 2 Стандартной общественной лицензии GNU и размещен на GitHub .
OurDelta
Дистрибутив OurDelta, созданный австралийской компанией Open Query (позже приобретенной Catalyst IT Australia), имел две версии: 5.0, которая была основана на MySQL, и 5.1, которая была основана на MariaDB. В него вошли патчи, разработанные Open Query и другими известными членами сообщества MySQL, включая Джереми Коула и Google. Как только патчи были включены в основную ветку MariaDB, цели OurDelta были достигнуты, и OurDelta передала свой набор инструментов для сборки и упаковки Monty Program (теперь MariaDB Corp).

Date/Time типы данных

Ниже приведены типы данных дата / время в MySQL:

Синтаксис Максимальный размер Пояснение
DATE Значения варьируются от ‘1000-01-01’ до ‘9999-12-31’. Отображается как ‘YYYY-MM-DD’.
DATETIME Значения варьируются от ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’. Отображается как ‘YYYY-MM-DD HH:MM:SS’.
TIMESTAMP(m) Значения варьируются от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07’ UTC. Отображается как ‘YYYY-MM-DD HH:MM:SS’.
TIME Значения варьируются от ‘-838: 59: 59’ до ‘838: 59: 59’. Отображается как ‘HH:MM:SS.
YEAR Значение года как 2 цифры или 4 цифры. Значение по умолчанию — 4 цифры.

Какие навыки понадобятся, чтобы получить работу

От начинающего специалиста ждут понимания основ технологий, которые использует компания. Но прежде чем изучать что-то конкретное, стоит разобраться — куда вам хочется попасть и с чем там работают. Эта информация есть на сайтах с вакансиями. Требования к джунам в целом похожи, различаются только специализации. Мы составили список самых популярных требований к разработчикам — с этими навыками вы точно найдёте работу.

В списке могут встретиться незнакомые слова, но это не проблема: все они относятся к веб-разработке, и их точно можно получить на наших курсах или бесплатных интенсивах.

Backend-разработчик:

  • Знать язык программирования, который используют в компании (чаще всего PHP, Python, Ruby, Java, Perl, C#, JavaScript).
  • Базово разбираться во фреймворках под нужный язык (Django для Python, Symfony, Laravel, Yii2 для PHP, Node.js для JavaScript).
  • Понимать, как устроены базы данных и что из них можно достать с помощью SQL.
  • Работать в Linux и Docker/Kubernetes (если в компании используются контейнеры).
  • Уметь работать с Git.
  • Английский требуют не везде, но в вакансиях встречается часто.

Frontend-разработчик:

  • Писать и читать HTML, CSS, JavaScript/TypeScript.
  • Создавать интерфейсы в Angular, Vue, React (зависит от того, что используют в компании).
  • Разбираться в препроцессорах CSS — Sass, Less, PostCSS.
  • Хотя бы немного писать unit-тесты.
  • Работать с сетками Bootstrap и Grid Layout.
  • Понимать, как устроен протокол HTTP.
  • Рисовать кликабельные прототипы в Figma.

Типичная вакансия junior frontend-разработчика: HTML/JavaScript/Git/Vue. Источник

Недостатки MySQL

Не обошлось без как минимум 4 увесистых ложек дегтя в бочку обсуждаемой СУБД.

  1. MySQL не всегда ведет себя стабильно. По данным популярного хостинга Digital Ocean, шведская СУБД вовсе не так надежна, как о ней говорят. Часть распространенных задач нередко завершаются ошибкой.
  2. Выше я писал, что MySQL — производительная. Да, это так. Даже при работе с большим объемом данных. Но не с большим объемом одновременно выполняемых задач. При их увеличении наблюдаются заметные простои и замедления. Разработчики отмечают, что СУБД ведет себя куда послушнее и предсказуемо в небольших масштабах и при работе с минимальным количеством операций типа «запись/чтение».
  3. Развитие MySQL замедлилось с тех пор, как ее купила Oracle. Компания не тратит время и ресурсы на развитие приобретенного продукта. При этом патчи, предлагаемые независимыми разработчиками, отвергает.
  4. Легкость системы в целом достигается за счет минимизации доступных по умолчанию функций. И даже базовые функции зависимы от сторонних разработок. Приходится «догонять» за счет установки расширений.

Лучшие книги и средства обучения

  • Базовая книга по вашему языку программирования — мне нравятся издания O’Reilly, многие переведены издательством «Питер». 
  • Аналогично базовые книги по вашему стеку. 
  • Кукбуки (cookbook) по языкам и рекомендации корпораций, статьи в блогах и т.д.
  • Бек Кент, Экстремальное программирование. Разработка через тестирование — отличная книга для любого разработчика в принципе, но особенно для бэкендера. Проникнуться философией TDD дорого стоит.
  • Джоэл Х. Спольски — можно читать его блог, можно ещё на просторах Рунета найти электронную книгу «Джоэл о программировании» — сборник постов из блога на русском.
  • Роберт Мартин «Идеальный программист», «Чистый код» — переводная книга от «Питера» хороша, но в оригинале стиль и шутки вообще бесподобны.
  • Мартин Фаулер и коллектив авторов «Шаблоны корпоративных приложений» — «взрослая» книга для джавистов, но не помешает ни для одного серверного языка как сборник инсайтов и крутых находок.
  • Бесплатные курсы и видео, которых бесконечно много на Youtube на русском и английском языках. Просто слушайте, повторяйте, систематизируйте знания. Для начала подойдут любые, очень скоро вы научитесь отличать крутые вещи от дилетантских. 
  • webref.ru — очень классный сайт для разработчиков веба, разбирайтесь, обучайтесь. 
  • codecademy.com — интерактивный сайт для обучения разработке на разных языках программирования на английском, с самого низкого, нулевого, уровня. 
  • ITc | сообщество программистов — вагон организованной информации с курсами, лекциями и чем угодно. Читайте комментарии, легко определяйте лучшее для обучения.
  • Библиотека программиста — куча книг по любой айти-тематике.

Шаг #5: Установка и настройка MariaDB

MariaDB — это популярный форк MySQL, отличающийся большей производительностью и функциональностью по сравнению с обычным MySQL.

Установим основной пакет MariaDB, который подтянет все необходимые зависимости.

Запустим MariaDB для дальнейшей работы.

Далее необходимо настроить безопасность управления базами данных, с помощью небольшого скрипта, который скачался вместе MariaDB.

В режиме диалога, Вам будут предложены следующие вопросы:

Если вам не предложили создать пароль во время загрузки сервера, то жмем enter и создаем сейчас.

Далее запрещаем анонимный доступ:

Запрещаем удаленный доступ:

Удаляем ненужные тестовые базы данных:

Применяем только что выставленные настройки:

Настройка файла конфигурации MariaDB

В файле /etc/my.cnf хранятся все главные настройки для сервера баз данных. 

Грамотно настроенная СУБД MariaDB будет производительнее работать и потреблять меньше оперативной памяти, что, например, для VPS/VDS серверов с памятью в 512мб является очень важным. Так как для своих проектов я арендую виртуальный выделенный сервер именно с 512мб памяти, то предлагаю вашему вниманию соответствующий файл конфига для MariaDB (/etc/my.cnf).

В реальности тюнинг MariaDB должен происходить согласно требованиям проектов, которые с ней работают. Отсюда следует сказать, что не существует универсального файла конфигурации, который бы работал у всех одинаково хорошо.

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

low-priority-updates # Приоритет для чтения в ущерб записи
skip-name-resolve # Не определяем домены клиентов, только IP (ускоряет соединение)
max_allowed_packet=8M # Максималный размер данных передаваемых в одном запросе
max_connections=128 # Максимальное количество параллельных соединений к серверу
thread_cache_size=16 # Указывает число кэшируемых потоков
query_cache_limit=1M # Максимальный размер кэшируемого запроса
query_cache_size=10M # Размер кэша
query_cache_min_res_unit=2M # Минимальный размер хранимого в кэше блока
key_buffer_size=100M # Размер буфера, выделяемого под индексы и доступного всем потокам
innodb_buffer_pool_size=150M # Размер памяти, выделяемый InnoDB для хранения и индексов и данных
innodb_flush_method=O_DIRECT # Позволяет избежать двойного кеширования
innodb_flush_log_at_trx_commit=2 # (2) Уменьшает вероятность потери данных в ущерб производительности

log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

mysqld

datadir=varlibmysql

socket=varlibmysqlmysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=

# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
 

low-priority-updates# Приоритет для чтения в ущерб записи

skip-name-resolve# Не определяем домены клиентов, только IP (ускоряет соединение)

max_allowed_packet=8M# Максималный размер данных передаваемых в одном запросе

max_connections=128# Максимальное количество параллельных соединений к серверу

thread_cache_size=16# Указывает число кэшируемых потоков

query_cache_limit=1M# Максимальный размер кэшируемого запроса

query_cache_size=10M# Размер кэша

query_cache_min_res_unit=2M# Минимальный размер хранимого в кэше блока

key_buffer_size=100M# Размер буфера, выделяемого под индексы и доступного всем потокам

innodb_buffer_pool_size=150M# Размер памяти, выделяемый InnoDB для хранения и индексов и данных

innodb_flush_method=O_DIRECT# Позволяет избежать двойного кеширования

innodb_flush_log_at_trx_commit=2# (2) Уменьшает вероятность потери данных в ущерб производительности

mysqld_safe

log-error=varlogmariadbmariadb.log

pid-file=varrunmariadbmariadb.pid

#
# include all files from the config directory
#

!includediretcmy.cnf.d

Теперь MariaDB готова к работе и созданию баз данных.

Почему MySQL так популярна?

Если взглянуть на статистику, то по частоте использования и упоминания в сети MySQL проигрывает только решению от компании Oracle. Из-за чего так происходит? Конечно же, из-за ее преимуществ над существующими конкурентами. 

На швейцарскую систему полагаются IT-корпорации ранга Facebook, потому что она:

  • Гибкая и несложная в использовании. На создание и поддержку БД уходит меньше времени. Требуется меньший уровень компетенции для того, чтобы полноценно работать с MySQL и реализовывать весь ее потенциал.
  • Имеет открытый исходный код, поэтому легко поддается модификации, и за это не нужно кому-то платить.
  • Поддерживается компанией Oracle и сообществом разработчиков, выступающих за развитие opensource-приложений.
  • Работает шустрее конкурентов. Внутренняя структура MySQL позволяет ей разгребать завалы из таблиц и строк за секунды. Независимо от специфичности связей между данными и их количества, сервер обрабатывает запросы любой сложности быстрее других БД.
  • Стала именем нарицательным и вместе с этим неким стандартом в индустрии. Компании ищут сотрудников, умеющих работать с MySQL, интернет пестрит инструкциями по работе как раз с MySQL-серверами.
  • Может похвастаться высоким уровнем защиты данных благодаря системе выдачи прав и продвинутой системе управления пользователями. А еще тут есть верификация на базе хостинга и шифрование.

Подробнее о безопасности MySQL

Защита данных обеспечивается двумя подсистемами: таблицей привилегий и плагинами безопасности.

Первая нужна, чтобы оградить часть данных от определенной группы пользователей. Она вынуждает клиентов, делающих запросы, авторизоваться в системе, дабы та могла убедиться в праве клиента на получение запрашиваемой информации. То есть управлять базой в полной мере может ограниченное число лиц. При желании можно запретить определенному кругу лиц возможность вносить в таблицы любые изменения или удалять из них данные, но при этом оставить за ними возможность добавлять новые единицы данных в существующую базу. 

Ближайший пример такой системы — права доступа в WordPress и DataLife Engine.

Плагины безопасности расширяют базовые механизмы защиты целостности данных. Например, создают на сервере более строгую политику создания паролей или дополнительное хранилище для конфиденциальной информации. 

Overhead

Важно помнить, что индексы предполагают дополнительные операции записи на диск. При каждом обновлении или добавлении данных в таблицу, происходит также запись и обновление данных в индексе

Создавайте только необходимые индексы, чтобы не расходовать зря ресурсы сервера. Контролируйте размеры индексов для Ваших таблиц:

mysql> show table status;
+-------------------+--------+---------+------------+--------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| Name              | Engine | Version | Row_format | Rows   | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |
+-------------------+--------+---------+------------+--------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
...
| users             | InnoDB |      10 | Compact    |    314 |            208 |       65536 |               0 |        16384 |         0 |            355 | 2014-07-11 01:12:17 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |
+-------------------+--------+---------+------------+--------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
18 rows in set (0.06 sec)

Кто это?

  • обеспечение корректной работы всех функций сайта и его вычислительной логики;
  • организация и работа с базами данных посредством СУБД;
  • разработка базовой логики и алгоритмов работы приложения;
  • API;
  • необходимые интеграции с внешними сервисами;
  • тестирование и отладка приложения и отдельных компонентов.

Фронтэнд-разработчики красят лампу в жёлтый цвет и втирают бэкенду, что лампочка работает, но только в дневное время.Бэкенд-разработчики удивляются, откуда у всех взялись проблемы с этими лампочками, вспоминает, что забыл задеплоить свет в базу данных, успокаивается и валит вину на фронтэнд.

Собеседование

Собеседование для вакансии с удаленной работой является относительно своеобразным.

Весь процесс происходит удаленно и в основном состоит из 3 этапов.

  • Тестовое задание
  • Собеседование со старшим программистом
  • Собеседование с техническим директором

Начнем с тестового задания. Если вы веб-разработчик, то оно будет что-то вроде написания веб-приложения, где можно заносить, удалять и изменять данные в таблице, сортировать столбцы и так. далее, ну или что-то в этом роде. Также возможно и потребуют написать какую-нибудь небольшую консольную программу.

В ТЗ в основном будут указывать дополнительные требования. Например что вы не должны использовать какой-либо фреймворк, а написать веб-приложение с нуля. С использованием веб-сервера, базы данных, а также потребуют выбрать нужный паттерн проектирования для программы. Время на его выполнение в среднем 24 часа.

В ТЗ кончено самое главное это выполнить поставленную ими задачу, и постараться не накосячить с кодом и архитектурой приложения.

После того как вы архивом отправите решение тестового задания и через некоторого времени получите ответ об успешном ее решении, вас пригласят на онлайн собеседование, в основном через skype.

Сначала со старшим программистом, ну а потом с техническим директором. Зацикливаться на собеседовании я не буду, так-как видео совсем не об этом. Ну и в конце вы оговариваете дату о первом вашем дне удаленной работы и заработную плату.

В итоге могу сказать, что собеседоваться онлайн, конечно очень удобно и комфортно нежели в офисе компании где эти же люди физически сидят перед вами.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: