image

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

image
< 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), где вам будут задавать сложные вопросы о структуре данных и вопросы касательно алгоритмов.

Я стратегически выстраиваю процесс так, чтобы сначала пройти собеседования низкого уровня, а затем более сложные.

От компаний с собеседованиями низкого уровня я получил опыт, уверенность в себе и своих силах и надежные предложения.

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

image
Прямая зависимость между временем, которое я потратил на собеседования и предложенной зарплаты

Я преодолел сложные вопросы. Затем пробился к высокой зарплате. И в итоге заполучил желаемую должность.

Вывод: планируйте свои собеседования так, чтобы сначала пройти более легкие, а затем сложные.

Озарение#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 дней в неделю. Но я старался заботиться о себе.

image
Так может выглядеть типичный день в JavaScript

Несколько дней я учился с друзьями. В другие дни я шел в кафе и занимался один или зависал в выпускном зале Hack Reactor. И каждую неделю я связывался с консультантом занятости, чтобы поговорить о своем прогрессе.

Легко перегореть в процессе. Хорошо питайтесь, спите и занимайтесь спортом.

Может стать одиноко. Проводите время с друзьями, которые проходят через то же, что и вы.

Вывод: приготовьтесь к долгой игре и убедитесь, что вы хорошо заботитесь о себе

Итог:


  1. Связывайтесь с реальными людьми
  2. Начните с малого и пробивайте себе путь наверх
  3. Учитесь так, будто ваша будущая работа зависит от этого
  4. Показывайте себя с лучшей стороны
  5. Это марафон, а не спринт

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

Особая благодарность Дилану Трану, Карен Цао, Рохиту 'Солнечному' Рехи, Джейк Пейс, Анамите Гуха, Стефани Лю, и многим другим.

Поддержка публикации — компания Edison, которая разрабатывает SDK для слежения за географическими объектами и систему оперативного учета сети магазинов «Мебель для дома».
Поделиться с друзьями
-->

Комментарии (202)


  1. Waxer
    04.12.2016 01:09
    +58

    Если судить по первой картинке, я бы вас на работу не взял.


    1. bitver
      04.12.2016 01:25
      +3

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


      1. apachik
        04.12.2016 02:19
        +19

        для полной шутки там не хватает еще одной ветки:

        if (isPrepared) {
          return true;
        else if (!isPrepared) {
          return false;
        } else {
          return !true && !false;
        }
        


        1. afrokick
          04.12.2016 19:16
          +2

          А теперь представьте этот пример в виде вложенных switch-ей :)

          switch
          function getDevJob(studying, hardWork, luck) {
             switch(studying){
                case true:
                   switch(hardWork){
                      case true:
                         switch(luck){
                    	   case true: return true;
                             case false: return false;
                         }
                      case false: return false;
                   }
                case false: return false;
             }
          }
          


          1. mayorovp
            04.12.2016 19:38
            +2

            default забыли!


          1. tkutru
            05.12.2016 13:27

            Чтобы глаза отдохнули!

            function getDevJob(studying, hardWork, luck) {
              return (studying && hardWork && luck) ? true : false;
            }
            


            1. cultura
              05.12.2016 13:32
              +4

              Это уже перебор.

              Первичный «индусский» вариант куда как легче читается, чем эта оптимизация.

              За 15 лет работы мой мозг почти каждый день тренируется чтением подобных конструкций. И тем не менее я считаю подобную оптимизацию далеко не всегда уместной.

              Имхо, средний уровень программистов (а рассчитывать на то, что за тобой будет читать не сверх-выскоко-квалифицированный, а самый обычный программист, такой вот школьник как автор оригинала статьи — вполне нормально) не настолько высок, чтобы напрягать их мозги без повода.

              Пусть лучше напрягают мозги по сути решаемой прикладной задачи, а не по причине невнятного синтаксиса.


              1. marsermd
                10.12.2016 22:43
                -2

                Вы ведь понимаете, что tkutru и не пытался написать правильный ответ, а, как и остальные участники этой ветки, смеется над кодом с КДПВ?)


            1. Zifix
              09.12.2016 19:08

              -


    1. SlavikF
      04.12.2016 01:56

      Объясните непосвящённому, что не так.

      Я сам, в основном, пишу тесты на Java и с JavaScript знаком слабо…


      1. apachik
        04.12.2016 02:11
        +18

        ну индусский же код!
        иф бессмысленный, когда можно сразу сделать
        return isPrepared

        или даже сразу return без заведения переменной


        1. cultura
          04.12.2016 12:31
          -16

          Программу мы пишем для того, чтобы ее потом можно было прочитать.

          «Неиндусский» переоптимизированный код читается ничуть не лучше.


          1. mayorovp
            04.12.2016 19:40
            +15

            Что нечитаемого в строчке return studying && hardWork && luck;? Тут нет никакой хитрой магии, обычное вычисление.


            1. apollonin
              05.12.2016 17:50

              В том, что если, не дай бог, значение hardWork в будущем потребуется как-то иначе вычислить (к примеру, вызовом соседнего метода а то и двух), то ваш код придётся переписать, вынося эту perl-подобную конструкцию в более читабельную. А если вспомнить, что модифицировать код будет не тот, кто его писал, и переписывать чужой код в разы сложнее и потенциально опаснее, чем расширить получение переменной в отдельной строке, понимаем что ваш код может и выглядит красивее. но он совершенно не масштабируем.


              1. monolithed
                05.12.2016 18:37
                +1

                Если, да как бы..., для таких случаев есть даже термин — преждевременная оптимизация.

                Преждевременная оптимизация — корень всех проблем в программировании (Donald Knuth).

                studying && hardWork && luck есть в исходном примере, почему вы это называете perl-подобной конструкцией?


        1. Source
          04.12.2016 13:19
          -10

          Тогда уж


          return !!isPrepared;

          Только стоит ли сокращать эту запись, если как минимум 6 шутников в комментариях сократили её некорректно? Вопрос далеко неоднозначный.


          1. apachik
            04.12.2016 20:01
            -2

            тогда уж (если три аргумента вдруг не булевские)
            return isPrepared > 0;


            1. Source
              04.12.2016 23:12
              -1

              Это более хрупкий вариант… в текущем JS сработает, а в других языках не получится сравнить 0 и boolean. А это тоже допустимый вариант, если допустим hardWork — boolean, a luck — число от 0 до 10. Так что либо !!, либо явное приведение:
              return Boolean(isPrepared);


              1. apachik
                04.12.2016 23:39
                +2

                > hardWork — boolean, a luck — число от 0 до 10
                раз такой зоопарк, то может не стоит писать в лоб через &&
                а через
                isPrepared = hardWork && luck > 0 && etc > 42;


                1. Source
                  05.12.2016 12:35
                  +1

                  Это отличный вариант для строго типизированного языка. При динамической же типизации у вас нет контракта какого типа аргументы придут в функцию. hardWork внезапно может оказаться undefined.
                  Поэтому как не изголяйтесь, а явное приведение к boolean будьте любезны написать, раз функции требуется возвращать именно true/false. Забыть про это приведение — типичная ошибка новичка.
                  Кол-во минусов к моему исходному комментарию показывает только то, что есть немало людей, которые пишут код на JavaScript ещё хуже, чем автор статьи. При этом они сами пока об этом не догадываются… недостаток опыта он такой, даёт ложную уверенность в своей неправоте :-)


                  1. mayorovp
                    05.12.2016 13:12

                    Откуда берется требование выдавать на выходе корректные входные данные при некорректных входных? Почему аргументы могут иметь произвольные типы — а функция вдруг обязана вернуть булев?


                    1. khim
                      05.12.2016 13:51
                      -1

                      Job Security. Подобные вещи приводят к тому, что программа глючил, сыпет ошибками, но работает… ну пока её хакеры не сломают. Программы, написанные с подходом GIGO — обычно содержат меньше ошибок и, в долгосрочной перспективе, работают лучше, но кто будет на JavaScript писать что-то, рассчитанное на долгосрочную перспективу? Лучше быстрее запуститься, а потом десятилетиями вылавливать ошибки…


                    1. Source
                      05.12.2016 15:20
                      -2

                      Ну, а что такое рефакторинг? Это улучшение кода без изменения его API. Исходный код всегда возвращает либо true, либо false. Требований у нас нет, значит мы при переписывании кода обязаны подразумевать что такое требование было. И результат итоговой функции должен совпадать с результатом исходной на всём множестве значений аргументов. Мы тут не вдаёмся в причины этого требования, может результат надо было запихнуть в JSON и отправить какому-нибудь микросервису на Go (вот он обрадуется, когда получит "undefined" вместо false).
                      Но причины требования не суть важны в данном примере, важно, что сохранность API — это базовые основы рефакторинга. И куча людей этого не понимает, что уже печально. Получается, хотели показать как они круты, переделав код из статьи, а по факту опозорились. Но не в силах признать ошибку, предпочитают заминусить… Ну ладно, желаю им профессионального роста. Может через пару лет поймут, что признать ошибку не стыдно, стыдно — не признать )))


                      1. mayorovp
                        05.12.2016 15:42
                        +1

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


                        1. Source
                          06.12.2016 00:09
                          -2

                          Я же утверждаю, что данная функция изначально должна была быть написана по-другому.

                          На основании чего? Это уже исключительно Ваши домыслы.
                          Мы обсуждаем варианты переписать существующую функцию, не имея никаких явных требований (есть только те, что заложены в код)… Это рефакторинг в чистом виде и ничто больше.
                          Вы же мотивируете только тем, что "автор — дурак, потому что я так считаю"… Это непрофессионально и все эти сокращения по факту оказываются дешевыми понтами, если не можешь сократить без изменения поведения кода.


                      1. khim
                        05.12.2016 19:32
                        +1

                        Но причины требования не суть важны в данном примере, важно, что сохранность API — это базовые основы рефакторинга.
                        Реализация — это не API. API — это описание параметров и результатов. Подкреплённое тестами, в идеале.

                        Устраивать рефакторинг не имея представления что ваш фрагмент кода делает и когда он используется — кончается слезьми.

                        Я бы, к примеру, объявил результат при передаче не-булевых параметров неопределённым. Или сказал бы, что получаем false если все параметры false.

                        Но стараться «сохранить жизнь» программе когда она уже «слетела с катушек» — приводит скорее к тому, что ошибки загоняются вглубь, чем к тому, что они исчезают.


                        1. Source
                          06.12.2016 00:18

                          Реализация — это не API. API — это описание параметров и результатов. Подкреплённое тестами, в идеале.

                          И что? В данном случае, единственное описание API — это сам код. Так тоже бывает.


                          Устраивать рефакторинг не имея представления что ваш фрагмент кода делает и когда он используется — кончается слезьми.

                          Ну так я и пытаюсь эту мысль донести. Если делаете рефакторинг без явных требований, то не меняйте соответствие между входными параметрами и результатом для всего множества входных параметров.
                          Ну или не плачьте, когда прод упадёт :-)


                          Но стараться «сохранить жизнь» программе когда она уже «слетела с катушек»

                          В чём тут "слёт с катушек"? Вы ни разу в жизни не писали функций, которые должны строго возвращать boolean? Не так уж редко именно это и требуется, вне зависимости от входных параметров. Ваши фантазии на тему неопределённых результатов имхо оффтопик.


                          1. khim
                            07.12.2016 19:46

                            Если делаете рефакторинг без явных требований, то не меняйте соответствие между входными параметрами и результатом для всего множества входных параметров...
                            То вы уже в стадии, когда стоит поискать другую работу.

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

                            Вы ни разу в жизни не писали функций, которые должны строго возвращать boolean?
                            Притом что они получают мусор?

                            Не так уж редко именно это и требуется, вне зависимости от входных параметров.
                            Зачем? Чтобы сделать веселее отладку? Если вам нужно общаться с «сумасшедшим внешним миром», откуда приходит чёрт знает что — введите слой, где вы всё приведёте в норму, флажки станут bool'ами, количественные величины — числами и т.д. и т.п.

                            А дальнейшую работу уже ведите не мучаясь с тем, что у вас в каждой строчке каждой функции мина может быть. Closure, TypeScript не зря появились, ох, не зря.


                            1. Source
                              09.12.2016 12:29
                              -1

                              Вы утрируете. Полно случаев, когда можно слегка улучшить код по ходу дела, не меняя его поведения и не разбираясь, как можно/нельзя изменить его поведение. И в любом случае, если Вы хоть как-то измените поведение, то это уже будет не рефакторинг. И лучше это делать отдельным коммитом, когда надо.


                              Притом что они получают мусор?

                              Почему мусор? undefined — это вполне рабочее значение в JavaScript. Нравится Вам или нет, но факт в том, что это так.


                              P.S. Слушайте, я тоже не в восторге от JS и вообще фронтом практически не занимаюсь… но там сам JS-мир слегка сумасшедший, Вы конечно можете старательно огораживаться, не принимая их практики, но смысла мало.


                              1. taujavarob
                                09.12.2016 16:44
                                -2

                                но там сам JS-мир слегка сумасшедший


                                Есть такое. ;-)
                                Но его постоянно пытались (ES-4) и пытаются (TypeScript) причесать под «нормальный». — Но тогда из него уйдёт фан, и ему придёт полный кобол.


        1. w_bishop
          04.12.2016 23:44
          -3

          Это не индусский код, это код нуба. Это норм если чувак только окончил, минимизация еще придет!


          1. cultura
            05.12.2016 09:13
            +4

            Минимизация нужна далеко не всегда.
            Есть частенько злоупотребляют — эдакий способ похвастать, эка-вот как я умею.
            А потом при чтении приходится лишний раз останавливаться в этом месте и думать заметно дольше.


      1. Namyerd
        04.12.2016 02:12
        +11

        return studying && hardWork && luck; — вместо всего того что на картинке


        1. AllexIn
          04.12.2016 09:34

          За Java Script не скажу, но во многих других языках бывают ситуации, когда так делать нельзя.
          Например в тех, где bool может быть отличным от 0 и 1. Потому что на выходе будет тоже значение отличное от 0 и 1. В тоже время иногда быват важно, что функция возвращала строго 0 или 1.


          1. maxzhurkin
            04.12.2016 10:20
            +3

            Строго true или false, вы хотели сказать?


            1. AllexIn
              04.12.2016 10:53
              -3

              Нет. Во многих языках true это всё что не 0.
              Соответственно функция возвращающая bool вполне может возвращать значение отичное от 0 или 1.
              А это бывает критично. Например, для записи в бинарном виде.


              1. AllexIn
                04.12.2016 10:58
                -1

                Возможно я не правильно вас понял.
                Строго лексемы true или false, которые эквивалентны 1 или 0, а не логические true или false, в которых true может быть отличным от 1.


              1. evocatus
                04.12.2016 16:34

                del


                1. AllexIn
                  04.12.2016 16:41
                  -2

                  Конечно может. Полагаю в любом языке, который может в перегрузку операторов. Естественно, при условии что bool в этом языке является числовым типом.


              1. maxzhurkin
                09.12.2016 18:55

                Но есть и другие языки, в частности такие, в которых нет никаких соответствий между любыми числовыми значениями и true/false


          1. bitver
            04.12.2016 12:23
            -7

            Назовите, пожалуйста, язык, в котором оператор && (логическое «И» в любой форме) возвращал бы что-то кроме true или false.

            На картинке прошу заметить используется именно этот оператор, а не проверка каждой переменной отдельно.


            1. AllexIn
              04.12.2016 12:26
              +1

              конъюкция между 2 и 2 что вернет?
              true вернет. Только не 1, а 2

              Вы наверное удивитесь, но есть языки, где конъюкция не делится на логическую и бинарную.


              1. AllexIn
                04.12.2016 12:30
                +1

                UPD: побитовую, конечно, а не бинарную


            1. Areso
              04.12.2016 12:34
              +1

              Если у вас переменные A, B объявлены как булевый тип, но значение не присвоено, вы рискуете получить ошибку с крашем на C=A&&B, или C вам вернет что-то навроде undefined.


            1. terrier
              04.12.2016 14:46
              +4

              Назовите, пожалуйста, язык, в котором оператор && (логическое «И» в любой форме) возвращал бы что-то кроме true или false.


              Уууу, есть многое на свете, друг Горацио…

              SELECT TRUE AND NULL;


            1. DestroyComputers
              04.12.2016 14:59
              +10

              Javascript. (2 && 3) вернёт 3, (0 && 3) вернёт 0


            1. Ivanq
              04.12.2016 14:59
              +3

              JavaScript, например. 2 && 3 вернет 3. И да, в JS есть и логическое И, и побитовое.


            1. playermet
              04.12.2016 15:11
              +6

              > Назовите, пожалуйста, язык, в котором оператор && (логическое «И» в любой форме) возвращал бы что-то кроме true или false.
              JavaScript, Python, Lua, Ruby. Первые что в голову пришли, на самом деле намного больше.


            1. impetus
              05.12.2016 12:43

              в языке REXX логическое «И» вернёт конкатенацию, если хоть один из операндов окажется строковым. Соотв if в таком случае проверит его на слово «true»/«false» или «1» / «0»
              Кстати && там — «исключающее или».
              «Добро пожаловать в реальный мир», сэр.


        1. JediPhilosopher
          04.12.2016 16:05

          Ну выделение отдельной переменной иногда имеет смысл для удобства отладки. Если такие однострочные функции многократно вызывают друг друга бывает сложно отследить где именно возникает ошибка, так как в отладчике нечего добавить в watch (да, иногда можно добавить сам вызов функции туда, но это не всегда желательно). А тут поставил бряку на return и сразу списке локальных переменных увидел значение, которое функция вернет.

          А вот if (b) return true else return false — это зло, да.


      1. VasiliyIsaichkin
        04.12.2016 06:20
        +5

        function getDevJob(studying, hardWok, luck) {
        	return studying && hardWok && luck
        }
        

        или модно, стильно, молодежно
        const getDevJob = (studying, hardWok, luck) => studying && hardWok && luck;
        


        1. InfiniteCode
          04.12.2016 06:32
          -5

          Да вообще дефайном должно идти: #define GETDEVJOB(studying,hardwork,luck) studying&&hardwork&&luck
          Зачем тратить время на вызов.


          1. mayorovp
            04.12.2016 08:58
            +14

            Вас бы тоже на работу не взяли. Если уж писать дефайн — надо хоть скобки поставить...


            1. InfiniteCode
              04.12.2016 09:44
              +1

              Сейчас на С++ наверное не взяли бы. Я на нем не писал уже лет 8, так что да, скобки забыл :)


          1. vsb
            04.12.2016 11:04
            +4

            Тратить время на вызов или не тратить — решать компилятору, а не вам. Ваше дело — дать компилятору возможность выбирать. Функция даёт возможность выбирать — вызывать её или встраивать. Макрос не даёт (помимо прочих недостатков).


            1. InfiniteCode
              05.12.2016 07:54
              -1

              Может сейчас и да, я не в курсе деталей того как сейчас С++ шный будет компилировать простые функции, но 10 лет назад когда на нем писал нужно было указывать явно. Если комплиятору указать inline, оно его вполне может проигнорить.

              А вообще конечно мне решать, а не компилятору, компилятор следует указаниям. Раньше вполне приходилось для простых вещей, вроде swap BGR -> RGB, делать ассемблерную вставку, иначе компилятор не мог нормально «решать».


        1. ardentum
          04.12.2016 19:29

          Второй вариант хуже: нет поднятия, нет имени функции при отладке.


      1. Stepanya
        04.12.2016 12:26
        -2

        function getDevJob(studying, hardWork, luck) {
                    return studying && hardWork && luck;
                }
        


      1. Gordio
        04.12.2016 12:26
        +4

        if (true) {
          return true;
        } else {
          return false;
        }
        


      1. Shaco
        04.12.2016 14:59
        +11

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

        А если всего лишь предположить, что функция обязана вернуть bool, то код выглядит совсем не бессмысленным. Потому что, на секундочку, в JS 1 && 2 — это 2, а не true (как раз кто-то там ниже спрашивал о языке, в котором && возвращает не bool… сюрприз!). Входные данные тоже могут быть разные — их может не быть (undefined), они могут быть не bool (тогда сработает приведение типов). Так что isPrepared совсем необязательно будет bool вообще.

        И в результате, единственной оптимизацией, которая бы не изменила поведение функции, была бы замена блока if на return !!isPrepared;, с принудительным приведением типа двойным отрицанием. Тем, кто пишет на js регулярно, эта запись привычна. Для остальных, пожалуй, удачнее была бы запись return Boolean(isPrepared);

        Господа, уточняйте постановку задачи :)


        1. Stepanya
          04.12.2016 16:59

          del


        1. mayorovp
          04.12.2016 19:46
          -2

          Если функция, записанная таким образом, принимает что-то отличное от булевого типа — это тоже дурной знак.


          1. AllexIn
            04.12.2016 19:57

            Весь продакшн — это один большой дурной знак.
            В целом, тут как с goto — дестяь раз следует подумать, прежде чем использовать. Но и добавлять в черный список — тоже идея так себе.


    1. maxzhurkin
      04.12.2016 10:18
      +3

      Так это перевод, только переводчика я бы тоже на работу не взял.


    1. musicriffstudio
      05.12.2016 10:08
      +3

      Если судить по первой картинке, я бы вас на работу не взял


      если у вы предлагаете зарплату меньше 120000$ в год, то, возможно, он бы к вам и не пошёл.


  1. SiGMan
    04.12.2016 01:22
    +2

    Хорошие зряплаты для джуна. Впрочем image


    1. cultura
      04.12.2016 12:45
      +11

      И джуниоры, устраивающиеся в ООО «КрутоДелаемВебСайты» и ООО «АутсорсимАутсорсСАпВорка» приняли это за чистую монету и теперь студенты, еще ничего не умеющие, сразу хотят 100500 денег.


    1. lasc
      05.12.2016 00:19
      -1

      Я бы больше доверят этому ресурсу http://h1bdata.info/ все же с официальных данных.


      1. cultura
        05.12.2016 12:56

        Ресурс, завешенный рекламой, вызывает у вас доверие?
        Очередная наколенная поделка по быстрому срубанию бабла…


      1. Julles
        08.12.2016 01:17
        +1

        H1b зарплаты как правило занижены по сравнению с рыночными. Они по закону обязаны предлагать рыночную зарплату, но чтобы обойти это правило, они занижают позицию. То есть пишут что ищут джуниор девелопера на зарплату в 70К, например, а в требованиях перечисляют то, что соответствует квалификации синьора. Ну и неудивительно что никого не могут найти на штатовском рынке! Зато внезапно подходящий специалист находится в Индии и готов переехать.


        1. taujavarob
          08.12.2016 19:11
          -1

          То есть пишут что ищут джуниор девелопера на зарплату в 70К, например, а в требованиях перечисляют то, что соответствует квалификации синьора


          В Штатах принято, при собеседовании, говорить что вы знаете и умеете всё что требуется работодателю. Какие бы требования он не выставлял.
          Не знаете как взять интеграл, а в требованиях есть пункт что надо знать как их брать — говорите что умеете это делать, если хотите там работать.


          P.S.
          Сколько зарабатывают инженеры с визой H-1B в Facebook и EPAM


          1. Julles
            08.12.2016 20:50

            Эти вакансии пишутся заведомо под кандидов которые уже «готовы ехать». Я сейчас не про Гугл или ЕПАМ, а про индийские бодишопы которые массово получают H1B (или L1) для своих работников. И в названии вакансии онипишут «Джуниор» просто чтобы дать зарплату соответствующую средней по рынку для джуниора. Но ожидания и требования там вполне на синьора, и если есть джуниор способный этим требованиям соответствовать, то он и зарплату себе получше может найти, смотрим пример в статье.


  1. Lyosha12
    04.12.2016 01:25
    -13

    Вот это действительно заряд бодрости! Правда, на ночь глядя, но всё равно потрясающая статья. Благодарю за перевод, уверенность в своих силах точно возросла на порядок!


  1. naething
    04.12.2016 02:08
    +9

    Интересно, сколько он там продержится.


    1. khim
      05.12.2016 00:45

      Столько, сколько нужно. Если он шесть месяцев реально «втыкал» в вопросы, которые задают на собеседваниях, то к концу срока он примерно изучил всё, что в нормальных компаниях люди за первые пару лет изучают. Неудивительно что к концу он получал уже предложения на заметно бо?льшую сумму.


  1. mrigi
    04.12.2016 02:11
    +32

    Я правильно понял, что один самоуверенный школьник, закончивший какие-то курсы заспамил крупные компании на предмет работы выше юниора и кто-то даже его взял? Да, но после этого наступят будни, где нужно будет выполнять реальную работу и замаскированное отсутствие опыта может выйти боком.


    1. xytop
      04.12.2016 15:04

      За такую 10% такой зп можно иметь карманного индуса за океаном, которому аутсорсить всю свою работу :)


      1. 121212121
        04.12.2016 17:23

        Ну на индусов я бы не ставил :)
        У них сейчас популярна тема фейкового опыта.
        Т.е. есть у них смышленые соотечественники, которые создают несколько фирм и за денежку обеспечивают трудовой стаж желающим.
        И это работает, черт возьми!
        Каким то образом некоторых потом берут в нормальные конторы, до поры до времени, естественно.
        Ну а дальше они просто увольняются и идут на новое место.


        1. foxmuldercp
          04.12.2016 23:23
          +1

          Там просто сертификация потоком, ну, как у нас оплата проезда в маршрутках.
          В общем такие "сертифицированные" "спецы" на рынке пишут вот такоэ


          1. Gordio
            12.12.2016 19:00

            И не такое пишут…


            [:|||||:] Быстро написать “хороший” код

            Glitch


    1. lazypacman
      05.12.2016 11:16

      А может и не выйти.


    1. ultraElephant
      05.12.2016 11:16

      Если это действительно «школьник», то боком выйдет только для компании работодателя, самому же «школьнику» это обернётся только реальным опытом работы, что при любом раскладе — хорошо.


      1. EGlaz
        06.12.2016 09:34

        Если его уволят через пару месяцев — подпортят резюме. И рекомендацию не дадут. Дальше будет сложнее устраиваться. Или там не как у нас?


        1. cultura
          06.12.2016 09:41
          +3

          Или там не как у нас?


          А че, у нас кто-то смотрит на рекомендации???????????????????????????????

          Ну смотрят, конечно. Изредка. Это не само собой разумеющееся.
          Как раз именно наша общепринятая безрекомендательная система как раз позволяет надувать одного работодателя за другим.
          Легко.


  1. Merkat0r
    04.12.2016 02:33
    +2

    Оно, к сожалению, по зп работает только там. Меня тут переманивали в рф отделение одна весьма большая корпорация — зп в рублях, да вкусная и много выше среднего, но было крайне смешно читать оффер. Можно сказать я ржал как конь… Выполняя для той же корпорации(только напрямую — за океан) на фрилансе весьма маленькие заказики по томуже профилю у меня получалось почти в три раза больше :)


    1. cultura
      06.12.2016 09:46

      Крайне сомнительно.

      Зачем им вообще нанимать фриленсеров, тем более в тридорога — если у них имеется целое отделение в РФ?

      Да и вообще — найм фриленсера напрямую корпорацией?
      Корпорацией?
      Если конечно это действительно корпорация, а не одно название…

      Думаю, это просто пустое бахвальство, а вовсе не реальные факты.


      1. alexeykuzmin0
        06.12.2016 10:41

        Вот-вот, вкусная зарплата здесь для опытного программиста — это в районе 300 тысяч. На фрилансе можно получить под лям? Как-то не верится


      1. Merkat0r
        06.12.2016 13:54
        +1

        Добро пожаловать в энтерпрайз, и у меня не совсем программирование


  1. brick_btv
    04.12.2016 02:39
    +5

    У авторов таких текстов лучше получается быть копирайтерами, нежели разработчиками.


  1. Novosedoff
    04.12.2016 02:39
    +21

    Ай, какая молодца! Я так чувствую ещё чуть-чуть и на Хабре появятся статьи типа «Как я написал функцию Hello World»


  1. betsuni
    04.12.2016 07:51

    Заглянул в оригинал в комменты. Там, к гадалке не ходи, «Молодец!», «Отлично!», «Вот это история успеха! Так держать!». Ни одного толкового коммента у них там. В чем достижение-то?

    Что ни статья, так «great article, whaaayyy». Может, это роботы? Они по-другому не умеют мыслить? Более прагматично.

    Помню, один раз была статья на англоязычном ресурсе, как там рассказывали, как один разработчик забросил свой репозиторий, а кто-то другой взял это репозиторий и довел до ума. И снова «great article, thank you» и подобная чепуха. Я спросил — а чем тут гордиться? Меня не поняли.


    1. lostpassword
      04.12.2016 08:34
      +9

      Насколько я понял из статьи, человек отправил почти три сотни заявок, прошёл 16 собеседований и в итоге устроился на работу, которая ему нравится — как в техническом плане, так и в плане зарплаты (причём, насколько я понимаю, устроился он не на самую низкую ставку). И всё это всего за три месяца после окончания школы программистов.
      Как по мне — вполне себе «great article, whaaayyy». Вы не согласны?


    1. baka_cirno
      04.12.2016 12:34
      +27

      Это как бы показатель разницы в менталитете. У американцев первый позыв — похвалить, подбодрить, clap clap clap (даже если, прямо скажем, не за что). У людей, которые комментируют здесь, первым позывом является унизить, посмеяться, всячески продемонстрировать свое превосходство.
      Это одна из причин, почему там недоученные джуниоры получают в разы больше, чем местные кулибины с гигантским самомнением.


      1. betsuni
        04.12.2016 14:42
        +9

        Не унизить, а трезво и рационально посмотреть на вещи.

        А у них, что ни история, то первый комментарий «great article». А что в ней great? Там ничего по делу нет. Вода какая-то, как кто-то не смогу скомпилировать hello world, но потом собрал все свои силы в кулак и все-таки скомпилировал. И бегом писать статью, в которой еще вставить lesson learned — других поучить жизни. Нет, спасибо.

        Вот поэтому там и развилось всяких коучей и личных тренеров-достигаторов. И клиенты у них такие же, видимо — те, которым надо, чтобы им всегда подсказывали и подбадривали и давали мотивацию. Постоянно.


        1. baka_cirno
          04.12.2016 16:38
          +18

          Если смотреть на вещи рационально, то модель, в которой людей принято поощрять, даже если некоторые из них не совсем этого заслуживают, является более эффективной, чем модель, основанная на взаимном угнетении, недоверии и желании всех вокруг унизить (известная под названием «пауки в банке»). Это факт, проверенный эмпирически. Они хвалят не потому, что такие тупые или наивные, а потому что у них общество эволюционировало до этого. Если человек не тырит мелочь по карманам, а даже какой-то там код пишет и старается, то почему бы его не подбодрить? Примерно так они мыслят.


          1. mediarium
            05.12.2016 18:08
            +1

            Такой взгляд на вещи рационален только если вы желаете взростить социум посредственностей. Рекомендую ознакомиться с фильмом “Whiplash” (2014 года).

            “There are no two words in the English language more harmful than «good job».” ©


          1. taujavarob
            05.12.2016 21:30

            baka_cirno > Если смотреть на вещи рационально, то модель, в которой людей принято поощрять, даже если некоторые из них не совсем этого заслуживают, является более эффективной, чем модель, основанная на взаимном угнетении, недоверии и желании всех вокруг унизить
            betsuni > А у них, что ни история, то первый комментарий «great article». А что в ней great?

            Ноги растут отсюда:

            Там приведён практический алгоритм почему они именно так поступают, а мы нет.


          1. EGlaz
            06.12.2016 10:05
            +3

            Я согласен, что поощрять полезно. Но я не понимаю, как можно брать «недоджуниора» на ставку выше джуниора. То есть компания нанимает программиста, тот пишет код, компания зарабатывает на этом, часть этой выручки платит этому программисту. Так вот после школы кодеров он действительно пишет код на эти деньги?

            Напомнило ситуацию из сериала Silicon Valley (1 или 2 сезон), когда Башку взяли в Hooli, а когда поняли, что он нихрена не может — его сняли с проекта и отправили на 3 года (контракт) гулять за зарплату.


          1. cultura
            06.12.2016 10:26
            +3

            то модель, в которой людей принято поощрять, даже если некоторые из них не совсем этого заслуживают, является более эффективной


            Мечтать не вредно.

            Но на самом деле не является. Проверено.

            1. Люди или заносятся, считают, что они круты на самом деле, если им много бабла платят.
            2. Или постоянно боятся, что они на своем месте незаслуженно и легко его могут потерять. Живут в стрессе.


            Редко-редко, кто адекватно воспринимает такое преждевременное поощрение.

            P.S.:
            И для последующего трудоустройства это медвежья услуга как самому сотруднику так и будущим нанимателям.

            У американцев первый позыв — похвалить, подбодрить, clap clap clap (даже если, прямо скажем, не за что).


            Проводились исследования.
            Наши улыбки — это знак личной симпатии.
            Американские улыбки — это признак вежливости, не более того.
            Я за того, чтобы по улыбке можно было личную симпатию определить.

            То же самое и с похвальбой за успехи чисто из вежливости.
            Она может и подбадривает
            Но еще и дезориетирует.

            У меня была девушка, которая меня хвалила.
            Потом появилась другая, которая не стеснялась говорить, что мол одежда грязная, да прическая не красивая, да живот большой.

            Я стал обращать внимание на эти вещи — лучше одеваюсь, занимаюсь спортом и пр.
            Первая оказала мне медвежью услугу. Хотя мне с ней и было комфортнее, но комфортнее ничего не делать, не развиваться, не совершенствоваться.

            Благодаря рациональному взгляду на меня второй я сейчас могу пробежать 50 километров и после этого отлично себя чувстовать.

            В принципе обе точки зрения имеют силу.
            Все зависит от того кого вы хотите взростить.

            Разумеется мера нужна в обоих точках зрения.


      1. xoralex
        04.12.2016 15:31
        +8

        Great comment! Good job.


  1. Laney1
    04.12.2016 08:28
    +21

    В Hack Reactor мы тренировались маскировать наше отсутствие опыта. В нашей личной жизни, мы намеренно умалчиваем о нашем образовании в лагере программистов.

    лол, ну и статья. Врать о своем опыте это последнее, что надо делать на собеседовании. На той стороне тоже сидят не дураки, вас сразу раскусят и как правило пошлют подальше. Что собственно и произошло с автором, который "получил выгодные предложения только в 2.8% случаев".


    Наоборот, гораздо больше уважения и желания сделать оффер вызывают кандидаты, которые с самого начала честно говорят "я этого не знаю", "я это не использовал" (особенно в мире JS, где фреймворки меняются каждый день). Во-первых, в этом случае велик шанс, что работодатель тоже окажется честным. Во-вторых, вам не поручат то, с чем вы не справитесь. В-третьих, низкая зарплата очень быстро вырастет, если вы будете хорошо делать свою работу.


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


    1. lostpassword
      04.12.2016 08:35
      -6

      Ну, у товарища всё же получилось. А победителей, как известно, не судят.)


      1. Laney1
        04.12.2016 09:07
        +15

        у товарища получилось всего лишь найти работу. Что это оказалась за работа, что случилось дальше, и что могло бы случиться, если бы автор поступил по-другому — история умалчивает.


        Может быть, автор действительно компетентный разработчик, который легко мог устроиться в хорошую компанию на зарплату джуниора 3 месяца назад и как раз сейчас получить повышение. Может, банальный обманщик, который будет быстро уволен и начнет мотаться от одной фирмы к другой, пока их всех не накроет очередной кризис. Кто знает.


        1. lostpassword
          04.12.2016 09:49
          -1

          Что могло бы случиться, если бы автор поступил по-другому — это вообще неизвестно. В данном конкретном случае случился оффер, который товарища устроил. Дальше всё зависит от него — как, собственно, и при любом трудоустройстве.
          Так что не вижу тут никакого предмета для критики.


    1. Gordio
      05.12.2016 07:48
      +2

      Есть знакомые, которые на личном опыте оспорили Ваш комментарий. И даже как-то работали (около года), опыта набирались…


  1. NeoN88
    04.12.2016 09:35
    +11

    Из опыта собеседований у нас на работе:
    приходит куча людей на вакансии сеньёров и тех-лидов со знаниями от силы на джуна. то есть люди вообще не знают базы и видно что у них нет ни опыта ни понимания как работают многие вещи.
    Так то отсутствие опыта не так то просто и скрыть.

    Я в своё время после курсов не стал заливать что я мидл, а честно сказал что нет опыта. Меня взяли и я н практике понял что отсутствие опыта в рабочем процессе не скрыть. У нас была маленькая команда с ежедневными коллективными код-ревью (мега-полезная штука для развития). И за пару лет мне таки удалось наработать хороший опыт и начать разбираться в предмете.


    1. afrokick
      04.12.2016 19:07
      +2

      Можно ли считать человека мид/сеньером, если он офигенно делает калькуляторы(то есть узкий круг задач выполнялся много раз), но не знает базы?

      Не раз сталкивался с мид/сеньер кандидатами, которые утверждали «я очень круто умею ставить кнопочки на форме и верстать UI, но знать не знаю и не хочу знать про стек и очередь, спросите лучше про кнопки».


      1. mayorovp
        04.12.2016 19:55
        +4

        Для человека, который делает формочки, база — это не стеки и очереди, а. внезапно, API контролов.


        От специалиста по формочкам ожидается, что:


        • он не спасует когда понадобится показывать на форме произвольное (определяемое во время исполнения) количество кнопок;
        • он знает как выносить в фон длинные операции;
        • он не испугается, узнав что интерфейс надо делать на нескольких языках;
        • его формочки адекватно отображаются на мониторах разных разрешений;
        • в его коде нет метода button76_Click.


        1. Simplevolk
          04.12.2016 21:13
          +1

          К тому же, он знает как сделать так, чтобы контролы визуально выглядели красиво (хотя внутри его XAML код может быть очень много хаков:) )


        1. EGlaz
          06.12.2016 10:30
          -1

          Человек, который делает формочки — как бы не программист, а скорее «программист по формочкам». То есть кусочек полноценного программиста.


      1. khim
        05.12.2016 00:53
        +1

        Слава богам ответ на этот вопрос, наконец-то, найден. Такого человека можно считать мидлом или сеньором, но его нельзя считать Software Engineer'ом. Вообще. В принципе. Никак. Это — другая специальность. Application Engineer.

        Вопрос закрыт.


  1. lookid
    04.12.2016 11:45

    https://www.youtube.com/watch?v=Sz0o9clVQu8
    Millennials in the Workplace Training Video
    Ох уж эти миллениалы.


  1. Mariik
    04.12.2016 12:27
    +12

    Одна компания использовала это против меня и предложила мне 60000$ (столько предлагают младшим разработчикам).


    А разве автор оригинального текста не является именно младшим разработчиком? Не пойму чему именно он возмущается.


  1. YourDesire
    04.12.2016 12:27
    -2

    А мы вот сидим в своем Уссурийске и клепаем сайты (читай — пиши, дизайнь, админь, продвинь) за 20-30 т.р. / мес. Работодателя не шибко и интересует твой список скилов…


    1. betsuni
      04.12.2016 14:53
      -6

      если бы вы родились в США, то и вы бы сидели там и клепали бы там. вы там были? там — не рай случайно, нет? тотальная слежка, запредельная арендная плата в СФ и медицина по такой цене, что болезнь может съесть всю вашу годовую зарплату. неплохо, я думаю.


      1. Areso
        04.12.2016 15:59
        +1

        А где-нибудь на окраине необъятных просторов человек просто умрет, потому что не получит квалифицированной (или вообще какой-нибудь) медицинской помощи (слышали, бюджет на медиков опять на треть сократили?).
        Велика разница…


        1. cultura
          05.12.2016 09:23
          +4

          Американцы без страховки или с плохой страховкой даже от скорой помощи отказываются, стремяться как можно раньше покинуть больницу с неподзажившими ранами от операций, занимаются самолечением.

          И таких очень много. 45 миллионов американцев не имеют страховки вовсе.
          http://argumenti.ru/rassledovanie/n415/299863

          Из-за высоких цен на медобслуживание ежегодно умирают десятки тысяч американцев. Каждый шестой гражданин США не может себе позволить медицинскую страховку. А это значит, что в случае серьёзной болезни ему придётся рассчитывать только на себя. Волонтёры североамериканского офиса Стрингерского бюро международных расследований собрали сведения о самой болезненной для сегодняшней Америки проблемы – заоблачной стоимости медицины.

          Простите, но у нас такого беспредела нет — чтобы 45 мл. населения вообще не имели доступа к мед. помощи. Это чисто американская особенность.

          А еще есть те, у кого минимальная страховка, покрывающая только простейшие ситуации. И таких уже — подавляющее большинство.

          В реальности хорошая медицинская помощь типа как в «Докторе Хаусе» доступна только 15% американцам.

          Американцы с хорошими окладами, как правило, автоматически имеют хорошую страховку.

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

          Никакой разницы.
          Разница только в том, что у нас меньше оклады, но и страховка из окладов не вычитается.


          1. cultura
            05.12.2016 09:44
            +2

            http://www.usinfo.ru/medicina.htm

            США — единственная из ведущих индустриальных держав, не принявшая систему обязательного медицинского страхования.
            108 млн. американцев не могут себе позволить сходить к зубному врачу.
            У 45 млн. американцев нет мед. cтраховки,
            среди них 10 млн. детей.
            … Потому американцы исправно кормятся многочисленными таблетками и витаминами ежедневно, надеясь избежать встречи с врачом.
            Ежегодно почти сто тысяч человек по всей Америке гибнут из-за медицинских ошибок
            Среди людей, лишенных медицинской помощи, около 88% работают, но многие не зарабатывают достаточно для того, чтобы оплатить частную медицинскую страховку. В то же время они не могут получить государственную страховку для бедных, поскольку их доход превышает официальный уровень бедности. В случае неоплаченного лечения действует право наложения ареста на имущество должника и человек может остаться бездомным, так как медицинские счета легко могут составить 20 тыс. долларов и более.
            Однако дороговизна медицинского обслуживания не гарантирует его добросовестности.
            По оценкам, более половины смертей в госпиталях можно было бы предотвратить.
            … американцев с годовым семейным доходом 9 тыс. долларов и менее умирает в три раза больше, чем американцев с семейным доходом 25 тыс. долларов и более.
            Все дорогостоящие виды медобслуживания зачастую назначаются только ради выгоды, чтоб выбить максимум денег из пациентов. Врачи в принципе не заинтересованы в излечении больного, т.к. это лишает их доходов.
            Потому в США один за другим проходят процессы, где пострадавшие пытаются отсудить у клиник деньги за навязанное им «лечение», которое не только разоряет огромное количество людей, но и может окончиться инвалидностью или смертью.

            Средний период ожидания в отделениях скорой помощи США составляет 7 часов. Если больной не доставлен в больницу на машине «скорой помощи», то существующая процедура требует, чтобы он зарегистрировался в регистратуре, а потом медсестра проводит поверхностный осмотр чтобы определить сложность ситуации. После этой процедуры больной может часами ждать осмотра врачом. Если, при всем этом, требуется сдать анализы или сделать рентген, то ожидание может занять более 12-ти часов.

            в США подан иск против компании Tenet Healthcare Corp., владеющей сетью из 114 больниц в 16 штатах и обеспечивающей их работу. Руководство компании и восемь врачей ее клиник обвиняются в систематическом проведении не требовавшихся операций на сердце. 51 пациент из 366 перенесших операции на сердце без необходимости скончался. В иске говорится о том, что смерть некоторых из них наступила в результате перенесенной операции.

            Как когда-то говорил Михаил Жванецкий, «Америка – хорошая страна, пока не заболеешь».

            В Америке можно позволить себе заболеть, только если вы зарабатываете очень большие деньги или являетесь знаменитостью.

            Медицина в США, как и все остальное, основана на делании денег, а вовсе не на помощи людям – со всеми вытекающими отсюда последствиями. Если в России врачами становятся по призванию, то здесь это делают в подавляющем большинстве своем ради денег. Результаты этой системы очень плачевны, а наличие медицинской страховки дает лишь частичное облегчение.

            Если вы хотите, чтобы ваша страховка все покрывала, и чтобы вам не нужно было доплачивать ничего из своего кармана, то вы приехали не туда. Если вы хотите доплачивать минимум, то вам придется месяцами ждать разрешения на прием у специалиста, к которому вы можете попасть только по направлению лечащего врача, и обоих вы можете выбрать только из списка, предоставляемого вам страховой компанией.

            Другой вариант заключается в том, что у вас есть относительная свобода выбора специалиста (правда, тоже по списку) без направления лечащего врача, но в этом случае вам придется доплачивать, как правило, 20 процентов стоимости всех медицинских услуг из своего кармана. В дополнение к страховке, конечно.

            Если вам понадобилась срочная помощь, а врач, оказавший ее вам, не входит в предоставленный страховой компанией список врачей, то вам придется заплатить по полной стоимости, что составляет в среднем около $200-$300 за один прием! У вас есть страховка? Нет, у этого врача нет контракта с этой страховой компанией. Извольте заплатить по полной стоимости!
            Чтобы не быть голословным, приведу пример. Наш сосед по дому сломал ногу и летал в Москву накладывать гипс, потому что ему перелет туда и обратно плюс неделя проживания в Москве обошлись дешевле, чем стоила бы накладка гипса в любом местном госпитале!

            Я вскоре сам убедился в правдивости его слов, когда мне сделали операцию по удалению дефекта косточки на большом пальце ноги. Операция длилась всего час и стоила $7000, из которых $1500 я заплатил из своего кармана. Это при том, что я плачу за медицинскую страховку $350 каждый месяц.

            Ведь действительно мне было бы дешевле слетать в Москву, где мне бы сделали эту же самую операцию за одну десятую стоимости в лучшей клинике не менее квалифицированные специалисты, плюс у меня бы еще остались деньги на цветы для женщин и на обед с ними же в хорошем ресторане.

            К сожалению, безумная стоимость медицинского обслуживания это еще полбеды. Найти хорошего врача в Америке сложнее, чем белые грибы в феврале у стен Кремля.

            Когда я обратился к ортопеду с болями в ноге (я много играю в футбол, поэтому травмы ног для меня – нормальное явление), он сделал мне рентгеновский снимок. Посмотрев на него, врач с умным видом заключил, что он ничего не видит на нем, и у меня вскоре должно все пройти само собой. Я уже тогда перестал сомневаться в квалификации этого гения мировой медицины, но на всякий случай поинтересовался, почему у меня в течение шести предыдущих месяцев ничего не проходило. В ответ он пожал плечами и сказал, что он просто не имеет понятия. Больше информации из него вытянуть мне не удалось. В итоге, я потратил еще год на хождения по врачам, пока не нашел такого, который мне смог поставить диагноз и вылечить проблему единственным уколом!

            Это всего лишь один пример из моих многочисленных столкновений с хваленой американской медициной. Не буду их приводить здесь, но могу с уверенностью утверждать, что такого уровня некомпетентности и безразличия к больному невозможно представить ни в одном страшном сне.

            По последним данным, из 19 цивилизованных стран США имеет самое низкое качество медицинского обслуживания, которое выражается, как это ни печально, в самой высокой детской смертности. (KABC Radio) (46)

            · Шестьдесят миллионов американцев (практически четвертая часть населения) не в состоянии оплатить себе ежегодную медицинскую страховку. То есть все эти люди вынуждены выбирать между оплатой страховки, что равнозначно для них практически полному разорению, и существованием без гарантии покрытия расходов на медицинское обслуживание.

            В последнее время в стране, где работают лучшие в мире врачи и построены лучшие в мире больницы, ситуация с медицинским обслуживанием значительно ухудшилась. В Техасе, например, из-за урезания финансирования число детей, не получающих бесплатного медицинского обслуживания, увеличится еще на 275000 человек. Этому американскому штату уже принадлежала пальма первенства в области лишения детей права на бесплатную медицинскую помощь — наследие, оставленное прежним губернатором Джорджем Бушем.

            На одной из встреч с губернаторами штатов американский президент заявил, что они не должны рассчитывать на Вашингтон при решении своих финансовых проблем: «Мы живем в очень сложное время, страна находится в состоянии войны». Но и после окончания войны по-прежнему нет возможности компенсировать лечение и медикаменты неимущим больным. Драконовские налоги, установленные для производителей табачных изделий, и прочие меры, принятые в экстренном порядке, практически ни к чему не привели. И все это, не говоря об астрономических ценах на медикаменты — в Соединенных Штатах лекарственные средства стоят дороже, чем в любой другой стране мира, и при этом фармацевтические производства получают до 73% прибыли. Многие из американцев вынуждены ездить в соседние Канаду и Мексику, чтобы покупать там необходимые им лекарства. Особенно остро эта проблема стоит во Флориде — золотом раю для пенсионеров: в Соединенных Штатах затраты на лекарственные средства у людей пожилого возраста составляют 3000 долларов в год. (129)

            · Проблема медицинской помощи — одна из острейших в США. Расходы на медицину составляют астрономическую сумму — примерно 14% ВВП страны, при этом многие жители США не имеют средств на оплату визита к врачу и покупку лекарств. В 2003 году среднестатистический житель США потратил на медицинские цели $5 440. Жители США потратили на медицинские цели на 9.3% больше, чем в 2002 году. При этом, затраты на покупку медикаментов выросли более, чем на 15% (все данные правительственной организации Centers for Medicare and Medicaid Services). К примеру, стоимость посещения терапевта, в среднем по стране, составляет $120. В среднем по США, медицинские расходы на душу населения (расходы, которые житель США оплачивает из собственного кармана или погашает страховая компания) составляют $3 759 в год. Ежегодно более 18 тыс. американцев погибают только из-за того, что у них нет медицинской страховки, и они не в состоянии оплатить медицинскую помощь. Согласно исследованию, проведенному Institute of Medicine (негосударственной организации, проводящей независимые экспертизы в медицинской сфере для Конгресса США), незастрахованные люди, у которых обнаружен рак груди, имеют на 50% больше шансов умереть, чем застрахованные. Также значительно больше шансов расстаться с жизнью у жертв несчастных случаев, диабетиков и гипертоников. 77 млн. американцев имеют так называемую «прерывную страховку», т.е. в определенные периоды не имеют никакой (например, в случае потери работы).


            1. mafia8
              05.12.2016 11:43

              Бизнес-план: возить американцев на лечение в Москву. Или в другой город в России.


              1. cultura
                05.12.2016 13:01
                +5

                Так, кстати, делают.
                Называется «медицинский туризм». Термин удостоился помещения в Википедию, значит, довольно устоявшийся термин.

                Медицинский туризм даже внутри РФ.
                Скажем, москвичи любят лечить зубы в провинции.

                И туризм и сэкономил. А качество — то же.

                Хорошие стоматологи в крупных провинциальных городах РФ используют ровно те же технологии, что и их собраться из США.

                За исключением особо сложных медицинских случаев и штучного оборудования ведущих клиник — услуги ровно те же.

                P.S.:
                Но, как правило, это делают, летая в гости к родственникам.
                В цитате упомянуто, что люди иногда летают из США в Москву (очевидно, выходцы из РФ).
                К нам в провинцию из Москвы прилетают на побывку и полечиться детки тех, кто живет здесь.


            1. varnav
              05.12.2016 15:28

              Без страховки нынче нельзя — а то штраф-с.

              https://www.healthcare.gov/fees/fee-for-not-being-covered/


            1. Wrangler
              05.12.2016 23:47
              +1

              В ответ на реплику человека о сокращении расходов на медицину в России, Вы притащили огромный (и сильно устаревший) материал о том, как плохо «там». Знаете, что такое «обратный карго-культ»? Приобщитесь, очень любопытное явление.

              Я не буду приводить пруфлинки на неизвестно кем и с какой целью написанные статьи, а дам собственные примеры.

              — В январе в США делали операцию по удалению жёлчного: лапораскопия за час-полтора, полчаса на отходняк и — домой; три дня не делать резких движений. Хирурга нужно выбрать из списка, но список достаточно велик. Общая стоимость всего медобслуживания с предварительной диагностикой и лекарствами вышла ~36-38 тыс. долларов. Из кармана пришлось заплатить ~1200-1300 со средней зарплаты сениора, и это размазано на несколько месяцев. Лекарства, кстати, тоже покрываются страховкой значительно.

              — В октябре в США у подруги, приехавшей в гости возникла резкая боль в брюшной полости, пришлось вызывать скорую. Американской страховки у неё, конечно же, не было. Разговор по телефону занял 3 минуты, скорая была на месте через 6 минут (ночью дело было). В больнице скорой нашли русскоязычного медицинского переводчика минут за 5. Сделать успели ЭКГ, УЗИ, биохимию крови, записать историю болезни, полечить уколами и микстурами, прописать дальнейшее лечение и назначить визит к гастроэнтерологу. Оказалось обычным, но очень сильным пищевым отравлением, и дальнейших расходов не повлекло. В итоге всё суммарно обошлось ~2500 долларов. Один важный нюанс: при выходе из скорой заплатить пришлось 350. Счета на остальное идут частями и будут идти ещё с полгода, так что продавать машину/квартиру/почку для оплаты таких счетов не придётся.

              Прошу всех извинить за этот эмоциональный оффтоп, не могу удержаться, когда обсуждение превращается в Вести недели.


              1. cultura
                06.12.2016 08:55
                +2

                В январе в США делали операцию по удалению жёлчного: лапораскопия за час-полтора, полчаса на отходняк и — домой; три дня не делать резких движений. Хирурга нужно выбрать из списка, но список достаточно велик. Общая стоимость всего медобслуживания с предварительной диагностикой и лекарствами вышла ~36-38 тыс. долларов. Из кармана пришлось заплатить ~1200-1300 со средней зарплаты сениора, и это размазано на несколько месяцев. Лекарства, кстати, тоже покрываются страховкой значительно.


                Ровным счетом никакого противоречия.

                Вы — сеньор.
                С соответствующей страховкой.

                Подавляющее большинство людей имеют куда как меньшие доходы.
                И старховки. Если имеют.

                В Америке хорошо болеть богатым.
                И тем, кто зарабатывает достаточно, чтобы у него была хорошая страховка.

                Только и всего.

                Так что нет никакого противоречия.

                Согласно открытой и свежей статистике — у 45 миллионов в США нет страховки вообще.
                А у еще 100 млн. страховка стрёмная, по которой даже зубы не вылечишь.
                И т.д.


                1. Wrangler
                  06.12.2016 21:59
                  +1

                  Мне вот что непонятно: в ответ на короткую реплику о, вероятно, наболевшем — что в глубинке трудно получить квалифицированную медпомошь, Вы сделали мегапост о том, как плохо с медстраховками в США. Зачем?

                  Вы занимаетесь демагогией. Ещё и опирающейся на *устаревшую* статистику, так как сейчас приведённые цифры заметно ниже, что показывает прогресс.

                  Ну и про страховку зубов: в США она, как и страховка зрения — это отдельные статьи, не связанные с общей медстраховкой, они часто даже предоставляются отдельными страховыми компаниями. Моя страховка зубов обходится $6-8/мес, а зрения — в два раза дешевле. По-моему, такую сумму нетрудно платить даже с пособия.


              1. taujavarob
                06.12.2016 17:42
                +1

                Wrangler > В январе в США делали операцию по удалению жёлчного: лапораскопия за час-полтора, полчаса на отходняк и — домой…

                Беларусь. Обострение жёлчного. Лапароскопию не стали — потому что — как сказали — обострение.
                Полосная операция. 2 недели в больнице. 2 недели дома.
                2000 год. 25$ на руки анестезиологу (он у них был за «поговорить об операции» и для сбора денег).

                Продавленные кровати. Еда нормальная. Но матрацы с комками ваты запомнились.

                2000 год. Минск. Больница Скорой Помощи. Операции там такие идут потоком непрерывно.

                Да, был у них ещё «телевизор» — дырка в животе и туда вводят камеру со светом. Я отказался. Не хотел дырку в животе получать. Это обозлило хирурга. Вот он меня и располосовал.
                Узи камень нашло на третий раз (на второй день)


          1. Julles
            08.12.2016 01:28

            Мне кажется фраза «не иметь доступа к мед.помощи» некорректно сформулирована. Доступ есть у всех, застрахованных или нет. Просто по итогу выставят счет, и нужо будет бодаться по сумме этого счета, долго его выплачивать или объявлять банкротство, если сумма вышла астрономическая. Самым бедным положена бесплатная страховка, так что в «ловушку» попадают обычно те, кто работает и имеет уровень дохода достаточный для проживания, но за страховку вынужден платить самостоятельно, и считает что ее себе позволить не может («считает» тут специально, поскольку у разных людей — разные приоритеты, и некоторые считают что новый айфон важнее страховки, и вообще «они не болеют»).

            Плюс ситуация не одинакова по США, а варьируется от штата к штату. В большинстве «демократических» штатов программу medicaid расширили и она покрывает всех, чей доход ниже 26К в год, а людям со средним доходом дает скидки на покупку страховки. В «красных» штатах, которые последние несколько лет потратили на борьбу с обамакеар, это расширение не приняли, в итоге в некоторых штатах бесплатная страховка положена только людям с годовым доходом менее 3000. При стоимости страховки в 300-1500 в месяц в зависимости от состава семьи, понятно, что семья с доходом в 20 000 вряд ли сможет себе страховку позволить. Так что остается только обслуживаться за деньги, и объявлять банкротство, если грянет гром.


    1. lasc
      05.12.2016 00:23
      +1

      Вас же в уссурийске не на цепи же держат, едьте туда где интересуются и платят.


      1. Areso
        05.12.2016 16:15

        Всей Россией жить в Москве, хорошая идея? И пенсии почти вдвое выше, и минималка по оплате труда, сколько там нынче с нового года будет, 17 тысяч? Да и в целом уровень оплаты труда хороший. И интересуются и платят. А в Уссурийске, наверное, только уссурийские тигры и ходят в заказчиках, а что с них взять — четыре лапы, хвост да усы… при таких раскладах вообще хорошо, что в Уссурийске что-то людям платят!


  1. pilipim
    04.12.2016 12:27
    +4

    Человек прокачал навык прохождения собеседования. А дальше то что?
    А дальше, научил других.
    Искать специалиста сложно. Как правило, нет того кто будет работать так как надо сразу. А значит у него есть время на старте, пока его не раскусят. А у самого есть шанс надорваться.

    По моему, лучшее решение, это честно говорить о себе и занять позицию интерна в желаемой компании. Потом качать скиллы пару лет…


  1. igrishaev
    04.12.2016 14:03
    +1

    Тоже недавно искал работу на западном рынке. Отвечают очень мало, судя по письмам, 1-2%. Процесс очень долгий, будте готовы ждать до 3-х месяцев.


  1. nez30
    04.12.2016 15:00
    -9

    не знаю как вам, а мне помогают сильно вот эти ребята http://www.pro1c-msk.ru/


  1. Creatis
    04.12.2016 15:00

    Чисто для мотивации, статья не плохая. В тонкости кодов я не вникаю, и не придаю этому значения так как полный нуб в этом, но статья толковая, читается легко.


  1. ToSHiC
    04.12.2016 17:16
    +2

    Собственно, из-за обилия таких «специалистов» и растут зарплаты в долине у нормальных разработчиков. Это же самый настоящий пузырь.


    1. cultura
      04.12.2016 17:37
      -3

      Ты так говорите, будто это плохо?
      Или у вас своя фирмочка в долине и этот пузырь лично ваши расходы на сотрудников повышает?


  1. p9202583853
    04.12.2016 18:55
    +2

    А разве в перевод не надо было вставить «Как»? «Как я провел… кучу компаний», или «Всего за 3месяца....»
    просто то как это сейчас написано коробит глаз! (;
    «Я провел 3 месяца, пытаясь устроиться на работу после лагеря программирования, и вот чему я научился»


  1. ShmeLo
    04.12.2016 18:55

    «Одна компания использовала это против меня и предложила мне 60000$ (столько предлагают младшим разработчикам).» — А ничего что это около 300к рублей в месяц? Это как бы и для Москвы очень даже хорошая зарплата для опытных специалистов.


    1. youlose
      04.12.2016 18:59
      +1

      Там ещё налогов процентов 40, забугорные товарищи любят называть зарплаты годовые и до вычета налогов.


    1. LaXiTy
      04.12.2016 23:44

      я думаю это годовая зарплата, не так уж и много


      1. fenixlz
        05.12.2016 07:28

        А что, кто-то утверждал что это в месяц?


        1. ShmeLo
          05.12.2016 08:35

          60 000 / 12 ? 65 = 325 000


          1. fenixlz
            05.12.2016 08:38

            Я именно это и имею в виду.


  1. Gemorroj
    04.12.2016 18:55
    +5

    Отрасль растет, лишних людей, подобных герою статьи все больше…


  1. vKreker
    04.12.2016 19:51
    +3

    На собственном опыте скажу, что email-контакт, конечно, повышает шанс быть замеченным, но шанс напороться на игнор еще выше. У нас не заведено говорить «нет», поэтому HR предпочитают играть в молчанку и всячески огораживать себя от соискателей. Получая письмо в обход стандартной процедуры, они могут «не заметила, потому что очень много писем». А секретарь на ресепшене по телефону скажет, что у них не заведено соединять с HR.
    Писать напрямую спецам в обход HR — моветон, можно сразу получить бан.


    1. varnav
      05.12.2016 15:26
      +3

      Здесь будет уместен анекдот:

      — Поручик, раскройте секрет, как вы так ловко разводите женщин? — О, я подхожу и спрашиваю: мадам, позвольте вам впендюрить-с! — Но поручик, за это ведь можно и по лицу получить! — Можно. Но чаще впендюриваю!


  1. echo_mont
    04.12.2016 20:08

    3 мес в каком-то почти школьном летнем лагере??? Вау!
    Список с гитхаба я возьму на заметку, спасибо автору.


  1. Madzi
    04.12.2016 23:44
    -1

    return !!studying && !!hardWork && !!luck;


  1. AxisPod
    05.12.2016 07:28
    +1

    3 месяца обучения и еще на что-то расчитывать? Если бы так было, давно бы уже никто в вузах бы и не учился и не тратил свою жизнь на обучение.


    1. cultura
      05.12.2016 09:29

      Программисту в ВУЗе учиться не нужно.

      98% программистов занимаются всю жизнь работой, которой их вполне могли бы научить в ПТУ и техникумах.

      ВУЗ — это пережиток времени, когда профессия программиста была элитной-штучной. Это лет 30 тому назад было.

      Оставщиеся 2%, действительно, занимаются очень серьезными вещами — для которых, парадокс, вузовского образования уже недостаточно.

      ВУЗ программистам не нужен.
      Но курсы длинной в 3 месяца — это перебор, конечно.
      Нужно хотя бы 2 года обучения.


      1. wsf
        05.12.2016 13:36
        +4

        Угу а потом такие «ВУЗ не нужен» не могут TCP от UDP отличить. И начинают названиями фреймворков сыпать.


        1. mayorovp
          05.12.2016 14:07
          +3

          Меня тоже расстраивает когда кто-то не может TCP от UDP отличить. Вот только, к сожалению, ВУЗ — не гарантия наличия подобных знаний...


        1. cultura
          05.12.2016 15:39
          +4

          Вы взаправду считаете, что TCP от UDP нужно учить 4-5 лет отличать???

          Основы HTML нам в свое время рассказали за 30 минут.
          Основы TCPIP — за 20 минут.
          ;)

          Если кто-то сказал вам, что этому нужно учить годами — то тот просто тупо хочет денег.
          Не учить тебя, Карл,
          а просто взять твои деньги, Карл.


      1. AxisPod
        05.12.2016 15:50

        Т.е. вы считаете, что теория это бред? ВУЗы помимо того что учат тупо ЯП, дают хорошую теорию, математику, физику и т.д. Учит в принципе работать правильно, работать с литературой и самое главное — Расставляет акценты.

        Да, есть те, кто способен и сам это освоить, но будет это куда дольше. И это скорее исключение из правил.

        Да, ВУЗ не гарантирует того, что специалист выйдет годный, но отсутствие ВУЗа с большей вероятностью гарантирует, что ничего путнего работодатель не получит.


        1. mayorovp
          05.12.2016 15:58

          Для того, чтобы клепать формочки или верстать странички — выходящая за рамки школьной программы математика не требуется.


          И уж точно программисту не нужны философия, социология и культурология.


          1. AxisPod
            05.12.2016 18:21

            Верстать странички должен верстальщик, а не программист. А клепать формочки должен джуниор, но помимо джуниоров явно еще повыше должен быть уровень. А вот общаться явно программист должен, да и адекватным тоже и опять же общая программа хуже человека не делает.


            1. mayorovp
              05.12.2016 18:42

              Делает, делает. Особенно когда профильные предметы учатся по остаточному принципу, потому что "общая программа" важнее.


        1. cultura
          05.12.2016 17:40
          +1

          Т.е. вы считаете, что теория это бред? ВУЗы помимо того что учат тупо ЯП, дают хорошую теорию, математику, физику и т.д. Учит в принципе работать правильно, работать с литературой и самое главное — Расставляет акценты.


          Кому нужна физика?
          Админам? 1С-никам? PHP-истам?

          Математики для работы 98% программистов достаточно на уровне 6-7 класса школы. Даже не 10-11.

          А учить работать с литературой 4-5 лет — это чрезвычайно расточительно.


          1. AxisPod
            05.12.2016 18:24

            Ах да, других же программистов не бывает, да и физика даётся в качестве общего предмета обычно. А вот математика конечно же не нужна, правильно. Обработки данных нет, это фантастика, компиляторы, поисковики да и кучу другого никто не делает, оно само появляется, просто вот так прямо из великого void и берется.

            А когда даже с вуза приходят студенты на собеседования и смотрят в книгу, видят фигу, видимо даже и этого недостаточно. И опять же поглядеть на тостер, 99% вопросов потому что лень книжечку почитать или просто отсутствует понимание того, что это куда лучше, чем просто ждать, пока за тебя кто-то сделает.


            1. mayorovp
              05.12.2016 18:46

              Вы так пишите, как будто каждый программист занимается какой-нибудь обработкой данных...


            1. cultura
              06.12.2016 09:00
              -1

              Ах да, других же программистов не бывает


              ОК, давайте добавим сюда фронтендеров (не тех, что игры делают, где, возможно и понадобится какая-то математика/физика, а возможно и нет).

              Админы, PHP, 1C, фронтенд — это 90% программистов.

              Насчет компиляторов — это смешно.

              Вы сами-то хоть один компилятор в мире написали?
              А ваши знакомые?

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

              А когда даже с вуза приходят студенты на собеседования и смотрят в книгу, видят фигу, видимо даже и этого недостаточно


              Напротив.
              Нужно сокращать до 2 лет.
              Фигу вполне можно научиться видеть за этот срок.


  1. amaksr
    05.12.2016 08:26

    Встречались не раз красавцы с большими запросами, им даже давали то, что они просили. Но по прошествии probation period — bye-bye по формулировке низкой эффективности.


    1. cultura
      05.12.2016 09:36
      +2

      Ага, такое не редкость.

      Встречал таких более чем неоднократно.

      В среднем 1 раз в 2 года в небольших конторах.
      2 раза в год в больших конторах.

      Действительно, можно получать больше денег, чем стоит твоя средняя квалификация на рынке.
      Это касается не только ИТ

      Видел такое и среди ИТ-шников и среди менеджеров и пр. и пр.

      Поскольку там не 5 и не 10 процентов разницы, а бывает и в 2 раза выше оклад — то усилия по бомбардировке 300 фирм запросами вполне оправдываются.


  1. Scf
    05.12.2016 12:16

    Не статья, а просто какой-то кошмар работодателя. Расскажу со стороны собеседующего: разместили вакансию, и тут поперли косяком люди с красивыми резюме, но в программировании ни в зуб ногой. Почти всем хватило трех простых вопросов:


    • расскажите об особенностях быстродейтвия ArrayList vs LinkedList
    • напишите программу, которая читает текстовый файл с диска, сортирует в нем строки и сохраняет в другой файл
    • напишите рекурсивную функцию, вычисляющую максимальную глубину дерева.

    А на каждого надо тратить время...


    1. cultura
      05.12.2016 13:11
      +1

      Ну давайте проверим меня.
      20 лет реального опыта.

      Первый вопрос. Не знаю что это за *List, я вообще в другом языке спец, не в этом.
      Ну разве что косвенно по названию, что первый — массив, следовательно доступ по простой прямой адресации (по смещению), а второй это связанный список и доступ куда как более медленный, предполагается перебор, в худшем случае (когда нужно найти последний элемент) — придется долго перебирать все до единого элементы. И только доступ к первому-второму элементу сопоставимы по времени с доступом к элементу в массиве.

      Второй вопрос:
      Ну дык это же от размера файла зависит. Если он целиком помещается в оперативку, то это всего-то «открыть, прочитать, сортировать, записать» с использованием какой-то библиотечной функции.
      А вот если размер файла может быть непредсказуемо огромным и программа должна это уметь — это весьма и весьма непростая задача. Уж всяко несопоставимая с первой трактовкой этой задачи. И далеко не всякий отличник учебы, сдавший всего Кнута на 5, сможет сходу решить ее.

      Про рекурсию просто. Но, согласен, что это хороший тест. Рекурсию многие даже «настоящие программисты» не понимют.
      Более того, на заре программирования (лет 50 назад) её даже опытные люди (профессора и т.п.) хотели запретить при проектировании какого-то языка программирования (то ли Алголя, то ли еще какого из тех времен).


      1. mayorovp
        05.12.2016 13:15
        +1

        И далеко не всякий отличник учебы, сдавший всего Кнута на 5, сможет сходу решить ее.

        Это вообще как? У Кнута она же разбиралась...


        1. cultura
          05.12.2016 13:25
          -2

          Вы помните все, что написано у Кнута?
          Гм.
          Вам нужно попросить родственников найти и держать под рукой телефон псих. больницы — ибо вы на грани.

          Я знаю, где искать решение этой задачи (например, как раз у Кнута).
          Но я не помню как её решать.

          И, кстати, вполне возможно, мне проще будет самому придумать решение, а не разбираться с тем, что написано у Кнута.


          1. khim
            05.12.2016 13:59

            Половина Кнута посвящена алгоритмам на магнитных лентах. Что было необычайно актуально в момент, когда Кнут это писал (десятилетия назад) и, внезапно, оказалось снова «на острие» в последнее время. Так как памяти на соседней машине в датацентре по свойствам хотя и отличается от магнитной ленты, но многие алгоритмы — ложатся без изменений.


            1. Skerrigan
              16.03.2017 10:37

              Поддерживаю, что там по навигатору? Интересует возможность интеграции с BMW 2004-го года.


              1. mayorovp
                05.12.2016 15:49
                +1

                Да и, опытному программисту придумать такие вещи тоже не очень-то и сложно.

                Так в том-то и дело! Достаточно знать как такие алгоритмы придумываются — и второй вопрос не будет представлять сложности даже на больших размерах файлов.


                1. cultura
                  05.12.2016 17:45

                  В реальном проекте — да.
                  Далеко не во всяком. И даже не в каждом сотом проекте, но — да.

                  И вот потому что это нужно даже не в каждом сотом проекте, то для собеседования по приему на работу, если вы не MS и не Google — как то слишком.


                  1. mayorovp
                    05.12.2016 18:49

                    На собеседовании надо показать, что вы умеете применять свои знания. Умеете думать. Или вы считаете, что если вы не MS и не Google — то и думать вашим программистам не надо?


                    Кстати, почему вы уверены, что Scf работает не там? :)


                    1. cultura
                      06.12.2016 09:05

                      Уверен, что у Google и MS нет проблемы с отсеиванием тех, кто не знают про рекурсию еще на более ранних стадиях, чем с ними встречался бы Scf

                      Тестить следует общие познания (я так и делаю, когда провожу собеседования), общий кругозор.

                      А вовсе не такие хитрые и специфические мало кому нужные алгоритмы проверять как внешняя сортировка.


      1. Scf
        05.12.2016 14:00
        +2

        Если интересно мое мнение, опыта у вас много, но читаете по профессии недостаточно)


        При оценке быстродействия структур данных положено различать разные операции над ними и использовать o-нотацию. big data, map-reduce, сортировка в кластере, наверное, знакомы всем, кто активно интересуется современным IT. Самый простой способ решить такую задачу — сортировка слиянием (merge sort). Имхо, каждый уважающий себя программист должен прочитать хотя бы одну книжку по алгоритмам. Мне нравится вот эта: http://www.ozon.ru/context/detail/id/6290126/


        Конечно, нельзя требовать знание всего этого с джуна… но кто сказал, что эти вопросы годятся только для него?)


        1. cultura
          05.12.2016 16:36

          Про о-нотацию в курсе.

          Но не думаю, что знание этих самых «о» реально должно быть важно при приеме на работу.


          1. mayorovp
            05.12.2016 16:48

            Если человек не знает О-нотации — значит, он не умеет оценивать сложность алгоритмов. А значит, он будет "плавать" в тех задачах, где важна оптимизация.


            1. cultura
              05.12.2016 17:55

              Когда вы последний раз оценивали с помощью о-нотации какой-либо свой проект?
              Когда вы проводили последний раз анализ какой-либо библиотеки на предмет использования в своем проекте и вам нужно было о()


              1. mayorovp
                05.12.2016 18:51
                +1

                Вчера. Вот буквально вчера писал код и думал: "тут для простоты я использую квадратичный алгоритм — значит, надо убедиться, что большие наборы данных сюда не попадут".


                1. Source
                  06.12.2016 00:39

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

                  Шикарный пример оптимизации xD
                  А если серьёзно, то проблема действительно есть… мало программистов задумываются о производительности своего кода, хотя в большинстве случаев это упирается в незнание SQL. Ну и да, иногда попадаются на ревью квадратичные алгоритмы там, где можно было бы обойтись линейным, но это гораздо реже.


                  1. cultura
                    06.12.2016 09:16

                    мало программистов задумываются о производительности своего кода


                    Реальные оценки — они на совсем других, более банальных, уровнях:

                    • Минимизируй использование диска/сети, эффективнее используй оперативную память.
                    • Максимизируй получение/передачу данных за один приём.


                    И это собственно, все, что нужно знать, чтобы в типовых случаях поднять производительность программы процентов на 80%.

                    «Квадратичные» алгоритмы и т.п. — занимаются оставшимися 20% производительности.

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


                    1. mayorovp
                      06.12.2016 09:37

                      «Квадратичные» алгоритмы и т.п. — занимаются оставшимися 20% производительности.

                      Но что будет делать ничего не знающий программист, когда алгоритмически сложная задача внезапно возникнет перед ним? Просто возьмет и напишет нужный алгоритм (или авторитетно скажет что это невозможно и надо искать альтернативный путь) — или будет в панике задавать на ru.SO дурацкие вопросы?


                      Реальные оценки — они на совсем других, более банальных, уровнях:
                      • Минимизируй использование диска/сети, эффективнее используй оперативную память.
                      • Максимизируй получение/передачу данных за один приём.

                      То есть для этих задач теория ну вот совсем не нужна?


                      1. cultura
                        06.12.2016 09:52
                        +2

                        Цитата из меня:

                        Реальные оценки — они на совсем других, более банальных, уровнях:

                        Минимизируй использование диска/сети, эффективнее используй оперативную память.
                        Максимизируй получение/передачу данных за один приём


                        Ответ на цитату:

                        То есть для этих задач теория ну вот совсем не нужна?


                        Мне вас очень жаль, если до столь очевидных вещей вам нужно доходить только после 4-5 лет теории в ВУЗЕ.

                        Это вполне можно поставить фактом и заставить зубрить на третьем месяце обучения программированию.

                        Безо всякой теории.

                        Но что будет делать ничего не знающий программист, когда алгоритмически сложная задача внезапно возникнет перед ним?


                        Вы взаправду считаете, что вот так много лет можно щи хлебать лаптем (не заниматься ничем подобным), а потом — бац — вас приглашают во дворец фирмы Google (возникает прямо-таки сложная задача и вы первый кому её поручают после долгих лет отсутствия у вас подходящего под эту задачу опыта)?

                        95% программеров никогда в жизни не будут заниматься ничем подобным даже рядом.

                        Никогда не будут.

                        Это отнюдь не повод их все учить в ВУЗах — проедать государственные деньги, деньги своих родителей, позднее нанинать работать (что вредно для ВВП)…

                        Подавляющему большинство вполне хватит на всю жизнь и техникумов и ПТУ.

                        А оставшиеся 5% — да, вполне могут заниматься программированием на совсем других уровнях.

                        Но их всего лишь 5%…

                        Уверяю вас:

                        Никакая теория из 2-х моих высших образований (профильных) ни разу мне не пригодились за 20 лет программирования.

                        Только общий кругозор.


                        1. mayorovp
                          06.12.2016 10:02

                          Как-то вы хитро перешли от азов оценки сложности алгоритмов к ВУЗам и ПТУ.


                          А хитрая задача — она где угодно возникнуть может. Случайно.


                          PS


                          Это вполне можно поставить фактом и заставить зубрить на третьем месяце обучения программированию.

                          Поставить фактом — что? Как вообще можно ставить задачу максимизации или минимизации, не дав средство оценки максимизируемой или минимизируемой величины?


                          1. cultura
                            06.12.2016 10:16

                            А хитрая задача — она где угодно возникнуть может. Случайно.


                            Если вы когда-то умели решать сложные вычислительные задачи, но при этом целыми днями и годами делаете сайтики да рисуете интерфейсы в Андроиде, то вы деградируете в области решения сложных вычислительных задач, но при этом отлично затачивайтесь на интерфейсики.

                            Нет никакого рационального смысла 4-5 лет учиться, чтобы потом перетачивать свое мышление с вычислительных задач на другие.

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

                            Да, вы что-то вспомните, где-то почитаете и, долго-долго, но решите.

                            Но зачем тратить лишние годы в ВУЗе, если 99% нужного программисту знания осваивается за 2 года даже с запасом. А еще 2-3 года программист тратите на теорию, которая или вообще никогда не пригодится в его работе никогда или пригодится раз в 10 лет.

                            Поставить фактом — что? Как вообще можно ставить задачу максимизации или минимизации, не дав средство оценки максимизируемой или минимизируемой величины?


                            Если вы джун или студент — то еще понятно ваше непонимание.

                            Но если вы хотя бы миддл…
                            То вы очень слабый программер, если вам не очевидны эти правила:

                            Реальные оценки — они на совсем других, более банальных, уровнях:

                            • Минимизируй использование диска/сети, эффективнее используй оперативную память.
                            • Максимизируй получение/передачу данных за один приём


                            1. mayorovp
                              06.12.2016 10:18

                              Пожалуйста, прочитайте мой комментарий еще раз.


                          1. cultura
                            06.12.2016 10:38

                            Поставить фактом — что? Как вообще можно ставить задачу максимизации или минимизации, не дав средство оценки максимизируемой или минимизируемой величины?


                            Программирование — это не математическая функция с известным графиком. Когда можно предсказать точно — здесь приложишь столько-то усилий — получишь такой то выхлоп. Точно.

                            Все не так.

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

                            Поэтому задача частенько ставится не
                            «оптимизировать, чтобы отклик был не более 10 us»,

                            а по военной системе:
                            «копать отсюда и до обеда»,

                            другими словами — «вот ограниченный бюджет, что лучшее мы можем выжать из этого бюджета».

                            другими словами — бюджет (время, деньги) закончился — завершай и оптимизацию. До скольки удалось сделать — смотрим. Удается получить дополнительное время/деньги — продолжаем оптимизацию.
                            Не удается — останавливаемся на этом этапе.

                            Как правило в 95% случаев дополнительные бюджеты времени и денег на слишком глубокую оптимизацию не выделяют.

                            Поэтому вполне достаточно следования сразу при проектировании системы основным принципам.

                            То, о чем пишете вы — это уже ближе к переоптимизации и на ранних этапах не рекомендуется.

                            А то вы прототип/альфу будете выкатывать неоправдано долго.


                            1. mayorovp
                              06.12.2016 10:45

                              То, о чем пишете вы — это уже ближе к переоптимизации и на ранних этапах не рекомендуется.

                              А то вы прототип/альфу будете выкатывать неоправдано долго.

                              Почему вы так решили?


                          1. cultura
                            06.12.2016 11:48
                            +1

                            Как-то вы хитро перешли от азов оценки сложности алгоритмов к ВУЗам и ПТУ.

                            А хитрая задача — она где угодно возникнуть может. Случайно.


                            Я отнюдь не отрицаю полезность знаний как таковых.

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

                            Вы бы еще написали — защитивший диссертацию на кандидата технических наук будет более крутым программистом.

                            Нет. Он будет, скорее всего, средним программистом, а то и джуном (видел таких кандидатов технических наук в большом числе), за исключением своей очень узкой области.

                            Глубокие теоретически знания вам не нужны, чтобы принимать решения в области программирования на практике.

                            20 лет опыта программирования мне говорят об этом.

                            P.S.:
                            Профильное образование имею.
                            Не пригодилось.

                            Пригодился только общий кругозор,
                            уверенность в своих силах, которые дает ВУЗ.

                            Не припомню ситуаций, где мне прям кровь из носу
                            нужно было точно знать что именно здесь: o(n) или о(n^2).

                            Вполне достаточно понимания — как сделать быстрее.
                            Глубокой теории для этого не нужно. Выбор путей решения в реальном мире не столь велик.

                            Если у вас после 4-7 лет опыта не будет чутья чтобы без о() сразу видеть лучший путь — вы выбрали явно не ту профессию.


                            1. mayorovp
                              06.12.2016 12:02

                              Да где вы вообще увидели глубокие теоретические знания-то?


                              1. cultura
                                06.12.2016 12:20

                                В учебных заведениях должны учить архитектурам, учить замеры производительности производить, давать практику работы с разными видами СУБД.

                                А математика, физика, о()?

                                Какая о(), когда программист по десять раз на дню принимает решения куда двигать написание программы и непрерывно оценивает свой алгоритм.

                                Оценка основанная на здравом смысле и опыте — имеет преимущество перед академическими знаниями.


                1. cultura
                  06.12.2016 09:11
                  -2

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


                  Вах. Круто. Чувствуется свежезакончивший (или еще учащийся; в крайнем случае, думаю, не более как 5 лет назад закончивший).

                  Я такие вещи безо всяких квадратичных слов оцениваю.
                  Давным-давно все уже отлично работает на уровне интуиции.
                  ;)


                  1. cultura
                    06.12.2016 10:06
                    +1

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


                    Это абсолютно нормально если вы джун или студент.

                    Если вы миддл, еще туда-сюда…
                    Хотя, имхо, для мидлла такой уровень детализации при принятии решений — это уже избыточно.

                    Если вы сеньор и продолжаете думать в тех же терминах
                    Гм…
                    Вы выбрали не ту профессию.


                    1. mayorovp
                      06.12.2016 10:13

                      А в каких терминах должен думать сеньор? :)


                      1. cultura
                        06.12.2016 10:32
                        -1

                        Интуитивно уже. Автоматически.

                        Когда ты проговариваешь про себя формулировки — это слабое знание.

                        Это как с иностранным языком, например. Пока слабо знаешь — заранее произносишь фразы мысленно, заранее их составляешь.

                        Когда язык уже освоен — иноземная речь из тебя льется без какого-либо напряжения, без особого мыслительного усилия.


                        1. mayorovp
                          06.12.2016 10:51
                          +1

                          А с чего вы взяли, что я эту мысль проговаривал?


                          Интуиция — полезная вещь, но на пустом месте она не возникает. Чтобы интуитивно чувствовать "медленные" места в алгоритме — надо знать чем медленное место отличается от быстрого. Без нужных знаний никакая интуиция не поможет.


                          1. cultura
                            06.12.2016 11:12
                            -2

                            Проговаривали/продумывали — не важно.

                            Между мной и вами разница — что я вообще не мыслю уже этими категориями: квадратичное или какое.

                            Я просто знаю
                            Сразу.

                            Не думаю, что какая-то теория о о() мне в этом помогает.
                            Только опыт.

                            В том числе — и для новых технологий знания срабатывают.
                            Узкие места — на которые нужно обращать внимание — они и в новых технологиях остаются теми же — диск, сеть.


                            1. mayorovp
                              06.12.2016 12:07

                              Какая разница, мыслите вы этими категориями или нет — если вы их тоже знаете? Нельзя так сразу взять и начать "просто знать". Вы не смогли бы приобрести опыт оптимизации программ если бы никогда не читали и не слушали про методы оценки времени работы алгоритмов.


                              А еще "просто знание" и интуиция очень плохо передаются по каналам связи.


                              1. cultura
                                06.12.2016 12:26

                                Программист непрерывно оценивает алгоритм, над которым работает. Постоянно выбирает то или иное решение по много раз на дню.
                                Поэтому от академических оценок о() толка на практике очень мало.
                                Вполне достаточно здравого смысла и опыта.

                                А учитывая как обширно современное ИТ — лучше тратить время не на математику и физику и о() — это все пригодится только процентам программистов-выпускников учебных заведений, а — архитектуры и СУБД, учиться делать замеры производительности и т.п. практические вещи, а не академические знания, которые хороши только для формального доказывания эффективности алгоритмов.


                              1. cultura
                                06.12.2016 12:31
                                +1

                                Типичное решение не самой тривиальной задачи программистом (обычно задачки проще и более типовые):

                                https://habrahabr.ru/company/mailru/blog/316740/

                                Нам понадобилось уменьшить количество закупаемого железа и цену за хостинг. Чтобы найти, где сэкономить, давайте посмотрим, из чего состоит почта.

                                Индексы и тела писем составляют 15 % объёма, файлы — 85 %. Место для оптимизаций надо искать в файлах (аттачах в письмах). На тот момент у нас не была реализована дедупликация файлов; по нашим оценкам, она может дать экономию в 36 % всего объёма почты: многим пользователям приходят одинаковые письма (рассылки социальных сетей с картинками, магазинов с прайсами и т.д.). В этом посте я расскажу про реализацию такой системы, сделанной под руководством PSIAlt.

                                Хранилище метаинформации

                                Есть поток файлов, и надо быстро понимать, дублируется файл или нет. Простое решение — давать им имена, которые генерируются на основе содержимого файла. Мы используем sha1. Изначальное имя файла хранится в самом письме, поэтому о нём заботиться не надо.

                                Мы получили письмо, достали файлы, посчитали от содержимого sha1 и значение вычисления добавили в письмо. Это необходимо, чтобы при отдаче письма легко найти его файлы в нашем будущем хранилище.


                                И так далее.

                                Какую долю в размышлениях занимает самый обычный здравый смысл (98% или 99,9%)?

                                А какую долю занимают оценки по о() или тому подобная, что требует специальной теоретической подготовки, выходящей за пределы обычного здравого смысла?


        1. ToSHiC
          06.12.2016 01:00

          Значит, у вас есть жёсткий диск на 10ТБ, и 6ТБ данных. Как будете сортировать? :)


  1. superyateam
    05.12.2016 13:28

    На самом деле это хорошо, что в отрасли все больше таких людей. Настоящих профессионалов значит трудно найти, раз готовы брать выпускников таких лагерей, которые кроме реакта ничего не знают. И соответственно опытному программисту проще найти работу. Вот если бы все были умными и талантливыми…


  1. REPISOT
    05.12.2016 13:28
    +1

    В нашей личной жизни, мы намеренно умалчиваем о нашем образовании в лагере программистов.

    Я всегда думал, что «личная жизнь» — это немного другое.
    PS. Запятая после «жизни» лишняя.


  1. haldagan
    05.12.2016 13:28
    +2

    В противном случае, нас автоматически классифицируют как младших разработчиков или как работников, у которых недостаточно опыта.
    Я посвящал целые дни изучению алгоритмов сортировки


    Я не понял из статьи — осознает ли автор, что он по квалификации находится максимум на уровне джуна (если я правильно понимаю, то за плечами у него только этот «летний лагерь»)?

    Если да — то непонятно, зачем вся эта возня на три месяца: проработать месяц и быть уволенным из-за недостаточной квалификации?


    1. haldagan
      05.12.2016 13:50
      +4

      Не могу отредактировать запись. В общем посмотрел оригинал статьи и комментарии к ней — да, человек осознает, что он джун, тем не менее стремится на большие деньги, скрывая отсутствие опыта. Более того их в этом самом лагере учат скрывать, что весь их опыт собственно только из этого лагеря и состоит.

      Замечательный лагерь, я считаю. Делает миддлов с нуля всего за три месяца.