Конечно, вечен. Забежать на сервер чего-нибудь подправить – это, естественно, Vim (ну, или для некоторых Emacs). А вот разрабатывать по восемь часов в день в Виме уже далеко не так удобно как в том же Sublime или Idea.
Словом, если бы можно было выбирать несколько вариантов, я бы тоже галку напротив Вима в том числе поставил.
Время уже такое. В списке языков VBScript'а тоже нет, а 15 лет назад некоторые на нем писали. И потом, на Vimе уже даже если обвешаться плагинами, все равно не так ловко получается как в том же Sublime или Eclipse.
По существу: ничуть не умаляя необходимость многовариантного тестирования комбинаций разных визуальных элементов на непосредственно целевой аудитории, мне в данном конкретном случае _действительно_ очевидно, почему именно семейное фото и «узнать больше» выиграли с большим отрывом. Я семь лет занимался точечной интернет-рекламой преимущественно на североамериканском рынке и съел собаку на всяческих тестах «вживую». Так вот, бывает так, что предполагаешь что-нибудь, а тесты показывают совершенно противоположное. А бывает, что предполагаешь, то и получаешь. Вот этот последний вариант я и имел в виду, используя научный термин «очевидно».
Тут все как раз очевидно — семейное фото Обамов (или Обам?) и «Узнать больше». Конечно, американцы хотят узнать больше о семье (а политика их как раз почти не интересует). Любопытство – сильнейший стимул тыканья мышой. Почти вся вирусная реклама так устроена.
На самом деле так обычно и происходит. Наш программер обычно универсален, креативен и болеет душой за проект. Есть немного буржуйских начальников, которые это понимают и которым подходит такой стиль работы подчиненных. Тогда в компании получается сразу много русских программеров и контора тогда процветает. Праавда, бывает и наоборот — мы так же известны своим разгильдяйством и запросто можем ушатать крепкий бизнес :)
Скальщиков — единицы. Причина — сложно найти рабротников, так что нет вакансий. Вот и нет программеров. Такая же фигня с некоторыми другими технологиями. Я тут общался с владельцем одного видеохостинга (хотят побить Netflix), спрашивал, почему у них не Erlang. Ответ — невозможно найти программеров, ни за какие деньги.
А прогорел — значит прогорел. Не смог вовремя найти очередной мешок денег (с инвесторами не сложилось, наверное) и все.
Ну конечно же чуть приврал, как же без этого? Но вообще это все фактически срисовано с моего позапрошлого контракта. И это сейчас вспоминать весело, а тогда было ой не до смеха.
В больших корпорациях подавляющее большинство технических интервьюеров — какие-то девелоперы, зачастую даже не имеющие отношение к отделу или проекту, куда хотят нанять человечка. Это вроде как обязательная отработка, сидеть на таких интервью (сам часто сидел, знаю). На таких интервью очень часто спрашивают заковыристые штуки, недавно прочитанные в какой-нибудь статье, и мало имеющие отношение к реальной работе или, что хуже, очень конкретно-специфические вещи (точные параметры функций, к примеру), которые никто не помнит, потому что они гуглятся за 10 секунд. В этом случае практической пользы не так чтобы много, но все-таки можно вытянуть разговор в нужное русло, чтобы очаровать остальных не шибко технических присутствующих товарищей. Главное – что? Главное — уметь решать задачи. Выкрутиться из такой противной ситуации — это тоже задача, так?
И меньшинство случаев тоже имеется. Реальные задачи, где надо в натуре понимать паттерны и шаблоны, потому как на этом у них строится вся кодовая база.
Ну и экстремальные случаи встречаются. Уникумы. К примеру, у меня был один такой — там в натуре надо было натягивать глаз на задницу через ухо — не просто написать тестовое задание, но написать его с использованием некоего фреймворка, и в задании были прописаны совершенно нежизнеспособные обязательные ответвления, чтоб использовать разные особенности этого фреймворка. Я там убил два с половиной дня, чтоб оно все заработало как надо, потому как документации практически никакой, комьюнити отсутствует, гугль ничего не знает, а код этого фреймворка ужасен в своей эпичности — фабрики классов, производящие другие фабрики и прочая прелесть. Была выдана даже ссылка на ютуб с презентацией этого фреймворка на какой-то конференции. Количество просмотров этой презентации было 78. За год. Наверно, половина просмотров — такие же несчастные соискатели, как и я. Муть полнейшая. Зато из презентации я узнал, что интервьюер — это как раз автор этого фреймворка. Мне потом агент сказал, что этот автор уже несколько месяцев пытается кого-то нанять на работу.
Раз пять начинал писать ответ, но все какой-то неполиткоректный расизм получается, хоть и заходил с разных сторон. Пробую в шестой раз.
Две американки филипинского происхождения (бизнес-аналист и проджект-менеджер) коряво рисуют wireframes и подробно расписывают всяческие user stories. Лондонское дизайн-бюро берется нарисовать/наверстать красивых HTML+CSS (на деле отдают на оутсорс индусам, а сами только правят конечный вариант, но в коде кое-где попадаются комментарии на индусском английском). Этот дизайн достается канадским китайцам (которые очень хреново говорят по-английски) которые, на самом деле, junior-Java-backend-что-то там, но упрямо делают вид, что пишут на джаваскрипте и ExtJS. Упорно с утра до вечера пишут горы кода, который все равно нихера не работает. Про тесты слышали, даже сделали чего-то там, но все равно билд запускают со --skip-tests, потому что иначе валится. Билд-система, естественно, на Maven (тяжелое Java-наследие). Спустя четыре месяца во время очередной демонстрашки к видеоконференции подключается один из CTO (канадец немецко-датских кровей), система некстати валится, все получают мощный втык (а кое кто и пендель под зад), а разработка переезжает в филиал в Hong-Kong, которые втихаря оутсорсят в Индию, по совпадению тем же индусам, которые рисовали HTML. Пока эти индусы делают вид, что работают, местные канадские индусы — спецы по Oracle валят систему и уходят в глухую несознанку, обвиняя во всем Jenkins (с какого-то перепугу). Тут неожиданно происходит десант разнокалиберного начальства, свежевыгнанных китайцев берут обратно на работу делать надстройку над java-middleware, местных индусов отправляют в Индию помогать тамошним индусам, нанимают еще филипинцев рисовать бизнес-диаграммы, пару канадцев и одного американца координировать девелоперов и через месяц проект окончательно клинит, потому что все на всех показывают пальцами и обвиняют во всех девелоперских грехах. Программить некогда — все круглосуточно сидят на митингах. Тут опять происходит явление CTO народу, китайцев опять выгоняют (потому что контрактники), индусы коллективно получают втык, говорят, что вся беда и зло от ExtJS и надо все переделать в Dojo, потому что IBM. Им дают карт-бланш и они нанимают субподрядчика для делания build pack'а, который благополучно растворяется в Лондонском тумане со всеми деньгами и сроками (догадайтесь с одного раза, какую компанию в Лондоне они наняли). Вот в этом месте наступает реальная задница, потому как новая система уже разрекламирована в национальной прессе, и даже брошюры уже отпечатаны и разосланы клиентам. Никто уже никуда не бегает, все (включая среднее начальство) спокойно сидят и рассылают резюме. Тут появляется русский девелопер. На самом деле он был тут изначально, просто его и его идеи никого не интересовали, а филиппинские тетки вообще четко, внятно и сразу сказали, чтоб он не лез, куда не надо. Сейчас же ситуация безвыходная, и все идеи хороши. А идеи такие — повыкидывать всю избыточную функциональность, оставить пару интересных опций, назвать этот минимализм первым релизом, убедиться, что оно выдержит пару сотен тысяч клиентов и, затаив дыхание, запустить в продакшн. Через неделю код в продакшне, а тим круглосуточно в офисе наживую фиксит баги под лидерством русского программера. Еще через неделю все выдохнули — все ведь зашибись работает. Еще через неделю филиппинские тетки опять начали рисовать wireframe'ы, индусские индусы — потирать руки в предвкушении заказов, канадские китайцы — пожимать плечами, потому как это все копошение не способно поколебать ихний дзен, а русский программер уволился нафиг. Ибо нефиг.
Реально сидят. Я вот сейчас искал себе работу, и недели не проходило, чтоб какой-нибудь агент меня не дергал насчет Руби в окрестностях Сан-Франциско. Я им — ну вы же резюме читали, нет там никакого Руби. Они — ну ты же веб-девелопер, вдруг знаешь. И насчет зарплат, Руби-девы у них там получают примерно так же, как ДжаваСкрипторы, что обычно процентов на тридцать больше, чем чисто ПХПшники. Вообще, я думаю, Руби-на-Рельсах у них рванул, потому что Джава — уже не модно, а .NET — не круто и для лохов Про .NET не я придумал, это мне один стартапер сообщил (Кстати, на днях прогорел уже со своими Руби :)
Это же тесты так пишут. Если надо чего оттестировать, заворачивают код в describe('test name', function () { /* вот тут тестируемый код */});
Ну и всякие assert и should используют. Короче, visionmedia.github.io/mocha/
На Ruby сидит вся Силиконовая долина, так что иметь в портфолио пару сделанных RoR проектов полезно для карьеры. Хаскель должен щупать каждый современный программер, потому как вправляет мозги и повышает качество кода (в свое время сделал первые 50 задачек из Project Euler на Хаскеле исключительно для этой цели). Но мне почему-то кажется, что для реальных проектов Хаскель нежизнеспособен. Я, конечно, знаю пару людей, которые на нем пишут всякие крутые штуки, но…
Не, программеров-середнячков тут реально много. И у них весьма четкое разделение по национальному признаку. На эту конкретную позицию возьмут, скорее всего, китайца. Они весьма, хмм… усердны. И не лезут, куда не надо.
На самом деле эта ситуация не так уж и идиотична, как может показаться. Большая корпорация не может делать ставку на одного конкретного человека (если, конечно, его не зовут Элон Маск или Стив Джобс). Работники должны быть взаимозаменяемы, а весь процесс — задукоментирован и стандартизован. Шибко умный гарантировано не впишется в такой процесс. Беда в том, что местная политкорректность не позволяет в объявлении о работе написать конкретно про тип и стиль отдела, где соискателю предстоит работать — а стили эти весьма и весьма отличаются. Два последних проекта я специально искал в «болоте» — транснациональных корпорациях, где все предсказуемо и четко. Скучно, правда, но большие деньги. И не штормит. К текущему моменту отдохнул, и уже хочу щупать новых технологий и смотреть в горящие глаза, так сказать. Статистически (вот прямо из личного опыта) — из семнадцати компаний, где у меня были интервью за последний месяц, такая молодая-активная-технологичная-анархическая — попалась всего одна. Так что выбирать не из чего :)
Бежать — в точку. Я решил с глобальными корпорациями не сотрудничать пока. ПередохнУть надо. В корпорациях — много денег, членство в фитнесс-клубе и бесплатные завтраки. И никакого личностного и професионального роста (и сплошной микрософт). Я вот сейчас решил вложить свои ближайшие пол-года в стартап. Полная анархия, любые технологии, лишь бы работало. Буду учить Erlang и Ruby, наверно.
Словом, если бы можно было выбирать несколько вариантов, я бы тоже галку напротив Вима в том числе поставил.
По существу: ничуть не умаляя необходимость многовариантного тестирования комбинаций разных визуальных элементов на непосредственно целевой аудитории, мне в данном конкретном случае _действительно_ очевидно, почему именно семейное фото и «узнать больше» выиграли с большим отрывом. Я семь лет занимался точечной интернет-рекламой преимущественно на североамериканском рынке и съел собаку на всяческих тестах «вживую». Так вот, бывает так, что предполагаешь что-нибудь, а тесты показывают совершенно противоположное. А бывает, что предполагаешь, то и получаешь. Вот этот последний вариант я и имел в виду, используя научный термин «очевидно».
На самом деле так обычно и происходит. Наш программер обычно универсален, креативен и болеет душой за проект. Есть немного буржуйских начальников, которые это понимают и которым подходит такой стиль работы подчиненных. Тогда в компании получается сразу много русских программеров и контора тогда процветает. Праавда, бывает и наоборот — мы так же известны своим разгильдяйством и запросто можем ушатать крепкий бизнес :)
А прогорел — значит прогорел. Не смог вовремя найти очередной мешок денег (с инвесторами не сложилось, наверное) и все.
И меньшинство случаев тоже имеется. Реальные задачи, где надо в натуре понимать паттерны и шаблоны, потому как на этом у них строится вся кодовая база.
Ну и экстремальные случаи встречаются. Уникумы. К примеру, у меня был один такой — там в натуре надо было натягивать глаз на задницу через ухо — не просто написать тестовое задание, но написать его с использованием некоего фреймворка, и в задании были прописаны совершенно нежизнеспособные обязательные ответвления, чтоб использовать разные особенности этого фреймворка. Я там убил два с половиной дня, чтоб оно все заработало как надо, потому как документации практически никакой, комьюнити отсутствует, гугль ничего не знает, а код этого фреймворка ужасен в своей эпичности — фабрики классов, производящие другие фабрики и прочая прелесть. Была выдана даже ссылка на ютуб с презентацией этого фреймворка на какой-то конференции. Количество просмотров этой презентации было 78. За год. Наверно, половина просмотров — такие же несчастные соискатели, как и я. Муть полнейшая. Зато из презентации я узнал, что интервьюер — это как раз автор этого фреймворка. Мне потом агент сказал, что этот автор уже несколько месяцев пытается кого-то нанять на работу.
Две американки филипинского происхождения (бизнес-аналист и проджект-менеджер) коряво рисуют wireframes и подробно расписывают всяческие user stories. Лондонское дизайн-бюро берется нарисовать/наверстать красивых HTML+CSS (на деле отдают на оутсорс индусам, а сами только правят конечный вариант, но в коде кое-где попадаются комментарии на индусском английском). Этот дизайн достается канадским китайцам (которые очень хреново говорят по-английски) которые, на самом деле, junior-Java-backend-что-то там, но упрямо делают вид, что пишут на джаваскрипте и ExtJS. Упорно с утра до вечера пишут горы кода, который все равно нихера не работает. Про тесты слышали, даже сделали чего-то там, но все равно билд запускают со --skip-tests, потому что иначе валится. Билд-система, естественно, на Maven (тяжелое Java-наследие). Спустя четыре месяца во время очередной демонстрашки к видеоконференции подключается один из CTO (канадец немецко-датских кровей), система некстати валится, все получают мощный втык (а кое кто и пендель под зад), а разработка переезжает в филиал в Hong-Kong, которые втихаря оутсорсят в Индию, по совпадению тем же индусам, которые рисовали HTML. Пока эти индусы делают вид, что работают, местные канадские индусы — спецы по Oracle валят систему и уходят в глухую несознанку, обвиняя во всем Jenkins (с какого-то перепугу). Тут неожиданно происходит десант разнокалиберного начальства, свежевыгнанных китайцев берут обратно на работу делать надстройку над java-middleware, местных индусов отправляют в Индию помогать тамошним индусам, нанимают еще филипинцев рисовать бизнес-диаграммы, пару канадцев и одного американца координировать девелоперов и через месяц проект окончательно клинит, потому что все на всех показывают пальцами и обвиняют во всех девелоперских грехах. Программить некогда — все круглосуточно сидят на митингах. Тут опять происходит явление CTO народу, китайцев опять выгоняют (потому что контрактники), индусы коллективно получают втык, говорят, что вся беда и зло от ExtJS и надо все переделать в Dojo, потому что IBM. Им дают карт-бланш и они нанимают субподрядчика для делания build pack'а, который благополучно растворяется в Лондонском тумане со всеми деньгами и сроками (догадайтесь с одного раза, какую компанию в Лондоне они наняли). Вот в этом месте наступает реальная задница, потому как новая система уже разрекламирована в национальной прессе, и даже брошюры уже отпечатаны и разосланы клиентам. Никто уже никуда не бегает, все (включая среднее начальство) спокойно сидят и рассылают резюме. Тут появляется русский девелопер. На самом деле он был тут изначально, просто его и его идеи никого не интересовали, а филиппинские тетки вообще четко, внятно и сразу сказали, чтоб он не лез, куда не надо. Сейчас же ситуация безвыходная, и все идеи хороши. А идеи такие — повыкидывать всю избыточную функциональность, оставить пару интересных опций, назвать этот минимализм первым релизом, убедиться, что оно выдержит пару сотен тысяч клиентов и, затаив дыхание, запустить в продакшн. Через неделю код в продакшне, а тим круглосуточно в офисе наживую фиксит баги под лидерством русского программера. Еще через неделю все выдохнули — все ведь зашибись работает. Еще через неделю филиппинские тетки опять начали рисовать wireframe'ы, индусские индусы — потирать руки в предвкушении заказов, канадские китайцы — пожимать плечами, потому как это все копошение не способно поколебать ихний дзен, а русский программер уволился нафиг. Ибо нефиг.
Я ответил на ваш вопрос?
describe('test name', function () { /* вот тут тестируемый код */});Ну и всякие assert и should используют. Короче, visionmedia.github.io/mocha/
и сплошной микрософт). Я вот сейчас решил вложить свои ближайшие пол-года в стартап. Полная анархия, любые технологии, лишь бы работало. Буду учить Erlang и Ruby, наверно.