В этом ролике я расскажу вам чем отличаются Junior, Middle, Senior и Team Lead. Какие обязанности они выполняют и какие роли у них в командах.
А также дам свою оценку тому, сколько времени нужно инвестировать для того, чтобы дойти до каждого из этих грейдов.
=========================
Ссылки на соц. сети:
В этом видео я объясню все основные различия между Framework
и Library. Мы сравним эти понятия и разберёмся с тем, зачем они вообще разделены на два отдельных термина.
На самом деле большое кол-во начинающих программистов в том числе и я в свое время сталкивался с непонимаем того что именно называть framework, а что library.
С первого взгляда оба эти понятия упрощают жизнь разработчику и дают возможность писать за минуты то, что будет написано за часы, а то и дни с нуля.
Я снимаю такие видео, потому что помню насколько тяжело когда только начинаешь осознать то огромное кол-во новой терминологии, которая встречается в книгах и обучающих статьях. Надеюсь это видео поможет вам структурировать информацию.
Пишите в комментариях свои вопросы, будет общаться :)
Таймкоды:
00:39 — Framework
03:06 — Library
05:23 — библиотеки для коллекций Java
05:41 — Итоги. Framework-это?
06:15 — Библиотека-это?
В этом видео я подробно расскажу вам о том, какие задачи выполняет Junior разработчик в компании и что вам нужно уметь делать для того, чтобы претендовать на должность Junior.
Чтобы далеко не ходить, возьмем меня как конкретный пример, значит 2013 год, я прихожу в большую компанию работать Java Junior после практики, меня сажают на большой проект, который связан с индустрией healthcare т.е. писать софт для страховых компаний в США.
Я знакомлюсь с командой 3 разработчика (я, наш тимлид и еще один миддл), 2 тестировщика, бизнес аналитик на американской стороне и 2 разработчика тоже на американской стороне.
Мы работали по Scrum-у, это такой подход разработки когда мы определяем кол-во заданий на отрезок времени и делаем их, например в течении 2х недель. Если хотите подробное видео по Scrum то напишите в комментариях.
*Scrum — метод управления проектами
После планирования распределяются задачи согласно рубашке задач (монотонные легкие — junior-у, сложные задания для продвинутых миддлу и тимлиду). Я получаю свои задачи и начинаю с того, у которого самый высокий приоритет.
Проект состоял из 3х больших частей на которых нужно было работать, это Front End на Javascript, Backend на Java и реляционная база (SQL соответственно).
Так как я выполнял задачи на всех 3х уровнях, я дам вам пример по каждому из них.
Итак пример простого задания: Есть личный кабинет пользователя, где он должен быть в состоянии ввести свой контактный номер телефона, это новое поле, которого еще нет в системе. Поэтому оно должно быть добавленно в каждый из уровней приложения.
База данных
Начинаем с задачи на SQL: Нужно найти нужную таблицу, куда вставить это поле, расширить таблицу в базе данных так, чтобы она могла сохранять номер телефона, повесить на нее констреинты уникальности, просмотреть есть ли в этой таблице хранимые процедуры или триггеры настроеные на эту таблицу и если уместно — поправить запросы, чтобы они тоже отдавали номер телефона.
Также сделаем оговорку что это не пет проджект, а реальный проект, в котором часто самая простая задача может стать достаточно сложной для реализации. Например в базе про которую я говорю было пример 300 таблиц. Написали, протестировали, идем дальше.
*Pet project — небольшой проект для собственных, обучающих целей
Java Backend
Здесь уже уровень доступа к базе данных и бизнес логика. Сразу же представляем себе проект в котором несколько миллионов строчек и чтобы его установить и поднять локально уходило могло уйти пару дней.
*Бизнес логика — требования бизнеса переведенные на логический язык программирования.
Нужно найти модель которая соответствует таблице в базе расширить ее номером телефона, написать или расширить методы которые работают с этой таблицей чтобы можно было и сохранять и считывать информацию. Также обязательно нужно добавить валидаторы, которые проверяют номер телефона по определенном шаблона (я говорю сейчас о регулярном выражении. И конечно же потом проверить эту цепочку в обе стороны.
Front End
Тоже представляем огромный фронт проект на несколько сотен тысяч строк. Нужно добавить эту форму в личный кабинет, добавить валидацию по регулярному выражению, связать это все с запросами на бекенд в обе стороны и протестировать.
Конечно в процесс вовлечено гораздо больше действий чем просто написать код, это и прояснить у бизнес аналитика какие-то непонятные моменты, пройти код ревью процедуру у своей команды, помочь тестировщикам разобраться в логике, оценить задание во времени.
Примерами других заданий может быть например:
SQL
Написать sql запрос который покажет статистику покупок людей с помощью карты visa, а не мастеркард за сезон, или собрать полную информацию по юзерам у которые покупали страховку в прошлом году в текущее время года.
Java
Написать валидацию полей юзера используя регулярные выражения или например создать отдельный обработчик запроса, который отсылает всем пользователям в списке письмо с благодарностью.
Front End
Добавить фильтр по нескольким критериям на страницу покупки страховки, например фильтрация по компании, по стоимости, по длительности.
Также не забывайте что везде вам нужно придерживаться технологий и практик, которые уже используются на проекте, т.е. вам нужно хорошо знать стек технологий, чтобы быть в состоянии качественно сделать задание.
Тайм-коды:
00:00 Начало
0:31- мой опыт работы как Junior-а
1:01- по какой системе мы работали
1:25- распределение задач в команде
1:52- деления проекта на части
2:36- задача Junior-a
3:14- что я мог делать для выполнения этой задачи?
4:56- доработка логики на Java Backend
7:15- разработка логики на Front end
8:42- задачи для Junior-a в SQL
9:17- задачи для Junior-a на Java
10:15- задачи для Junior-a во Front End приложении
12:36- чего ожидают от Junior-a в общем
А точно ли вообще асинхронность в питоне нам нужна? Есть мнение, что старые добрые синхронные веб-фреймворки на Python таки работают быстрее и надёжнее. Давайте проверять!
0:00 Популярные тесты производительности Python веб-фреймворков
3:49 Разворачиваем проект под тесты
6:39 Запуск тестов Aiohttp
9:05 Запуск тестов Meinheld с Falcon
10:40 Aiohttp сливает, асинхронность отстой:(
11:22 Или нет?
12:02 Изменим тесты и проведём их снова
14:38 Ёлочки-палочки, что происходит? Почему?
17:15 Мультипроцессинг, мультипоточность, асинхронность — когда что использовать?
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
— Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
— Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Друзья, только при монтаже заметил, что на видео пропущены два момента:
1. Что это за строки на 26:45
Если потребуется добавить хотя бы какую-то аутентификацию, то можно использовать basic authorization. Как это сделать, можно почитать здесь: www.tecmint.com/password-protect-web-directories-in-nginx/
2. Ничего не сказано про Notification Service
В моем случае — это отдельный микросервис, который я не стал рассматривать на видео, чтобы не делать его слишком длинным. К нему поступают запросы через REST API и отправляется нотификации через email, sms и еще через один мессенджер))) На видео в репозитории в качестве Notification Server лежит по сути вывод в консоль. Если интересно как все это работает, напишите, пожалуйста в комментариях)))