Отличный фреймворк!
Простой, чистый, производительный!
Так на его могиле и напишем...

image

Полсотни интернет-зависимых не спят. Прижав тощие и не очень задницы к стульям, они флудят в самописном чатике. Удовольствие стоит 6 рублей в час (цена «городского интернета» в далеких
2000-х с одним сервером на город-полумиллионник).


На это хватало сэкономленного на студенческих обедах. На выход в Глобальный Интернет по 33 рубля (хренасе!) в час — уже нет. Писк модема на 33600. Ночь.



Самое главное — на сервер можно зайти по FTP и выложить на всеобщее обозрение свое Ясделие. Свой сайт. Или чат. Или что ты там еще придумал. И кто-нибудь обязательно туда придет, посмотрит и оценит. И ты увидишь это на счетчике посещений (предтеча лайков размером 88?31).


В стеке технологий (правда, тогда слово «стек» употребляли с чем-то вроде «push ax») у нас было много всего:

  • PHP3, который еще не успели охулить (или успели, но в «городском интернете» про это никто не знал).
  • HTML4, который не во всех тогдашечных браузерах умел рендерить таблицы.
  • CSS-1.0 — магия.
  • JavaScript, который ламеры путали с Java.
  • Шестая чашка дрянного нескафе-голд.

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


image

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


Кладбище фреймворков. Начало


Глотком свежего воздуха стал Prototype (кто-нибудь помнит этот фреймворк?). Было так круто писать вместо document.getElementById что-то типа $()!


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


Меня это бесило дня два. Мне нравилось писать

$("id").style.color = "#FFF";

вместо

$("id").css({color: "#FFF"});


Но кто-то сказал, что это плохо, и я пересел на jQuery. Многие пересели.


Prototype оказался только шлюзом в мир, полный настоящего, вонючего дерьма! Оно хлынуло потоком. Маленькими кусками вроде mootools, который реально где-то полгода делал вид, что он конкурент jQuery и Prototype. И большими кусками вроде Dojo (кто это помнит?!), Yahoo! UI Library (в итоге — Extjs).


Нам нужен был MVC (или HMVC?), и у нас появился выбор: Backbone, CanJS, Knockout и еще десяток новых каждую неделю. Нам надоел CSS, и снова мы могли выбирать: Less, Sass, PostCss. Кто-то сказал, что JavaScript — дерьмо, и так появился CoffeeScript, и меня реально убеждали, что надо писать именно на нем, ибо прогресс! Блин, ну и где он теперь?!


image

TypeScript. ES6. Отлично, JavaScript стал типизированным, но перестал работать в браузере: теперь его приходилось компилировать. И не только его. Много-много рутинной магии на сервере.


Поэтому появились автоматизаторы рутинной серверной магии по типу Grunt, Gulp, Broccoli, Webpack. Меня выворачивало наизнанку от синтаксиса Angular, и я был рад сплясать на его могиле, когда появился React (к которому нужен был Redux). Даже Vanilla JS, фреймворк в 25 байт в сжатом виде, на фоне общего зоопарка выглядел не так плохо.


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


Бывало, начинаешь проект с новыми и хайповыми технологиями и методологиями, а заканчиваешь уже с отстойными. Хотя по сути ничего не менялось, разве что появлялась парочка статей на хабре «Почему ангуляр — отстой» и «Scrum умер и больше не работает». Проект, работа и даже собственная компания казались отстоем просто потому, что кто-то сказал «MVC — для лохов!».


Не быть лохом


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


image

В вакансиях студии выпячивают только те технологии, которые не успели обрасти разгромными отзывами. Мы тоже так делали и прятали под стол гадости вроде лучших отечественных CMS-систем. Да мы даже обернули её Zend-ом, чтобы клиенты радовались маркетинговому трепу про мощность админки, а мы — пользовались MVC, не особо мучаясь.


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


Разнообразие мнений породило проблему выбора и обучения junior-ов. Я собеседовал людей, которые на полном серьезе говорили, что учили Angular, а не JavaScript. Ай хэйт ю, агнуляр.


Я видел разработчиков, которые считали, что умеют писать «на jQuery» — точнее, они могут найти подходящий слайдер и воткнуть его на страницу. И (цитирую дословно) «настроить под себя». Эти люди гордо именовали себя «jQuery-интеграторы», но не могли отсортировать список значений в select-боксе. Они беспокоились, что разговор зайдет о чем-то, что может быть сложнее «интеграции плагинов» (точнее, занятий, которые они почему-то считают «программированием»). Когда их просили написать чуток кода на бумажке без копипасты с гитхаба, их поры сочились гормонами сжиженного стресса.


Но черт возьми! Не они в этом виноваты!


Не читай срачи, а трогай ручками


Как-то вечером я захотел сделать небольшой проект для души: сайтик с простым бэкэндом и кое-каким интерактивом на Javascript. И решил предварительно посмотреть, на чем сейчас модно писать. Господи, зачем я это прочитал...


[Разработка > Каково оно учить JavaScript в 2016 перевод]


Мой проект не закончен до сих пор. Кажется, скоро я открою стартап или начну искать ко-фаундера.


Сейчас в арсенале нашей студии:


  • jQuery + CanJS + Less + Gulp на одних проектах;
  • и React + Redux + Babel + JSX + ES6 + Browserify + PostCSS + Webpack на других.

Но я не знаю, сколько времени осталось, пока они не вошли в категорию «X — дерьмо!».


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


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


Сингулярность ближе, чем ты думаешь. Избегай зашоренности. Меньше полагайся на чужое мнение. Смотри сам. Изучай сам. И попробуй потрясти этот мир. Всмысле

window.moveBy(x, y)

:)

Поделиться с друзьями
-->

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


  1. DigitalSmile
    22.12.2016 12:40
    +10

    Спасибо! Как увидел Масяню, аж чуть не всплакнул…
    По теме — автор абсолютно прав. Огромное количество людей сейчас учат технологии, а не алгоритмы и языки. Такой «тренд» во всех сферах.


    1. zxcabs
      22.12.2016 12:55
      +2

      Может все потому что в огромном кол-ве мест требуется «скачать и подключить jq плагин» и на этом все? Много ли где в вебе требуется больших знаний, кроме самой платформы?


    1. safinaskar
      22.12.2016 16:02
      +4

      Вы будете удивлены, но новые серии Масяни продолжают выходить до сих пор. От того же автора. http://www.mult.ru. Последняя серия вышла 1 июня 2016 г.


      1. DigitalSmile
        22.12.2016 16:07

        Класс, даже не знал. Пойду досматривать упущенные годы.
        Мне казалось Масяню перестали рисовать году 2006… Хотя уже и не вспомню сейчас всех подробностей.


        1. Shultc
          23.12.2016 12:44

          Простите за оффтоп. Смотрю Масяню на ютубе, на её канале. Но так же на канале самого Олега Куваева (создатель) выходит много Масяньского контента. Последний, вполне годный ролик вышел за день до вашего комментария.

          Последний, вполне годный ролик


  1. am-amotion-city
    22.12.2016 12:44
    +6

    Как было принято писать во времена ночного модемного писка, ППКС.


    В курилке можно назвать технологию X отстоем — это поднимет авторитет
    в глазах коллег и даст моральное право не изучать ее и не использовать.

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


    Люди «программируют» на джиквирях, реактах, рельсах, джангах и симфониях. Проитерировать массив? — Как это в языке нет оператора «бакс»?


    На моем первом компьютере, при помощи которого производилось компилируемое и переносимое программное обеспечение, которое мне удавалось продавать за приличные деньги, было 4М оперативки и жесткий диск на 270М. И не было ни единой книги, в которой можно было бы прочитать, как итерировать массив — хоть с баксом, хоть без бакса.


    Поэтому нынче на собеседованиях я всегда прошу писать ванильный код — будь то js, ruby, питон, R, или черт с рогами.


  1. VolCh
    22.12.2016 12:49

    Prototype (кто-нибудь помнит этот фреймворк?).


    Шёл из коробки с symfony В поддерживаемом проекте году этак в 2012 заменён на jQuery.

    Dojo (кто это помнит?!)


    Не далее как в начале этого года предлагали переписать проект на Symfony 2.3 c Dojo на фронте на Symfony 3 + React


  1. Durimar123
    22.12.2016 12:52

    >Когда их просили написать чуток кода на бумажке без копипасты с гитхаба

    Хотелось бы узнать смысл, что вы хотели узнать этим тестом?

    И что, по вашему мнению, показывает присутствие/отсутствие этого навыка?


    1. zevvssibirix
      22.12.2016 12:57

      Сможет ли человек интерпретировать код, или будет дрюкаться между парой мониторов (с штормом и браузером), надалбывая CTRL+R, в надежде, что очередной кусок копипасты заработает как надо :) В прочем, ctrl+r многие уже автоматизировали…


      1. stardust_kid
        22.12.2016 13:06
        +4

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


        1. zevvssibirix
          22.12.2016 13:08

          Да, но это другая проблема. По-моему инженерного решения не имеет.


          1. stardust_kid
            22.12.2016 13:23
            +2

            А мне кажется, решение в научном подходе. Есть проблема, изучи историю вопроса, проанализируй существующие решения, сделай свое на их основе. Если истории вопроса нет, проблема уникальная. Тогда только начинай изобретать. Но мне за время работы во front end такие случаи встречались считанные разы.
            В общем не вижу ничего плохого в копипасте, точнее в осознанном использовании готового кода. Только вот, чтобы набить скилл читать код с листа, нужно пару лет подолбить CTRL+R.


      1. Durimar123
        22.12.2016 13:09

        >Сможет ли человек интерпретировать код

        Может тогда стоит попросить его объяснить, что делает тот или иной код?

        А тест по созданию кода проверить также — дать тест и пусть делает как хочет.
        Или интересует сам метод создания кода?


    1. am-amotion-city
      22.12.2016 13:05
      +10

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


      А люди, которые просто заглянули на огонек на шару — нет.


      Вот такие эмпирические данные.


      1. Durimar123
        22.12.2016 13:26
        +1

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

        Может мидлы которые работают с одним языком и обладают подобным качеством.
        Но очень сомневаюсь, что сеньеры плотно знакомые с 5-10 языками и 3-4 платформами, по 2-5 лет практики на каждом, смогут писать код ручкой.

        Кто помнит как в winapi получить scan code и преобразовать в wchar текущей кодировки? Например на delphi.
        Или что именно настраивать в адроид Intent, что бы передать URL в другую APK.


        1. kloppspb
          22.12.2016 13:34
          +4

          очень сомневаюсь, что сеньеры плотно знакомые с 5-10 языками и 3-4 платформами, по 2-5 лет практики на каждом, смогут писать код ручкой

          Напрасно сомневаетесь.


        1. am-amotion-city
          22.12.2016 13:41
          +4

          Напрасно сомневаетесь.


          Ну где-то, конечно, там будет ScanManager.getCode(НЕ_ПОМНЮ_СПИСОК_ПАРАМЕТРОВ_НАИЗУСТЬ), но это и даже хорошо.


          1. Durimar123
            22.12.2016 13:59

            Давай проверим.
            Задача Delphi на форме отловить wm_keydown, и при нажатии клавиши вывести символы которые соответствуют этой клавише для всех используемых языков системы.


            1. am-amotion-city
              22.12.2016 14:12
              +1

              Я, простите, компьютер с операционной системой Windows в последний раз в жизни видел в 1999 году. На Delphi32 я, конечно, попрограммировать успел. В 1995.


              Но даже я, прямо сейчас, отвечу на этот вопрос с легкостью: этот код писать не нужно, аналогичную задачу только недавно решала команда Atom’а, в версии 1.13 они внедрили продвинутую систему реакции на то, что в win-системах называется WM_KEYDOWN.


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


              Знаю я это потому, что слежу за новостями в мире IT.


              И такой ответ, прикиньте, удовлетворит любого интервьюера.


              1. Durimar123
                22.12.2016 14:47
                +5

                Т.е. написать код вы не можете.

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

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


                1. am-amotion-city
                  22.12.2016 14:51
                  +1

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


                  1. Durimar123
                    22.12.2016 15:08

                    И какие это языки? Надеюсь С++ там есть?
                    На любой платформе, любом IDE.

                    Копирование в буфер клавиатуры текста в HTML формате, где каждое 2е слово italic.
                    Ну и если позволят знания, то с добавлением имиджа в середину текста.

                    Если сложно, то загрузка указанного ХМЛа, подсчет количества русских букв «я» в этом хтмле.

                    ps
                    спорим, что код никто так и не увидит.


                    1. am-amotion-city
                      22.12.2016 15:38
                      +4

                      На что спорим-то? Удивительно, все-таки, заставили потратить 5 минут.


                      wget -qO- 'http://ilyabirman.ru/meanwhile/rss/' | fgrep -o [яЯ] | wc -l

                      require 'open-uri'
                      open("http://ilyabirman.ru/meanwhile/rss/").read.downcase.count("я")

                      for %HTTPotion.Response{body: body} <- HTTPotion.get "http://ilyabirman.ru/meanwhile/rss/" do
                        body
                        |> String.graphemes
                        |> Enum.count(& String.downcase(&1) == "я")
                      end

                      Достаточно?


                      1. Durimar123
                        22.12.2016 16:29
                        +1

                        Вообще-то разговор шел про С++.


                        1. am-amotion-city
                          22.12.2016 16:36
                          +1

                          Во-первых, это ваш разговор с вашим альтер эго у вас в голове шел про C++, перечитайте статью.


                          Во-вторых, на С++ такие задачи за пределами сумасшедшего дома не решаются.


                          В-третьих, если в проекте на C++ кому-то прямо потребуется парсить удаленный файл, биндинги к какому-нибудь embedded (типа lua, который даже nginx уже сто лет как умеет) запрещены дауном архитектором, а вокруг — колючая проволока, и не сбежать — я буду это писать на C, а никак не на C++. По той же простой причине, по которой я не ем на завтрак картон: я не дебил.


                          1. webkumo
                            22.12.2016 16:41

                            я буду это писать на C, а никак не на C++. По той же простой причине, по которой я не ем на завтрак картон: я не дебил.

                            А можно поподробнее расшифровать вашу мысль? Чем вам не угодил (вообще или в данной ситуации) C++?


                            1. am-amotion-city
                              22.12.2016 16:52
                              +2

                              Мне C++ всем угодил, это прекрасный язык для своих задач.


                              Но тут нужен recv из чистого сокета, а потом один цикл по строке с дополнительным буфером на еще один чар если пришел Ucs32, или на еще три чара, если пришел UTF-8 / UTF-16. Занахрена мне тут C++?


                              :)


                          1. Durimar123
                            22.12.2016 16:42
                            -1

                            Ну вот мой тест:
                            «И какие это языки? Надеюсь С++ там есть?»

                            >я буду это писать на C, а никак не на C++

                            Без проблем С тоже подойдет. Упростим задачу, HTML файл локальный.


                            1. am-amotion-city
                              22.12.2016 17:00
                              +7

                              Юноша, в какой именно момент вы решили, что я пришел к вам на собеседование? Что я вообще пойду на собеседование и в частности на собеседование по C/C++?


                              Почему вы считаете, что даже имея в анамнезе опыт программирования на C/C++ (и даже ассемблере) — я все это помню сейчас?


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


                              1. Durimar123
                                22.12.2016 18:21
                                +1

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


                                1. am-amotion-city
                                  22.12.2016 18:26

                                  И что из этого следует?


                                  Я говорил. И я, заметьте, написал. На интересных мне в данный момент языках. В число которых, так уж получилось, не входит C++.


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


                                  В общем случае из этого никак не следует, что я сам тоже могу. Я не хожу на собеседования.


                                  1. mitja
                                    22.12.2016 18:49
                                    +3

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

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


                    1. fi11er
                      22.12.2016 16:56

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


                      buffer = ' '.join('<i>{0}</i>'.format(w) if i%2 else w for i, w in enumerate(get_current_selection().split())) 

                      А как положить переменную buffer в буфер и как реализовать get_current_selection я бы погуглил.


                      1. Durimar123
                        22.12.2016 18:26

                        А что можно тестировать написанием КОДА на бумажке без доки?

                        Замечу не написанием блоксхемы, или описание принципа решения, а именно КОД.

                        Что дает подобный тест?


                        1. kloppspb
                          22.12.2016 21:43
                          +1

                          Подобный тест даёт понимание о потенциальном распределении времени: сколько человек будет писать код, а сколько — искать как его написать.

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


                        1. onikiychuka
                          27.12.2016 11:20
                          +1

                          Да очень много дает.
                          Я ходил недавно на собеседование и как раз писал код на бумажке. Никаких проблем забываниями сигнатур API функций у интервьюверов не было. Достаточно примерно помнить что функция есть в стандартной библиотеке. А вот практические навыки твои видно просто прекрасно.
                          Например:
                          Решаем простую алгоритмическую задачку на java, которая свелась к fold (свертке списка). Ну я пишу 2 решения — одно циклами, другое на Stream API. Меня спрашивают — а как бы нам это сделать параллельно. Я отвечаю — можем использовать AsParallel в Stream API, но в общем это может быть медленнее(из-за кривизны Stream API), так что обязательно надо бенчмаркать. Просто смотря на код — фиг поймешь быстрее будет или медленнее.
                          Интервьювер сразу видит что я и код написать могу 2х стилях (функциональный и императивный) и то что неплохо знаю стандартную библиотеку java и границы применения ее API
                          Ну и если вы дете в команду интервьювера -ему же интересно как вы там КОД писать будете. Как переменные назвать (a, b, c или что-то более осмысленное), как методы. Насколько легко ему будет понять — что вы пишете.
                          Так что — имхо писать код на бумаге во время собеседования — одна из самых логичных практик.


                          1. Durimar123
                            28.12.2016 11:51
                            +1

                            Почему просто не ответить, что есть два решения, у каждого такие то плюсы и минусы?

                            >переменные назвать (a, b, c или что-то более осмысленное), как методы.

                            На бумажке? Давать реальные названия переменным и функциям?
                            Да это какое-то садомазо.


            1. ElectroGuard
              22.12.2016 16:56

              Это ищется за 5 минут или быстрее. Либо среда подсказками поможет, либо хелп. А вот нормально сделать иерархию классов, не знаю, многопоточку — вот тут — да — умения нужны. Знания элементарно добываются в интернетах, если хотя бы зачатки программного мышления есть. С умениями сложно.


            1. 0xd34df00d
              22.12.2016 21:32
              +3

              А вы такую задачу бы на собеседовании дали? А зачем? На какую должность?


              Я когда собеседовался на senior C++ software developer/researcher (ну там, матана немножко, это всё), мне дали задачку «напиши, как бы ты писал парсер языка вроде JSON». Я сказал, что на бумажке на плюсах писать больно, давайте я вам на хаскеле напишу, а там обсудим, как потом это переложить хоть на Boost.Spirit, хоть на ручками запроганный рекурсивный спуск. Тем более, что с чуваком, который меня собеседовал, мы перед этим имели телефонное интервью, и минут 5-10 поговорили за жизнь, где я узнал, что он тоже по всяким таким вещам угорает. Ну а раз пишу на хаскеле, то давайте решим, можно ли мне пользоваться примитивами из Attoparsec'а, или нельзя, если нельзя — то давайте я ими всё равно воспользуюсь, просто распишу, как они работают.


              И всё, никаких вопросов. Потому что проверять алгоритмику интереснее и полезнее, вероятно, чем непосредственные навыки написания кода.


        1. andreysmind
          22.12.2016 14:43
          +2

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


      1. stardust_kid
        22.12.2016 13:39
        +1

        Писать код на бумажке, безусловно, полезно. Но проблема в том, что AWS, например, не умеет запускать код с листа, а Github не принимает коммиты по почте. Так что приходится волей-неволей использовать IDE, а там и недалеко от того, чтобы в документацию заглянуть или на SO.
        То есть это полезное умение, но оно не релевантно бизнес-задачам.


        1. am-amotion-city
          22.12.2016 13:46
          -1

          Оно релевантно бизнес-задачам.


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


          Кроме того, у нас, например, IDE используют только джуниоры и некоторые мидлы. Сеньоры пользуются простыми редакторами текста. С опытом приходит понимание, что лучше два часа подумать, а потом за пять минут записать, чем сразу начать писать и писать неделю. А когда ты в основном думаешь, нужны [пусть пассивные] знания, которые как раз и есть «умение писать код на бумажке / в голове».


          1. stardust_kid
            22.12.2016 14:27
            +2

            Взять-то вы может и возьмете, только кто ж вам даст.


            1. am-amotion-city
              22.12.2016 14:56

              Отучаемся судить по себе. У меня в отделе нет ни одного сеньора с репутацией на SO менее 10К.


              1. herr_kaizer
                22.12.2016 18:58
                +1

                Плохой критерий профессионализма.


                1. am-amotion-city
                  22.12.2016 19:01

                  Я нигде не говорил, что это критерий профессионализма.


              1. balexa
                23.12.2016 12:44
                +1

                Вы не берете людей с репутацией меньше 10к?


                1. am-amotion-city
                  23.12.2016 12:52
                  +1

                  Нет конечно, оно само так сложилось. Кроме того, у нас не только сеньоры работают.


                  1. 0xd34df00d
                    23.12.2016 19:32

                    А если у человека вообще нет аккаунта на SO?


                    1. am-amotion-city
                      23.12.2016 19:36

                      А если у человека вообще нет аккаунта на SO?

                      То у человека вообще нет аккаунта на SO. Что вы от меня хотите? У наших сеньоров есть.


          1. aikixd
            22.12.2016 15:25
            +3

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

            Ну вы поняли. Может это и не про вас, но я таких людей встречал. Какой смысл отказываться от ИДЕ?


            1. andreysmind
              22.12.2016 15:29
              +1

              Какой смысл отказываться от ИДЕ?

              Ну ты сейчас ящик Пандоры открыл.


            1. am-amotion-city
              22.12.2016 15:44

              Я не начинаю новый проект дважды в день, если бы начинал — использовал бы IDE.


              Какой смысл отказываться от IDE?

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


              1. 0xd34df00d
                22.12.2016 21:25
                +6

                У меня такой глупый и стыдный вопрос: а зачем это помнить всё?


                Номера телефонов и точные названия функций — это фактологическая информация, не несущая принципиальной новизны для картины мира.


                1. am-amotion-city
                  22.12.2016 21:48
                  +1

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


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


                  1. 0xd34df00d
                    23.12.2016 00:30

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

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


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

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


                    1. am-amotion-city
                      23.12.2016 08:14
                      +1

                      Вот и развивайтесь более эффективно, я разве что-то навязывал, или, тем паче, спрашивал совет?


                      Вообще, удивительный феномен: я просто поделился наблюдением и по просьбам (!) выложил свое ви?дение «почему так». Просыпаюсь с утра — чуть не с десяток комментариев, убеждающих меня в неверности моего подхода. От разных людей. В том числе — от вроде бы неглупых.


                      Зачем вот лично вы меня убеждаете? Риторика про «для зашедших почитать» — не пройдет, вы апеллируете именно к моим высказываниям, субъективным, перевести в объективную плоскость контекст не удастся.


                      Мне мешает IDE и моя производительность при ее использовании не повышается. Возможно, потому, что я пишу только те части, где IDE, даже самая крутая, уже не справляется: аспекты, метапрограммирование, сложные рефлексии, и т.п. На собственно написание кода я трачу менее 10% времени. Мне не нужна IDE.


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


                      1. 0xd34df00d
                        23.12.2016 08:18
                        +1

                        Зачем вот лично вы меня убеждаете?

                        Считайте, что я делюсь наблюдениями в форме вопросов или ответов на ваши утверждения.


                        Вам нужна?

                        Мне помогает. Я вполне продуктивно могу писать код в необустроенном vim, если уж на то пошло, но с IDE удобнее.


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

                        На каких?


                        1. am-amotion-city
                          23.12.2016 09:00
                          +1

                          Сейчас с основном на эрланге. Чуть меньше — на эликсире. Все еще довольно много руби. Экстеншены сейчас уже почти нет, но все еще бывает: plain c. Хаскелла чуть-чуть, немного перла в zsh случается. Луа, кофе и иногда ванильный js. Ах да, SQL.


                          Все это вперемешку. Часто бывает так, что за час — сменяются три разных языка. В основном проекте у меня 4 разных малосвязанных языка. И моему Atom’у все равно: у него нет ограничения сущностью «проект».




                          И да, у меня конечно же есть https://zealdocs.org/ с быстрыми клавишами, если вдруг.


                          1. 0xd34df00d
                            23.12.2016 19:34

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


                  1. zirix
                    23.12.2016 01:22
                    +1

                    А если вместо заучивания таблицы умножать в уме?
                    Для интеллекта подобные задачи полезнее чем простое заучивание.


                    1. am-amotion-city
                      23.12.2016 09:10

                      А если вместо заучивания таблицы умножать в уме?

                      Спасибо, кэп. Я даже на выходе из супермаркета всегда с точностью до копеек знаю общую сумму, потому что складываю, умножаю и тренируюсь.


                      Но, знаете, ни одному спортсмену ни одной заковыристой дисциплины — еще не мешали занятия простым бегом.


                      1. 0xd34df00d
                        23.12.2016 19:34

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


                        1. am-amotion-city
                          23.12.2016 19:43

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


                          1. 0xd34df00d
                            23.12.2016 19:47
                            +1

                            Пассивно-агрессивное поведение не стоит того.


                            1. am-amotion-city
                              23.12.2016 19:57

                              Пассивно-агрессивное поведение не стоит того.

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


                              Распарсить эту фразу и вычленить смысл я не смог. Впрочем, какая разница.


                              1. 0xd34df00d
                                23.12.2016 20:00
                                +1

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

                                Смысл в том, что совершенно не обязательно так общаться, например.


                                1. am-amotion-city
                                  23.12.2016 20:09
                                  -1

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


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


                                  1. 0xd34df00d
                                    23.12.2016 20:12

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

                                    На каких именно, по-вашему, выдерганных из контекста цитатах построен комментарий выше?


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

                                    Потому что, ну, вы сами менторским тоном тут рассказываете, как правильно?


                                    1. am-amotion-city
                                      23.12.2016 20:27

                                      Это вы мне предлагаете задачки решить, чтобы логику подтянуть?


                                      Наличие «комментариев, построенными на выдерганных из контекста цитатах» не опровергается одним контр-примером.


                                      вы сами менторским тоном тут рассказываете, как правильно?

                                      Боже, где? Вот мой оригинальный комментарий:


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

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


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


                                      1. 0xd34df00d
                                        23.12.2016 20:35

                                        Наличие «комментариев, построенными на выдерганных из контекста цитатах» не опровергается одним контр-примером.

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


                                        Порешайте задачки, серьёзно, это полезнее, чем телефоны запоминать и мелочь считать.


                                        1. am-amotion-city
                                          23.12.2016 20:40

                                          Я ничего никуда не приплетаю.


                                          Посмотрите определение слова «контекст» в словаре.


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


                                          1. 0xd34df00d
                                            23.12.2016 21:06

                                            Тогда в предыдущем комментарии, значит, были выдерганные из контекста цитаты? Не покажете?


              1. Femistoklov
                23.12.2016 12:44

                Хмм… А может, лучше тренировать не память, а другие когнитивные способности — к пониманию, обучению и т.д.?


            1. PsyHaSTe
              22.12.2016 19:18
              +3

              Это типичное поведение UNIX-пользователей.

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

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

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

              В реальном мире (без метафор) это выглядит как следующий пример:

              Допустим пользователю Винды и Линукса вдруг стало нужно поменять скринсейвер и задержку его появления.

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

              Второй вызовет терминал и там напишет что-то наподобие sudo set screensaver «aqua» set delay 100000 ms (псевдо команды).

              В реальности и первый и второй пользователь обратились в черный ящик через предоставленный им интерфейс и совершили абсолютно идентичные действия с идентичными последствиями.

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

              Короче говоря, таким людям просто нравится набирать текст в консоли. Все.


              1. 0xd34df00d
                22.12.2016 21:26
                +4

                Странные обобщения. Я UNIX-пользователь и я люблю IDE и вообще купил себе CLion для плюсов.


                1. kloppspb
                  23.12.2016 00:08

                  Аналогично. Правда, код пишу часто отлаживая какие-то мелкие фрагменты и набивая их в простеньком редакторе. А вот всё вместе (~50000 cloc и больше) собирается и доводится уже в IDE.


                  1. PsyHaSTe
                    23.12.2016 10:20
                    -2

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

                    Хотя золотая середина имхо это IDE с шорткатами.


                    1. VolCh
                      23.12.2016 12:27
                      +2

                      «большинство UNIX-пользователей, имеющих отношение к серверному администрированию UNIX-систем, часто»

                      Fixed

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


                      1. PsyHaSTe
                        23.12.2016 12:44
                        +1

                        Окей, возможно стоит пересмотреть стереотипы.


              1. atamanenko
                22.12.2016 23:35
                +2

                TFW используешь консоль на линуксе раз в месяц для массовой конвертации аудио/видео/пикч, для чего на винде надо качать МОВАВИ YOBA КОНВЕРТЕР на сто мегабайт с сомнительным результатом или все те же ффмпег/имиджмеджик. Не считаю SSH и прочие рабочие моменты


              1. Eldhenn
                23.12.2016 09:20
                +2

                > Первый мышкой через набор менюшек, выберет нужный скринсейвер

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

                > потянет ползунок на нужную задержку

                Из трёх стандартных.


                1. PsyHaSTe
                  23.12.2016 10:23
                  -2

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

                  Просто это очень похоже на детское «я тебя убил — у меня супер-оружие… — ненене, а у меня суперброня, так что не убил. Убил — не убил. Убил — не убил...»


                  1. am-amotion-city
                    23.12.2016 10:32
                    +1

                    у первого товарища наблюдается проблема, что настройка слетает после перезагрузки,
                    а флаг «preserve» конфликтует с каким-то другим

                    Давайте вы станете говорить про что-то такое, в чем вы хоть немного разбираетесь: например, про установку скринсейвера в винде мышкой.


              1. Iora
                23.12.2016 12:44
                -1

                А мне понравилось обобщение. А тот факт, что есть UNIX-пользователи, использующие IDE только подтверждает пример, равно как и тот факт, что есть Win-пользователи, предпочитающие конфигурировать ОС не через меню, а меняя напрямую ключи реестра или через ту же CMD/PowerShell.

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

                Впрочем, этим не только линуксоиды грешат, но и не-ИТ-шники тоже.


                1. VolCh
                  23.12.2016 13:30
                  +1

                  Большинство пользователей unix (самая популярная — МакОсь) и unix-like (самая популярная GNU/Linux) пользуются графическими интерфейсами для пользовательских задач.


              1. safinaskar
                24.12.2016 16:27
                +1

                Всё-таки не согласен. Да, многие пользователи gnu/linux именно такие, как вы описали. Но между gnu/linux и windows есть отличие, имеющее мало отношения к gui vs console. Для gnu/linux доступна куча информации о внутреннем устройстве ос и всех её компонентов. И доступны все исходные коды. В случае возникновения проблемы можно зайти в её изучении настолько глубоко, насколько вы захотите. Вплоть до самостоятельного нахождения бага и исправления memset (a, b, c) на memset (b, a, c) (условно) в коде какой-нибудь утилиты.


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


                Вы скажете, что всё то же самое можно сделать и в винде, пускай привлекая консоль. Допустим, но что если пойти ещё дальше? Допустим, я сделал diff на две эти системы debian, увидел, что ядро одно. Значит, ядро можно исключить из рассмотрения. Значит, дальше ребутаться между системами больше не нужно (это время отнимает), можно просто переключаться между ними с помощью systemctl switch-root или ещё чего-то в этом духе, не перезагружая ядро. Переключаться туда-обратно, таскать туда-сюда файлы, выяснять, в чём причина проблемы. Даже если бы опции switch-root не существовало бы, её можно было бы запросто написать.


                Винда может так? Сомневаюсь.


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


                Вот недавно ставил windows 7. Обновлял. В какой-то момент перестал обновляться. Обновление виснет. Вот как эту проблемы решить? В дебиане есть apt-get, он устроен относительно просто. apt-get update по сути просто скачивает несколько файлов, причём он пишет в консоль, какие именно. Можно прикинуть, в чём там может быть дело, 404 file not found или ещё чего. На крайняк открыть сорцы. В случае с windows непонятно, куда копать дальше. Пришлось поискать в инете. Оказалось, нужно вручную скачать определённые обновления и установить. Как я должен был сам до этого допереть?


                Как тут не вспомнить недавнюю историю "Билл Гейтс не смог установить Windows 8.1". И вроде у него такая же проблема была, винда в какой-то момент перестала обновляться. :)


                1. PsyHaSTe
                  24.12.2016 23:40
                  -1

                  Не совсем понял, какое отношение преимущества опенсорса имеют к гуй вс консоль, о чем говорилось в моем комментарии… Опенсорс рулит, с этим никто не спорил нигде.


                  1. safinaskar
                    25.12.2016 00:56
                    +1

                    Ну значит я вас не понял :)


                    1. PsyHaSTe
                      25.12.2016 12:39
                      -1

                      Кстати по-поводу обновления в виндовом мире давно существует NuGet, который для клиентских приложений в десятке прикрутили. Советую попробовать.


          1. Foosa
            22.12.2016 16:57
            +5

            Можно узнать, чем IDE в данном случае мешает думать-то? Она же не требует вводить минимум 1 строчку кода в минуту.
            Просто интересует, почему ваши синьоры выбирают путь отшельников, вместо того, чтобы пользоваться вещами, ускоряющим написание кода, навигацию, поиск и рефакторинг?


            1. am-amotion-city
              22.12.2016 17:12
              -3

              выбирают путь отшельников

              Когда их большинство, они не могут называться отшельниками.


              вещами, ускоряющим написание кода, навигацию, поиск и рефакторинг?

              Вам они ускоряют, а сеньорам — нет. Все просто.


              1. Foosa
                22.12.2016 17:37
                +2

                Вам они ускоряют, а сеньорам — нет. Все просто.

                Действительно! Спасибо что поделились своей незыблимой истиной!
                Пойду выбью это на скале.

                Рассчитывать на диалог не вижу смысла.


                1. am-amotion-city
                  22.12.2016 17:44
                  -2

                  Что именно вам непонятно? IDE не ускоряет работу квалифицированного специалиста. Вы задали вопрос, в котором IDE априори полагалось «ускоряющим написание кода, навигацию, поиск и рефакторинг». Этот тезис неверен, следовательно, неверен весь силлогизм.


                  1. Foosa
                    22.12.2016 17:57
                    +3

                    Спасибо, что участвуете в диалоге (говорю без сарказма).
                    Мне кажется между нами возникло недопонимание.
                    Что вы вкладываете в понятие тестовый редактор?
                    Правильно ли я понимаю, что ваши сеньоры не пользуются ни подсветкой синтаксиса, ни автодополнением кода, ни навигацией (например ctrl+click из IDEA)?
                    Т.е. и vim и emacs с подобными возможностями мы не рассматриваем как текстовый редактор, потому что там это тоже все можно накрутить при определенном желании.

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

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

                    Я бы не прочь и статью прочитать с описанием вашей методики и наблюдений


                    1. am-amotion-city
                      22.12.2016 18:33
                      -1

                      Что вы вкладываете в понятие тестовый редактор?

                      То же, что и все. vim, emacs, atom, visual code, brackets — это все редакторы, не IDE.


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

                      Запросто. Документация у меня, если надо, под рукой, но не прямо перед глазами: и это принципиальная разница. Я помню 95% тех трех языков — с которыми имею дело сегодня — наизусть. А мои коллеги с IDE и бесконечными автокомплишенами и всплывающими подсказками — нет. И это замедляет их работу on the long run.


                      Рутинных задач передо мной не стоит: их решают джуниоры. И знаете, что? — IDE рефакторит код плохо. Любая, самая продвинутая. Там, где надо имена поменять — мои sed+awk все равно быстрее. А там, где посерьезнее — надо думать, и менять код в 99% случаев не так, как того хочет IDE.


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


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


                      1. sentyaev
                        22.12.2016 19:47

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


                        1. am-amotion-city
                          22.12.2016 19:51
                          -1

                          Именно.


                      1. Foosa
                        23.12.2016 12:13

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

                        Несомненно, отсутствие базовых знаний (в том числе и разрабатываемого проекта) тормозит разработку. Это как если писать на новом фреймворке — каждый раз будешь гуглить «а как сделать X в фреймворке Y».

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

                        Как у вас происходит изучение новой библиотеки/фреймворка?

                        Можно узнать у вас, в какой области вы ведете разработку?
                        Как выглядят задачи, которые вы решаете?


                        1. am-amotion-city
                          23.12.2016 13:04

                          вы занимаетесь только одним проектом в течение длительного времени
                          и не выпадаете из его «контекста»

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


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

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


                          как у вас происходит изучение новой библиотеки/фреймворка?

                          Сел на выходных и написал один из микросервисов, про которые уже давно говорили «хорошо бы» на новой библиотеке/фреймворке.


                          в какой области вы ведете разработку?
                          Как выглядят задачи, которые вы решаете?

                          SaaS. Вот, типичная задача последнего месяца: есть около двадцати потоков данных, из внешних источников. Часть pull, часть — push. Данные разнородны, но внутри должны быть приведены к единому виду. Нагрузка не очень высокая, но заметная — примерно 1К обновлений в секунду. У этих данных в нашем приложении есть подписчики: потенциально около миллиона, пока — в районе десятков тысяч. Когда какая-нибудь сущность из приходящих данных меняется, нужно оповестить всех подписчиков, которые заинтересованы в изменении именно этой сущности. Такое событие потенциально может происходить до тысячи раз в секунду.


                          Вот. Кода там немного, особенно нашего. Об архитектуре я думал примерно в тысячу раз дольше, чем писал код. То есть, даже если IDE мне бы дало ? увеличение скорости, я бы выиграл 1‰ общего времени.


                          Я ответил на ваш вопрос?


                          1. Foosa
                            23.12.2016 13:51

                            Я ответил на ваш вопрос?

                            Несомненно. Спасибо за подробное объяснение. Прошу прощения, если диалог со мной понизил вам карму.

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


                            1. am-amotion-city
                              23.12.2016 14:04
                              -1

                              диалог со мной понизил вам карму

                              Мне уже очень давно плевать на карму.


                              чем вы пользуетесь при обдумывании архитектуры?

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


                              Я пробую разные инструменты, языки, средства, задаю странные поисковые запросы по любому поводу, который приходит в голову, и так далее. Разговариваю с коллегами, обрисовывая кусочки проблемы (не всю!). В результате у меня появляется «approach».


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


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


                              В начале века я участвовал в разработке инструмента, позволяющего рисовать свои modelling language (на основе Meta Object Facility — не взлетело) и теперь очень хорошо понимаю, почему все эти инструменты не в состоянии описать архитектуру лучше простого текста.


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


                              1. Foosa
                                23.12.2016 15:02

                                Я думаю вам может быть интересно:
                                В онлайн курсе Барбары Оуклей «Научись учиться» (https://www.coursera.org/learn/learning-how-to-learn) как раз было интервью с математиком, который говорил о таком же подходе. Он часто пытается решить задачу, но если не получается, он отправляется ездить на велосипеде, или на скалодром — переключиться с задачи. И часто именно в такие моменты ему приходит решение.

                                Про modelling language интересно было бы услышать. Но, я мало знаком с этой темой, поэтому, только если у вас свободное время и желание: не могли бы вы раскрыть немного эту тему? Что пытались сделать и с чем столкнулись? Правильно ли я понял, что UML не позволяет отобразить все, что необходимо при проектировании архитектуры?


                                1. am-amotion-city
                                  23.12.2016 15:39
                                  -1

                                  Метамодель UML — всего лишь один из возможных экземпляров мета-метамоделей MOF. Не позволяет, да, а то, что позволяет — избыточно громоздко.


                                  Может быть, когда-нибудь я и напишу заметку про MOF.


                          1. 0xd34df00d
                            23.12.2016 19:46

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

                            Ага. «Вам они ускоряют, а сеньорам — нет. Все просто.


                            1. am-amotion-city
                              23.12.2016 19:49
                              -2

                              В контексте того, что до этого я сто раз пояснил, что это за сеньоры, я убрал тавтологичное «наши сеньоры» и оставил просто «сеньоры». Сенсация!


                              Вам надо было в журналисты идти, а не в IT, там навык перевирать слова собеседника, выдирать из контекста фразы и самозабвенно к ним апеллировать — весьма востребован.


                              1. 0xd34df00d
                                23.12.2016 19:56

                                Так и человек не ваш, зачем его сравнивать с вашими сеньорами?


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


                                1. am-amotion-city
                                  23.12.2016 20:03
                                  -2

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


                                  Вот дословно текст, на который я отвечал:


                                  Просто интересует, почему ваши синьоры выбирают путь отшельников, вместо того, чтобы пользоваться вещами, ускоряющим написание кода, навигацию, поиск и рефакторинг?

                                  Это — внимание! — вопрос. Содержащий ложный силлогизм. Своим ответом я всего-навсего указал на то, что силлогизм ложный. Все. Все далекоидущие выводы — исключительно на совести людей, которые нужные задачки решают, вместо того, чтобы память потренировать.


                                  1. 0xd34df00d
                                    23.12.2016 20:11

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


                                    Порешайте всё-таки задачки.


                        1. 0xd34df00d
                          23.12.2016 19:42

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

                          «И понимать» тут ключевое. Если есть, что понимать, то лучше понять сейчас. А учить табличные значения, действительно, смысла мало.


                          А те вещи, что предлагает IDE, они ближе к табличным значениям.


          1. 0xd34df00d
            22.12.2016 21:28

            Я исследую новую библиотеку с хреноватой документацией. Я хочу посмотреть, какие у неё есть методы с сигнатурой, похожей на Item a -> Compiler a. Почему я руками должен шастать по документации, когда IDE моей мечты могла бы мне всё это подсказать?


            1. am-amotion-city
              22.12.2016 21:43

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


              1. 0xd34df00d
                22.12.2016 21:46

                Я так понял, что использование IDE коррелирует с более низким профессионализмом. Мне вот и интересно, почему и как.


                1. am-amotion-city
                  22.12.2016 22:25

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


                  Мое скромное мнение таково: бесконечные подсказки отвлекают и в целом прививают привычку «не стану ничего запоминать, мне все подскажут». Что плохо потому, что у людей теряется целостное понимание проекта. Я смотрю в код, если мне что-то непонятно; IDE могло бы быстро меня от этого отучить. Я не хочу. Вот и все.


                  1. webkumo
                    23.12.2016 01:14
                    +2

                    Как оно может отучить смотреть в код, если документация зачастую неполная или не отражает контракт полностью? А вот быстрая навигация в код, который вызываешь — всегда под рукой. Причём на любую глубину. В том числе с учётом IoC. Да и автоматически всплывающих подсказок у меня, например (с дефолтными для них настройками), самый минимум — ЧЯДНТ?


                    PS ваши комментарии ну очень похожи на не осилил — значит потенциально вредно… надеюсь, что так только кажется.


                    1. am-amotion-city
                      23.12.2016 08:05

                      ваши комментарии ну очень похожи на не осилил — значит потенциально вредно…

                      Меня за мою долгую жизнь упрекали во многом. Но вот не осилил IDE — клянусь, это впервые. Я был, например, в группе бета-тестеров продукта MS Visual InterDev 1.0. И до примерно 2002 года плотно сидел на IDE, да и потом были иногда рецидивы.


                      Я никого ни в чем не уговариваю, не знаю уж, почему все считают своим долгом обратить меня обратно в свою веру. Не можете без IDE — отлично, значит IntelliJ не разорятся, а им я желаю только добра.


                      1. webkumo
                        23.12.2016 12:27

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

                        подсказка: из-за категоричности ваших суждений. Они вызывают условный butt hurt на уровне восприятия.


                        Не можете без IDE — отлично, значит IntelliJ не разорятся, а им я желаю только добра.

                        Они JetBrains


                        PS продукты MS называть IDE у меня не всегда язык поворачивается… Перегруженные, неудобные, с кучей проблем при переходе от версии к версии… По крайней мере так мне это запомнилось ещё по университету.


                        1. PsyHaSTe
                          23.12.2016 12:46

                          Всегда считал студию лучшей IDEшкой на рынке. IntelliJ пробовал — мне понравилось меньше. Ждем райдер, может он поборется со студией за это звание. Все-таки это не просто IntelliJ, а InelliJ + R#, а вот это уже может перевесить.


                        1. am-amotion-city
                          23.12.2016 13:12

                          Ну, страдать за категоричность суждений мне не привыкать :)


    1. VolCh
      22.12.2016 13:19
      +2

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


  1. stardust_kid
    22.12.2016 13:02
    +3

    Шикарно написано, философски даже.
    Есть такие строки у Леонарда Коэна:

    The holy dove
    She will be caught again
    bought and sold
    and bought again
    the dove is never free.
    
    Ring the bells that still can ring
    Forget your perfect offering
    There is a crack in everything
    That's how the light gets in. 


  1. Cyrus
    22.12.2016 15:11
    +1

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

    Если брать не абстрактные холивары, а конкретную работу, то там всегда есть какой-то стек, к которому нужно подготовится. Если разработчик настолько ригидный, что вечно застревает в каком-то стеке (далеко не классическом), инфантильно ненавидит Angular2, Ember, React, etc словно это готовые коммерческие проекты, в которых кто-то кому-то должен, то это уже о чем-то говорит? Никто же не просит контрибьютить ежедневно, но поддерживать актуальное состояние знаний технологий нужно, а главное иметь фундаментальные знания, позволяющие включится в поток после перерыва без нытья.

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


  1. maxru
    22.12.2016 16:13

    Dojo (кто это помнит?!)
    Я помню, он в ZF1 шёл довеском.


  1. Fen1kz
    22.12.2016 16:23
    +2

    Да сколько можно-то! Когда уже у вас, мерзких хипстеров, делящих фреймфорки на "старое дерьмо" и "новомодное дерьмо" выйдет из моды ныть на новые инструменты.


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


    React + Redux + Babel + JSX + ES6 + Browserify + PostCSS + Webpack

    Вот тут автор жестко палится тем что нету у них такого проекта, а он просто накидал слова из гугла. Browserify + Webpack, масло масляное.


    "Главный бармалей" в веб-студии который не может написать простенький сайтик с бекендом, как это обыденно.


    1. sentyaev
      22.12.2016 19:56

      Не совсем понятно, что вы считаете развитием.
      Фронтэнд — это здоровенный кусок легаси с которым в обозримом будущем ничего не сделать (надеюсь я не прав).
      И все «новые инструменты» это по сути новая обертка над этим легаси.


      1. MikailBag
        26.12.2016 13:54

        Оберткой над чем являются React, Webpack?


        1. VolCh
          26.12.2016 14:01

          React — над DOM прежде всего.


          1. MikailBag
            26.12.2016 18:00

            про React согласен.
            Взамен предалагаю Babel :)


            1. VolCh
              26.12.2016 18:16

              Babel — среда для использования оберток над JS :)
              Webpack — обёртка над ОС/шеллом по сути :)


        1. sentyaev
          26.12.2016 20:37

          Если очень грубо, то:
          React, Angular и т.д. оберта над HTML.
          Babel, Typescript и т.д. обертка над Javascript.
          less, sass и т.д. обертка над CSS.

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


          1. MikailBag
            26.12.2016 21:23

            Python — это обертка над C.
            Java — это обертка над C++.
            C++ — это обертка над C.
            C — это обертка над ассемблером.
            Ассемблер — это обертка над машинными кодами.
            Вывод:
            Давайте сразу на машинных кодах писать.


            1. SunX
              27.12.2016 01:26
              +1

              Побуду занудой:
              С каких это пор C++ стал оберткой на C? C++ написан на C++ и не является надмножеством C, так что максимум: C++ — это обертка над ассемблером.


            1. sentyaev
              27.12.2016 10:51

              Python и Java компилируются в байткод и запусткаются на виртуальной машине (с Python есть нюансы, но не стоит их тут рассматривать).
              C и С++ компилируются в машинный код.

              А вот в результате работы, например, Angular + Typescript + sass + Webpack вы получите набор HTML, JS и CSS файлов. И все это добро уже работает в браузере.

              Для приложений которые генерируются на сервере HTML + JS работает отлично.
              Да и браузер — отличный механизм доставки приложений и их обновлений.
              Сейчас есть необходимость в одностраничных приложениях это раз, плюс есть большой кусок мобильной разработки.

              Чего бы мне хотелось в идеале — иметь такуюже платформу как браузер, но заменить там HTML, JS, CSS на то, что отвечает современным потребностсям.

              Ну и появление webassembly это как раз движение в этом направлении.


              1. MikailBag
                27.12.2016 18:06

                JavaScript-движки — либо VM, либо JIT-компиляторы, лиюо что-то посередине.
                По сути, то же что и Java-движки. Скажем, апплеты тоже компилируете вы, а запускаются они на стороне пользователя.
                P. S. Про WebAssembly: ничего против не имею, джавистам, плюсистам и питонистам станет проще.


                1. sentyaev
                  27.12.2016 20:57

                  JavaScript-движки — либо VM, либо JIT-компиляторы, лиюо что-то посередине.
                  По сути, то же что и Java-движки.

                  Вы правы.

                  Я же немного о другом говорил, что большинство современных тулов (typescript, angular, react например) транслируют/компилируют «нечто» в HTML, JS, CSS. А дальше да, все это исполняется на vm/jit.
                  Но ведь все эти инструменты появились только потому, что HTML, JS, CSS не могут решать задачи современных приложений. Я именно это имел ввиду.


                  1. VolCh
                    27.12.2016 21:05

                    Как не могут, если в них компилируется? :) По сути все эти исходники для бабеля/вебпака/… это сахар для HTML, JS, CSS, позволяющий упростить и ускорить работу разработчика, но ничего нового в возможности не привносящий. Более того, у грамотного разработчика «нативный» HTML, JS, CSS скорее всего будет быстрее, красивее, легче и т. д. чем результат компиляции.


                    1. sentyaev
                      27.12.2016 21:27

                      Как не могут, если в них компилируется? :)

                      Конечно, я выразился не совсем корректно, конечно могут.

                      Когда я говорю, что не могут, я имею ввиду задачу вида:
                      Сделать X за Y часов и Z ресурсов.


                      1. MikailBag
                        28.12.2016 18:17

                        Ладно, рассматривайте их как байткод для веба.
                        Вы же не будете писать на ассемблере под JVM.


  1. Jaromir
    22.12.2016 16:57

    Но я не знаю, сколько времени осталось, пока они не вошли в категорию «X — дерьмо!».

    Учите мемы web components. Они уж точно не протухнут. А использовать можно уже сейчас, докинув полифиллов


    1. stardust_kid
      22.12.2016 18:25

      Вы гарантируете это?


      1. Jaromir
        23.12.2016 02:53

        Они ведь будут встроены в браузеры


        1. MikailBag
          26.12.2016 21:24

          некоторые перемещают в категорию "X — дерьмо!" и браузеры тоже :)


  1. ktarasov
    22.12.2016 18:55

    «М-да, бяда, ой бяда бяда.» Про собеседования понравилось, есть похожий опыт. :)
    Вообще, посмотрите, например на ремонт электроники. С паяльником сидят только энтузиасты. В сервисных службах же, тупо меняют блоки, даже не могут сказать как этот блок в деталях работает. Все усложняется. Да и не хотят разбираться, ибо компания снижает себестоимость.

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


  1. stychos
    23.12.2016 00:48

    Спасибо, автор.


  1. IIvana
    23.12.2016 04:10

    Тенденция достаточно обща и началась не вчера: https://habrahabr.ru/post/282986/


  1. Lemko
    23.12.2016 17:58

    Спасибо, автору. Прям как у нас.


  1. safinaskar
    24.12.2016 15:54
    -1

    Javascript — гэ. От начала до конца. Это просто хак. Многие библиотечные функции возвращают «значение или null», но с null'ом можно забыть сравнить, отсюда баги. И это вместо нормального std::optional из C++ или Maybe из Haskell. Если пишем var a = {"a": 0}; a.b, то ошибку поймаем только в рантайме. Никакого этапа компиляции тут нет. Да и вообще, это, типа, не ошибка. a.b — это не синтаксическая ошибка, это просто undefined. Да и вообще, огромное количество кода, который в компилируемых языках был бы запрещён, в Javascript разрешён. Это не ошибка, это undefined. Список можно продолжать, ищите сами списки в интернете вида «100 недостатков Javascript». Это просто кошмар для человека, привыкшего к компилируемым языкам, таким как C, C++, Haskell, а также к такому красивому, пускай и заброшенному и малофункциональному языку на сегодня как Pascal.

    Сейчас хайп вокруг разных технологий на базе js, но неудивлюсь, если вдруг очень скоро будет признано, что js — гэ, а вместе с ним node и все фреймворки на нём :)


    1. VolCh
      24.12.2016 18:54

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

      И, кстати, многие функции стандартной библиотеки C возвращают в качестве признака ошибки 0 или -1. Это не считая kernel panic/BSOD.


      1. safinaskar
        24.12.2016 19:15

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


        Да и вообще, проблема не в том, что javascript некомпилируемый. Просто я перечислил известные мне компилируемые языки как положительные примеры, как примеры "хороших" языков в отличие от "плохого" javascript. Python тоже, наверное, можно было привести в качестве примера "хорошего", но я не знаю python, поэтому упоминать его не стал.


        с сильной/слабой типизацией

        У javascript проблемы не только с типизацией. Слышал, что есть некий typescript. Думаю, эти ребята просто взяли javascript и в тупую добавили типизацию, не изменив всего остального. Значит, многие проблемы javascript всё равно остаются.


        И, кстати, многие функции стандартной библиотеки C возвращают в качестве признака ошибки 0 или -1

        Да, это плохо. Но если говорить про C++, это решаемо. Можно обернуть эти функции в обёртки, которые возвращают std::optional, std::variant и т. д.


        Это не считая kernel panic/BSOD.

        Как пример хорошего языка приведу Haskell. Наверное, привёл бы тут ещё и Python, если бы знал его. (Сюда же, видимо, Go и Rust.) Haskell с одной стороны не подвержен всевозможным утечкам памяти, сегфолтам и т. д., в отличие от C/C++, но с другой стороны нет вот этого вот бардака в стиле "любая переменная может оказаться null, а ещё undefined", как в javascript


        1. PsyHaSTe
          24.12.2016 23:42

          Все проблемы JS давно известны, тем не менее это единственный язык для клиентского взаимодействия. Так что придется его любить таким какой он есть либо не пользоваться им вовсе. Тем более, что есть удобные тулзы по уменьшению боли aka TypeScript и компания.


          1. safinaskar
            25.12.2016 00:59

            Вполне возможно, что на js вообще программировать перестанут, а будут писать лишь на том же typescript или на чём-то ещё и потом транслировать в js. Ну или браузеры введут новый язык. И программирование на js исчезнет как со стороны клиента, так и сервера. Вместе со всякими node. Я это просто к тому, что сам вот этот js в какой-то момент может быть объявлен отстоем


            1. VolCh
              25.12.2016 10:46

              1) На сервере и вообще в CLI JS далеко не единственный язык, в том числе не единственный интерпретируемый со слабой типизацией, но его популярность растёт. Плюс используется для разработки мобильных приложений без привязки к браузеру. Это только то, что массово мелькает на разных общеразработчиских ресурсах.

              2) Недостатки JS могут удаляться потихоньку, объявлением части функциональности deprecated с последующим выпиливанием.


    1. safinaskar
      24.12.2016 20:11

      Даёшь сайт http://jssadness.com (по аналогии с http://phpsadness.com )


  1. http3
    26.12.2016 13:55

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

    Таки да.
    Но так поступают как раз лохи. :)

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

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

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

    Да? :)
    Сингулярность — это Windows XP + Opera 12. :^)