
Меньше всего говорят о том, что будет после того как ты окончишь лагерь по программированию — когда ты пытаешься занять позицию разработчика с шестизначным окладом.

< 3% заявлений становились предложениями
Я окончил Hack Reactor в июле 2016, и мне потребовалось почти 3 месяца, прежде чем я принял предложение от Radius Intelligence. Я подавал заявления в 291 компанию, прошел 32 собеседования по телефону и 16 обычных, а также выполнил 13 задач по программированию, 11 из них — в офисах. И получил в итоге 8 предложений. Мне предлагали 60-125 тысяч долларов в компаниях США. В общем 2.8% заявок обернулись для меня выгодными предложениями.
Вот 5 вещей, которые я хотел бы знать, прежде чем устраивался на работу.
Озарение#1: пытайтесь связаться с реальными людьми
Поначалу я подавал заявления в компании самым легким способом через Indeed.com, AngelList, LinkedIn, StackOverflow, Hacker News, сайты компаний и даже Craigslist.
Я хотел подать резюме на любую специальность, где требовался опыт пользования React, Node или JavaScript. В первую неделю, я обращался к 15-20 организациям в день.
Совет от профессионала: Найдите компании, которые используют эту легкую форму подачи заявок.
Результат был не утешающим. Менее 5% компаний отвечали мне. Я словно бы бросал заявления об устройстве на работу в черную дыру.
Все изменилось, когда один из моих товарищей, бывший вербовщик, поделился со мной информацией о том, как искать работу. Он сказал отправлять письма непосредственно людям из этих компаний. Это могут быть кто угодно. Главное, чтобы они прочитали ваше заявление.
Тогда каждый раз, когда я хотел подать заявление, я искал компанию на LinkedIn и писал кому-то из их технической поддержки или команды найма.
У большинства небольших компаний или руководителей высшего звена адрес почты в таком формате firstName@dreamCompany.com. У крупных компаний это firstName.lastName@dreamCompany.com.
Для проверки электронной почты, я использовал Rapportive, чтобы привязать почту к аккаунтам в социальных сетях.
Результаты были потрясающими. После 150+ отправленных писем результат улучшился на 22%.
Мне также нравилось связываться с реальными людьми. Удивительно, но мне ответили даже CEO и CTO. Иногда они даже сами проводили собеседования.
Вывод: если вы устраиваетесь на работу самым легким способом, попытайтесь достучаться до реальных людей.
Озарение#2: начните с малого и пробейте себе путь наверх
Вы будете сталкиваться с собеседованиями 1 уровня (нетехническая компания, которая нуждается в любом разработчике), где вам зададут лишь тривиальные вопросы о JavaScript.
Вы столкнетесь с собеседованиями 9 уровня (уровень Google/Facebook), где вам будут задавать сложные вопросы о структуре данных и вопросы касательно алгоритмов.
Я стратегически выстраиваю процесс так, чтобы сначала пройти собеседования низкого уровня, а затем более сложные.
От компаний с собеседованиями низкого уровня я получил опыт, уверенность в себе и своих силах и надежные предложения.
Чем больше опыта я получал, тем эффективней поднимался на новый уровень и мог проходить собеседования в компаниях, где была более высокая планка для работников. Ниже это проиллюстрировано в виде линейной корреляции между количеством недель, которые я потратил на собеседования и окладом, который мне предложили.

Прямая зависимость между временем, которое я потратил на собеседования и предложенной зарплаты
Я преодолел сложные вопросы. Затем пробился к высокой зарплате. И в итоге заполучил желаемую должность.
Вывод: планируйте свои собеседования так, чтобы сначала пройти более легкие, а затем сложные.
Озарение#3: учитесь так, будто от этого зависит ваша будущая работа (потому что так и есть)
Ненавижу говорить это, но самое важное, что вы должны делать — это учиться и готовиться.
Почему? Потому что вы не получите предложения, если у вас не будет хороших ответов на вопросы, которые вам будут задавать.
Люди не будут рассматривать вашу кандидатуру, если они будут видеть, что вы не готовы к собеседованию.
Возвращаясь к теме о Hack Reactor, моей слабостью были структуры данных и алгоритмы. Исследование Триплбайта выявило, что оценки выпускников из компьютерного лагеря слабее, чем оценки выпускников из computer science.
Поэтому я учился и практиковался. Каждый день.
Я посвящал целые дни изучению алгоритмов сортировки. В другие дни я фокусировался на понимании того, как работает интернет.
Если я не полностью понимал концепцию, то проводил весь день за просмотром видео на YouTube или искал информацию на StackOverflow пока, наконец, не понимал.
Я нашел следующие учебные материалы полезными:
- InterviewCake: Мой любимый источник информации о структуре данных и алгоритмах. Он разбивает решение на пошаговый алгоритм — отличная альтернатива Cracking the Code Interview (CTCI). Жаль только, что они не решают другие проблемы!
- HiredInTech’s System Design Section: отличное руководство по собеседованиям касательно системы дизайна.
- Coderust: если вы избегаете CTCI как чумы, Coderust 2.0 возможно идеально вам подойдет. За 49$, вы получите решения практически на любом языке программирования, с использованием интерактивных схем.
- Reddit’s How to Prepare for Tech Interviews: постоянно использую его в качестве ориентира своей подготовки.
- Front End Interview Questions: Исчерпывающий перечень интерфейсных вопросов.
- Leetcode: ресурс с вопросами по алгоритмам и структуре данных. Вы можете фильтровать их по компаниям. Так, например, вы можете получить все вопросы, которые, как правило, задают Uber или Google.
Вывод: слишком много подготовки не бывает.
Озарение#4: показывайте себя с лучшей стороны
Пробиться в индустрию сложно. Вы должны хорошо проявить себя, даже если не очень подготовлены. Чтобы добиться успеха, нужно быть своим собственным адвокатом.
Продавайте себя
В Hack Reactor мы тренировались маскировать наше отсутствие опыта. В нашей личной жизни, мы намеренно умалчиваем о нашем образовании в лагере программистов.
Почему? В противном случае, нас автоматически классифицируют как младших разработчиков или как работников, у которых недостаточно опыта.
В одном из собеседований с стартапом, собеседование сразу сошло на нет, как только услышали, что я был в лагере программистов. Одна компания использовала это против меня и предложила мне 60000$ (столько предлагают младшим разработчикам).
В конечном счете, вы должны убедить компании, что вы можете сделать эту работу.
В то же время, вы должны убедить себя, что вы можете сделать эту работу.
Вы можете. Сосредоточьтесь на любви к программированию. Сосредоточьтесь на том, что вы построили с React и Node. Сосредоточьтесь на том, чтобы продемонстрировать ваши обширные знания в JavaScript и других языках программирования.
Только они могут доказать, что вы заслуживаете эту работу.
Это двусторонний разговор
Собеседование — это взаимное изучение соответствия между работником и работодателем. Хоть вы и должны убедить работодателя нанять вас, он тоже должен завоевать вас.
Не стыдитесь использовать собеседование как возможность оценить возможность трудоустройства.
Я разговаривал с любой компанией, даже если я не имел к ней ни малейшего интереса.
Я проходил собеседования на местах со всеми компаниями, которые меня приглашали. Я задавал вопросы и получал знания от команды инженеров об используемых инструментах и технологиях, проблемах компании и архитектуры системы.
Профессиональный совет: во время собеседований задавайте следующие вопросы:
- С какими техническими трудностями вы недавно столкнулись?
- Что вам нравится в работе на компанию X?
- Как построены команды и как обычно распределяются задачи?
Я относился к каждому взаимодействию как к возможности узнать что-то новое. Каждое взаимодействие помогло мне улучшить свой доклад, собеседование и технические навыки. Каждая неудача помогла мне найти мои слабые места.
Вывод: знайте себе цену! И помните, это взаимная разведка.
Озарение#5: это марафон, а не спринт
Путешествие отнюдь не легкое. В течение 3 месяцев, я оттачивал свое мастерство 6 дней в неделю. Но я старался заботиться о себе.

Так может выглядеть типичный день в JavaScript
Несколько дней я учился с друзьями. В другие дни я шел в кафе и занимался один или зависал в выпускном зале Hack Reactor. И каждую неделю я связывался с консультантом занятости, чтобы поговорить о своем прогрессе.
Легко перегореть в процессе. Хорошо питайтесь, спите и занимайтесь спортом.
Может стать одиноко. Проводите время с друзьями, которые проходят через то же, что и вы.
Вывод: приготовьтесь к долгой игре и убедитесь, что вы хорошо заботитесь о себе
Итог:
- Связывайтесь с реальными людьми
- Начните с малого и пробивайте себе путь наверх
- Учитесь так, будто ваша будущая работа зависит от этого
- Показывайте себя с лучшей стороны
- Это марафон, а не спринт
Процесс может казаться нескончаемым, но вы справитесь. Продолжайте считать часы. Продолжайте подавать заявления. Продолжайте заботиться о себе. Все это окупится в итоге.
Особая благодарность Дилану Трану, Карен Цао, Рохиту 'Солнечному' Рехи, Джейк Пейс, Анамите Гуха, Стефани Лю, и многим другим.
Поддержка публикации — компания Edison, которая разрабатывает SDK для слежения за географическими объектами и систему оперативного учета сети магазинов «Мебель для дома».
Поделиться с друзьями
Waxer
Если судить по первой картинке, я бы вас на работу не взял.
bitver
Я подумал, что картинка — это сарказм, типа «смарите чо как меня научили, оп», а когда понял что это всерьез, то пришлось закрыть вкладку… немного обходным путем.
apachik
для полной шутки там не хватает еще одной ветки:
afrokick
А теперь представьте этот пример в виде вложенных switch-ей :)
mayorovp
default забыли!
tkutru
Чтобы глаза отдохнули!
cultura
Это уже перебор.
Первичный «индусский» вариант куда как легче читается, чем эта оптимизация.
За 15 лет работы мой мозг почти каждый день тренируется чтением подобных конструкций. И тем не менее я считаю подобную оптимизацию далеко не всегда уместной.
Имхо, средний уровень программистов (а рассчитывать на то, что за тобой будет читать не сверх-выскоко-квалифицированный, а самый обычный программист, такой вот школьник как автор оригинала статьи — вполне нормально) не настолько высок, чтобы напрягать их мозги без повода.
Пусть лучше напрягают мозги по сути решаемой прикладной задачи, а не по причине невнятного синтаксиса.
marsermd
Вы ведь понимаете, что tkutru и не пытался написать правильный ответ, а, как и остальные участники этой ветки, смеется над кодом с КДПВ?)
Zifix
-
SlavikF
Объясните непосвящённому, что не так.
Я сам, в основном, пишу тесты на Java и с JavaScript знаком слабо…
apachik
ну индусский же код!
иф бессмысленный, когда можно сразу сделать
return isPrepared
или даже сразу return без заведения переменной
cultura
Программу мы пишем для того, чтобы ее потом можно было прочитать.
«Неиндусский» переоптимизированный код читается ничуть не лучше.
mayorovp
Что нечитаемого в строчке
return studying && hardWork && luck;
? Тут нет никакой хитрой магии, обычное вычисление.apollonin
В том, что если, не дай бог, значение hardWork в будущем потребуется как-то иначе вычислить (к примеру, вызовом соседнего метода а то и двух), то ваш код придётся переписать, вынося эту perl-подобную конструкцию в более читабельную. А если вспомнить, что модифицировать код будет не тот, кто его писал, и переписывать чужой код в разы сложнее и потенциально опаснее, чем расширить получение переменной в отдельной строке, понимаем что ваш код может и выглядит красивее. но он совершенно не масштабируем.
monolithed
Если, да как бы..., для таких случаев есть даже термин — преждевременная оптимизация.
studying && hardWork && luck есть в исходном примере, почему вы это называете perl-подобной конструкцией?
Source
Тогда уж
Только стоит ли сокращать эту запись, если как минимум 6 шутников в комментариях сократили её некорректно? Вопрос далеко неоднозначный.
apachik
тогда уж (если три аргумента вдруг не булевские)
return isPrepared > 0;
Source
Это более хрупкий вариант… в текущем JS сработает, а в других языках не получится сравнить 0 и boolean. А это тоже допустимый вариант, если допустим hardWork — boolean, a luck — число от 0 до 10. Так что либо !!, либо явное приведение:
return Boolean(isPrepared);
apachik
> hardWork — boolean, a luck — число от 0 до 10
раз такой зоопарк, то может не стоит писать в лоб через &&
а через
isPrepared = hardWork && luck > 0 && etc > 42;
Source
Это отличный вариант для строго типизированного языка. При динамической же типизации у вас нет контракта какого типа аргументы придут в функцию. hardWork внезапно может оказаться undefined.
Поэтому как не изголяйтесь, а явное приведение к boolean будьте любезны написать, раз функции требуется возвращать именно true/false. Забыть про это приведение — типичная ошибка новичка.
Кол-во минусов к моему исходному комментарию показывает только то, что есть немало людей, которые пишут код на JavaScript ещё хуже, чем автор статьи. При этом они сами пока об этом не догадываются… недостаток опыта он такой, даёт ложную уверенность в своей неправоте :-)
mayorovp
Откуда берется требование выдавать на выходе корректные входные данные при некорректных входных? Почему аргументы могут иметь произвольные типы — а функция вдруг обязана вернуть булев?
khim
Job Security. Подобные вещи приводят к тому, что программа глючил, сыпет ошибками, но работает… ну пока её хакеры не сломают. Программы, написанные с подходом GIGO — обычно содержат меньше ошибок и, в долгосрочной перспективе, работают лучше, но кто будет на JavaScript писать что-то, рассчитанное на долгосрочную перспективу? Лучше быстрее запуститься, а потом десятилетиями вылавливать ошибки…
Source
Ну, а что такое рефакторинг? Это улучшение кода без изменения его API. Исходный код всегда возвращает либо true, либо false. Требований у нас нет, значит мы при переписывании кода обязаны подразумевать что такое требование было. И результат итоговой функции должен совпадать с результатом исходной на всём множестве значений аргументов. Мы тут не вдаёмся в причины этого требования, может результат надо было запихнуть в JSON и отправить какому-нибудь микросервису на Go (вот он обрадуется, когда получит "undefined" вместо false).
Но причины требования не суть важны в данном примере, важно, что сохранность API — это базовые основы рефакторинга. И куча людей этого не понимает, что уже печально. Получается, хотели показать как они круты, переделав код из статьи, а по факту опозорились. Но не в силах признать ошибку, предпочитают заминусить… Ну ладно, желаю им профессионального роста. Может через пару лет поймут, что признать ошибку не стыдно, стыдно — не признать )))
mayorovp
Вы были бы правы — если бы речь и в самом деле шла о рефакторинге. Я же утверждаю, что данная функция изначально должна была быть написана по-другому.
Source
На основании чего? Это уже исключительно Ваши домыслы.
Мы обсуждаем варианты переписать существующую функцию, не имея никаких явных требований (есть только те, что заложены в код)… Это рефакторинг в чистом виде и ничто больше.
Вы же мотивируете только тем, что "автор — дурак, потому что я так считаю"… Это непрофессионально и все эти сокращения по факту оказываются дешевыми понтами, если не можешь сократить без изменения поведения кода.
khim
Устраивать рефакторинг не имея представления что ваш фрагмент кода делает и когда он используется — кончается слезьми.
Я бы, к примеру, объявил результат при передаче не-булевых параметров неопределённым. Или сказал бы, что получаем false если все параметры false.
Но стараться «сохранить жизнь» программе когда она уже «слетела с катушек» — приводит скорее к тому, что ошибки загоняются вглубь, чем к тому, что они исчезают.
Source
И что? В данном случае, единственное описание API — это сам код. Так тоже бывает.
Ну так я и пытаюсь эту мысль донести. Если делаете рефакторинг без явных требований, то не меняйте соответствие между входными параметрами и результатом для всего множества входных параметров.
Ну или не плачьте, когда прод упадёт :-)
В чём тут "слёт с катушек"? Вы ни разу в жизни не писали функций, которые должны строго возвращать boolean? Не так уж редко именно это и требуется, вне зависимости от входных параметров. Ваши фантазии на тему неопределённых результатов имхо оффтопик.
khim
Либо вам дают время на то, чтобы разобраться что оно такое тут должно было делать и как-то это задокументировать, либо ком «технического долга» будет стремительно нарастать, пока всё это не развалится к чертям собачьим. Хорошо бы, чтобы вас в этот момент поблизости уже не было.
Притом что они получают мусор?
Зачем? Чтобы сделать веселее отладку? Если вам нужно общаться с «сумасшедшим внешним миром», откуда приходит чёрт знает что — введите слой, где вы всё приведёте в норму, флажки станут bool'ами, количественные величины — числами и т.д. и т.п.
А дальнейшую работу уже ведите не мучаясь с тем, что у вас в каждой строчке каждой функции мина может быть. Closure, TypeScript не зря появились, ох, не зря.
Source
Вы утрируете. Полно случаев, когда можно слегка улучшить код по ходу дела, не меняя его поведения и не разбираясь, как можно/нельзя изменить его поведение. И в любом случае, если Вы хоть как-то измените поведение, то это уже будет не рефакторинг. И лучше это делать отдельным коммитом, когда надо.
Почему мусор? undefined — это вполне рабочее значение в JavaScript. Нравится Вам или нет, но факт в том, что это так.
P.S. Слушайте, я тоже не в восторге от JS и вообще фронтом практически не занимаюсь… но там сам JS-мир слегка сумасшедший, Вы конечно можете старательно огораживаться, не принимая их практики, но смысла мало.
taujavarob
Есть такое. ;-)
Но его постоянно пытались (ES-4) и пытаются (TypeScript) причесать под «нормальный». — Но тогда из него уйдёт фан, и ему придёт полный кобол.
w_bishop
Это не индусский код, это код нуба. Это норм если чувак только окончил, минимизация еще придет!
cultura
Минимизация нужна далеко не всегда.
Есть частенько злоупотребляют — эдакий способ похвастать, эка-вот как я умею.
А потом при чтении приходится лишний раз останавливаться в этом месте и думать заметно дольше.
Namyerd
return studying && hardWork && luck;
— вместо всего того что на картинкеAllexIn
За Java Script не скажу, но во многих других языках бывают ситуации, когда так делать нельзя.
Например в тех, где bool может быть отличным от 0 и 1. Потому что на выходе будет тоже значение отличное от 0 и 1. В тоже время иногда быват важно, что функция возвращала строго 0 или 1.
maxzhurkin
Строго true или false, вы хотели сказать?
AllexIn
Нет. Во многих языках true это всё что не 0.
Соответственно функция возвращающая bool вполне может возвращать значение отичное от 0 или 1.
А это бывает критично. Например, для записи в бинарном виде.
AllexIn
Возможно я не правильно вас понял.
Строго лексемы true или false, которые эквивалентны 1 или 0, а не логические true или false, в которых true может быть отличным от 1.
evocatus
del
AllexIn
Конечно может. Полагаю в любом языке, который может в перегрузку операторов. Естественно, при условии что bool в этом языке является числовым типом.
maxzhurkin
Но есть и другие языки, в частности такие, в которых нет никаких соответствий между любыми числовыми значениями и true/false
bitver
Назовите, пожалуйста, язык, в котором оператор && (логическое «И» в любой форме) возвращал бы что-то кроме true или false.
На картинке прошу заметить используется именно этот оператор, а не проверка каждой переменной отдельно.
AllexIn
конъюкция между 2 и 2 что вернет?
true вернет. Только не 1, а 2
Вы наверное удивитесь, но есть языки, где конъюкция не делится на логическую и бинарную.
AllexIn
UPD: побитовую, конечно, а не бинарную
Areso
Если у вас переменные A, B объявлены как булевый тип, но значение не присвоено, вы рискуете получить ошибку с крашем на C=A&&B, или C вам вернет что-то навроде undefined.
terrier
Уууу, есть многое на свете, друг Горацио…
DestroyComputers
Javascript. (2 && 3) вернёт 3, (0 && 3) вернёт 0
Ivanq
JavaScript, например. 2 && 3 вернет 3. И да, в JS есть и логическое И, и побитовое.
playermet
> Назовите, пожалуйста, язык, в котором оператор && (логическое «И» в любой форме) возвращал бы что-то кроме true или false.
JavaScript, Python, Lua, Ruby. Первые что в голову пришли, на самом деле намного больше.
impetus
в языке REXX логическое «И» вернёт конкатенацию, если хоть один из операндов окажется строковым. Соотв if в таком случае проверит его на слово «true»/«false» или «1» / «0»
Кстати && там — «исключающее или».
«Добро пожаловать в реальный мир», сэр.
JediPhilosopher
Ну выделение отдельной переменной иногда имеет смысл для удобства отладки. Если такие однострочные функции многократно вызывают друг друга бывает сложно отследить где именно возникает ошибка, так как в отладчике нечего добавить в watch (да, иногда можно добавить сам вызов функции туда, но это не всегда желательно). А тут поставил бряку на return и сразу списке локальных переменных увидел значение, которое функция вернет.
А вот if (b) return true else return false — это зло, да.
VasiliyIsaichkin
или модно, стильно, молодежно
InfiniteCode
Да вообще дефайном должно идти: #define GETDEVJOB(studying,hardwork,luck) studying&&hardwork&&luck
Зачем тратить время на вызов.
mayorovp
Вас бы тоже на работу не взяли. Если уж писать дефайн — надо хоть скобки поставить...
InfiniteCode
Сейчас на С++ наверное не взяли бы. Я на нем не писал уже лет 8, так что да, скобки забыл :)
vsb
Тратить время на вызов или не тратить — решать компилятору, а не вам. Ваше дело — дать компилятору возможность выбирать. Функция даёт возможность выбирать — вызывать её или встраивать. Макрос не даёт (помимо прочих недостатков).
InfiniteCode
Может сейчас и да, я не в курсе деталей того как сейчас С++ шный будет компилировать простые функции, но 10 лет назад когда на нем писал нужно было указывать явно. Если комплиятору указать inline, оно его вполне может проигнорить.
А вообще конечно мне решать, а не компилятору, компилятор следует указаниям. Раньше вполне приходилось для простых вещей, вроде swap BGR -> RGB, делать ассемблерную вставку, иначе компилятор не мог нормально «решать».
ardentum
Второй вариант хуже: нет поднятия, нет имени функции при отладке.
Stepanya
Gordio
Shaco
Всё нормально в этой функции. Комментирующие допускают типичную ошибку — не зная, что какие типы данных функция принимает, не уточнив, какой тип данных она должна вернуть, сразу вносят «оптимизации», экономя пару строчек кода.
А если всего лишь предположить, что функция обязана вернуть bool, то код выглядит совсем не бессмысленным. Потому что, на секундочку, в JS 1 && 2 — это 2, а не true (как раз кто-то там ниже спрашивал о языке, в котором && возвращает не bool… сюрприз!). Входные данные тоже могут быть разные — их может не быть (undefined), они могут быть не bool (тогда сработает приведение типов). Так что isPrepared совсем необязательно будет bool вообще.
И в результате, единственной оптимизацией, которая бы не изменила поведение функции, была бы замена блока if на return !!isPrepared;, с принудительным приведением типа двойным отрицанием. Тем, кто пишет на js регулярно, эта запись привычна. Для остальных, пожалуй, удачнее была бы запись return Boolean(isPrepared);
Господа, уточняйте постановку задачи :)
Stepanya
del
mayorovp
Если функция, записанная таким образом, принимает что-то отличное от булевого типа — это тоже дурной знак.
AllexIn
Весь продакшн — это один большой дурной знак.
В целом, тут как с goto — дестяь раз следует подумать, прежде чем использовать. Но и добавлять в черный список — тоже идея так себе.
maxzhurkin
Так это перевод, только переводчика я бы тоже на работу не взял.
musicriffstudio
если у вы предлагаете зарплату меньше 120000$ в год, то, возможно, он бы к вам и не пошёл.
SiGMan
Хорошие зряплаты для джуна. Впрочем
cultura
И джуниоры, устраивающиеся в ООО «КрутоДелаемВебСайты» и ООО «АутсорсимАутсорсСАпВорка» приняли это за чистую монету и теперь студенты, еще ничего не умеющие, сразу хотят 100500 денег.
lasc
Я бы больше доверят этому ресурсу http://h1bdata.info/ все же с официальных данных.
cultura
Ресурс, завешенный рекламой, вызывает у вас доверие?
Очередная наколенная поделка по быстрому срубанию бабла…
Julles
H1b зарплаты как правило занижены по сравнению с рыночными. Они по закону обязаны предлагать рыночную зарплату, но чтобы обойти это правило, они занижают позицию. То есть пишут что ищут джуниор девелопера на зарплату в 70К, например, а в требованиях перечисляют то, что соответствует квалификации синьора. Ну и неудивительно что никого не могут найти на штатовском рынке! Зато внезапно подходящий специалист находится в Индии и готов переехать.
taujavarob
В Штатах принято, при собеседовании, говорить что вы знаете и умеете всё что требуется работодателю. Какие бы требования он не выставлял.
Не знаете как взять интеграл, а в требованиях есть пункт что надо знать как их брать — говорите что умеете это делать, если хотите там работать.
P.S.
Сколько зарабатывают инженеры с визой H-1B в Facebook и EPAM
Julles
Эти вакансии пишутся заведомо под кандидов которые уже «готовы ехать». Я сейчас не про Гугл или ЕПАМ, а про индийские бодишопы которые массово получают H1B (или L1) для своих работников. И в названии вакансии онипишут «Джуниор» просто чтобы дать зарплату соответствующую средней по рынку для джуниора. Но ожидания и требования там вполне на синьора, и если есть джуниор способный этим требованиям соответствовать, то он и зарплату себе получше может найти, смотрим пример в статье.
Lyosha12
Вот это действительно заряд бодрости! Правда, на ночь глядя, но всё равно потрясающая статья. Благодарю за перевод, уверенность в своих силах точно возросла на порядок!
naething
Интересно, сколько он там продержится.
khim
Столько, сколько нужно. Если он шесть месяцев реально «втыкал» в вопросы, которые задают на собеседваниях, то к концу срока он примерно изучил всё, что в нормальных компаниях люди за первые пару лет изучают. Неудивительно что к концу он получал уже предложения на заметно бо?льшую сумму.
mrigi
Я правильно понял, что один самоуверенный школьник, закончивший какие-то курсы заспамил крупные компании на предмет работы выше юниора и кто-то даже его взял? Да, но после этого наступят будни, где нужно будет выполнять реальную работу и замаскированное отсутствие опыта может выйти боком.
xytop
За такую 10% такой зп можно иметь карманного индуса за океаном, которому аутсорсить всю свою работу :)
121212121
Ну на индусов я бы не ставил :)
У них сейчас популярна тема фейкового опыта.
Т.е. есть у них смышленые соотечественники, которые создают несколько фирм и за денежку обеспечивают трудовой стаж желающим.
И это работает, черт возьми!
Каким то образом некоторых потом берут в нормальные конторы, до поры до времени, естественно.
Ну а дальше они просто увольняются и идут на новое место.
foxmuldercp
Там просто сертификация потоком, ну, как у нас оплата проезда в маршрутках.
В общем такие "сертифицированные" "спецы" на рынке пишут вот такоэ
Gordio
И не такое пишут…
lazypacman
А может и не выйти.
ultraElephant
Если это действительно «школьник», то боком выйдет только для компании работодателя, самому же «школьнику» это обернётся только реальным опытом работы, что при любом раскладе — хорошо.
EGlaz
Если его уволят через пару месяцев — подпортят резюме. И рекомендацию не дадут. Дальше будет сложнее устраиваться. Или там не как у нас?
cultura
А че, у нас кто-то смотрит на рекомендации???????????????????????????????
Ну смотрят, конечно. Изредка. Это не само собой разумеющееся.
Как раз именно наша общепринятая безрекомендательная система как раз позволяет надувать одного работодателя за другим.
Легко.
Merkat0r
Оно, к сожалению, по зп работает только там. Меня тут переманивали в рф отделение одна весьма большая корпорация — зп в рублях, да вкусная и много выше среднего, но было крайне смешно читать оффер. Можно сказать я ржал как конь… Выполняя для той же корпорации(только напрямую — за океан) на фрилансе весьма маленькие заказики по томуже профилю у меня получалось почти в три раза больше :)
cultura
Крайне сомнительно.
Зачем им вообще нанимать фриленсеров, тем более в тридорога — если у них имеется целое отделение в РФ?
Да и вообще — найм фриленсера напрямую корпорацией?
Корпорацией?
Если конечно это действительно корпорация, а не одно название…
Думаю, это просто пустое бахвальство, а вовсе не реальные факты.
alexeykuzmin0
Вот-вот, вкусная зарплата здесь для опытного программиста — это в районе 300 тысяч. На фрилансе можно получить под лям? Как-то не верится
Merkat0r
Добро пожаловать в энтерпрайз, и у меня не совсем программирование
brick_btv
У авторов таких текстов лучше получается быть копирайтерами, нежели разработчиками.
Novosedoff
Ай, какая молодца! Я так чувствую ещё чуть-чуть и на Хабре появятся статьи типа «Как я написал функцию Hello World»
betsuni
Заглянул в оригинал в комменты. Там, к гадалке не ходи, «Молодец!», «Отлично!», «Вот это история успеха! Так держать!». Ни одного толкового коммента у них там. В чем достижение-то?
Что ни статья, так «great article, whaaayyy». Может, это роботы? Они по-другому не умеют мыслить? Более прагматично.
Помню, один раз была статья на англоязычном ресурсе, как там рассказывали, как один разработчик забросил свой репозиторий, а кто-то другой взял это репозиторий и довел до ума. И снова «great article, thank you» и подобная чепуха. Я спросил — а чем тут гордиться? Меня не поняли.
lostpassword
Насколько я понял из статьи, человек отправил почти три сотни заявок, прошёл 16 собеседований и в итоге устроился на работу, которая ему нравится — как в техническом плане, так и в плане зарплаты (причём, насколько я понимаю, устроился он не на самую низкую ставку). И всё это всего за три месяца после окончания школы программистов.
Как по мне — вполне себе «great article, whaaayyy». Вы не согласны?
baka_cirno
Это как бы показатель разницы в менталитете. У американцев первый позыв — похвалить, подбодрить, clap clap clap (даже если, прямо скажем, не за что). У людей, которые комментируют здесь, первым позывом является унизить, посмеяться, всячески продемонстрировать свое превосходство.
Это одна из причин, почему там недоученные джуниоры получают в разы больше, чем местные кулибины с гигантским самомнением.
betsuni
Не унизить, а трезво и рационально посмотреть на вещи.
А у них, что ни история, то первый комментарий «great article». А что в ней great? Там ничего по делу нет. Вода какая-то, как кто-то не смогу скомпилировать hello world, но потом собрал все свои силы в кулак и все-таки скомпилировал. И бегом писать статью, в которой еще вставить lesson learned — других поучить жизни. Нет, спасибо.
Вот поэтому там и развилось всяких коучей и личных тренеров-достигаторов. И клиенты у них такие же, видимо — те, которым надо, чтобы им всегда подсказывали и подбадривали и давали мотивацию. Постоянно.
baka_cirno
Если смотреть на вещи рационально, то модель, в которой людей принято поощрять, даже если некоторые из них не совсем этого заслуживают, является более эффективной, чем модель, основанная на взаимном угнетении, недоверии и желании всех вокруг унизить (известная под названием «пауки в банке»). Это факт, проверенный эмпирически. Они хвалят не потому, что такие тупые или наивные, а потому что у них общество эволюционировало до этого. Если человек не тырит мелочь по карманам, а даже какой-то там код пишет и старается, то почему бы его не подбодрить? Примерно так они мыслят.
mediarium
Такой взгляд на вещи рационален только если вы желаете взростить социум посредственностей. Рекомендую ознакомиться с фильмом “Whiplash” (2014 года).
“There are no two words in the English language more harmful than «good job».” ©
taujavarob
baka_cirno > Если смотреть на вещи рационально, то модель, в которой людей принято поощрять, даже если некоторые из них не совсем этого заслуживают, является более эффективной, чем модель, основанная на взаимном угнетении, недоверии и желании всех вокруг унизить
betsuni > А у них, что ни история, то первый комментарий «great article». А что в ней great?
Ноги растут отсюда:
Там приведён практический алгоритм почему они именно так поступают, а мы нет.
EGlaz
Я согласен, что поощрять полезно. Но я не понимаю, как можно брать «недоджуниора» на ставку выше джуниора. То есть компания нанимает программиста, тот пишет код, компания зарабатывает на этом, часть этой выручки платит этому программисту. Так вот после школы кодеров он действительно пишет код на эти деньги?
Напомнило ситуацию из сериала Silicon Valley (1 или 2 сезон), когда Башку взяли в Hooli, а когда поняли, что он нихрена не может — его сняли с проекта и отправили на 3 года (контракт) гулять за зарплату.
cultura
Мечтать не вредно.
Но на самом деле не является. Проверено.
Редко-редко, кто адекватно воспринимает такое преждевременное поощрение.
P.S.:
И для последующего трудоустройства это медвежья услуга как самому сотруднику так и будущим нанимателям.
Проводились исследования.
Наши улыбки — это знак личной симпатии.
Американские улыбки — это признак вежливости, не более того.
Я за того, чтобы по улыбке можно было личную симпатию определить.
То же самое и с похвальбой за успехи чисто из вежливости.
Она может и подбадривает
Но еще и дезориетирует.
У меня была девушка, которая меня хвалила.
Потом появилась другая, которая не стеснялась говорить, что мол одежда грязная, да прическая не красивая, да живот большой.
Я стал обращать внимание на эти вещи — лучше одеваюсь, занимаюсь спортом и пр.
Первая оказала мне медвежью услугу. Хотя мне с ней и было комфортнее, но комфортнее ничего не делать, не развиваться, не совершенствоваться.
Благодаря рациональному взгляду на меня второй я сейчас могу пробежать 50 километров и после этого отлично себя чувстовать.
В принципе обе точки зрения имеют силу.
Все зависит от того кого вы хотите взростить.
Разумеется мера нужна в обоих точках зрения.
xoralex
Great comment! Good job.
Laney1
лол, ну и статья. Врать о своем опыте это последнее, что надо делать на собеседовании. На той стороне тоже сидят не дураки, вас сразу раскусят и как правило пошлют подальше. Что собственно и произошло с автором, который "получил выгодные предложения только в 2.8% случаев".
Наоборот, гораздо больше уважения и желания сделать оффер вызывают кандидаты, которые с самого начала честно говорят "я этого не знаю", "я это не использовал" (особенно в мире JS, где фреймворки меняются каждый день). Во-первых, в этом случае велик шанс, что работодатель тоже окажется честным. Во-вторых, вам не поручат то, с чем вы не справитесь. В-третьих, низкая зарплата очень быстро вырастет, если вы будете хорошо делать свою работу.
Единственный правильный совет в статье — выходить напрямую на реальных разработчиков, которым нужны люди в команду. Под лежачий камень (т.е. под ничем не примечательную строчку в середине списка из пары десятков, а то и сотен кандидатов) вода не течет.
lostpassword
Ну, у товарища всё же получилось. А победителей, как известно, не судят.)
Laney1
у товарища получилось всего лишь найти работу. Что это оказалась за работа, что случилось дальше, и что могло бы случиться, если бы автор поступил по-другому — история умалчивает.
Может быть, автор действительно компетентный разработчик, который легко мог устроиться в хорошую компанию на зарплату джуниора 3 месяца назад и как раз сейчас получить повышение. Может, банальный обманщик, который будет быстро уволен и начнет мотаться от одной фирмы к другой, пока их всех не накроет очередной кризис. Кто знает.
lostpassword
Что могло бы случиться, если бы автор поступил по-другому — это вообще неизвестно. В данном конкретном случае случился оффер, который товарища устроил. Дальше всё зависит от него — как, собственно, и при любом трудоустройстве.
Так что не вижу тут никакого предмета для критики.
Gordio
Есть знакомые, которые на личном опыте оспорили Ваш комментарий. И даже как-то работали (около года), опыта набирались…
NeoN88
Из опыта собеседований у нас на работе:
приходит куча людей на вакансии сеньёров и тех-лидов со знаниями от силы на джуна. то есть люди вообще не знают базы и видно что у них нет ни опыта ни понимания как работают многие вещи.
Так то отсутствие опыта не так то просто и скрыть.
Я в своё время после курсов не стал заливать что я мидл, а честно сказал что нет опыта. Меня взяли и я н практике понял что отсутствие опыта в рабочем процессе не скрыть. У нас была маленькая команда с ежедневными коллективными код-ревью (мега-полезная штука для развития). И за пару лет мне таки удалось наработать хороший опыт и начать разбираться в предмете.
afrokick
Можно ли считать человека мид/сеньером, если он офигенно делает калькуляторы(то есть узкий круг задач выполнялся много раз), но не знает базы?
Не раз сталкивался с мид/сеньер кандидатами, которые утверждали «я очень круто умею ставить кнопочки на форме и верстать UI, но знать не знаю и не хочу знать про стек и очередь, спросите лучше про кнопки».
mayorovp
Для человека, который делает формочки, база — это не стеки и очереди, а. внезапно, API контролов.
От специалиста по формочкам ожидается, что:
button76_Click
.Simplevolk
К тому же, он знает как сделать так, чтобы контролы визуально выглядели красиво (хотя внутри его XAML код может быть очень много хаков:) )
EGlaz
Человек, который делает формочки — как бы не программист, а скорее «программист по формочкам». То есть кусочек полноценного программиста.
khim
Слава богам ответ на этот вопрос, наконец-то, найден. Такого человека можно считать мидлом или сеньором, но его нельзя считать Software Engineer'ом. Вообще. В принципе. Никак. Это — другая специальность. Application Engineer.
Вопрос закрыт.
lookid
https://www.youtube.com/watch?v=Sz0o9clVQu8
Millennials in the Workplace Training Video
Ох уж эти миллениалы.
Mariik
А разве автор оригинального текста не является именно младшим разработчиком? Не пойму чему именно он возмущается.
YourDesire
А мы вот сидим в своем Уссурийске и клепаем сайты (читай — пиши, дизайнь, админь, продвинь) за 20-30 т.р. / мес. Работодателя не шибко и интересует твой список скилов…
betsuni
если бы вы родились в США, то и вы бы сидели там и клепали бы там. вы там были? там — не рай случайно, нет? тотальная слежка, запредельная арендная плата в СФ и медицина по такой цене, что болезнь может съесть всю вашу годовую зарплату. неплохо, я думаю.
Areso
А где-нибудь на окраине необъятных просторов человек просто умрет, потому что не получит квалифицированной (или вообще какой-нибудь) медицинской помощи (слышали, бюджет на медиков опять на треть сократили?).
Велика разница…
cultura
Американцы без страховки или с плохой страховкой даже от скорой помощи отказываются, стремяться как можно раньше покинуть больницу с неподзажившими ранами от операций, занимаются самолечением.
И таких очень много. 45 миллионов американцев не имеют страховки вовсе.
http://argumenti.ru/rassledovanie/n415/299863
Простите, но у нас такого беспредела нет — чтобы 45 мл. населения вообще не имели доступа к мед. помощи. Это чисто американская особенность.
А еще есть те, у кого минимальная страховка, покрывающая только простейшие ситуации. И таких уже — подавляющее большинство.
В реальности хорошая медицинская помощь типа как в «Докторе Хаусе» доступна только 15% американцам.
Американцы с хорошими окладами, как правило, автоматически имеют хорошую страховку.
Так и у нас те, кто имеют хорошие зарплаты — вполне могут лечиться у хороших медиков.
Никакой разницы.
Разница только в том, что у нас меньше оклады, но и страховка из окладов не вычитается.
cultura
http://www.usinfo.ru/medicina.htm
mafia8
Бизнес-план: возить американцев на лечение в Москву. Или в другой город в России.
cultura
Так, кстати, делают.
Называется «медицинский туризм». Термин удостоился помещения в Википедию, значит, довольно устоявшийся термин.
Медицинский туризм даже внутри РФ.
Скажем, москвичи любят лечить зубы в провинции.
И туризм и сэкономил. А качество — то же.
Хорошие стоматологи в крупных провинциальных городах РФ используют ровно те же технологии, что и их собраться из США.
За исключением особо сложных медицинских случаев и штучного оборудования ведущих клиник — услуги ровно те же.
P.S.:
Но, как правило, это делают, летая в гости к родственникам.
В цитате упомянуто, что люди иногда летают из США в Москву (очевидно, выходцы из РФ).
К нам в провинцию из Москвы прилетают на побывку и полечиться детки тех, кто живет здесь.
varnav
Без страховки нынче нельзя — а то штраф-с.
https://www.healthcare.gov/fees/fee-for-not-being-covered/
Wrangler
В ответ на реплику человека о сокращении расходов на медицину в России, Вы притащили огромный (и сильно устаревший) материал о том, как плохо «там». Знаете, что такое «обратный карго-культ»? Приобщитесь, очень любопытное явление.
Я не буду приводить пруфлинки на неизвестно кем и с какой целью написанные статьи, а дам собственные примеры.
— В январе в США делали операцию по удалению жёлчного: лапораскопия за час-полтора, полчаса на отходняк и — домой; три дня не делать резких движений. Хирурга нужно выбрать из списка, но список достаточно велик. Общая стоимость всего медобслуживания с предварительной диагностикой и лекарствами вышла ~36-38 тыс. долларов. Из кармана пришлось заплатить ~1200-1300 со средней зарплаты сениора, и это размазано на несколько месяцев. Лекарства, кстати, тоже покрываются страховкой значительно.
— В октябре в США у подруги, приехавшей в гости возникла резкая боль в брюшной полости, пришлось вызывать скорую. Американской страховки у неё, конечно же, не было. Разговор по телефону занял 3 минуты, скорая была на месте через 6 минут (ночью дело было). В больнице скорой нашли русскоязычного медицинского переводчика минут за 5. Сделать успели ЭКГ, УЗИ, биохимию крови, записать историю болезни, полечить уколами и микстурами, прописать дальнейшее лечение и назначить визит к гастроэнтерологу. Оказалось обычным, но очень сильным пищевым отравлением, и дальнейших расходов не повлекло. В итоге всё суммарно обошлось ~2500 долларов. Один важный нюанс: при выходе из скорой заплатить пришлось 350. Счета на остальное идут частями и будут идти ещё с полгода, так что продавать машину/квартиру/почку для оплаты таких счетов не придётся.
Прошу всех извинить за этот эмоциональный оффтоп, не могу удержаться, когда обсуждение превращается в Вести недели.
cultura
Ровным счетом никакого противоречия.
Вы — сеньор.
С соответствующей страховкой.
Подавляющее большинство людей имеют куда как меньшие доходы.
И старховки. Если имеют.
В Америке хорошо болеть богатым.
И тем, кто зарабатывает достаточно, чтобы у него была хорошая страховка.
Только и всего.
Так что нет никакого противоречия.
Согласно открытой и свежей статистике — у 45 миллионов в США нет страховки вообще.
А у еще 100 млн. страховка стрёмная, по которой даже зубы не вылечишь.
И т.д.
Wrangler
Мне вот что непонятно: в ответ на короткую реплику о, вероятно, наболевшем — что в глубинке трудно получить квалифицированную медпомошь, Вы сделали мегапост о том, как плохо с медстраховками в США. Зачем?
Вы занимаетесь демагогией. Ещё и опирающейся на *устаревшую* статистику, так как сейчас приведённые цифры заметно ниже, что показывает прогресс.
Ну и про страховку зубов: в США она, как и страховка зрения — это отдельные статьи, не связанные с общей медстраховкой, они часто даже предоставляются отдельными страховыми компаниями. Моя страховка зубов обходится $6-8/мес, а зрения — в два раза дешевле. По-моему, такую сумму нетрудно платить даже с пособия.
taujavarob
Wrangler > В январе в США делали операцию по удалению жёлчного: лапораскопия за час-полтора, полчаса на отходняк и — домой…
Беларусь. Обострение жёлчного. Лапароскопию не стали — потому что — как сказали — обострение.
Полосная операция. 2 недели в больнице. 2 недели дома.
2000 год. 25$ на руки анестезиологу (он у них был за «поговорить об операции» и для сбора денег).
Продавленные кровати. Еда нормальная. Но матрацы с комками ваты запомнились.
2000 год. Минск. Больница Скорой Помощи. Операции там такие идут потоком непрерывно.
Да, был у них ещё «телевизор» — дырка в животе и туда вводят камеру со светом. Я отказался. Не хотел дырку в животе получать. Это обозлило хирурга. Вот он меня и располосовал.
Узи камень нашло на третий раз (на второй день)
Julles
Мне кажется фраза «не иметь доступа к мед.помощи» некорректно сформулирована. Доступ есть у всех, застрахованных или нет. Просто по итогу выставят счет, и нужо будет бодаться по сумме этого счета, долго его выплачивать или объявлять банкротство, если сумма вышла астрономическая. Самым бедным положена бесплатная страховка, так что в «ловушку» попадают обычно те, кто работает и имеет уровень дохода достаточный для проживания, но за страховку вынужден платить самостоятельно, и считает что ее себе позволить не может («считает» тут специально, поскольку у разных людей — разные приоритеты, и некоторые считают что новый айфон важнее страховки, и вообще «они не болеют»).
Плюс ситуация не одинакова по США, а варьируется от штата к штату. В большинстве «демократических» штатов программу medicaid расширили и она покрывает всех, чей доход ниже 26К в год, а людям со средним доходом дает скидки на покупку страховки. В «красных» штатах, которые последние несколько лет потратили на борьбу с обамакеар, это расширение не приняли, в итоге в некоторых штатах бесплатная страховка положена только людям с годовым доходом менее 3000. При стоимости страховки в 300-1500 в месяц в зависимости от состава семьи, понятно, что семья с доходом в 20 000 вряд ли сможет себе страховку позволить. Так что остается только обслуживаться за деньги, и объявлять банкротство, если грянет гром.
lasc
Вас же в уссурийске не на цепи же держат, едьте туда где интересуются и платят.
Areso
Всей Россией жить в Москве, хорошая идея? И пенсии почти вдвое выше, и минималка по оплате труда, сколько там нынче с нового года будет, 17 тысяч? Да и в целом уровень оплаты труда хороший. И интересуются и платят. А в Уссурийске, наверное, только уссурийские тигры и ходят в заказчиках, а что с них взять — четыре лапы, хвост да усы… при таких раскладах вообще хорошо, что в Уссурийске что-то людям платят!
pilipim
Человек прокачал навык прохождения собеседования. А дальше то что?
А дальше, научил других.
Искать специалиста сложно. Как правило, нет того кто будет работать так как надо сразу. А значит у него есть время на старте, пока его не раскусят. А у самого есть шанс надорваться.
По моему, лучшее решение, это честно говорить о себе и занять позицию интерна в желаемой компании. Потом качать скиллы пару лет…
igrishaev
Тоже недавно искал работу на западном рынке. Отвечают очень мало, судя по письмам, 1-2%. Процесс очень долгий, будте готовы ждать до 3-х месяцев.
nez30
не знаю как вам, а мне помогают сильно вот эти ребята http://www.pro1c-msk.ru/
Creatis
Чисто для мотивации, статья не плохая. В тонкости кодов я не вникаю, и не придаю этому значения так как полный нуб в этом, но статья толковая, читается легко.
ToSHiC
Собственно, из-за обилия таких «специалистов» и растут зарплаты в долине у нормальных разработчиков. Это же самый настоящий пузырь.
cultura
Ты так говорите, будто это плохо?
Или у вас своя фирмочка в долине и этот пузырь лично ваши расходы на сотрудников повышает?
p9202583853
А разве в перевод не надо было вставить «Как»? «Как я провел… кучу компаний», или «Всего за 3месяца....»
просто то как это сейчас написано коробит глаз! (;
«Я провел 3 месяца, пытаясь устроиться на работу после лагеря программирования, и вот чему я научился»
ShmeLo
«Одна компания использовала это против меня и предложила мне 60000$ (столько предлагают младшим разработчикам).» — А ничего что это около 300к рублей в месяц? Это как бы и для Москвы очень даже хорошая зарплата для опытных специалистов.
youlose
Там ещё налогов процентов 40, забугорные товарищи любят называть зарплаты годовые и до вычета налогов.
LaXiTy
я думаю это годовая зарплата, не так уж и много
fenixlz
А что, кто-то утверждал что это в месяц?
ShmeLo
60 000 / 12 ? 65 = 325 000
fenixlz
Я именно это и имею в виду.
Gemorroj
Отрасль растет, лишних людей, подобных герою статьи все больше…
vKreker
На собственном опыте скажу, что email-контакт, конечно, повышает шанс быть замеченным, но шанс напороться на игнор еще выше. У нас не заведено говорить «нет», поэтому HR предпочитают играть в молчанку и всячески огораживать себя от соискателей. Получая письмо в обход стандартной процедуры, они могут «не заметила, потому что очень много писем». А секретарь на ресепшене по телефону скажет, что у них не заведено соединять с HR.
Писать напрямую спецам в обход HR — моветон, можно сразу получить бан.
varnav
Здесь будет уместен анекдот:
— Поручик, раскройте секрет, как вы так ловко разводите женщин? — О, я подхожу и спрашиваю: мадам, позвольте вам впендюрить-с! — Но поручик, за это ведь можно и по лицу получить! — Можно. Но чаще впендюриваю!
echo_mont
3 мес в каком-то почти школьном летнем лагере??? Вау!
Список с гитхаба я возьму на заметку, спасибо автору.
Madzi
return !!studying && !!hardWork && !!luck;
AxisPod
3 месяца обучения и еще на что-то расчитывать? Если бы так было, давно бы уже никто в вузах бы и не учился и не тратил свою жизнь на обучение.
cultura
Программисту в ВУЗе учиться не нужно.
98% программистов занимаются всю жизнь работой, которой их вполне могли бы научить в ПТУ и техникумах.
ВУЗ — это пережиток времени, когда профессия программиста была элитной-штучной. Это лет 30 тому назад было.
Оставщиеся 2%, действительно, занимаются очень серьезными вещами — для которых, парадокс, вузовского образования уже недостаточно.
ВУЗ программистам не нужен.
Но курсы длинной в 3 месяца — это перебор, конечно.
Нужно хотя бы 2 года обучения.
wsf
Угу а потом такие «ВУЗ не нужен» не могут TCP от UDP отличить. И начинают названиями фреймворков сыпать.
mayorovp
Меня тоже расстраивает когда кто-то не может TCP от UDP отличить. Вот только, к сожалению, ВУЗ — не гарантия наличия подобных знаний...
cultura
Вы взаправду считаете, что TCP от UDP нужно учить 4-5 лет отличать???
Основы HTML нам в свое время рассказали за 30 минут.
Основы TCPIP — за 20 минут.
;)
Если кто-то сказал вам, что этому нужно учить годами — то тот просто тупо хочет денег.
Не учить тебя, Карл,
а просто взять твои деньги, Карл.
AxisPod
Т.е. вы считаете, что теория это бред? ВУЗы помимо того что учат тупо ЯП, дают хорошую теорию, математику, физику и т.д. Учит в принципе работать правильно, работать с литературой и самое главное — Расставляет акценты.
Да, есть те, кто способен и сам это освоить, но будет это куда дольше. И это скорее исключение из правил.
Да, ВУЗ не гарантирует того, что специалист выйдет годный, но отсутствие ВУЗа с большей вероятностью гарантирует, что ничего путнего работодатель не получит.
mayorovp
Для того, чтобы клепать формочки или верстать странички — выходящая за рамки школьной программы математика не требуется.
И уж точно программисту не нужны философия, социология и культурология.
AxisPod
Верстать странички должен верстальщик, а не программист. А клепать формочки должен джуниор, но помимо джуниоров явно еще повыше должен быть уровень. А вот общаться явно программист должен, да и адекватным тоже и опять же общая программа хуже человека не делает.
mayorovp
Делает, делает. Особенно когда профильные предметы учатся по остаточному принципу, потому что "общая программа" важнее.
cultura
Кому нужна физика?
Админам? 1С-никам? PHP-истам?
Математики для работы 98% программистов достаточно на уровне 6-7 класса школы. Даже не 10-11.
А учить работать с литературой 4-5 лет — это чрезвычайно расточительно.
AxisPod
Ах да, других же программистов не бывает, да и физика даётся в качестве общего предмета обычно. А вот математика конечно же не нужна, правильно. Обработки данных нет, это фантастика, компиляторы, поисковики да и кучу другого никто не делает, оно само появляется, просто вот так прямо из великого void и берется.
А когда даже с вуза приходят студенты на собеседования и смотрят в книгу, видят фигу, видимо даже и этого недостаточно. И опять же поглядеть на тостер, 99% вопросов потому что лень книжечку почитать или просто отсутствует понимание того, что это куда лучше, чем просто ждать, пока за тебя кто-то сделает.
mayorovp
Вы так пишите, как будто каждый программист занимается какой-нибудь обработкой данных...
cultura
ОК, давайте добавим сюда фронтендеров (не тех, что игры делают, где, возможно и понадобится какая-то математика/физика, а возможно и нет).
Админы, PHP, 1C, фронтенд — это 90% программистов.
Насчет компиляторов — это смешно.
Вы сами-то хоть один компилятор в мире написали?
А ваши знакомые?
Мне не нужно знать как бегают электроны и какие они создают магнитные поля — чтобы просто включить лампочку. Очень жаль вас, если вы без этого знания боитесь подойти к выключателю или розетке.
Напротив.
Нужно сокращать до 2 лет.
Фигу вполне можно научиться видеть за этот срок.
amaksr
Встречались не раз красавцы с большими запросами, им даже давали то, что они просили. Но по прошествии probation period — bye-bye по формулировке низкой эффективности.
cultura
Ага, такое не редкость.
Встречал таких более чем неоднократно.
В среднем 1 раз в 2 года в небольших конторах.
2 раза в год в больших конторах.
Действительно, можно получать больше денег, чем стоит твоя средняя квалификация на рынке.
Это касается не только ИТ
Видел такое и среди ИТ-шников и среди менеджеров и пр. и пр.
Поскольку там не 5 и не 10 процентов разницы, а бывает и в 2 раза выше оклад — то усилия по бомбардировке 300 фирм запросами вполне оправдываются.
Scf
Не статья, а просто какой-то кошмар работодателя. Расскажу со стороны собеседующего: разместили вакансию, и тут поперли косяком люди с красивыми резюме, но в программировании ни в зуб ногой. Почти всем хватило трех простых вопросов:
А на каждого надо тратить время...
cultura
Ну давайте проверим меня.
20 лет реального опыта.
Первый вопрос. Не знаю что это за *List, я вообще в другом языке спец, не в этом.
Ну разве что косвенно по названию, что первый — массив, следовательно доступ по простой прямой адресации (по смещению), а второй это связанный список и доступ куда как более медленный, предполагается перебор, в худшем случае (когда нужно найти последний элемент) — придется долго перебирать все до единого элементы. И только доступ к первому-второму элементу сопоставимы по времени с доступом к элементу в массиве.
Второй вопрос:
Ну дык это же от размера файла зависит. Если он целиком помещается в оперативку, то это всего-то «открыть, прочитать, сортировать, записать» с использованием какой-то библиотечной функции.
А вот если размер файла может быть непредсказуемо огромным и программа должна это уметь — это весьма и весьма непростая задача. Уж всяко несопоставимая с первой трактовкой этой задачи. И далеко не всякий отличник учебы, сдавший всего Кнута на 5, сможет сходу решить ее.
Про рекурсию просто. Но, согласен, что это хороший тест. Рекурсию многие даже «настоящие программисты» не понимют.
Более того, на заре программирования (лет 50 назад) её даже опытные люди (профессора и т.п.) хотели запретить при проектировании какого-то языка программирования (то ли Алголя, то ли еще какого из тех времен).
mayorovp
Это вообще как? У Кнута она же разбиралась...
cultura
Вы помните все, что написано у Кнута?
Гм.
Вам нужно попросить родственников найти и держать под рукой телефон псих. больницы — ибо вы на грани.
Я знаю, где искать решение этой задачи (например, как раз у Кнута).
Но я не помню как её решать.
И, кстати, вполне возможно, мне проще будет самому придумать решение, а не разбираться с тем, что написано у Кнута.
khim
Половина Кнута посвящена алгоритмам на магнитных лентах. Что было необычайно актуально в момент, когда Кнут это писал (десятилетия назад) и, внезапно, оказалось снова «на острие» в последнее время. Так как памяти на соседней машине в датацентре по свойствам хотя и отличается от магнитной ленты, но многие алгоритмы — ложатся без изменений.
Skerrigan
Поддерживаю, что там по навигатору? Интересует возможность интеграции с BMW 2004-го года.
mayorovp
Так в том-то и дело! Достаточно знать как такие алгоритмы придумываются — и второй вопрос не будет представлять сложности даже на больших размерах файлов.
cultura
В реальном проекте — да.
Далеко не во всяком. И даже не в каждом сотом проекте, но — да.
И вот потому что это нужно даже не в каждом сотом проекте, то для собеседования по приему на работу, если вы не MS и не Google — как то слишком.
mayorovp
На собеседовании надо показать, что вы умеете применять свои знания. Умеете думать. Или вы считаете, что если вы не MS и не Google — то и думать вашим программистам не надо?
Кстати, почему вы уверены, что Scf работает не там? :)
cultura
Уверен, что у Google и MS нет проблемы с отсеиванием тех, кто не знают про рекурсию еще на более ранних стадиях, чем с ними встречался бы Scf
Тестить следует общие познания (я так и делаю, когда провожу собеседования), общий кругозор.
А вовсе не такие хитрые и специфические мало кому нужные алгоритмы проверять как внешняя сортировка.
Scf
Если интересно мое мнение, опыта у вас много, но читаете по профессии недостаточно)
При оценке быстродействия структур данных положено различать разные операции над ними и использовать o-нотацию. big data, map-reduce, сортировка в кластере, наверное, знакомы всем, кто активно интересуется современным IT. Самый простой способ решить такую задачу — сортировка слиянием (merge sort). Имхо, каждый уважающий себя программист должен прочитать хотя бы одну книжку по алгоритмам. Мне нравится вот эта: http://www.ozon.ru/context/detail/id/6290126/
Конечно, нельзя требовать знание всего этого с джуна… но кто сказал, что эти вопросы годятся только для него?)
cultura
Про о-нотацию в курсе.
Но не думаю, что знание этих самых «о» реально должно быть важно при приеме на работу.
mayorovp
Если человек не знает О-нотации — значит, он не умеет оценивать сложность алгоритмов. А значит, он будет "плавать" в тех задачах, где важна оптимизация.
cultura
Когда вы последний раз оценивали с помощью о-нотации какой-либо свой проект?
Когда вы проводили последний раз анализ какой-либо библиотеки на предмет использования в своем проекте и вам нужно было о()
mayorovp
Вчера. Вот буквально вчера писал код и думал: "тут для простоты я использую квадратичный алгоритм — значит, надо убедиться, что большие наборы данных сюда не попадут".
Source
Шикарный пример оптимизации xD
А если серьёзно, то проблема действительно есть… мало программистов задумываются о производительности своего кода, хотя в большинстве случаев это упирается в незнание SQL. Ну и да, иногда попадаются на ревью квадратичные алгоритмы там, где можно было бы обойтись линейным, но это гораздо реже.
cultura
Реальные оценки — они на совсем других, более банальных, уровнях:
И это собственно, все, что нужно знать, чтобы в типовых случаях поднять производительность программы процентов на 80%.
«Квадратичные» алгоритмы и т.п. — занимаются оставшимися 20% производительности.
В реальном бизнесе до этой оптимизации дело редко когда доходит, потому как в нынешние времена время программистов дорого, а при том что железо дешево.
mayorovp
Но что будет делать ничего не знающий программист, когда алгоритмически сложная задача внезапно возникнет перед ним? Просто возьмет и напишет нужный алгоритм (или авторитетно скажет что это невозможно и надо искать альтернативный путь) — или будет в панике задавать на ru.SO дурацкие вопросы?
То есть для этих задач теория ну вот совсем не нужна?
cultura
Цитата из меня:
Ответ на цитату:
Мне вас очень жаль, если до столь очевидных вещей вам нужно доходить только после 4-5 лет теории в ВУЗЕ.
Это вполне можно поставить фактом и заставить зубрить на третьем месяце обучения программированию.
Безо всякой теории.
Вы взаправду считаете, что вот так много лет можно щи хлебать лаптем (не заниматься ничем подобным), а потом — бац — вас приглашают во дворец фирмы Google (возникает прямо-таки сложная задача и вы первый кому её поручают после долгих лет отсутствия у вас подходящего под эту задачу опыта)?
95% программеров никогда в жизни не будут заниматься ничем подобным даже рядом.
Никогда не будут.
Это отнюдь не повод их все учить в ВУЗах — проедать государственные деньги, деньги своих родителей, позднее нанинать работать (что вредно для ВВП)…
Подавляющему большинство вполне хватит на всю жизнь и техникумов и ПТУ.
А оставшиеся 5% — да, вполне могут заниматься программированием на совсем других уровнях.
Но их всего лишь 5%…
Уверяю вас:
Никакая теория из 2-х моих высших образований (профильных) ни разу мне не пригодились за 20 лет программирования.
Только общий кругозор.
mayorovp
Как-то вы хитро перешли от азов оценки сложности алгоритмов к ВУЗам и ПТУ.
А хитрая задача — она где угодно возникнуть может. Случайно.
PS
Поставить фактом — что? Как вообще можно ставить задачу максимизации или минимизации, не дав средство оценки максимизируемой или минимизируемой величины?
cultura
Если вы когда-то умели решать сложные вычислительные задачи, но при этом целыми днями и годами делаете сайтики да рисуете интерфейсы в Андроиде, то вы деградируете в области решения сложных вычислительных задач, но при этом отлично затачивайтесь на интерфейсики.
Нет никакого рационального смысла 4-5 лет учиться, чтобы потом перетачивать свое мышление с вычислительных задач на другие.
Неожиданно такие задачи не возникают.
И все равно эти задачи поставят вас в тупик — ваш заточенный на интерфейсики мозг будет их решать долго.
Да, вы что-то вспомните, где-то почитаете и, долго-долго, но решите.
Но зачем тратить лишние годы в ВУЗе, если 99% нужного программисту знания осваивается за 2 года даже с запасом. А еще 2-3 года программист тратите на теорию, которая или вообще никогда не пригодится в его работе никогда или пригодится раз в 10 лет.
Если вы джун или студент — то еще понятно ваше непонимание.
Но если вы хотя бы миддл…
То вы очень слабый программер, если вам не очевидны эти правила:
mayorovp
Пожалуйста, прочитайте мой комментарий еще раз.
cultura
Программирование — это не математическая функция с известным графиком. Когда можно предсказать точно — здесь приложишь столько-то усилий — получишь такой то выхлоп. Точно.
Все не так.
В программировании, если конечно речь не идет о бесконечном финансировании — большое значение имеет финансовая рациональность.
Поэтому задача частенько ставится не
«оптимизировать, чтобы отклик был не более 10 us»,
а по военной системе:
«копать отсюда и до обеда»,
другими словами — «вот ограниченный бюджет, что лучшее мы можем выжать из этого бюджета».
другими словами — бюджет (время, деньги) закончился — завершай и оптимизацию. До скольки удалось сделать — смотрим. Удается получить дополнительное время/деньги — продолжаем оптимизацию.
Не удается — останавливаемся на этом этапе.
Как правило в 95% случаев дополнительные бюджеты времени и денег на слишком глубокую оптимизацию не выделяют.
Поэтому вполне достаточно следования сразу при проектировании системы основным принципам.
То, о чем пишете вы — это уже ближе к переоптимизации и на ранних этапах не рекомендуется.
А то вы прототип/альфу будете выкатывать неоправдано долго.
mayorovp
Почему вы так решили?
cultura
Я отнюдь не отрицаю полезность знаний как таковых.
Я отрицаю необходимость обязательного получения глубоких теоретических знаний, чтобы работать успешным программистом.
Вы бы еще написали — защитивший диссертацию на кандидата технических наук будет более крутым программистом.
Нет. Он будет, скорее всего, средним программистом, а то и джуном (видел таких кандидатов технических наук в большом числе), за исключением своей очень узкой области.
Глубокие теоретически знания вам не нужны, чтобы принимать решения в области программирования на практике.
20 лет опыта программирования мне говорят об этом.
P.S.:
Профильное образование имею.
Не пригодилось.
Пригодился только общий кругозор,
уверенность в своих силах, которые дает ВУЗ.
Не припомню ситуаций, где мне прям кровь из носу
нужно было точно знать что именно здесь: o(n) или о(n^2).
Вполне достаточно понимания — как сделать быстрее.
Глубокой теории для этого не нужно. Выбор путей решения в реальном мире не столь велик.
Если у вас после 4-7 лет опыта не будет чутья чтобы без о() сразу видеть лучший путь — вы выбрали явно не ту профессию.
mayorovp
Да где вы вообще увидели глубокие теоретические знания-то?
cultura
В учебных заведениях должны учить архитектурам, учить замеры производительности производить, давать практику работы с разными видами СУБД.
А математика, физика, о()?
Какая о(), когда программист по десять раз на дню принимает решения куда двигать написание программы и непрерывно оценивает свой алгоритм.
Оценка основанная на здравом смысле и опыте — имеет преимущество перед академическими знаниями.
cultura
Вах. Круто. Чувствуется свежезакончивший (или еще учащийся; в крайнем случае, думаю, не более как 5 лет назад закончивший).
Я такие вещи безо всяких квадратичных слов оцениваю.
Давным-давно все уже отлично работает на уровне интуиции.
;)
cultura
Это абсолютно нормально если вы джун или студент.
Если вы миддл, еще туда-сюда…
Хотя, имхо, для мидлла такой уровень детализации при принятии решений — это уже избыточно.
Если вы сеньор и продолжаете думать в тех же терминах
Гм…
Вы выбрали не ту профессию.
mayorovp
А в каких терминах должен думать сеньор? :)
cultura
Интуитивно уже. Автоматически.
Когда ты проговариваешь про себя формулировки — это слабое знание.
Это как с иностранным языком, например. Пока слабо знаешь — заранее произносишь фразы мысленно, заранее их составляешь.
Когда язык уже освоен — иноземная речь из тебя льется без какого-либо напряжения, без особого мыслительного усилия.
mayorovp
А с чего вы взяли, что я эту мысль проговаривал?
Интуиция — полезная вещь, но на пустом месте она не возникает. Чтобы интуитивно чувствовать "медленные" места в алгоритме — надо знать чем медленное место отличается от быстрого. Без нужных знаний никакая интуиция не поможет.
cultura
Проговаривали/продумывали — не важно.
Между мной и вами разница — что я вообще не мыслю уже этими категориями: квадратичное или какое.
Я просто знаю
Сразу.
Не думаю, что какая-то теория о о() мне в этом помогает.
Только опыт.
В том числе — и для новых технологий знания срабатывают.
Узкие места — на которые нужно обращать внимание — они и в новых технологиях остаются теми же — диск, сеть.
mayorovp
Какая разница, мыслите вы этими категориями или нет — если вы их тоже знаете? Нельзя так сразу взять и начать "просто знать". Вы не смогли бы приобрести опыт оптимизации программ если бы никогда не читали и не слушали про методы оценки времени работы алгоритмов.
А еще "просто знание" и интуиция очень плохо передаются по каналам связи.
cultura
Программист непрерывно оценивает алгоритм, над которым работает. Постоянно выбирает то или иное решение по много раз на дню.
Поэтому от академических оценок о() толка на практике очень мало.
Вполне достаточно здравого смысла и опыта.
А учитывая как обширно современное ИТ — лучше тратить время не на математику и физику и о() — это все пригодится только процентам программистов-выпускников учебных заведений, а — архитектуры и СУБД, учиться делать замеры производительности и т.п. практические вещи, а не академические знания, которые хороши только для формального доказывания эффективности алгоритмов.
cultura
Типичное решение не самой тривиальной задачи программистом (обычно задачки проще и более типовые):
https://habrahabr.ru/company/mailru/blog/316740/
И так далее.
Какую долю в размышлениях занимает самый обычный здравый смысл (98% или 99,9%)?
А какую долю занимают оценки по о() или тому подобная, что требует специальной теоретической подготовки, выходящей за пределы обычного здравого смысла?
ToSHiC
Значит, у вас есть жёсткий диск на 10ТБ, и 6ТБ данных. Как будете сортировать? :)
superyateam
На самом деле это хорошо, что в отрасли все больше таких людей. Настоящих профессионалов значит трудно найти, раз готовы брать выпускников таких лагерей, которые кроме реакта ничего не знают. И соответственно опытному программисту проще найти работу. Вот если бы все были умными и талантливыми…
REPISOT
Я всегда думал, что «личная жизнь» — это немного другое.
PS. Запятая после «жизни» лишняя.
haldagan
Я не понял из статьи — осознает ли автор, что он по квалификации находится максимум на уровне джуна (если я правильно понимаю, то за плечами у него только этот «летний лагерь»)?
Если да — то непонятно, зачем вся эта возня на три месяца: проработать месяц и быть уволенным из-за недостаточной квалификации?
haldagan
Не могу отредактировать запись. В общем посмотрел оригинал статьи и комментарии к ней — да, человек осознает, что он джун, тем не менее стремится на большие деньги, скрывая отсутствие опыта. Более того их в этом самом лагере учат скрывать, что весь их опыт собственно только из этого лагеря и состоит.
Замечательный лагерь, я считаю. Делает миддлов с нуля всего за три месяца.