Comments 443
себя хорошим, крутым спецомЯ специально сказал «хороших», а не «крутых». Это ведь разные вещи.
Берем Даля и ищем… Крутой — сильный.
2) «закопайте стюардессу», живой великорусский за 150 лет несколько изменился
В мире разработки, насколько я могу судить, и среднего-то спеца найти не очень просто — рынок забит откровенно слабыми кандидатами (люди, способные для получения максимального элемента массива полностью отсортировать его).
for (int i = 0; i < 10000000000; ++i)
v.push_back(i);
не ожидающий подвоха честный кандидат ответит «линейная» и его мгновенно отсекут как «юниора».
Отсекают еще совершенно «чистых незамутненных» кандидатов такими грязными приемчикамиВы представляете интервьюера, как какого-то мудака, который только спит и видит, как вас завалить? Вы сами хоть раз с той стороны сидели?
В основном все, что я видел в отношении себя — это «наперсточничество». Сбивка цены на подлове. Честнее просто дать задачи, как в Яндексе, и все. Не с подвохом, а просто задачи. Ведь человек должен уметь решать задачи, так? Но устное интервью, где нужно найти «лучшего среди тех, кто знает все примерно одинаково» — превращается в вакханалию с ударами ниже пояса. У нас типо одно простое интервью, и все. И оффер. Никаких задач. А на деле это вакханалия.
Как вам удается в формате интервью искать хороших специалистов? Это вообще возможно? Все будут отвечать на ваши общеизвестные вопросы, ловить вафлю на вопросах с подвохом, и просто не отвечать на «сложные» вопросы о незнакомых тонкостях в технологиях.
К реальной работе имеет отношение чуть больше чем никак. Т.е. кандидат должен знать что вариант А будет работать быстрее варианта Б (и желательно почему), но вот знать что тут именно «линейная» сложность, а не «квадратическая» ему знать совсем не обязательно. Дело в том, что в реальных проектах не пишут своих сортировок массивов, а используют готовые решения и библиотеки, а значит скорее всего они используют один из самых быстрых алгоритмов (если конечно у вас не специфические данные). А позвольте спросить зачем вы добавляете миллионы записей в вектор?! В реальной жизни такого не будет и если я увижу такой код, то я попытаюсь оптимизировать его ещё до прихода в этот цикл.
for (foo => first.count) {
for (bar => second.count) {
insert_unique(foo_objs, db.query('select * from foo where id=$foo'))
insert_unique(bar_objs, db.query('select * from bar where id=$bar'))
}
}
Пример, конечно, утрированный, но основы понимания сложности алгоритма нужны не только для сортировки массивов
Умение избежать лишних циклов и выносить весь ненужный код за циклы — вот основа алгоритмов для программиста.
К сожалению понимание зачем это нужно есть далеко не у всех. Хотя бы интуитивное представление о сложности алгоритмов нужно.
Для SQL есть ORDER BY
ORDER BY RAND()
?SELECT *
FROM table1
ORDER BY RAND()
В чём именно состоит ваш вопрос?Для написания всё равно — и так очевидно, что если сортировка у SQL-сервера будет «честная», а не оптимизированная под случайное перемешивание, то время будет больше оптимального.
А для оценки времени выполнения (если сортировка «честная») — очевидно, что не всё равно, если время выполнения этого запроса критично.
Вы про вот такой (валидный) SQL-запрос?Я про такой валидный запрос:
SELECT *
FROM table1
ORDER BY RAND()
LIMIT 1
Вопрос сами найдёте?
Вопрос не найду, у меня самого вопрос — зачем такое вообще через ORDER BY делать, и какое это имеет отношение к порядку сложности сортировки?
Это решение какой-то олимпиадной задачи вида «как в одну строку на SQL получить случайную строку из базы»?Нет, это довольно популярное у новичков решение для получения случайной строки.
отношение к порядку сложности сортировки?Вы даже слегка не представляете, какое это имеет отношение к сортировке и её сложности?
Знать, кубично, квадратично или линейно она долгая — не обязательно. Нужно знать только, что сортировка применяется после выборки, а LIMIT — после сортировки, поэтому сначала прочитается вся таблица (долго и много данных), а потом к ней применится долгая операция.
Вопрос не найду, у меня самого вопрос — зачем такое вообще через ORDER BY делать, и какое это имеет отношение к порядку сложности сортировки?А как правильно? Не холивара ради, а образования для. Просто я SQL не знаю, и однажды, когда мне нужно было выбрать случайную строчку из базы, написал именно такое решение. Не потому, что не знаю, что долго, а потому, что база все равно небольшая, а по-другому я не умею.
На самом деле, это хоть и быстрое решение, но весьма неточное. Простейший контр-пример: [1, 2, 3, 4, 5, 100000]
. При неравномерном распределении ID, такой подход, конечно, не годится. А неравномерное распределение ID совершенно рядовая ситуация. Неужели в недрах SQL нет чего-то более подходящего?
Вот для SQL Server:
DECLARE NUM AS INTEGER
SELECT NUM = count(*)*RAND() from tbl
select * from (select ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) as ROWNUM, t.* from tbl t) t2 WHERE ROWNUM=@NUM
SELECT TOP 1 * FROM tbl
ORDER BY NEWID()
Для 300 000 строк первый запрос у меня отработал в 2 раза быстрее второго…
Примерно так (за синтаксис не ручаюсь):
SELECT * FROM tbl LIMIT @num, 1
Чрезмерное зацикливание на сложности алгоритмов ведёт к частой проблеме хороших программистов, а именно к преждевременной оптимизацииМы ведь всё еще о собеседованиях говорим? Лучше взять того, кто вообще сложности алгоритмов не знает, лишь бы преждевременной оптимизацией не дай бог не занимался? А как узнать, понимает ли человек, если у него не спросить?
А где грань, 10, 11, 100, 1000, 1000000?
Если производительность приемлема, то более читабельное решение приоритетнее. Я выше написал, что меня беспокоит стабильность сортировки. Если он один раз для каждой строки посчитает свой рандом и будет его использовать — тогда это нормальный способ получить случайную строку.
Сможете дать оценку, не запуская реально запрос, когда время исполнения превысит 50 мс, если при 10 даёт 1 мс?
Тут квадрат, только у нас нет константы, от которой плясать. Так что оценку дать нельзя, потому что у нас есть одно уравнение с двумя неизвестными — y2 и C.
Оценку константы можно получить по данным «при 10 даёт 1 мс»
Каким образом? Мы знаем, что сложность квадртичная. Окей, значит она описывается формулой y = c*x^2 + b
. Дальше у нас есть только одно уравнение 1 = c*10^2 + b
. Как мы отсюда можем c и b получить?
Каким образом?Из личного опыта. Например, более или менее любой, занимавшийся олимпиадным программированием, знает, что в 2 секунды можно сделать около 100 млн операций (тех самых, что в формуле асимптотической оценки), с редкими исключениями алгоритмов или структур данных с большой константой, вроде фибоначчиевой пирамиды или алгоритма Штрассена. Думаю, в работе с базами данных так же.
С двумя свободными параметрами одной точке на плоскости (10,1) соответствует бесконечное множество парабол с разными c и b.
Плюс
Думаю, в работе с базами данных так же.
А я вот так не думаю. И без формальной разрешающей процедуры у нас нет шанса установить, кто прав. Т.к. в аналитической задаче всегда есть один ответ, а тут зависит от того, чей олимпиадный опыт больше видимо.
Оценку константы,а не «точное значение константы». Личный опыт, в том числе в смежной сфере — вполне приемлемый вариант для того, чтобы получить грубую оценку производительности.
А вот вид используемого индекса и написанный код как раз заключены в асимптотическую оценку.
Мы знаем, что сложность квадртичная. Окей, значит она описывается формулой y = c*x^2 + b.
Хуже того, на самом деле
y = cx^2 + bx + a
, и c может быть 1e-10, а b — 1e10. Асимптотика всё равно будет квадратичная, но достигнется она не сразу.О, обожаю эти вопросы про «какова сложность алгоритма»…
К реальной работе имеет отношение чуть больше чем никак
В который раз могу привести реальный пример из продуктового кода:
List<SomeType> list = GetSomeList();
foreach (var item in list)
{
int i = list.IndexOf(item);
// do something with item and i
}
Таки вы по-прежнему считаете, что сложность алгоритма не имеет отношения к реальности?
Понятно, что в реальной работе каждый день не программируется реализация графовых алгоритмов, но понимание таких вещей необходимо и при работе с базовыми типами данных, с которыми работа каждый день идет.
Так же, как понятно, и то, что достаточно вопросов на общее понимание этих вещей, и на то, чтобы понять, готов ли разработчик осознанно выбирать то, что ему подсказывает автозаполнение в IDE (в идеале — знакомиться с доками).
Я ещё видел реальный код с LINQ головного мозга.
Это когда простой код с for (int i = 0; i < list.Count; i++)
заменялся чем-то непонятным и монструозным.
Таки вы по-прежнему считаете, что сложность алгоритма не имеет отношения к реальности?
Я бы сказал, что не надо вызывать IndexOf внутри цикла, даже когда не знал про оценку сложности и какая она у пузырьковой сортировки. Потому что для поиска там скорее всего еще один цикл.
Я считаю, что чтобы понять, что такой код писать не надо, знание сложности необязательно.
Я считаю, что чтобы понять, что такой код писать не надо, знание сложности необязательно.
Согласен с вами, есть куча таких моментов, которые проистекают из здравого смысла.
Что касается вопросов на "сложность", насколько понимаю, тому две причины:
- Во-первых, можно усмотреть, что в разные периоды возникала разная мода на то, что спрашивать (зачастую такая мода необоснована с точки зрения сути предстоящей работы).
- Во-вторых, применительно к .NET-сфере, насколько помню, такие вопросы стали возникать, когда появились дженерики и реализации типизированных Dictionary/SortedDictionary/SortedList (то того был только нетипизированный Hashtable и DictionaryBase, от которого наследовались узкоспециализированные коллекции), и когда затем появился LINQ.
Т.е., когда появились стандартные средства, предполагающие понимание сложности, тогда и появились вопросы.
Впрочем, я ненастоящий сварщик, спорить не решусь.
Тогда у нас среднее число элементов в одной корзине получается n/k, где n — число элементов, а k — число корзин. И до тех пор, пока эта величина порядка O(1), добавление, удаление и поиск элементов будут работать за O(1). Поэтому если n/k превышает некий константный порог, мы увеличиваем k, перестраивая всю таблицу. Очевидно, что эта операция (проитерироваться по всем элементам и добавить все по одному в новую таблицу) работает за O(n), ведь новая таблица побольше и все добавления в нее константны. Поэтому операцию перестроения мы будем делать редко, каждый раз экспоненциально увеличивая размер таблицы.
Если, например, стоимость перестроения таблицы размера x равна a*x, и мы увеличиваем размер вдвое каждый раз, то при добавлении n элементов в изначально пустую таблицу мы потратим O(n) времени на добавления, и дополнительно a*n + a*n/2 + a*n/4 +… + a*1 = 2*a*n = O(n) времени на все перестроения в сумме. То есть, на добавление O(n) элементов мы потратили O(n) времени, или, амортизированно, по O(1) на элемент.
Это на пальцах, нестрого, в реальности используются другие соотношения, а еще нам желательно оценивать частоту коллизий, ведь может не повезти, там нужно везде считать мат ожидания и вероятности, а это с асимптотическими оценками сложнее. Но суть не меняется — с хеш-таблицей мы имеем в среднем амортизированно константное время работы.
PS: «В среднем» означает, что нам может не повезти и данные подберутся так, что асимптотика будет больше. Именно в случае хеш-таблицы такие шансы в случае случайных данных экспоненциально уменьшаются с размером входных данных, но иногда может попасться задача (по крайней мере, на олимпиадах, хотя, может, и в реальном мире), в которой данные будут специально подобраны наихудшим способом.
«Амортизированно» означает, что одна операция может занять гораздо дольше, чем O(1) — в нашем случае, вплоть до O(n). То есть, если нам нужна стабильность времени ответа, то операция добавления элемента в хеш-таблицу не подойдет. А вот если мы делаем пакетную обработку запросов, то это не важно.
PPS: Если интересно, могу статью на эту тему написать, с подробным объяснением и строгой математикой.
P.S. И при этом практически в каждом резюме можно увидеть self-organized.
P.S. И при этом практически в каждом резюме можно увидеть self-organized.
Хорошо, что я такое не пишу. Хоть что-то в моем резюме честное! /s
Да, совсем новичку может быть сложно найти работу, но сейчас есть реальный дефицит хороших кадров
Ага, ага.
Только сейчас дефицит высококвалифицированных кадров.
А новичок — кадр низкоквалифицированных.
Только сейчас дефицит высококвалифицированных кадров.
Этот дефицит присутствует и будет присутствовать всегда.
Причина простая: с ростом квалификации сотрудники приобретают различные навыки, но каждый из сотрудников развивается по-своему. И чем выше уровень квалификации, тем сложнее найти специалиста, множество навыков которого совпадает с требованиями работодателя.
Тут остаётся 3 варианта: годами искать идеального сотрудника, платить завышенную зарплату overqualified сотруднику, либо тратить время на обучение underqualified сотрудника.
Как-то опыт показывает, что квалифицированные сотрудники и новые области осваивают легко и быстро, связывая их цепочками ассоциаций со старым опытом.
(да, и квалификация != стаж. Выпускник вуза, если был заинтересован, может уже иметь за плечами достаточно опыта, чтобы легко и быстро скакать по языкам, фреймворкам и технологиям)
Ещё добавлю для русскоязычных: не следует так уж бояться своего рунглиша. Достаточно intermediate, и не так уж важно произношение. На собеседовании будут стараться понять, а дальше при погружение выправится. Диалектов английского столько, что рунглиш один из не самых сложных :)
Тоже нет. Главное — продолжить. Совсем не нервничать на собеседовании, наверное, невозможно.
Мы тут говорим про новичков-середнячков, для которых собеседование — вынужденное занятие, кто может жаловаться на софтскилы, и кому нужен совет "отказывают? Не сдавайтесь!", да? Ну и как, могут они не нервничать? Или это совет из серии "мышки, станьте ёжиками"? ;)
Ладно если первое-второе собеседование в жизни или за длительный срок, или если вот прям вакансия мечты, мелькнувшая раз в пятилетку. Но если ходишь на собеседования регулярно и постоянно нервничаешь (независимо от результата), то стоит пересмотреть своё отношение к ним на уровне своей психики, возможно даже к специалисту за помощью обратиться.
Пойти к специалисту деньги нужны, а он(а) как раз работу ищет ;)
Но как минимум в тех местах где я собеседовал — нервы никого не отталкивали, и моя задача как собесника — успокоить и выковырять из скорлупаники.
Но как минимум в тех местах где я собеседовал — нервы никого не отталкивали, и моя задача как собесника — успокоить и выковырять из скорлупаники.
Да. Но когда видишь, что человек готов на любую работу, возникают серьезные сомнения.
Развернуть бы мысль.
А то «любой язык»? Ну, это не редкость.
«Любой фреймворк»? Да они ж все на одно лицо, какая разница на чем лабать.
«Готов даже тесты писать для существующего кода»? Дак таких надо вообще печеньками подманивать!
Развернуть бы мысль.Нпр., знаю случаи, когда в целях экономии ремонт помещения делался силами сотрудников.
какая разница на чем лабатьДалеко не всех работодателей устраивает предельно формальное отношение. Когда совсем без разницы, то «и так сойдет». В результате нередко получается очень кривой код.
Вспоминаю рассказ одного археолога. Приехали в далекую деревню на раскопки две группы по 10 человек. Одна остановилась в доме у одной тетки, а другая у другой. Обе получили одинаковые (хорошие для деревни) деньги за постой и стол. Одна подходила предельно формально — все было свежее со своего огорода, но что-то недокипело, а что-то перекипело и было невкусно. Но обоснованных претензий предъявить было невозможно и приходилось терпеть. Когда ей говорили, что невкусно, она не расстраивалась, а просто отмахивалась.
Другая очень старалась, чтобы ее постояльцы были довольны. Очень расстраивалась, если кому-то не понравились щи или каша. Пекла пирожки к чаю и т.д. Постояльцы были очень довольны, как и хозяйка, хотя ей никаких дополнительных денег это не приносило. ИМХО при прочих равных большинству работодателей хочется, чтобы работник старался сделать работу как можно лучше, чтобы сознание хорошо сделанной работы приносило ему радость.
Вспоминаю рассказ одного археолога.
Вывод: можно не напрягаться и получать такие же деньги, как напрягающийся.
Я в 2015 попал в такую ситуацию как у человека выше, никому не пожелаю.
зарекся уходить с работы, не найдя новуюНе считаете ли Вы такой подход предательством по отношению к текущему работодателю? Вам бы понравилось, если Ваша жена искала себе нового мужа, не подав сначала на развод?
Не считаете ли Вы такой подход предательством по отношению к текущему работодателю?А вы думаете, что работодатель при желании уволить вас не найдет сперва замену?
При чём тут месть? Это современные традиции бизнеса. Ваше дело после того, как нашли работу — отработать положенный срок, передав дела. Все.
В мире ИТ предложение работы и выход на работу могут между собой растянуться и на 2 недели по закону и на месяц и на два. Вполне можно успеть передать дела.
Срочные договоры и испытательные сроки не считаю аморальными, потому что и то и другое делается открыто, а не за спиной.
пусть и он оповещает меня каждый раз когда просматривает варианты потенциальных новых работников, которые могут претендовать на моё место.Вот с этим согласен на все 100%. Честная игра должна быть обоюдной. Лишь в этом случае обе стороны будут счастливы.
Почему начинать должны работники? Потому что, опираясь на свои наблюдения в сфере IT с 1997 года, примерно в 90% случаев инициатором СКРЫТНОГО расторжения трудовых отношений являются именно работники.
Возвращаясь к основной теме моего поста, нравственность не знает понятий выгодно/невыгодно.
В этом и есть смысл моего первоначального поста: предложить и работникам и работодателям задуматься, чтобы разорвать наконец этот порочный круг.
Как сделать? Очень просто. Когда приняли решение приступить к поиску новой работы, сообщите о нём своему работодателю (письменно или устно — это уже детали).
Тогда и у работодателя будет возможность найти достойную замену, не ограничиваясь положенными по закону двумя неделями отработки.
Вот это я и называю честной игрой. Разумеется, работодатель должен соблюдать аналогичные правила по отношению к работнику.
Предвижу Ваши возражения и аргументы, поэтому скажу: можно поступать по совести, а можно по обстоятельствам. Каждый сам делает свой выбор. Но лично я склоняюсь к первому варианту.
А риски работников при честной игре в 95% если не большем количестве случаев больше, поскольку остаться без работы не имея запасного аэродрома или довольно внушительной подушки — может означать смену статуса на лицо без определенного места жительства.
Вы не хотите минимизировать эти риски и приводите причины так не поступать
К моему глубочайшему сожалению, люди практически всегда выбирают меркантильный интерес. Комментарии к моему посту в этой ветке — наглядное тому подтверждение. Не нашлось ни единого человека кто бы поддержал, только карму уменьшили.
Чувствую себя пришельцем с другой планеты. Но опускаться до морального облика большинства не стану.
Поскольку в чужой монастырь со своим уставом не ходят, продолжать дискуссию дальше считаю бесполезной тратой времени. Лучше творить добро, чем бороться со злом.
Всем хороших выходных.
Иначе у вас просто нет времени на работу… да и вообще на жизнь. Т.к. всюду присутствует несправедливость и нечестность. Вот интересно… а какие у вас отношения с государством?
P.S. Вот вы родились в конкретной семье, с определённым уровнем дохода… разве это «честно» по отношению к тем кто этого не имел, или наоборот, к тем кто имел больше чем у вас бьіло? ;)
Регулярно по вечерам наблюдаю из окна такую картину: во двор заезжает машина, свободных парковочных мест уже не осталось, водитель паркуется на газоне в двух шагах от детской площадки. Он поступает по обстоятельствам. А если бы припарковался за 500 м от дома, поступил бы по совести.
Вот и с работой также. Каждый выбирает свой путь.
почему работник должен учитывать риски работодателяПотому, что мы люди, а не звери.
увольняют
по собственномуВы тут противоречия совсем не видите? По собственному желанию работник может уволиться только сам. Если его увольняют — то это или по соглашению сторон, или по сокращению, или ещё как. Если работодатель хочет, чтобы вы увольнялись по собственному — то это его проблемы.
Работает, правда, только при «белой» зарплате. Но тут уж сам себе злой Буратино, если согласился на оплате «вчёрную».
Но и в этом случае, как мне кажется, не следует «кидать» текущего работодателя, прикрываясь положенными по закону двумя неделями отработки. Лучше постараться найти решение, которое устроит все три стороны.
Установленный законом срок — тема отдельного разговора.
По поводу хантинга я своё мнение уже высказал.
Получил оффер через 2 часа после открытия резюме.
делается. Значит, все дело в «волшебном» резюме? Даже без собеса взяли? Может роялит уникальный опыт или квалификация? Или просто человек такой магнетически «хантабельный»? Ну employable — как это по-русски?
В любом случае, если указываешь зарплату выше рынка в резюме, частота звонков резко сокращается. И это правильно — какой смысл общаться с тем, кто все равно не предложит тебе даже сколько, сколько у тебя уже есть?
Как сделать? Очень просто. Когда приняли решение приступить к поиску новой работы, сообщите о нём своему работодателю (письменно или устно — это уже детали).
Такая стратегия очень опасна и может привести к непредсказуемым последствиям.
Скажем, я работаю 3 года. И 2 года назад принял решение приступить к поиску новой работы. И нашел я её? Нет. По разным причинам. Может, я передумал искать год назад. А работодателя уже не откатишь. Доверие к сотруднику будет подорвано. Он будет alert (предупрежден, начеку, не знаю, что тут надо вставить) и будет подыскивать Вам замену. И найдёт её, вероятно, раньше, чем Вы свою новую работу (сорри, вижу, что подобный комментарий уже написали, но и мой будет не лишний — вдруг он предостережет кого-то от опрометчивого шага?).
Как сделать? Очень просто. Когда приняли решение приступить к поиску новой работы, сообщите о нём своему работодателю (письменно или устно — это уже детали).Я вот, например, собеседуюсь куда-нибудь раз в полгода, особо не рассчитывая на смену работодателя. Мой работодатель об этом знает (ибо я ему еще на собеседовании об этом сказал). Если получу оффер на условия лучше, чем сейчас, то до его принятия обсужу его с текущим работодателем.
Я, по-вашему, поступаю этично? Я все еще не предупреждаю работодателя перед каждым собеседованием, а «лучшего оффера» может и два-три года не быть.
Я в 2015 попал в такую ситуацию как у человека выше, никому не пожелаю.
Сочувствую. От такой ситуации никто не застрахован: ни новичок, ни очень опытный. Бывает, что опытному тяжелее найти работу: часто на очень простые работы опытных брать опасаются.
Оказавшись в такой ситуации надо предельно ответсвенно подходить к каждой встрече. Но и тут помогает сознание, что работодателю м.б. позарез нужен работник (не меньше, чем мне работа) — работодатель из-за недостатка кадров может нести серьезные убытки. Выше написал:
К собеседованию нужно относиться как к переговорам двух равных сторон, даже если вам очень необходима работа. Нельзя показывать, что вам позарез нужны деньги, нельзя заискивать.
У меня был случай, когда при первом знакомстве работодатель вдруг неожиданно начал заискивать. Такое не может не насторожить. Все стало ясно когда мне показали допотопную и изношенную установку, которую я должен был автоматизировать, и нелучшие средства этой автоматизации.
Мы тут говорим про новичков-середнячковМного новичков имеют специальное образование. К третьему курсу большинство студентов-середнячков умеют сдавать экзамены, даже если не очень готовы (иначе не выживут — будут отчислены из вуза. Это к слову о пользе вуза :)
На защите диплома во рту пересохло только так :D
Ну и к тому же, экзамены могут быть хорошо позади; не все вообще в принципе спокойно это переносят вне зависимости от; не у всех были очные экзамены, они могли сдавать заочно и онлайн…
Ну и люди просто разные, это важно помнить всегда.
Ну и люди просто разные, это важно помнить всегда.
Да. Люди разные. Но много зависит: как человек себя настроит. Полезно настраивать на позитив (не волноваться), а не оправдывать себя «все волнуются». Нужно тренироваться. Нпр., некоторые люди волнуются даже если в гонки на ПК играют. Тогда регулярно по 20 мин. в день играйте в гонки для тренировки спокойствия.
Люди разные. Не всё тренируется и не все способы к «самонастройке».
См.выше. мы говорим тут о ЦА, которых силком не тащат, к кому ключи ХРы не ищут.
Я не гуру, меня силком никто не тащил, но я на собеседовании был скорее в состоянии любопытства. Ну и спать хотелось, всё же почти 20 часов бодрствования сперва, потом 3 часа сна, и немного работы ещё до собеса. Может это меня и спасло :)))
В следующий раз можете использовать то же самое как личный лайфхак для приведения себя в нужное для собеседования состояние :)
Рунглиш — это проскипывание артиклей (коллега нативный англоязычник говорил, что почти каждый дизайндок от русскоязчных коллег он сперва проходит расставляет артикли, потом начинает читать, потому что иначе ему нифига не понятно. делает это даже у тех, кто 10+ лет живёт в сша, например) и глагола `to be` в «очевидных» местах.
Для собеседования и начала работы нужен словарь IT слов (который есть если ты хоть немного вынужден был читать документацию на английском), простое настоящее, простое прошедшее и простое будущее. «Официально» требуется B1 (=Intermediate), реально достаточно за глаза и за уши A2 (Pre-Intermediate). От B1 по сути и нужен как раз предметный словарь. Я вполне могу завалить экзамен по английскому B1, если вдруг понадобится его сдать, тупо потому, что я не знаю огромного пласта повседневных слов. Например — эмоции, продукты, и прочее в том же духе.
Ни собеседованию ни работе это не мешает, и точно не будет мешать. Ну разве что работодатель вдруг потребует конкретно сертификат, но кроме программ обмена студентов и проч подобного уровня (когда нужно доказательство наваленкства промежуточным звеньям, которые обрабатывают тушки массово), я не слышал, что бы их кто-то требовал.
Для собеседования и начала работы нужен словарь IT слов (который есть если ты хоть немного вынужден был читать документацию на английском)
Здесь есть подводный камень в виде устоявшегося произношения некоторых терминов в русскоязычном IT, например, биндинг, тмукс или ВПФ. Далеко не каждый иностранный коллега или собеседующий поймет, что имелось в виду binding, tmux и WPF.
Я до сих пор их не употребляю толком, за исключением когда они влияют на смысл, никто пока явно не жаловался.
В остальном согласен, язык это средство общения. Если обе стороны понимают друг друга нормально — его уровень значения особого не имеет. Та же грамматика гораздо менее критична чем произношение и восприятие на слух, ну а самое главное сломать барьер устного и письменного общения, лучше бедная речь с ошибками (в разумных пределах) чем паузы при ответе по паре минут пока он там корректность грамматики проверяет (для письменного) или просто ступор (для устного).
в большинстве случаев даже он не может обьяснить нафига нужны эти артиклиПросто потому что не задумывался. Артикли в английском нужны, в основном, для того, чтобы понимать, какой частью речи является слово в предложении — существительным или прилагательным. Если с артиклем либо в форме множественного числа — то существительное, если без и в форме единственного — то прилагательное (или глагол, но это уже проще понять).
Артикли в английском выражают категорию определенности/неопределенности
Есть один нюанс. В беглой быстрой речи зачастую почти невозможно (или ооочень сложно) отличить the от a. Мне кажется, из этих двух ролей, основополагающую роль имеет, как указал Chamie, как раз указатель на части речи. А категория определённости идёт скорее "на сдачу", она и без артиклей обычно легко выявляется по контексту. В то время как если наворотить очень сложное предложение с кучей идиом и оборотов, то на артикли одна надежда и остаётся (чтобы хоть что-то понять).
И вообще: I like milk. This milk cream is very fresh. I milk my cow twice a day. Farmers milk and bread us.Вот конкретно в этих примерах — легко. В предложении должен быть хотя бы один глагол.
Артикли в английском выражают категорию определенности/неопределенностиЭто различие в артиклях, а само их наличие обозначает, что это не глагол.
На самом деле уровень знаний и уровень навыков — две разные вещи.
Вы можете знать все времена на отлично, но во время разговора с натив спикером долго формулировать фразы, либо слыша их не успевать их переводить вовремя. В результате «уровень как бы ниже чем есть».
А после практики — теория перешла в моторику, и вы стали понимать гораздо больше. Не увеличивая словарный запас и грамматику. Просто эффективнее использовать уже имеющееся.
А вы когда сдавали? Может, поменялось что в процедурах.
В некоторых случаях можно даже просто попросить коллег поправлять вас при самых явных ошибках.
Я где-то даже слышал такую тему, что главными критиками познаний и произношения английского у русских людей являются другие русские люди, в то время как всему остальному цивилизованному миру вообще по барабану. Так что если вам приспичит попрактиковать ингриш, ни в коем случае не делайте это с другими русскими людьми (в особенности с друзьями), если конечно они не общаются на анлийском на постоянной основе.
Наличие ссылки на Github в резюме увеличивает шансы
Если Github пустой и там кроме форков и hello world ничего нет, то стоит подумать, публиковать ли ссылку. Возможно в вакансиях на junior-позиции само понимание, что такое git и github может быть значимым фактором. Но на более высоких позиция там уже следует быть чему-то, по чему можно сделать вывод о вашем уровне.
у меня под 200 репозиториев на bitbucket, но открыты только 4 проекта специально для резюме. не обновлял их пару лет.
и все равно почта разрывается от писем. из этого я сделал простой вывод, что хоть что-то должно быть, а уж объем не так важен.
в вакансиях на junior-позиции само понимание, что такое git и github может быть значимым фактором
просто комитить и пушить можно научиться за 10 минут. я бы скорее проверял знания что такое версионное хранение на примере любой системы (хоть svn, хоть clearcase). а то сейчас даже мидлы встречаются без знаний что такое reflog, force push, rebase. требовать такое от джуна уже скорее опция, а не обязательность.
Есть ли смысл оставлять их открытыми и давать ссылку в резюме или лучше не стоит?
Умение чётко общаться, хорошо работать в команде и понимать бизнес-цели на самом деле ценится выше, чем умение программировать.
Да как вы бесите, экстраверты. Есть где-нибудь ещё область где будут цениться технические навыки, если я быть стандартно вежливым, общительным только на деловые темы и абсолютно не интересующимся жизнью коллег?
А то даже на нынешней работе сообщили, что для сеньора нужно продемонстрировать софт-скиллы. То, что на проекте всего 3 человека их не волнует >..<
Да, есть. Но селф-скилы имеют пределы эффективности для компании. Просто чем сложнее вещи, которые ты можешь запилить один, тем меньше они нужны, так как мало кто ещё сможет их сделать.
Поэтому тут уходить в ресерч, реверс, и пр. Там нет технического потолка и доход растёт с крутизной
Есть где-нибудь ещё область где будут цениться технические навыкиТолько технические скиллы ценятся только там, где в команде ровно 1 человек) Но и он должен работать с кучей народа вне команды. Иногда, но очень редко, попадаются такие проекты. Так что, увы, приходится учиться этому навыку, как и любому другому.
Автор прямо в посте пишет, что «это вот не всё», а ещё и обширная сеть знакомств и умение вести переговоры. Что впринципе выходит за рамки «деловых тем».
А коллеги и наоборот бывают — любимец всех, классный и общительный, но как пишет — чуть ли не goto-level =\
Еще вейп есть безникотиновый, но это скользкая дорожка, можно и закурить так. Чай лучше.
Ну само собой если дым так раздражаеть что не можете находиться рядом — тогда без вариантов. Разве что можно попробовать перетащить разговоры из курилки на кухню и обсуждать там за кофе/чаем, но это сложно.
А вот небыло бы сего действия, глядишь и ему бы небыло так неютно с нами работать (вообще он отличный парень, безмерный идеалист и страшно огорчается когда заставляют делать чтобы «хоть как-нибудь, но чтобы было готово вчера»).
Так что к посиделкам и тимбилдингу надо относиться аккуратно, ибо может оказаться что кроме работы у коллектива нет вообще никаких возможных точек соприкосновения.
В вашей картине перекур приравнен к спланированному совещанию, когда все встали и пошли обсуждать производственные вопросы в курилку.
А на деле все происходит так: кто-то один встает, и зовет второго покурить. Уходят. Пока курят могут обсудить какой то вопрос. В процессе разговора подтягивается третий включается в обсуждение, затем четвертый и т.д.
В итоге, когда все накурятся вопрос решен и решение принято. Только вот об этом кто в курилке не был ни сном ни духом.
Вот такая корпоративная этика.
Смотрите, один пошел, за ним другой, вы сделали чай и пошли тоже — все работает: они курят, вы чай пьете, все вместе обсуждаете, если не обсуждаете то просто болтаете и отдыхаете. Можно и без чая, просто пойти отдохнуть, никто скорее всего не прогонит. Проверено на практике и не раз.
Люди ходят курить не только потому что «организм зовет», но и для перерыва, расслабить мозг, обдумать что-то в фоновом режиме, поболтать, обсудить, отдохнуть. Полезное дело (отдых а не курение), даже некурящим стоит завести такую привычку, да время тратиться но суммарная эффективность повышается. Чай как вариант, но может быть что угодно, даже просто постоять на балконе и глаза размять. Совмещаете периоды с курящими и через пару недель они уже сами будут звать на «подышать».
Смотрите, один пошел, за ним другой, и тут вы понимаете, что пора!
Приходите с чаем, а там только «котиков» обсуждают. Возвращаетесь назад. В этот момент встают и уходят курить следующие. А там к ним и начальство подходит. И все, вопрос решен в узком кругу тех кто в этот момент был в курилке.
Невозможно совмещать периоды со всеми курящими. Так и на работу времени не останется.
Речь же про то что не курящим нет повода присутствовать в курилке и в результате курящие общаются больше между собой, в том числе по рабочим вопросам, так? Вот на это я решение и предлагал.
Ну то есть буквально про вот это «собираютяся» и «выключены». «Просто потому что там собирается большая часть коллектива. И некурящие оказываются просто выключены из этого процесса.»
Бороться с этим бесполезно, т.к. начальство само в этом участвует.

Но есть разница между «моя задача писать код, как скажет так и сделаю, не мешайте мне работать» и «мне небезразличен продукт, проект и время команды, если я считаю что можно сделать лучше (даже не свою задачу) я должен хотя бы постараться убедить ЛПР в этом». И вот во втором случае навыки коммуникации, убеждения, продажи если хотите — очень полезны. А это значит что такой синьор в команде не просто будет хорошо делать свои задачи но и подстрахует тимлида (PM, начальника отдела, PO, выберите сами), поможет ему не совершить ошибку или сделать что-то лучше. А без скилов будет угрюмо сидеть в углу теряя свою мотивацию (ну если не пофигист по первому варианту).
И вот если в команде все умеют общаться, владеют этими самыми «навыками переговоров» то срача как раз и не будет. Ведь у переговоров всегда есть цель, и цель эта обычно не нагнуть собеседника а сделать так чтобы все были довольны.
мне небезразличен продукт, проект и время команды, если я считаю что можно сделать лучше (даже не свою задачу) я должен хотя бы постараться убедить ЛПР в этом
Инициатива имеет инициатора. Да и потом, к инициативным у нас всегда было особенное отношение.
А если о частностях — я предпочту у себя в команде иметь неопытного но инициативного джуниора с горящими глазами (но адекватного) вместо более опытного но полностью пофигиста. Как то с активными людьми не боящимися ответственности гораздо приятнее и эффективнее работается.
Особенное отношение — зависит от коллектива, я в принципе не буду работать с командой где одно из главных правил «не высов
Заблуждения программистов о трудоустройстве