Но зачем требовать изврат там, где ожидается стандартный подход?Я такое обычно называю «Трюк», существуют случаи когда это тот самый золотой гвоздь на котором все держится. С другой стороны применение оных должно быть сильно ограничено и особенно если их применение не дает явного преимущества.
Я рассматриваю несколько другой случай, когда страна не Украина и когда ручка/фломастер исключительно в руках собеседуемого. Причем есть еще вариант — Б, когда прямого контакта ни с кем нет, а есть задание из
Совершенно не понятно, что в таких случаях от тебя хотят (как раз зашел в этот топик чтобы понять, что на эту тему думают остальные).
С одной стороны продакшин код обычно подразумеват код+тест (у нас обязателен test coverage не менее 85%, то чего тесты это 70%+ всего кода).
Особенно забавно, когда пытаешся все сделать как обычно: начнем с TDD — какой набор тестов должен проходить на требуемом коде.... и тут все куда-то начинают прятаться по углам. Хотя это шикарный способ уточнить требования.
Второе не понятно — как публика собирается читать мои каракули и стоит ли использовать сокращения (для ускорения написания). В современных IDE применение длинных слов совершенно не проблема. Например, написать на доске фломастером 3 раза expectedValuesArrayIndex (стиль кода, в котором комментарии, обчно, не требуются) для меня несколько напряжно (IDE угадает это слово с 1-2букв). Я уже не говорю про final/private/static к каждой переменной которуя я не собираюсь менять...
Непонятно как поступать с редкими альтернативными случаями в программе. Например, у нас принято всегда проверять правильность параметров переданных в функцию. Стоит ли писать this.x = Preconditions.checkNotNull(x,"Parameter x cannot be null«); Или рассматривать случай кгода в фукнцию попадает Character из китайского алфавита (т.е. его нельзя привести к byte), пустой массив, null. Случай применения логгера тоже не понятен.
Следующее не понятно — это обертки. Например, нужно использовать 2х мерный массив в Java. Писать код инициализации долго, не писать — могут сказать, что работать код не будет так как массив не инициализирован (ясен перец — мне IDE такого сделать не позволит «по определению» — т.к. еще на этапе редактирования напишет, что массив не инициализирован и более того, половину кода инициализации напишет за меня :)).
Немного не понятно, что делать если алгоритм не простой, а ну очень хотят чтобы ты писал код (т.к. это прямо заявленная цель собеседования — посмотреть на твой код). Например — требуется написать программу прохода конём по всем клеткам звездообразного шахматного поля размером 9×13. Если ты с этим никогда не сталкивался — само обсуждение алгоритма и уточнение, что от тебя хотят, может занять большую часть времени (т.е. кода на доске точно не будет). Также тут-же не понятно, что делать с удобными обёртками и требованиям про продакшин код (в случае если ты все-же пишешь на своем компьютере код и есть ограничение во времени) — сделать удобный хелпер класс, который существенно упрощает ввод данных в тест, или собирать входную модель «как есть» (с нулевой читаемостью и нулевой поддерживаемостью, зато вложиться в срок).
Итого — что, собственно, ожиается от собеседуемого когдатребуется написание кода (а — на доске, б — на время но на своем компе)?
К сожалению от люминисцентных ламп оизбавиться в современных офисах почти не реально.
С другой стороны ничего не мешает поставить обычную лампу как дополнительную на свой стол.
В свое время поговорили с руководством компании про освещение и каждый (порядка сотни человек) при желании теперь может поставить себе на стол за счет компании лампу. Более того, было предложено 3 лампы на выбор (люминисцентная 2 варианта и галогенная). Я себе выбрал (люминисцентную) лампу с цоколем E27 — в него можно вкрутить как обычную лампу накаливания 40Вт так и светодиодную лампу. У меня сначала были светодиодные лампы, но после того как загадочным образом 2 сгорели — вкрутил обычную накаливания 40Вт и забыл про проблемы со светом.
Уверен, что можно проблему решить как самому лично так и с привлечением компании.
В случае с ноутбуком шикарно вместо
Кстати, сталкивался с подобной ситуацией, когда требовалось за 1 коммит (и вообще без коммита) получить полнстью рабочую программу. При этом, разумеется, результат (патч) можно было получить только после
— транк который скоро уйдет в релиз. Любые радикальные изменения, мягко скажем, не желательны. Иногда даже некоторые баги фиксить не желательно (т.к. софтина уже протестирована, на это ушла эдак неделя и твой коммит череват перетестированием всего приложения (я имею ввиду теорему про чётное число ошибок в программе)). Вот и получается, что локально изменения есть (например, новая фича), а бранч (тег) с релизной версией еще не создали, получается и коммитить-то некуда :).
Кстати, упоминалось, что они ждут апрува от QA — есть причины? QA по поводу этого что говорит? Нет Application-Level тестов или достаточного покрытия тестами дабы быть уверенным в чем то?
> щось незрозуміло з тими хто 8+ років досвіду вийшло...Вполне логично. Допустим “небольшая” конторка, в ней народ получал до кризиса приблизительно по 12−15кГрн белыми. Потом курс рванул куда-то. По новому курсу это почти в 2 раза меньше и как раз это порядка нынешних 2$k. Но остается вопрос — раньше кормили-то вобщем-то не плохо. Да и те самые 2$k это похоже на нынешнюю среднюю “темпиратуру по больнице”.Так как публика во многом консервативна и к “броуновскому движению” не относится — просто наблюдают за тем, что вокруг происходит так как пока “на жисть” хватает. Кроме того, бегать искать работу (вместе с “броуновским движением”) в период массовых увольнений (а именно сейчас такое наблюдается во многих не ИТ компаниях) дело не благодарное. Как только внешние рекуртеры активизируются (весна наступит или лето — удобнее будет ходить на собеседования) — или контора отреагирует или останется без грамотных разработчиков. Так что кривая обязательно выровняется.Поведение кривой можно назвать словом “лояльность к компании”.
Андрей Церкус 8.05.2009 в 01: 22Тестирование — вопрос цены. Все решаемо. В крайнем случае наймом 10.000 китайцев.> Всегда интересовал вопрос — как написать юнит-тест кода, который занимается тем, что позиционирует в js
2 СанЁк Баглай> А у тебя как с этим, есть КПД? Плохо. Точнее 5−10%.Первый уровень — КруизКонтроль с запускаемыми тестами. Просто можно «капать» на мозги, что у большинства модулей тесты есть.Способ увиливания — делается пара малозначимых тестов и дальше про тесты забывают.Второй способ увиливания — эта подсистема слишком сложная и в ней слишком много изменяемых параметров. Причина — люди не хотят думать «как это тестировать». Просто не хотят. Не верят.Третий способ увиливания — ты такой умный, куда уж нам до тебя. И это после того, как человеку в паре пишеш ЮнитТесты. Показываеш. Человек соглашается, но тесты поддерживать отказывается.Четверый способ (часто спровоцированный проджект менеджером и отфонарным эстимейшином) — нехватка времени и желание сделать все как можно быстрее. Да, написание тестов требует времени и интеллектуальных усилий. Программа без тестов пишется быстрее (на 20%), а время, затрачиваемое на её дальнейшую поддержку, просто не фиксируется. Возникает иллюзия «экономии времени». А так как ошибки, при таком подходе, обычно, находятся случайно — достоверно не известно сколько их сделано.Впрочем проблема эта лежит совершенно не в ЮнитТестах, Нормальных Требованиях и в качестве кода. Проблема зажата между минимальной з/п, бюджетом разработки и трудности соизмерения производительности и эффективности.Быть производительным и эффективным не выгодно, особенно при незначительных различиях в з/п. Просто тех, кто тянет, больше грузят.
Anton Naumovчто работник не имеет морального права вести переговоры с работодателем даже являясь одним из ключевых сотрудников — полностью поддерживаю, надо просто сразу увольняться всем тимом если Вас не устраивает отсутствие кофеварки не кухне:) причем без объясения причины (так как это тоже переговоры):), кстати я тоже считаю, как и Вы, правильным что надо прочитав резюме только на собеседовании начинают орать: «Какое вы имели право присылать нам свое резюме, если вы нигде не работали! ». Так себя ведут истинные крутезные проджект менеджеры, но люди почему-то не понимают их великих идей и обходят такие компании стороной:). #67#Lisander просто забудьте про эту компанию. Я сталкивался и с еще более вопиющим непрофессиоализмом — когда собеседование вообще было не подготовленным (было назначено только место и время). При этом публика получила резюме лично из моих рук (т.е. своего отпечатанного экземпляра у них небыло), Публика показывала меня инопланетянину который вообще про эту страну НИЧЕГО не знает (в частности про нашу систему образования и рынок труда) и пыталась меня попросить МОЕЙ ручкой, в коридоре (слава богу не на корточках), заполнить тесты (листов 20) из которых они бы узнали дебил я или нет. Это было единственное собеседование в жизни, которое я не прошел... чисто морально. К такому следует относиться с юмором:). Хотя парню который все это устроил надо отдать должное, он хоть извинился.
2 Anton Naumov смотря что считать опытом, часто берут 24 летнего парня с 3 годами Java при этом человек с 8−15 годами только разработки (не багфиксинга) на C++/Unix... (не буду перечислять, слишком длинный список) + 1 год Жава просто «не соответствует позиции». Причем «не соответствует позиции» на уровне ХР, то есть до проджект менеджера такое резюме даже не доходит (т.к. 1 < 3). Вопрос про системную проблему, то есть аутсорс, чтобы управлять огромным числом людей, вынужден содержать специальную бюрократическую прослойку которая не отличает XPath от C++ и не имеет ни малейшего представления насколько этот сотрудник полезен заказчику. Кроме того, быстрый рост компании черват введением в руководство несовсем компетентных ПМ.фрилансерский хлеб — речь идет о вещах совершенно разных категорий. Вы предполагаете фриланс в смысле удаленная работа. Я говорю про людей с гиганской квалификацией, которые работают в офисе вместе с обычными девелоперами. У конторы просто нет денег, чтобы содержать человека с такой квалификацией на полную ставку (допустим, 200−300 евро в час). Это может быть администрирвание Оракла или оборудования Циско (явные яркие кандидаты) или написание компьютерного кода на Жава:). Поэтому их держат временно. В США это, кажется, называется «консультант», в Германии это «фрилансер».
Да, тут полностью согласен с высказанным предположением, что со временем компании будут больше ориентироватся на полный цикл разрработки, со всемы вытекающими последстиями рисков и прибылей. — то есть продуктовые конторы за толковых программистов будут предлагать больше денег. Выбивание верхушки (технически грамотной) из аутсорсинговых компаний ухудшит качество предоставляемых услуг. Более того, в некоторых компаниях (допустим BMW), для которых действительно дороги их сотрудники практикуется правило «*2»:). Проблема в том, что в аутсорсинговой компании ценность сотрудника зачастую крайне абстрактна. И высказывание типа: таким, чтобы даже аутсорсинговая компания, боялась тебя потерять, потому как их прибыли — это грамотный сотрудник в рамках этого типа компаний мягко скажем наивно. Объясню почему.Допустим Вы сотрудник компании А.Компания Б договорилась с компанией А по поводу цены за девелопера ХХХХX.Реально господин девелопер Д приносит компании Б доход в сумме... ХХХХХХХХХ (то есть работает как фрилансер за з/п в половину девелопера).При этом компания А относится к содруднику Д как к девелоперу с з/п ХХХX и в случае если он хочет ХХХX++ или боже упаси выступает с предложениями по улучшению жизни или устранению дефектов управления в компании — его проще уволить. При этом следует обратить внимание, что компанию А просто не интересует квалификация содрудника Д так как сотрудник Д был нанят сотрудником компании Б (или менеджером С) и о ценности этого сотрудника может судить только компания Б или догадываться менеджер С. То есть далеко не так много людей понимают насколько Д может быть ценен, кому и в чем именно (это могут знать только Д1, Д2, Д3... если они вообще друг с другом хоть иногда разговаривают...).Хороший пример — в аутосрсинговых компаниях в резюме смотрят на технологии, а не на знание предметной области и не на опыт работы:)
Технически предел роста есть. Вопрос только про темп роста.Его можно даже точно сказать — учитывая, что программисты и ИТ-шники могут достаточно свободно находить работу за пределами страны — будет выравнивание З/П с западными. При этом, разумеется, сегмент аусторсинга отомрет как не прибыльный — смогут выжить только продуктовые компании. Отомрет он как массовое производство вебсайтов за копейки или игр для мобильных телефонов (см. предложения работодателей за 2005 год). В данном случае надо будет сказать ОГРОМНОЕ спасибо аутсорсинговым компаниям за проделанную работу по подготовке специалистов и рекламе Украины как страны с квалифицированным ИТ (слова «дешевым», обратите внимание, нет). В данном случае они ухитряются за уровень ниже чем з/п обычного девелопера за ставку нанимать практически фрилансера.При этом произойдет сегментация на фрилансров и «девелоперов» с практически двухкратной разницей в доходе (отстствует слово — зарплата).По моим личным наблюдениям это вполне логично, так как результат работы отличного фрилансера на порядок лучьше чем среднего кодера, который в течении многих лет поддерживает что-то дико древнее.Относительно кадрового голода — очень точно сказано что «население растёт, а количество ума остаётся постоянной величиной» — причем я добавлю, что некоторые страны решают проблему недостатка ума за счет других, где он почему-то не востребован должным образом.Второй момент может быть более интересным — я думаю, что доход фрилансера на украине будет даже БОЛЬШЕ чем в европе. Причем предпослка к этому: желание людей переехать скажем из Парижа в Киев и из Киева в Париж. Насколько я знаю нашего брата, обратно на родину, не заманиш никакими пряниками. То есть надо будет приглашать товарищей не из стран бывшего СССР со всеми прибамбасами (т.е. з/п БОЛЬШЕЙ чем во франции). Последний процесс я вроде-бы уже тоже наблюдаю:) и это тебе не пригласить кого-то из Львова, чтобы он САМ себе квартиру на задворках Киева снял:) Там просят за счет конторы 3 комнаты в центре города... и никто этому ничего сделать не может.
В одной упоминавшейся тут embedded компани проходил собеседование.Предложили работу. Работа ну очень интересная, должность довольно таки ответственная, НО мне в другой компании за программирование на Java простым сеньером предложили на 20% больше, причем БЕЛЫМИ. Это при том, что работа (Java) на порядок проще. При таком раскладе выгодно забыть про то, какого класса бывают печатные платы и зачем нужны режимы подавления шумов в контроллерах при работе с АЦП, кодирование сигналов на физическом уровне и программирование драйверов уровня ядра операционной системы.А вот при отличном понимании ассемблера и принципов работы сети на канальном уровне в Java не пугает НИЧЕГО. Препроцессора в Java разве что не хватает:).Пока ситуация с оплатой не изменится в embedded стоит разве что дома играться... тем более Freescale и друзья уже сползают в программирование при помощи средств IDE Eclipse:). Следующий очевидный шаг — Java машина в embedded... кстати это именно про марсоходы:).
cencio: речь шла про конкретный проект. 100% рисков проекта не имеют никакой технологической основы. Реализация не подозревает никаких сложных алгоритмов. Все ошибки можно исправить в кратчайший срок (это тебе не 6 слойная печатная плата со сроком доставки в эту страну минимум неделю).eugene_n: вопрос про то, что как бы эмбедед более сложное чем прикладное программирование и должно лучше оплачиваться является уже давно чуть ли не религиозным. Одни держатся «на вере в светлое будущее», другие уже живут в «светлом будущем» получая бОльшую з/п. По поводу нанять/уволить — если тебе нужна обезьяна которая тыкает кнопки, то это делается проще простого. Если тебе нужен реально толковый человек, то их количество существенно ограниченно по чисто эвалюционно-биологическим причинам без относительно специальности и платформы. Это особенность человеческой популяции как вида. В данном случае речь идет о перераспределении этого очень небольшого числа людей между технологическими направлениями. После того как направление покинут все толковые специалисты — оно умрет. Кроме того, есть типично американская поговорка «Если ты такой умный — то покажи свои деньги».flyman: — сочувствую. Видимо Вам таки крайне противопоказан аутсорсинг. Более того, Вас, с точки зрения аутсорсинга, нужно еще и наказать (не то, что бонусы выплатить) — тот сервис, что Вы попытались организовать для своего кастомера стоит на порядок дороже и требует существнно больше ресурсов = заключения договора на бОльшую сумму. Так как непосредственное руководство не очень понимает чего Вы там написали в вижине (и, к сожалению, не всегда в состоянии понять) оно пропустило возможность заработать «мимо рта». Разумеется, кастомер был просто счастлив и, возможно, сам лично отказался от услуг китайцев:), а так как за уже оговоренный фиксед прайс (в котором, кстати, явно не оговаривалось, что вы будете заказывать печатные платы и комплектующие) реализовать проект может не получиться... Вы еще и можете стать причиной провала проекта + срыва своей драгоценной нервной системы хроническими овертаймами (как бывает со всеми ответственными и увлеченными людьми:)). С точки зрения людей мыслящих категориями — срок, деньги и степень счастья заказчика — Вы — абсолютное зло:), причем вдаваться в причины — почему Вы — зло никто, обычно, не намерен.
+1 за вариант $a = ’hgfedcba’; С точки зрения производительности и потребления памяти равных ему нет. С точки зрения решения в рамках «процесса» равных ему тоже нет так как — собеседование это частная задача которая выполняется однократно и поэтому не требует документирования, длительного сопровождения и, соответственно, решения в общем виде. Здача не стояла в виде «напишите функцию которая...».
Бог его знает, что у него за железка. Я в свое время сталкивался с USB железками в которых фирмаре не хранилось, а хранилось на Windows машине и загружалась в девайс при инициализации USB девайса. В линуксе такое запускать удавалось с «кульбитами» (копированием части файлов из виндовс в линукс). Но когда есть VMWare — проще Линукс запускать в VMWare. Тем более обычно нужны обе оперционки одновременно (особенно если веб девелопмент и нужени IE, Opera, FF,... + Mahjong:)).
Кроме того, VMWare сервер обычно перестает писать слева внизу в статусной строке, что VMWare тулс не установлены.
Не работал в СофтСерв.
В ЕПАМ все зависит от проекта как и в прочих аутсорсинговых компаниях.
Некоторые многочисленные (по числу людей) проекты выглядят вобще как чистый аутстаффинг и в этом случае даже если проект у такого заказчика закрывается, команда незаметно оказывается уже на другом проекте этого-же заказчика (в некоторых других компаниях команду «отпускают»). Также есть механизмы внутренней ротации — не понравился один проект — моут предложить другие. Опенспейс — вопрос спорный, например если 4 команды работают над одним продуктом — это хорошо или плохо если они все находстся в одной комнате? Но тут опять-же все зависит от проекта, даже офис :).