Критерии отсева резюме на Junior HTML

Раз в 2 года я в iDeus нанимал 1-2 Junior HTML верстальщиков. Раньше я сам просматривал все резюме, но в 2015 году кол-во откликов превысило все разумные пределы (более 150 за 2 дня!) и я решил делегировать это.

Думаю критерии отбора могут быть интересны другим:

Критерии «против» (сразу отказ):
1. Нечего смотреть:
• нет резюме
• нет примеров работ

2. Странное:
• пустое письмо с аттачем
• навязчивые звонки: «а можно к вам прийти в офис?»
• сопроводиловка вида «ничего не умею: но я проявлю себя/научите»
• частая (чаще 1 раза в год) смена работы, но тут бывают исключения

3. Невнимательные:
• резюме не открывается
• примеры работ не открываются (или открываются поломанными)

Плюсы (выделить отклик в «интересные»):
1. Есть желательные скилы: БЭМ/BEM, Sass/Scss, Grunt/Gulp в резюме
2. Есть Github-аккаунт
3. Участие/победа в профессиональных конкурсах типа UAWebChallenge, школьных олимпиадах по информатике и т.д.
4. Письмо с резюме удобно читать: примеры работ — ссылки на сайты (а не архивы), а резюме — в PDF.
5. Необычное, выделяющееся резюме (например сопроводительное письмо сверстано как html)
6. Айтишное образование: ХИРЭ, ХПИ, ХАИ + компьютерный факультет
7. Возраст до 25 (это джуниор, не забывайте!)
8. Резюме написанное живым языком, а не штампами, с описанием «что делал/что изучаю/чего добился», а не списком ключевых слов
9. Наличие увлечений

Примеры хорошего:
• Написано что кандидат изучает сейчас, что получается классно, а что хочется лучше изучить, чем ему хотелось бы заниматься на новой работе
• Информация о сделанных проектах, что делал и как, чем гордится в них
• Профиль на LinkedIn — будет плюсом
• Какие книги читал, какие блоги читает, на какие конференции ездит — это говорит о многом.

Total Commander compare by content line breaks bug

total commander synchronize directoriesОдин из моих любимых инструментов под Win — Total Commander. Особенная любовь у меня к нему за Инструменты→’Синхронизировать каталоги’, это очень удобная утилита для сверки SVN<>FTP, для поиска различий между версиями проекта в разных папках, ну в общем сами понимаете что может делать мощный инструмент синхронизации файлов с подкаталогами.

И есть в нём такой прикол-баг: когда сравниваете по содержимому файлы в ТС, он пишет про некоторые файлы что они разные, а кликаешь на сравнение их по содержимому — видишь что отличий нет. Они одинаковые по содержимому, но в них разный формат переносов строк, поэтому чуть разный размер и тотал считает их разными. А вам-то нужны только те которые по-настоящему разные!

Есть решение!

A configuration option to ignore linebreaks when synchronizing directories having text files:

  1. First check the «by content» option, then click on >>, and then choose the file types (e.g. *.txt *.htm *.html or just *).
  2. Then choose the only available compare plugin, tc -> compare as text.

Then TC checks the number of line breaks — if the 1st file size minus the number of line breaks equals the 2nd file size, TC assumes that the files are identical (differing only in the line breaks).

avast! 8 and SSL Thunderbird bug

Столкнулся с проблемой — avast! 8 не даёт получать почту по SSL. У меня Thunderbird с portable-профилем и мыло на сервере с самоподписанным сертификатом.
Пробовал пофиксить согласно рекомендаций на оффсайте: avast! 8.x: Some mail clients can show warnings that the mail server certificate is invalid when you send and receive e-mails. Непомогло.
Снимать галочку ‘Scan SSL connection’ в настройках антивируса не хотелось.

Вот что помогло:

  1. Переустановка avast! с админскими правами
  2. Удаление сертификата avast! из Options→’Advanced’→’Certificates’→’View Certificates’ с табов Authorities и Servers в Thunderbird

BEM: Откровения принявших веру

bem-ten-commandmentsВпервые о независимых блоках я услышал от Харисова на UAWeb’2008. Мы все сталкивались с проблемой каскада, и наверно многие приходили в итоге к стилям а-ля
.result .albums .album .buy
чтобы создать контекст и работать внутри него.

Харисов говорил всё верно и правильно, но переломать себя, понять и принять что нужно уходить от каскада (данного нам свыше авторами HTML) — огромный труд над собой.

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

Вот типичный пример неправильного кода

Типичного кода, который верстальщики считали хорошим, и к которому многие приходили независимо друг от друга (жизнь вынуждала):
independent-blocks-by-cascade

Это не BEM!
Это не независимые блоки.
Я читал все статьи, все доклады по BEM, ездил на субботники, но был слеп.

Юра Ткаченко сказал мне — «старина, я вижу тут структуру, но это не АНБ, и ничего общего с ним не имеет».

Я смотрю на это сейчас и думаю — ну блин, и правда как можно не видеть очевидного!

Если просто их скопировать — они будут без конфликтов и с дефолтным оформлением элементов. Им нужно создать (скопировать) контекст. Им нужно создать вокруг них, выше, те же самые блоки с такими же классами. Если тебе нужно перенести блок на другую страницу — тебе нужно создать такие же родительские блоки. Или нафигачить кучу бессистемных multiple classes.
Тех самых, вы их прекрасно знаете:

  • тех, без которых не работает каскад ниже,
  • тех, когда никто не знает какой и зачем нужен,
  • когда не трогают старые multiple-классы потому что боятся. И пишут новые и новые, ведь нужно перебивать специфичность!
  • когда <body class="inner single-column registration thx> — это только начало, а с выходом в продакшен энтропия увеличится.

Я был из тех кто «BEM — это классная идея, но это чересчур, так категорично не надо, надо чуть по-другому, под себя…»

И уходил от базовых правил, от тех что составляют BEM.

Нет, нельзя быть немножко беременным! BEM — это большая методология с большим выбором вариантов. Там есть и light и hard, но нельзя нарушать базовые принципы, главные из которых:

  • отсутствие стилей вне блоков
  • и нигде не описанный из-за очевидности, а надо бы! — Каскад должен использоваться только для элементов, не для блоков! Максимум каскад блоку для модификации от контекста, но это лишь когда «чуть-чуть»… и (опять это нигде не говорится) — главное — когда этот блок не будет никуда копироваться второй раз. Когда не надо будет взять «вот тот блок что модифицирован от контекста и положить ещё куда-то» и да, ещё чуть-чуть поправить. И здравствуй ад.

Мне потребовался долгий путь чтоб понять что каскад зло

Когда Виталя писал про АНБ, меня аж передёргивало (как и многих поборников семантики тогда). Я написал что

но сам не понимал насколько в точку попал.
Каскад был придуман для текста, там он хорош, а для больших сайтов — это ад, каскад больших сайтов похож на то как если бы в программировании всё писалось внутри одной функции с кучей goto.

А семантика — она может быть не только в используемых элементах, но и в именах классов. И BEM-иерархия классов — это новый уровень семантики.

Моим коллегам потребовалось 2 месяца чтоб принять BEM в сердце

И ещё чуть-чуть времени для того чтоб понять суть (тут уже я сыграл роль евангелиста).

Я выдал задачу Nov 21. 2012 — верстаем новый сайт, делаем строго в АНБ-нотации, вот доки от Яндекса — читайте.
Вначале были от них слова о том что «BEM — это огромный шаг назад», что «куда меня потом возьмут, ни на одну нормальную работу не возьмут после такого», мол только и буду уметь что каждому элементу классы задавать.

Прошло 2 месяца. И с промежутком в 5 дней я получил в скайп два сообщения от ребят, которым вместе дал верстать первый проект по канонам BEM.

«Я понял, чем так хороши независимые блоки.
И надо срочно переходить всем на этот метод вёрстки, потому что у меня тут просто ад.»
— Валера, Thursday, January 17, 2013 3:23PM

«Я понимаю прелесть АНБ
с каждой правкой по %projectName% я понимаю это все больше и больше =)»
— Паша, Tuesday, January 22, 2013 2:46PM

Важно понимать что BEM — это не bem-tools.

Это основа будущей статьи на Хабр о «BEM для атеистов», где я приведу конкретные примеры, расскажу о вопросах с которыми сталкивались при внедрении, о найденный ответах, о там как поняли как же писать код, и главное — как использовать BEM в рамках аутсорс-веб-студии, у которой не один большой проект, а куча разных, совсем не связанных, на разных движках и вёрстка нужна не на сегодня и даже не на вчера, а внезапно.