Несколько вещей
о которых мне не рассказывали в университете
Кто я?
- Выпускник ФИСИТ 2013 года (экономическая кибернетика)
- Team Lead в RailsReactor
- Работал в разных компаниях (продуктовая, большой энтерпрайз ~30k человек, аутсорсинг)
Готовит ли университет к тому, что ждет на работе?
Не во всем *
*
– говорю с точки зрения своего опыта в веб-разработке
Работа в команде
- работа с кодом
- работа с людьми
- работа с требованиями
Код
- нужно писать
- запускать / отлаживать
- централизированно хранить
Писать можно
- 'oldschool' (vim / emacs)
- в редакторе (atom / ms code / sublime text / …)
- в IDE (jetbrains / ms / …)
Ваше окружение
- DE / window manager (xmonad, amethyst)
- terminal (guake, iterm2)
- shell (bash, zsh)
Плюсом будет иметь базовое представление об этом всем и чувствовать себя продуктивным
VCS
системы контроля версий
Концепции, что помогут говорить о гите
- patch
- commit
- branch
- remote
Patch, ч.1.
>cat program.txt
Тервер
Физ-ра
Региональная экономика
>echo "Английский язык" >> program.txt
Patch, ч.2.
>git diff
diff ‑‑git a/program.txt b/program.txt
index d9437f0..c636d0e 100644
‑-- a/program.txt
@@ -1,3 +1,4 @@
Тервер
Физ-ра
Региональная экономика
+Английский язык
>echo "БЖД" > program.txt
>git diff
diff ‑‑git a/program.txt b/program.txt
index c636d0e..87d1cfb 100644
‑-- a/program.txt
@@ -1,4 +1 @@
-Тервер
-Физ-ра
-Региональная экономика
-Английский язык
+БЖД
Commit
Идентификатор патча * в череде патчей. Имеет информацию об авторе / описание / ссылку на родительский патч
>git cat-file -p 6c339fc5dcb0fac47e62f51cffa353c747a1466f
tree b42c92498b5dff10fc5c64fcc3b5a1d059bd2a20
parent f58424ee4a12db9bcb0d61eb62ae9a2dcdf2c054
author sudodoki <smd.deluzion@gmail.com> 1491167094 +0300
committer sudodoki <smd.deluzion@gmail.com> 1491167094 +0300
Adding english
Branch
Параллельные ветки изменений
* 98798d0 - Merging comp-sci (HEAD -> master)
|\
| * db47fde - comp-science specific things (comp-sci)
* | 9b41b04 - analytics specific things (system-analysis)
|/
* 6c339fc - Adding english
* f58424e - Adding initial base for program
* 172d364 - Initial commit
Remote
Удаленный git сервер, куда можно отправить изменения и откуда их можно стянуть
Provides
- git hosting
- manaing branches / collaborators
- merge (pull) requests / code review tools
- documentation / code preview
- project / code discovery
Инженерные практики
- код ревью
- парное программирование
- ci / cd
- tdd
- …
Работа в команде
- ✅ работа с кодом
- работа с людьми
- работа с требованиями
Часто новички боятся задавать вопросы
Коммуникация
Просто сидеть и писать код недостаточно
Нужно
- уметь слушать
- уметь убеждать
- уметь взаимодействовать
Умение планировать / дисциплина
Почитать
- The 7 Habits of Highly Effective People (Steven Covey)
- Emotional Intelligence (Daniel Goleman)
Работа в команде
- ✅ работа с кодом
- ✅ работа с людьми
- работа с требованиями
Конечная цель –
нужный кому-то продукт
Нужный
- нашим пользователем
- нашему заказчику
Каждый из нас чуть-чуть
- бизнес аналитик
- ux дизайнер
- пользователь
Специфика получения требований
- формулировки абстрактны, ответы неточны
- у заказчика нет представления о техничной стороне вопроса
- больше одного stakeholder'а – разные мнения
Необходимо
- уметь видеть логические противоречия, изъяны
- уметь ставить уточняющие вопросы
- "лучший код – ненаписанный код"
- не все проблемы решаются кодом
- в идеале, фиксировать решения в письменном виде
Проблемы недопонимания ⇒
зря потраченная работа / деньги
Заказчик иностранный ⇒ нужен английский
Имея требования, нужно ставить задачи
- нетехнические требования ⇒ технические задачи
- нужно уметь декомпозировать
Отдельная большая часть разработки – планирование и управление рисками
Важно помнить, что процессы менее важны, чем люди
Что вообще происходит в Киеве?
Сложно и спрос < предложения
Что можно сделать?
- схватывать на лету и убедить в этом работодателя
- выбирать сферы с более высоким порогом входа
- проходить курсы
- иметь портфолио, даже если это учебные проекты
Что вас могут спрашивать
- алгоритмы
- паттерны
- да что угодно, в принципе
Задачи на интревью !== заданиям на работе
Что вам спрашивать на собеседовании?
- чему и кто меня будет учить
- когда я получу следующий "уровень"
- как компания помогает развиваться сотрудникам
локальные комьюнити / митапы
Если есть вопросы / предложения / идеи – пишите
Спасибо за внимание.