Как стать автором
Обновить

Гугл-программисты. Как идиот набрал на работу идиотов

Время на прочтение4 мин
Количество просмотров172K
Всего голосов 386: ↑297 и ↓89+208
Комментарии648

Комментарии 648

1. Времязатраты увеличиваются с ростом проекта. Могу сказать про себя, когда начинаю новый проект, скорость разработки космическая, у меня ничем не связаны руки. Но со временем, вносить изменения и новые фичи, становится все трудней, нужно учитывать много факторов, связи и так далее. Иногда для новых фичей приходится рефакторить или даже менять архитектуру, но так чтобы ничего не поломать. Это все берет время.
2. Орать, пинка под зад, плохая мотивация особенно для творческих видов работ.
объём трудозатрат на сопровождение и развитие проекта растёт, а местами аж по экспоненте, если в проекте набран приличный объём архитектурного долга помимо технического (ваш кэп). связи? да, необходимо внимательно следить за разграничением ответственности между областями кода и не допускать укрепления связанности. если интересно подробнее почитать про архитектурные подходы, которые хоть и не такие шустрые на старте, но, если строго их придерживаться, то через 2-3 года добавить в проект пару экранов, или добавить что-то на существующие будет так-же просто как и в первые 2-3 месяца, то можно начать с Lotus MVC (https://matteomanferdini.com/ios-architecture-lotus-mvc-pattern/) а потом уже под свою платформу/язык скорректировать.

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

Вы хотели сказать так-же сложно, как и в первые 2-3 месяца? :)

Времязатраты увеличиваются с ростом проекта.


Все правильно. Только вот статья не о трудозатратах.
А о плато.

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

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

Причем на этой стадии вы еще можете гуглить какие-то мелочи. Как и на более поздней стадии. Но это будут только мелочи универсального общего свойства.

Уникальную составляющую вашего проекта нагуглить нельзя.

Автор пишет, что гуглопрограммисты прекращают быть полезными, когда от универсальных общих присутствующих во всех проектах вещах — они переходят собственно к тому что составляет суть проекта.
Опять нет кнопки «Сделать всё хорошо».
Помню свою боль, когда на определённые ошибки не мог найти объсяснения ни на SO, ни в документации, ни в телеграмм канале у автора инструмента)
Уникальную составляющую вашего проекта нагуглить нельзя.

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


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

Никаких супер-оригинальных алгоритмов от программистов не требуется, как правило. Исключения редки.

Однако тем удивительнее факт выхода программиста на плато «ничего не могу», когда готовые рецепты в Гугле закончились.

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

ХРюши потому и любят «софтскиллс», потому что навешать всем лапши на уши «это в принципе невозможно» звучит лучше, чем «я лично ничего не могу».

Встречал "программистов", которые ошибки гуглили без малейших попыток абстрагировать их, вот прямо со своими личными путями и неймингами проектов типа /home/vasya/work5/super-project/src/Api/RogaAndKopytaApiClient

НЛО прилетело и опубликовало эту надпись здесь
Ron Jeffries: «Code never lies, comments sometimes do.»
Значит это «Как слышим так и пишем». Нет творческого подхода вовсе.

Так гуглится же! Быстрее вставить и нажать Enter, чем редактировать запрос, ну а если уж не нагуглилось так, то тогда уже абстрагировать

Обычно вся уникальность проекта заключается в банальном отсутствии документации на проект.
Самодокументируемый код.
P.S. документация по методам математического моделирования есть, занимает 3 семестра обучения.
что гуглопрограммисты прекращают быть полезными, когда от универсальных общих присутствующих во всех проектах вещах — они переходят собственно к тому

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


Да он будет не уникален — но годен и быстро и удообно.
С программированием пора строить задачу из типовых гугло-кусков. Как опенсорсные блочные дома.
То есть надо менять подход — коий новое поколение мудро указало и выявило.
так что две цитаты:


Человек, который почувствовал ветер перемен, должен строить не щит от ветра, а ветряную мельницу. © китайская народная мудрость


Надежные машины из ненадежных элементов! © Джон фон Нейман

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

Ну так тут выше и написали, что StackOverflow-Driven Development, это вполне жизнеспособный подход ))

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

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

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


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


И сможет ли во всё это копипастокодер — вопрос

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

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

А если их всего три?

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

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


Ну а если их 300 разработчиков всего?
Настоящих программеров все равно должно быть 3?
А остальные 297 — тупые просто приложения к клавиатуре?

P.S.:
Индустрия разработки ПО существует вот уже более полусотни лет, всё уже рассчитано до нас.

Например, один из классических трудов по организации разработки ПО «Мифический человеко-месяц» Ф. Брукса опубликован еще в 1975 году.

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

А вовсе не:
Для этого нужно два, максимум три обученных программиста на всю компанию. Остальные должны быть индусами.


Настоящих программеров все равно должно быть 3?
А остальные 297 — тупые просто приложения к клавиатуре?

В компании обасучивающей прачечные, в общем то — да. С некой долей условности. И это 99% рынка. Наверно обидно звучит.
Не, там где искусственный интеллект, квантовые компьютеры — все иначе.


Индустрия разработки ПО существует вот уже более полусотни лет, всё уже рассчитано до нас.

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


И старших разработчиков нужно довольно много. Т

Дык все поделено на группы, а не все 300 скопом над одним проектом. Что нам и дает изолированные блоки внутри компании. И в таком, из нескольких команд над проектом — как раз единицы. Остальные пилят нишу.
Все равно при поставленной разработке за пределы ниши выходить не приходится.


Так кстати не только в китах рынка — но и в стартапах.

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

А можно конкретику?
«А как насчет крылышек? — спросил я. — Или, скажем, сияния вокруг головы?
Один на тысячу!» — «А нам всего-то один и нужен», — сказал горбоносый. «А
если их всего девятьсот?» — «Согласны на девять десятых».
> Чувак сначала проходил длинное собеседование по куче разнообразных вопросов, потом решал несколько задач. На бумаге, как мы делали в ВУЗе.

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

Я дико извиняюсь, но… Слить карму на Хабре — это как нефиг делать. Вот поднять — тяжко, если не считаешь для себя честным заполнять Хабр десятками иноземных переводов. А вот слить — очень легко. Достаточно "не понравиться" или "не сойтись во мнении" с парой-тройкой индивидуумов, плохо переносящих личные мнимые "обиды".
Кривую систему кармы Хабра ругали уже столько раз, что снова начинать это уже даже неинтересно.

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

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

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

Что непонятного?
Можно писать статьи, а можно писать комменты (это тоже как ни странно — писать). Карма получается за первое, а сливается — за второе (и почти никогда за второе карма — не начисляется). И второе же и ограничивает.
Я бы понял если бы за ценные комменты (за +10 +50 +100 и т.д.) — она начислялась бы как за статьи автоматически, но нет. В комментах всё зависит только от критиков, которые, повторюсь, сливают — с удовольствием, а начисляют чуть чаще чем никогда.

Продать эту карму потом можно? Что с ней делают обычно, зачем она нужна?
Можно одобрять/не одобрять плюсами и минусами статьи и комментарии, а так же другим карму менять. Таки влияние на сообщество.
Насчет умения решать задачи вместо гуглежа не согласен, это надо уметь. Редкий случай когда немного согласен с nmivan, а вот с тем что нужно помнить стандартную библиотеку, а так же помнить сторонние подключенные библиотеки, (бсп, типовую конфу в случае 1с которые у автора) — это очень и очень сомнительно. Разве что очень верхнеуровнево. Это уже проблемы IDE и языка 1с которые ужасны и заставляют программистов это делать, вместо того чтобы помнить примерно и IDE уже бы подсказала на основе типов и полнотекстового поиска.
Я на текущей работе решал задачу на бумажке, и мне сказали использовать абстрактный язык. Т.е. если я не помню как называется нужная мне функция — не страшно, главное что я помню, что она есть. Важен был именно подход к решению. Сейчас проходил собеседование — и решал задачки уже в IDE, с расшаренным экраном — без гуглежа, периодически опечатываясь, но опять же — я показывал свои представления о том, как нужно организовывать код, а не знания синтаксиса конкретных функций — хотя тут уже IDE помогала, конечно.
Не вижу ничего зазорного в том, чтобы обращаться в гугл за помощью в том, как работает тот или иной инструмент, главное — не копировать бездумно куски кода из SO в свой проект. Программирование — не знание на зубок всех языковых конструкций и стандартных библиотек. Программирование про умение думать, и правильно компоновать доступные инструменты для получения оптимального в данной ситуации решения.
Может комментарием промахнулись? Я примерно об этом же и писал.
Скорее решил дополнить, я в целом согласен с вашей точкой зрения.
Т.е. если я не помню как называется нужная мне функция — не страшно, главное что я помню, что она есть.

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


Влияние, конечно, не так чтобы сильное, но оно есть.

Какие то тысячные доли процента времени разве что. Пишет код программист гораздо меньше чем читает. И большая часть времени написания это размышления, а не набор кода. Тем более обычно можешь вспомнить или прикинуть возможные ключевые слова в имени класса/метода, а умная IDE подскажет, если железо нормальное — то почти моментально.

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

Ну опять же, или вам IDE подскажет за пару секунд, или вы сами напишете (я кстати обычно не дописываю а жду пока подсказка выскочит, так быстрее) — разница небольшой будет.
Да, но это работает если знаешь что писать.
А без знания нужно либо перерывать подсказки в поисках нужной — это работает в целом с методами разве что, но не с типами/интерфейсами
Ну обычно хотя бы какое то представление имеешь. Из прочитанных книг, статей, подкастов, мельком виденного чужого кода или документации.
Ну вот потихоньку эта разница и складывается — из того, что знаешь и не знаешь, решал/не решал, решал на другом языке, видел мельком, читал и т.д.
Ты можешь не помнить не строчки синтаксиса, но само ощущение «Я очень похожее уже решал, есть стандартное решение и какой то хитрый хак» позволит тебе быстрее нарыть эту штуку, чем просто «надо погуглить»
Ну так автор статьи пишет
Оказалось, что только один программист из десятка умеет работать с базовыми сущностями, типами, знает их свойства и методы.

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

Зависит от статьи. Если это вывод сложной, исследовательской работы, то собственно, написание — занимает небольшой процент. И разница между наивным языком и другим, но со словарём — будет минимальной (в процентном отношении к другой работе). И с другого конца — если это просто перевод, то вариант "со словарём" проигрывает кардинально. Работа программиста, на мой взгляд, ближе к исследовательской. Для ребят, что просто переводят с бизнес-логики на какой-нибудь питон (надеюсь, никого не обидел), знать наизусть команды фреймворка, наверное, важно.

Да и там разница не шибко большая. Говорю как бывший 1сник, с нормальной IDE и наличием ООП со статической типизацией в языке — не нужно было бы стандартную библиотеку и типовые решения в голове держать. По крайней мере в таком объеме и качестве.
Даже простейший человеческий язык будет на порядок сложнее, чем любой язык программирования. А значит и «штраф» за использование «словаря», может быть выше на порядок. И поскольку суммарное время складывается из двух составляющих: придумывания смысла, и формулировки его на требуемом языке, то нельзя просто сказать, что раз есть потеря времени на этапе формулировки, то это сразу критично. Важно именно процентное соотношение потерь и суммарного потраченного времени. И это делает аналогию с естественным языком не применимой к программированию — разные порядки сложности, разный процент временных потерь, как следствие разная оценка того, приемлемо это или нет.
разной в случае 'знаю иностранный язык' и в случае 'знаю иностранный язык со словарем'

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

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

Вот далеко не гарантировано, что второй будет переводить быстрее или качественее.

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

«знаю английский со словарём» подразумевает

Скорее подразумевает, что вы его толком не знаете.

Если вы знаете все граматические структры, обычно понимаете речь без сложных оборотов на слух и можете бегло объясниться простыми словами и оборотами в большинстве рабочих и бытовых ситуаций это уже B1-B2 (Upper Intermediate) уровень.

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

Это уже далеко не «знаю со словарём»

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

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


То что в названии и человеческого языка и языка программирования есть слово «язык» это не означает что это понятия одного поля, которые можно сравнивать вот так вот просто.

Вам же не приходит в голову приравнивать часть тела, что находится у вас во рту и тоже называется «язык» к разговорному или компьютерному языку?

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

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

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

С человеческим языком — совсем другие порядки:

400–500 слов – активный словарный запас для владения языком на базовом (пороговом) уровне.
800–1000 слов – активный словарный запас для того, чтобы объясниться; или пассивный словарный запас для чтения на базовом уровне.
1500–2000 слов – активный словарный запас, которого вполне хватит для того, чтобы обеспечить повседневное общение в течение всего дня: или пассивный словарный запас, достаточный для уверенного чтения.
3000–4000 слов – в общем, достаточно для практически свободного чтения газет или литературы по специальности.
Около 8000 слов – обеспечивают полноценное общение для среднего европейца. Практически не нужно знать больше слов для того, чтобы свободно общаться как устно, так и письменно, а также читать литературу любого рода.


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

Ключевые слова и конструкции в ЯП больше соответствуют грамматическим конструкциям в естественных языках. Какое-нибудь "to be going to" или "to have been" не требует дословного понимания (оно даже вредить может), так же как if/then/else тоже его особо не требует. А "слова" ЯП — это как раз библиотеки.

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


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

А знание всех языковых конструкций живого языка не дает вам ничего.

Ибо Вам нужно заучить тысячи слов.

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

Смотря что называть "всем языком программирования"

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


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

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

Просто, говоря о человеческом языке вы думаете об устном разговорном.

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


Code Style — да.

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

Но это не собственно знание самого языка.

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

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

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


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


Это как?
Вы приравниваете понимание работы алгоритма к изучению человеческого языка?

Понимаете человеческий язык и язык программирования — это о разном.

Да, приравниваю.


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


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

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


То есть программисты, если они действительно хорошие программисты, то они априори способны написать хорошее художественное произведение?

Это вы напрасно.

Не художественное. А понятное произведение/документацию/статью итд итп. Просто обязаны по профессии.

Как только им дадут, с одной стороны, систему команд эмоционального интеллекта, а, с другой, ТЗ на то какие эмоции нужно вызвать :)

то они априори способны написать хорошее художественное произведение

Вас совсем не в ту степь понесло.

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

Да не особо, если говорить о письменном естественном языке для каких-то задач (обычно на ЯП мы устно все-таки не общаемся).
Условно написать официальное письмо в какую-то службу практически аналогично написать программу для комьютера, те же блоки, обороты и т.п,
даже код стайл есть. Документация легко конвертируется в программу и обратно, более того есть системы написания unit test'ов где пишешь
практически на ествественном языке условия.
Любую программу можно написать используя let да else if :) Но это абсолютно не означает, что понимания let и else if достаточно, чтобы написать любую программу.

Не имеет абсолютно никакого значения количество слов или условных конструкций, вроде дженериков. Да и в обычных разговорных алфавитах букв десятки, даже не сотни. Однако судя по чатам и комментариям, у многих даже на родном языке написать не достаточно способностей, чтобы быть понятым…
НЛО прилетело и опубликовало эту надпись здесь
Респект. Чем больше инфы в голове — тем легче ей оперировать. Разбор кода из гугла тоже требует времени на переделку — ведь на 100% не подходит ничего и никогда.
С головой «чем больше инфы» к сожалению не прокатывает ) новая инфа вытесняет старую в архив.

Но чем больше информации познаешь, применяешь, мозг ее как то агрегирует и превращает в интуицию.

… или гуглишь непонятно что, так как не знаешь что оно вообще есть.

Не, то о чем вы пишете это о широте знаний, оно полезно. А вот знать какой именно метод в стандартной библиотеке объединяет в строку коллекцию — нафиг не нужно помнить. Ибо позавчера писал на 1с, вчера на java, сегодня на котлине, завтра на каком нибудь C#/dart/swift и т.п., а суть решаемых задач та же осталась.
То что будет часто использоваться запомнится быстро, после нескольких нагугливаний, то что редко — один черт придется каждый раз вспоминать и лезть в гугл/доку. Главное знать что такая штука есть в принципе, а найти и применить проблема не большая.
Если я использую функцию регулярно — я помню как она называется и в каком порядке какие аргументы в неё передавать. А если я использую её крайне редко, эта информация вытесняется из памяти более важной — и тогда придётся либо внимательно вчитываться в подсказки IDE, или идти за более детальной информацией в документацию. Но в случае редкого использования — это не критично. Тем более, обычно основная масса времени уходит не на написание кода, а на его обдумывание.

Так обычно те функции, которые используешь часто, знаешь. Но бывают такие, что раз в год попадаются. Я, например, каждый раз в Гугл лезу за какой-нибудь связкой socket/bind и т. п. Ну не часто мне приходится сервера писать. Не думаю, что пятиминутное вспоминание раз в год, где что прописывать, сильно влияет на производительность.

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

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

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

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

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

вас кто то очень сильно обманул

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


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

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

Не уверен, что у вас иначе.

Базовый активный словарный запас — 1500-2000 слов. Именно их обычно целенаправленно учат. Потом человек его подтягивает до десятков тысяч слов пассивного запаса.


Ни и сколько из нас наизусть помнит 1500-2000 классов стандартной библиотеки (может сразу пользоваться ими, не залезая в подсказки)?


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

Может быть вы не в курсе, но ребенок в 7 лет в словарном запасе имеет 2000-3000 тысячи слов.

В любом случае, при изучении языка программирования, я лично(может быть вы делаете иначе?) начинаю с синтаксиса+базового набора встроенных языковых конструкций. Далее, понимание общей архитектуры языка, назначение крупных библиотек. И никогда я не учу: где в каком пакете что находится — для этого у меня есть IDE, которая заботливо импортирует, я лишь, руководствуясь правилами расположения пакетов(родные-сторонние) проверю, что импорт был правильным. Может быть вы делаете иначе и зубрите все методы+все аргументы+что-где располагается, ну что ж — у каждого свой путь, но это делает вас максимально непродуктивным.

Ну и как для языка, так и для для программирования — активный и пассивный словарь имеются. И потому, скорее всего, в моем активном словаре будут некоторые ф-ии, которые я часто использую.
1500-2000 классов стандартной библиотеки

Только класс это не аналог слова, у класса может быть сотня публичных методов с разными аргументами.
«Словом» в программировании это максимум название функции без аргументов, вроде в классе Math есть функция sin вычисляющая синус, либо базовые конструкции языка (циклы, определение переменных, массивов и т.п.). Думаю, если посчитать — то 2 тыс. наберется даже у джуна.
Кстати, да стал замечать, что память подкачивает, и я за публичными методами иду в гугл, вместо справки в ИДЕ или исходники, мозг считает это проще. И прям иногда себя одергиваешь или идешь вспоминать в код… И этот способ, корректнее и полезнее.

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

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

Другое дело, что мне и моему начальству в голову не придет писать код для прода, без гугла любых спорных моментов.
На бумажке вообще дико неудобно писать. Даже на псевдокоде.
Кому как. У меня был проект, я брал лист бумаги, ручку, ложился на диван и думал, набрасывая структуру программы на неком своем псевдокоде. Потом уже за комп — где и IDE и Гугл, и т.п…
Вообще так у меня не работает. Даже схемы если они нужны я чаще в цифре набрасываю. Майндмапы там какие, или еще чего. Изредка только на бумаге чего нарисую или стилусом на планшете, когда уж совсем хочется что то странное нарисовать чего софт не поддерживает.
на бумажке не вставить строку выше написанной) Иногда такое надо бы сделать, когда что-то забыл заранее написать.
Так стрелка же. Пишешь где-нибудь рядом и стрелкой указываешь куда вставить или как местами поменять.
Да, только потом, когда на это смотришь — понимательность этой мешанины резко падает, по сравнению с правильно отредактированной электронной версией.
Хотя рукой рисовать может быть полезнее в плане заучивания материала — механическая память помогает зрительной.
Истина где-то по середине — что-то похожее на рисование на планшете стилусом и с последующим упорядочиванием блоков.
мне просто некомфортно ибо я очень редко пишу ручкой и едва могу разобрать собственные каракули, это тупо дополнительный стресс на собесе и все
Это в том числе. Я даже когда активно писал конспекты и прочее в вузе потом лекции по чужим конспектам учил, свои прочесть не мог. А уж спустя 6 лет после окончания вуза при том что все это время максимум писал всякие там заявления (о приеме на работу, об увольнении, и еще по мелочам) — вообще кошмар.

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

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

Проще скачать рукописный шрифт и брать с собой принтер на собеседование )
> это как есть рис китайскими палочками в наше время

дык вот же ж едят рис палочками 124 миллиона японцев и 1.5 миллиарда китайцев и не жужжажт же

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

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


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


Когда пишешь от руки раз в год что то длинее чем роспись, происходит тоже самое.

> съесть комплексный обед палочками

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

Супы вполне едят палочками из чашки: сначала выловить палочками и съесть всё, что ловится палочками, затем выпить оставшийся бульон их из чашки.

Если вам непривычно писать от руки, то вам не важно как именно писать: печатными или "как в школе учили" — в любом случае будет трудно.
Однако читать потом удобнее именно печатные буквы.

Будучи студентом в конце 90х любую лабораторную писал на бумажке. На паскале и на бейсике. На чистовую. Сразу определяя все необходимые переменные. И что примечательно работало всегда и сразу.
НЛО прилетело и опубликовало эту надпись здесь
Хех, я на бумаге реверс-инжинирингом занимался. ИдыПро у меня тогда не было (да и вообще её ещё не было), распечатывал дизассемблерный листинг, и потом сидел на диване с пачкой листов в папке, разбирая и комментируя команда за командой, что там происходит.
НЛО прилетело и опубликовало эту надпись здесь
Если это PHP, то можно сделать html-страницу: список ссылок на файлы помощи с названиями файлов в тексте.
Несколько раз на собеседованиях предлагали такое — расшарьте экран, мы будем смотреть, как вы делаете тестовое задание. Разумеется, такие рога и копыта посылались сразу и навсегда
А в чём проблема показать свою работу? Тем более на собеседовании.
Мне кажется отличный способ показать свою крутость. Пусть смотрят открыв рот и удивляются как профессионалы работают.
Есть даже такая методика работы — парное программирование.
Проблема в том, что в этой компании будут стоять на душой и контролировать каждый чих. Вам нравится работать в таком месте? Мне нет.
Не думаю, что тут есть связь. На собеседованиях довольно распространено, когда собеседующий сидит рядом и смотрит как ты решаешь задачи. Следит так сказать за ходом мысли. Наверное можно так оценить, насколько эффективно человек будет решать реальные задачи. Но при этом я не разу не сталкивался с микроменеджментом. Для выявления наличия микроменеджмента по поведению на собеседовании наверное есть какие-то другие признаки, но точно не этот.
Одно дело смотреть, как ты пишешь код в 2-3 строчки, чтобы показать понимание заданного вопроса.
И совсем другое дело писать тестовое задание под надзором.
И совсем другое дело писать тестовое задание под надзором.

Это вообще бред, от таких конторок надо держаться по дальше, если надзор организован не с целью помощи кандидату. А кто сомневается может попробовать встать за спиной у любого человека, который занят каким то делом, пристально на него пялиться и посмотреть чем такое кончится.
Если конечно это не в тюрьме, концлагере или типа того происходит.
=========
По статье тоже не особо понятно, если задача такова, что для ее решения существует надежный ответ в гугле или готовая нормальная либа, то именно это и нужно использовать, подправив под себя если необходимо.
Что там за задачи такие были, что полгода всё в гугле было, а потом пропало, код с гугла или СО очень редко подходит полностью, все равно обычно надо менять добавлять что-то.
Ну судя по голосованию, тут таких надзирал очень много.
Представляю, с каким наслаждением они пинают своих несчастных джунов за малейшие нарушения например codestyle

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

Ок, пинайте на здоровье.

Особой разницы не вижу. Более того, такое тествое исключает дальнейшие конфликты уже на работе "а чего ты гуглишь постоянно всё, что, ты и тествоое так писал?1"

Если на работе докапываются «а чо ты гуглишь» — то тем более там работать не надо.

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

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

Да какое давление? Давление это когда ствол на тебя направляют и говорят "если за ночь не заработает, то может тебя в Финском заливе найдут, но вряд ли!

Я и с таким сталкивался.
После чего очень не люблю начальствующих мудаков
просто человек наблюдающий за процессом работы это уже давление, для многих достаточное что бы вместо работы сидеть и тупить. тоже самое происходит со мной на собесах где просят онлайн на расшаренном экране или в гугл докс писать код.
НЛО прилетело и опубликовало эту надпись здесь
Делать проект с коллегой, используя шаринг и писать тестовое задание с шарингом — две большие разницы
НЛО прилетело и опубликовало эту надпись здесь
А под тестовым заданием что понимается? Решать какую-то задачку или что-то на пару дней работы, законченный проект? Если первое, то да, лучше показать и рассказать, как решаешь задачу, даже если не совсем верно решаешь, могут направить в верное русло. Если второе, то это получается надо приходить на регулярные митинги и показывать, как ты минут по 20 думаешь над архитектурой?
Будете смеяться, но я однажды столкнулся и со вторым вариантам. Там еще вклад в проект оценивали по тому, сколько пушей сделал в день
согласен списывать надо тоже уметь

я против бумаги и за нормальную иде (типа визуал студии, что б во всём мс так тормозило!), где есть подсказки.
Насчёт встроенной справки — хорошая она была в делфи 7, больше нормального нигде никогда не видел. А! Ещё по авр доки в принципе норм (в отличие от стм, где доки и софт напоминают китайское "продать железку, сляпать х… ый софт и доки". Кстати, синовойп для банана пи м3 и то кое-как, но собирают дистрибутивы на "отъе… сь, пожалуйста", а не как стм — без уважения. Извините, наболело)
А на собеседованиях нужно было выдавать комп без инета, это 100%. Затем по желанию/возможности всё-таки сидеть рядом (напротив) для контроля смартфонов и просто очередной психологический тест на работу в коллективе.

See also, блин, see also. Именно такой раздел мне запомнился в мануалах от MS (причём в формате CHM). Ты можешь не помнить название функции по извлечению подстроки, но знаешь, что она упоминается внизу справки (see also) к Trim!
Современный MSDN стал намного лучше старой делфийской справки, и тем более себя старого. Даже перевод на русский чаще всего вменяемый, за редкими исключениями. Правда кода для копипасты там тоже хватает, но, с другой стороны, так намного проще понять нюансы.
Даже перевод на русский чаще всего вменяемый, за редкими исключениями.

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

Я еще с юных времен привык пользоваться как англоязычным хелпом, так и англоязычной студией, потому на русском открываю только очень редкие статьи. А от термина «Решение» у меня до сих пор ступор в мозгу. И это даже при том, что сам английский я выучил лишь много лет позже.:)
PS. Вроде раньше там плашка висела, что на русский перевод машинный. Убрали?
целом какой-то совковый подход

Это все, что вы увидели в статье?

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

Собеседования в гугл, фейсбук, амазон, майкрософт и т.д. именно такие.

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

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

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

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

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

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

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

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

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


Тоже провожу собеседования, как тимлид, и пару раз приходили разработчики с подобными радикальными взглядами. Это, правда, выглядело совсем утрировано — примеров кода нет, своих проектов нет, резюме состоит из закопанных или закрытых продуктов. Шарить экран во время собеседования не готов. Тестовое задание на написание микро-проекта, в любое удобное время без какого либо контроля, с обсуждением написанного — не согласен. И я не могу никак понять, из чисто голосового обсуждения базовых принципов языка и контекста — что это за специалист. Он может наизусть знать определения терминов, но совершенно не понимать как их применять. Компания небольшая, брать каждого желающего на испытательный срок — дорого, да и каждый новичок это нагрузка на команду разработки. При этом ребята искренне недоумевали, почему я хочу от них такого табу как тестовое задание. Видимо начитались статей, где говорят что тестовых задач делать никогда не надо, а за просьбу что то написать в прямом эфире — надо сразу в окно убегать. Еще раз — мне бы хватило любой демонстрации скиллов для дальнейшего обсуждения, но их не было ни в одном виде.


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

НЛО прилетело и опубликовало эту надпись здесь

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


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


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


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

НЛО прилетело и опубликовало эту надпись здесь

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

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

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

Разве в контексте статьи есть намеки, что это не про сеньоров?

Сам процесс собеседования, стиль общения тимлида, и обороты вроде "застыли на уровне стажёра", в моей практике сеньоры как то сразу проходят мимо этого уровня. Если статья про сеньоров то мои комментарии совсем не в кассу. nmivan, подскажите пожалуйста, какие вакансии должны были закрыть специалисты описанные в статье?

В первой части («как было раньше») статьи речь про всех подряд, т.к. все эту процедуру проходили.
Во второй части («как сейчас стало») речь про стажёров. На вашем языке это, наверное, джуны.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Вот только если человек знает все из головы, он в долгосрочной перспективе будет решать задачи бизнеса лучше. Потому что гораздо быстрее разберется в ситуации, когда гугл не спасает. И да, написание кода на листочке, без подсказок ide — неплохой способ проверить эти знания. Может потому раньше софт и был оптимизированнее и стабильнее, из-за этого ненавидимого вами "совкового" подхода? У вас логика студента, которому лишь бы списать на зачет, а не научиться чему-то. Ноль творчества или повышения квалификации

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


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

Я довольно часто вижу программистов которые не знают ничего глубже своего языка вообще, SQL — как ни странно редкость (вообще свидетели-ORM сейчас плодятся и это печально), понимания хотябы основ devops — тоже нечастое явление…
мне кажется, вы скорее про разные сферы деятельности и подобное. И вы, и ваш коллега в чем-то уже разбираетесь самостоятельно. Я же пытался сказать, что не обладать знаниями, не разбираться, а гуглить готовые решения — так себе идея в глобальном плане. Потому что нет при этом развития, потому что шаг в сторону от имеющегося в гугле — и полномочия разработчика всё. Написание кода на бумажке — один из вариантов проверки знания. Вряд ли кто-то будет отказывать из-за пропущенной точки с запятой, но если человек не знает, как работать, например, с указателями в с++ (нанимаясь на должность разработчика с++), то это повод крепко задуматься
А в чем проблема написать код на бумажке?
Тем более обычно просят совсем примитивные вещи вроде перевернуть строку или обойти дерево.
НЛО прилетело и опубликовало эту надпись здесь
ИМХО, если чувак не может решить на бумажке какую-то простую задачу без постоянных подглядываний и копипаст, то грош ему цена как специалисту

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

Из текста публикации сложилось ощущение, что команда занимается решением задач на Codewars (к примеру), а не работает над проектом/проектами.
Разве на собеседовании не возникло ни одного вопроса, ни желания обсудить реализацию с кандидатом, предоставившим решение (хоть и идеальное), что сразу позволило бы определить, что человек не сам писал код. Разве за 3-6 месяцев не возникло ни одного обсуждения рабочих вопросов, обсуждения пулл реквестов, позволяющих понять, что человек совсем не в теме того, что пишет?
Тут скорее проблема другого рода описанна. Не то что эти ребята не умеют в код, а то что они не знают барадатых постулатов. Они могут быть первоклассными спецами на пихе допустим, а потом придёт такой дед и начнёт орать, как это они не знают типы, сборщиков мусора и прочей сишной хероборы
Не, тут проблема еще более другого рода описана. Это особенность 1с что нужно много мусора в голове держать так как IDE очень слабая, мягко говоря, я когда с 1с работал тоже был вынужден почти всю стандартную библиотеку держать в голове.
Ну еще нюанс что по 1с в сети готовых решений нет почти, ни просто в текстовом виде на SO, ни готовых библиотек и приходится из головы многое писать. Плюс проблема с переиспользованием кода по разным причинам (сложившиеся практики, сам язык мешает это делать).
В смысле IDE? Эта дрянь даже в 2020 еще не научилась работать через language server с любой современной IDE хотя бы с VSCode?
Ну, VSCode все таки редактор, а не IDE. Но не суть важно. Сообщество language server пилит насколько я в курсе, но решения от вендора нет, что на качестве само собой сказывается ибо в свободное время энтузиастами — это не то. Плюс использовать это довольно проблематично, так как работает через выгрузку/загрузку файлов, что создает еще некоторые проблемы.
От вендора есть решение в виде перепиленного эклипса, но работает не сказать что идеально, да и им почти никто не пользуется насколько знаю, ибо выстроенные процессы ломать не хотят, да и железо там нужно дикое чтобы хорошо работало.
Очень рад что теперь пишу на котлине с использованием нормальных инструментов. В 1с даже гит распространения не получил пока.
В смысле IDE? Эта дрянь даже в 2020 еще не научилась работать через language server с любой современной IDE хотя бы с VSCode?


«Спорить о вкусе устриц с тем, кто их пробовал… До хрипоты, до драки». © Михаил Жванецкий

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

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

Угу, очень «нормально». В сравнении с современными IDE для java и прочих — в просто земля и небо. Естественно не в пользу 1с. Говорю как человек проработавший 4.5 года с конфигуратором и пощупавший немного EDT и почти 2 года проработавший с Android Studio.
Говорю как человек проработавший 4.5 года с конфигуратором и пощупавший немного EDT и почти 2 года проработавший с Android Studio.


Тогда можете и конкретику?

P.S.:
Довольно странно сравнивать те возможности, что может дать IDE для языка со статической типизацией Java. Честнее будет сравнивать с JS, Python.

Не стоит забывать, что 1C это интегрированная система, где интерфейс, БД и код связаны воедино и обновление новой версии накатываются одной кнопкой ровно под одну конкретную версию прикладного решения. И универсализм Android Studio просто не нужен.

Впрочем, если речь идет об разработке оконченного решения на 1С, когда работает множество программистов, нужно множество веток (как в git) и работа над проектом по частям — да, IDE 1C не лучше Android Studio.

Однако когда речь идет о поддержке у конечного пользователя, а не об разработке готового продукта — как раз удобнее идеология 1С IDE, где БД+GUI+код оставляют единое целое в дереве метаданных.

EDT и сейчас еще в активной разработке. А то, с чем вы могли работать несколько лет назад — это какая-то пред-альфа, зачем на неё ссылаться?
Конкретика? Даже простой поиск по имени куда хуже. И дело не только в статической/динамической типизации. Идея переваривает и опечатки, и ввод на другом языке, и ввод только заглавных букв, и ввод только части имени метода/класса. Плюс даже для динамически типизированных языков разные эвристики есть по выводу типов аргументов и результатов вызова функций, но, само собой не в 1с.
Что касается остального сообщения — спор начинать не хочу, уже не раз в него встревал, но мы сейчас обсуждаем именно конкретные проблемы, заставляющие кучу лишнего в голове держать, так что аргументы о доработке у клиентов, запуске одной кнопкой и прочему мимо, они эту проблему никак не решают.
Ну а EDT уже лет 5 в разработке и все никак. Да и уступает эклипс идее.
Плюс даже для динамически типизированных языков разные эвристики есть по выводу типов аргументов и результатов вызова функций, но, само собой не в 1с.

Неправда ваша. В некоторых случаях в 1С подставляет с использованием типов. В тех случаях, когда речь идет о метаданных из БД, например.

Ну а EDT уже лет 5 в разработке и все никак. Да и уступает эклипс идее.

IDEA уже лет 20. И это лучшее, что есть в мире.
Экслипс тоже помнится пока взлетал — люди матерились годами и удивлялись как же можно такой долгострой делать. Более менее юзабелен он стал версии к 3-й, но уступал IDEA всегда.
Угу. Именно что в некоторых. С эвристиками нормальных IDE не сравнить, они и в вызываемую функцию сходят посмотрят что она возвращает, а если она чего то вызывает — то и туда сходить могут. И места вызова текущей функции поискать чтобы варианты типов аргументов прикинуть. И по предыдущему использованию аргумента попробовать варианты подобрать. Я не знаток внутренностей разных IDE, но по другому объяснить их иногда прям магическую работу с динамически типизированными языками я не могу.
Угу. Именно что в некоторых. С эвристиками нормальных IDE не сравнить, они и в вызываемую функцию сходят посмотрят что она возвращает, а если она чего то вызывает — то и туда сходить могут.


Не выдумывайте ерунды.

Вы работали в этих «нормальных» IDE только с языками со статической типизацией, полагаю?

Качество подсказок для того же JS в той же IDEA по сравнению с Java — просто небо и земля.
только должна ходить не IDE а language server, в частности для динамических языков самый правильный LS — сам запущенный интерпретатор, который в любой момент способен отдать состояние среды, пропатчить байт-код добавив отладочные заглушки в нужные места (условные брыкпоинты), отдать IDE метаданные, и метки типов собранные в рантайме, и т.п.
Другой вопрос, что сам LSP и debug protocol еще не являются промышленным стандартом, и авторы реализаций языков не слишком заморачиваются с его поддержкой — зная как 1С поддерживала промышленные СУБД, lsp ожидаем где-то к колонизации Марса 8)

Вообще обалдели, от php-разработчиков знания типов требуют.

так в любом языке есть типы, что не так?
НЛО прилетело и опубликовало эту надпись здесь

Всё верно, сарказм-сарказм.

В асм (x86) разве уже завезли типы?

Типы-то завезли, а вот проверку типов не завезли.

Где там типы? Пускай и без проверки. Какая-нибудь ADD AX, BX понятия не имеет, что в регистрах написано — числа, адреса, смещения, строки...

Почти любая инструкция ассемблера ожидает данных в определённом формате.
fadd m32/m64 ожидает данные формате с плавающей точкой, fiadd m32/m64 — в целочисленном формате. И плюс в обоих случаях есть разница, 32 или 64 бита. Нельзя путать эти инструкции, хотя все они — сложение ST(0) с операндом в памяти. Если перепутать, результат будет неверным (почти всегда, за исключением разве что случая побитового совпадения "нуля" в этих форматах, если числа одинаковой длины).

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

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

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

Телефоны тоже отбирать?

Зачем отбирать? Положить в уголок на зарядку.

НЛО прилетело и опубликовало эту надпись здесь
И параметры всех функций и все методы всех классов нужно знать наизусть. Если не помнишь — идешь лесом
Так IDE это и без интернета умеет. И параметры покажет и доки и даже сорцы, если исходники открыты.
Не, то речь о бумажке как я понял.
1)Ну например в с++ начиная с какого-то стандарта добавили генераторы случайных чисел с заданным распределением. Наизусть я не помню какие там классы и параметры шаблонов. Мне это никогда не нужно было. Как мне IDE поможет их найти? даже если PDF стандарта выложить — это не сильно поможет. Так как стандарт — это не справка. Он для разработчиков компиляторов и библиотек написан. И быстро понять как какая-то фича работает не всегда можно.

2) IDE — это понятие растяжимое. Для меня — это vim, многие emacs используют, некоторые vscode, sublime, eclipse и даже Kdevelop.
На каком из IDE должно проверяться тестовое задание?

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

Когда я начинал учиться программированию (в самом начале 90х), у меня из инструментов для обучения была только книжка K&R, а чуть позже появился NG с кратким (и кривым) справочником по K&R Си.
И таки да, если сравнивать этот период с периодом, когда у меня появился интернет (вторая половина 90х), то он был просто ужасен. Как по скорости обучения, так и по качеству выдаваемого кода (и количеству велосипедов тоже).
Еще кто-то из старых (по-моему Джон Соча) сказал: «Если вы хотите научиться программировать, посмотрите, как это делают другие».

ИМХО, автор не разделяет тех, кто кроме как содрать сэмпл со стековерфлоу, воткнуть его себе в код и посмотреть, что в итоге получится, не могут ничего. Отличить их от «настоящих» на собеседовании не составит особого труда — достаточно поставить нетривиальную задачу (или просто хорошо изменить/замаскировать любую популярную).

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

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

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

Так по моему автор прямым текстом говорит, что речь о первой категории, и противопоставляет её второй.
Сначала автор «гуглит» методику собеседования, которую в дальнейшем использует (сам сознается, что методика не им придуманная), а потом удивляется, что программисты гуглят решение задач.

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

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


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

Обычно подготовка подразумевает — прочитать резюме и составить список уточняющих вопросов по резюме.
Да, к каждому.
И да, придумывать задачи, которых нет на сайтах.
Автору же нужны негуглящие программисты (что, по-моему, глупость, но у каждого свои заморочки. Кто-то любит боль, кто-то двойное проникновение, кто-то негуглящих программистов — имеет право), для этого ему и нужно готовиться к собеседованию своеобразным образом.

А вопросы по резюме — это не техническое собеседование.
Ну удачи вам с таким подходом.

я на когда собеседования проводил — вообще тестовые задания не давал. Максимум на поразмышлять на тему прикольных кейсов с которыми столкнулись в проекте.
например.
«Как бы вы заимплементили errno. Почему так?»

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

НЛО прилетело и опубликовало эту надпись здесь
Я так понимаю, смотря как проходит собеседование или кто собеседует. Было б неплохо за 30-40 минут, чтобы побеседовали люди, которые проверят технически навыки, а потом уже(если технически кандидат способен) — чтобы беседовал какой-то менеджер, который понимает, что кроме отличных технических навыков, человеку бы еще человеком быть и работать в команде как-то надо.
НЛО прилетело и опубликовало эту надпись здесь
У крупных компаний из списка особо-крутых-компаний-куда-100500-оверкрутыхсеньоров-на-место — свое видение этого процесса. Это отдельные планеты с отдельными правилами. У меня почему-то подозрение, что так проверяют тех, кто уж прямо-сильно-очень хочет+имеет навыки. Если не прямо-сильно-очень хочешь, то не будешь проходить весь этот адЪ.
НЛО прилетело и опубликовало эту надпись здесь

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

Если на сеньора и выше, то наверное не стоит спрашивать про красно-черные деревья.

А то ни одного кандидата не останется )))

Зависит от компетенции кандидата. Если на сеньора и выше, то наверное не стоит спрашивать про красно-черные деревья. Если же на интерна, то вполне можно порасспрашивать по теории. А что еще их спрашивать…

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


А вот если сеньор не может оперировать понятиями типа "сложность алгоритма", то это автоматом нивелирует всю сеньорность (как мне казалось).


Говоря другими словами: в этом и суть разделения уровней: кто-то знает и умеет мало, а потому уровень X (что означает ответственность и пр), а кто-то знает и умеет много, а значит уровень Y.

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

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

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

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

вы бы эту книжку давным-давно прочли и к настоящему моменту уже забыли

Если прочитать и забыть, то чем это отличается про "не читать"? Я вот забыл номер телефона своего знакомого, для меня это слабо отличается от "не знаю номер телефона этого знакомого".


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


Если же "сеньор" на вопрос выше про деревья (не В, а просто деревья) ответит "я бизнесу помогать пришел, а этой вашей * заниматься" или "я не знаю, читал, но забыл", то лично у меня было бы сильное подозрение, что вряд ли вообще знал (и я запросто смогу ошибиться).

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь
Если прочитать и забыть, то чем это отличается про "не читать"?

Ничем. Среднему программисту на самом деле нет необходимости знать ни числа Фибоначчи, ни B* деревья, на работе он не будет писать ни то, ни другое. Это всё — не более чем учебные примеры.


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

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

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


Для вопроса про "процессор и спекулятивное выполнение" я бы ожидал от джуна даже просто не совсем корректной теории, вроде "пытается угадать результат if'а". Тогда как от сеньора я бы ожидал вдобавок еще примеры из жизни, например "это помогает в оптимизации условий assert'ов, а еще Java/.Net расставляют подсказки на основе своих замеров, чтобы все ускорить типичное выполнение кода; как следствие — не всегда стоит переконфигурировать систему после старта, если говорить о сверкритичных по скорости вещах". Хотя, этот вопрос я бы тоже не задавал ни джуну, ни сеньору.


Скорее всего, я бы задал вопрос про деревья, в стиле "как может помочь структура 'дерево' решению задач". И от джуна я бы удовлетворился ответом в стиле "у них скорость поиска log N", тогда как от сеньора я бы ожидал "скорость поиска log N, причем основание этого логарифма зависит от типа дерева, например, для файловых систем часто используют большие основания, то есть деревья ветвистые, но для поиска в памяти они работают зачастую менее эффективно, так поиск на каждом ярусе занимает M, а не log M в общем случае, а значит логично использовать бинарные. А еще есть всякие цифровые деревья, которые можно использовать для матчинга url с роутом (маршрутом) в web приложении, хотя тот же Spring Flux (который самый новый) использует тупое сравнение с общей сложностью min(M*N)^2, где M — средняя длина маршрута в приложении, а N — длина URL'а от пользователя".


Повторю тезис: если от джуна ожидать теории, то от сеньора надо ожидать теории и практики. Если от сеньора не ожидают теории, то от джуна её тоже не надо требовать.

Тогда как сеньор скажет детальнее, как корректная статистика влияет на запросы.

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

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

Сеньор не сможет рассказать идею B дерева? Это сейчас шутка или сарказм такой?
Сразу оговорюсь — если из всех деревьев программист не слышал именно об этом, то такое случается, тут нечему стыдиться. Если же "сеньор" не сможет вообще ничего рассказать ни о каких видах деревьев, то вот вешать на него эту лычку я бы не стал в общем случае. Да, бывают редкие-редкие исключения, наверное, когда человек идеально разбирается в IT системах, но вот конкретно этот пункт не знаком. Я такого не встречал, к сожалению.


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


На хабре тут уже приводили пример, как рендеринг React приложения можно сделать случайно за O(N^2) (самый простой случай — перерисовка полного состояния при бесконечной верстке). И вот "сеньор" должен видеть такое сразу (и в более сложных сценариях тоже), в моем понимании. И из-за этого и вырастает требование по алгоритмам и пр.

По моим заметкам, кроме всяких там реактов и растов, человек должен еще обладать достаточным кругозором в IT

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

Зачем в стандартном веб-девелопменте (а это круды и развесистая бизнес-логика, в основном) знание деревьев? Ну да, они используются для индексов в базах данных (по дефолту, я не говорю про всякие другие индексы). В бизнес логике стандартных веб проектов деревья нужны чуть чаще чем никогда. И, если человек хоть примерно понимает, что такое О(n), и чем оно отличается от O(n^2), и что такое проблема N+1 SQL query — то это уже достаточно для работы. Не будьте так категоричны.
НЛО прилетело и опубликовало эту надпись здесь

Зачем, если достаточно для работы сеньором? )

Очень частое применение деревьев в стандартном веб-девелопменте — меню и каталоги товаров. А также другие иерархические справочники а-ля страны/города. Про DOM я уж молчу.

Очень сомневаюсь, что алгоритмические знания по деревьям нужны в таксономической организации меню или каталогов. Я уж не говорю о том, что в каталоге товаров, скорее, понадобится фасетный поиск, тем не менее, который тоже имеет 100 реализаций в обед. Я уж не говорю о том, что еще вчера все это решалось EAV паттерном для баз данных — там тоже особо никаких деревьев знать не надо, хотя понимать сложность запросов было б и не плохо, но скорость современных бд+кэш все это нивелирует.
Алгоритмы поиска по таким деревьям в веб-программировании нужны чуть менее чем никогда. Поиск по DOM тоже практически никогда не реализуется через поиск по дереву, т.к. для этого есть стандартные инструменты, которые работают однозначно быстрее чем велосипеды.
Аналогия ошибочная. Примерно как сказать что знание ООП требует знания поиска в бинарных деревьях, т.к. структура классов — это дерево.
Не так важно приобретённое знание, как развитие способности мышления. Образование есть то, что остаётся, когда все выученное забыто.

Макс фон Лауэ
Не так важно приобретённое знание, как развитие способности мышления. Образование есть то, что остаётся, когда все выученное забыто.

Для тех кто не знал — это цитата физика XIX-XX веков, нобелевского лауреата.


Я правильно понимаю, что она является истиной (с Вашей точки зрения) и в доказательстве не нуждается? Ну то есть Вы советуете dominigato не спрашивать не только синьоров про красно черные деревья, но и джуниоров, так как главное — это сообразительность, верно?


Можно спросить dominigato — Вы прислушаетесь к мудрости предков и перестанете спрашивать людей про алгоритмы и технологии, верно?

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

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


Вы привели отличный пример — на старте карьеры (если я Вас правильно понял) требования были ниже, чем в будущем. И тут все корректно, вопросов нет.

Ну да, с выделенным жирным я согласен.

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

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

Ну если сеньор скажет что-то "для TreeMap надо переопределить hashCode" или "для HashSet надо определить компаратор", то я вот поспрашиваю теорию еще. Так как меня будут терзать смутные сомнения.


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


Другой пример — спросить про "когда в Java/.Net наивная реализация toString/ToString выдаст O(N^2) по памяти, где N — это результирующая строка". Наивная реализация в моем описании — это функция вида return StringUtils.join(field1, field2, field3, ...). Ну и, конечно, у каждого field одинаковая ненулевая длина toString (для простоты вопроса). От сеньора знания по сложности требуются по-умолчанию.


Еще пример — спросить, как в React приложении можно получить сложность отрисовки O(N^2) (N — число элементов в результирующем dom дереве).

«для HashSet надо определить компаратор»

А с этим в чем проблема? Не редко бывают случаи, когда нужно либо несколько компараторов завести для одного набора данных, либо когда GetHashCode и Equals уже были переопределены для основной задачи.
Хотя для уточнения: вы про IComparer, или вы про IComparable, который для класса определяется? Я про первый.
Наивная реализация в моем описании — это функция вида return StringUtils.join(field1, field2, field3, ...)

PS. Понял про что вы, реально неприятная особенность у StringUtils.join. Не буду остальное удалять, жалко.

Вы точно с конкатенацией в цикле не перепутали? Обычно этим массово грешат.
На .NET StringBuilder конечно пошустрее будет, но чаще всего достаточно банальной интерполяции или String.Concat. Просадка по времени компенсируется читабельностью кода.
Конечно можно подогнать особенности хранения строк в .NET и приколы со сборщиком мусора, который совершенно не хочет удалять большие строки. Ну и прочие уловки с прямой записью через MemoryStream при подготовке данных на экспорт, но с этим на практике-то сталкивались единицы, а уж в теории оно встречается еще реже.
Хотя для уточнения: вы про IComparer, или вы про IComparable, который для класса определяется? Я про первый.

Эээ, насколько я знаю, TreeSet нет в C#, речь идет явно про Java, а IComparer и IComparable это явно не про Java (если только про какую-то очень редкую библиотеку).

А с этим в чем проблема?

Для HashSet (в Java) бесполезно переопределять компораторы, так как порядок элементов там не определен.
Эээ, насколько я знаю, TreeSet нет в C#, речь идет явно про Java, а IComparer и IComparable это явно не про Java (если только про какую-то очень редкую библиотеку).

У вас там про HashSet было написано. И ниже про Java/.NET. Да и хэшсеты врятли сильно отличаются между этими платформами.
Для HashSet (в Java) бесполезно переопределять компораторы, так как порядок элементов там не определен.

Порядок и в .NET не определен. В .NET оно нужно для сравнения элементов, особенно помогает для сложных ключей, что бы дубликаты не хранить, когда объекты разные, а данные одинаковые, либо ключи нужно извлечь напрямую из строки данных. Часто бывает нужно при работе с Flat-файлами, особенно, когда по 2-3 поля в сцепленном ключе на другие файлы и нужно быстро кэш из ключей построить, что бы потом данные потоково перелопачивать.

Одна аккуратная реализация компаратора для HashSet дает сразу:
1. Корректную и быструю проверку на Contains;
2. Корректную проверку ключей, когда они являются разнымит объектами в памяти (это и HashSet, и Dictionary, и прочие коллекции с хэшированием);
3. Гарантирует только уникальные данные в хэше, без каких либо дополнительных телодвижений.

vedenin1980 правильно ответил — для HashSet порядок элементов не определен, так что Dictionary (т.е. HashSet от .Net) не требует именно IComparable, а требует IEqualityComparer — см. тут.


Я плохой вопрос написал (понятно, что комментарии пишутся быстрее, чем вопросы к собеседованиям), но вот суть быстро можно понять: для HashSet не будет требоваться никакой поддержки сравнения элементов. А для TreeSet не требуется хешкод. А потому если вдруг "сеньор" так оговорится, то я спрошу чуть детальнее, что как и почему.


Вы точно с конкатенацией в цикле не перепутали? Обычно этим массово грешат.

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


Итак, стандартный вопрос на собеседовании — что не так с циклом ниже:


var result = "";
foreach(var s in fields) {
    result += s.ToString();
}

И я думаю сейчас уже все скажут про O(N^2) и пр.


Давайте усложним сценарий: мы будем вызывать ToString у объекта, которые имеет много внутренних подобъектов. Т.е. для классов с большим уровнем вложенности полей, где можно вызывать что-то вроде return a.B.C.D.E.F. Если в каждом классе только одно поле, то на самом деле мы напишем код, аналогичный циклу выше — мы будем абсолютно в таком же духе складывать строки, просто наш цикл "будет статическим и размажется по разным классам". Я видел один раз проблему с таким подходом, так как из-за большой глубины вложенности код работал как O(N*log(N)), а не O(N). Ну и по памяти тогда сильно било подобное.


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

Dictionary — это HashMap, не надо его путать с типом HashSet. У них даже назначение разное.
не требует именно IComparable, а требует IEqualityComparer — см. тут.

Перепроверил сейчас что я использую в проекте, да — это конструктор с IEqualityComparer. Компаратор? Компаратор, только другой. Издержки языка и сленгового перевода терминов, в условиях, когда ты не помнишь точное название интерфейса. Слава IDE(:
Давайте усложним сценарий: мы будем вызывать ToString у объекта, которые имеет много внутренних подобъектов.

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

На вопрос в исходном виде, за пару минут он об этом даже не подумает, без наводящей информации и общей бредовости того ответа, который вы ожидаете услышать. Переопределение (override) ToString? Кажется что-то в проекте пошло не так.
Сериализация на костылях? Опять кажется что-то пошло не так.
Давайте усложним сценарий: мы будем вызывать ToString у объекта, которые имеет много внутренних подобъектов. Т.е. для классов с большим уровнем вложенности полей, где можно вызывать что-то вроде return a.B.C.D.E.F.

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

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

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


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


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


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

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

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


Если вы сеньор, то вы можете уже и не помнить про пирамидальную сортировку. Ничего зазорного в этом нет.

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

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


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


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

НЛО прилетело и опубликовало эту надпись здесь
Если вы сейчас с ходу под стрессом за время интервью (не больше часа) напишете реализацию алгоритмов, которые вы учили 10 лет назад и не использовали — поздравляю. То ли у вас суперпамять, то ли вы с тех пор ничего нового не выучили.

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


Обычно, на собеседовании максимум просят написать класс "хеш таблица" и определить метод Add (ну или максимум — еще и Delete) с корректной асимптотикой (константа не важна, естественно). С этим сеньоры прекрасно справляются.


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


На самом деле хорошо ответил Amomum в соседнем топике:


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

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

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

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

Еще раз: разговор зашел с того, что о некоторых вещах джуну знать обязательно, а сеньору — нет. Именно с этого.


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

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

А если джуниор будет кодить красно-черное дерево, это он будет "делать то"? У меня вопрос-то хитрее: почему от джуниора требуют тех знаний, которых не требуют от сеньора?


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


Или я бы понял ремарку "у сеньора мы все равно спросим, что лучше — TreeMap или HashMap", так как для их сравнения надо знать про красно-черное дерево (хотя бы в общих чертах). Однако, тут так же мы от сеньора требуем надмножество знаний джуна.


Я уж не говорю, что есть старая схема (не ручаюсь за её корректность) — "если не можешь написать простой алгоритм, то зачем нам тебе доверять написание системы?" Как мне казалось ранее, все алгоритмы спрашивают ровно по этому — прежде чем комбинировать программу из кусков, продемонстрируй, что хоть немного разбираешься в этих кусках. Повторюсь — не ручаюсь за корректность, но, по моим наблюдениям, из этой фразы строятся гугловые собеседования.

почему от джуниора требуют тех знаний, которых не требуют от сеньора

Потому что проверять кроме этих знаний нечего.

накуя вообще олимпиадное программирование на джоб-интервью? всех испортила книжка «карьера программиста»

Вам просто нужно отличать гуглеж незнающего человека от гуглежа непомнящего человека :)


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


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

Вам просто нужно отличать гуглеж незнающего человека от гуглежа непомнящего человека :)
Когда пишешь на 4-5 языках..., и у всех одна и та же стандартная функция из библиотеки называется по-разному, то легче бывает нагуглить, чем вспоминать.

-инет, +иде, как я недавно написал выше.

Лучше текстовый редактор без автодополнения или даже бумага с ручкой. Чтобы не отвлекаться на синтаксис и писать с устными пояснениями типа «не помню название метода, вроде .push()».
«Когда пишешь на 4-5 языках практически одновременно»
один раз пришлось разрабатывать проект под четыре платформы: веб, десктоп, микроконтроллер и fpga вместе с их схемотехникой, вот там такая каша в голове стояла… И даже не помогло то что я смог чтобы всё генирилось из одного си исходника, всё равно вылезло столько нюансов и мелочей, что я стал сомневаться в самых популярных функциях стандартной библиотеки. И реально если бы не гуглил и не сверял с доками любое казалось бы тривиальное поведение, то утонул бы в отладке.
И к сожалению нередко собеседованиях встречал фирмы, которые спрашивали именно знание наизусть этих мелких нюансов и имён функций при рядовом фулстеке: веб, десктоп, микроконтроллер.
Меня тоже удивляют люди, которые пишут на одном языке и такие «а че бы и не запомнить». Работаю в консалтинге и использование 2-3 языков одновременно — наша суровая реальность. Так я не то что методы — синтаксис языка гуглю периодически.

Вдохновляет.

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

В одном комментарии эти слова не поместились?

Вас это так задело?

Ого, сколько обиженных товарищей тут… Диву даешься!
А нельзя было просто делать тестовое задание соответствующее тому, чем в основном надо будет заниматься? Какая при этом разница — в гугле они подсматривают или нет?
Проблема в том, что из того, чем занимаемся, не получается задача на 30 минут.
А кто заставляет делать тестовое не более чем на 30 минут? Поставьте полноценное тестовое задание в хвост процесса приёмки и с условием, что если его сделал за оговоренное время — получил вот такой оффер. Я вот буквально неделю назад тестовое давал — 8ч. Человек его сделал и принят на испытательный срок.
Потому что тестовое задание на пол-часа кандидат может сделать в офисе, под присмотром, не ища ответ на stackoverflow. А задание на 8 часов, даже если он на него согласится, он будет делать дома. И тут уже вопрос — сам он его сделал, нагуглил или его приятель Вася помог.
НЛО прилетело и опубликовало эту надпись здесь
Ну кто-то компанию нафиг посылает, а кто-то оффер получает с итоговой целью по оплате в +20% к запрошенной в резюме, тут уж кому повезет и кто чего стоит.
НЛО прилетело и опубликовало эту надпись здесь
Вы вольны выбирать свою стратегию поиска работы. Хотите её строить по принципу «на каждую компанию не больше 2ч»? Да пожалуйста. Однако, как математик, могу сказать, что задачи на оптимизацию обычно не решают таким образом.

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

Так испытательный срок на то и испытательный, чтобы убедиться, что человек может делать работу.
Или не может.
" тут уже вопрос — сам он его сделал, нагуглил или его приятель Вася помог"
А какая разница КАК была сделана работа, если она сделана и есть результат?


Если я не умею программировать, например, это не мешает мне купить микроконтроллер, погуглить и подсмотреть у кого-то код прошивки, погуглить как этот код поправить под свои задачи (или просто почитать комментарии), и что-нибудь этим микроконтроллером у себя автоматизировать. И оно будет работать, будет результат, будет решенная задача.


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

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


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

В контексте 1С экзамен на 1С: Специалиста идёт 5 (если ничего не изменилось) часов и там 4 или 5 (не помню) задачи. Причём, не 1С-ника если спросить о времени разработки этих задач — будет оценка 1-2 недели (это если объяснить, что именно надо разработать). Если топикстартер будет давать задание в 1,5 такого экзамена — у него будет примерно 0 сотрудников. 80% не сдадут, 20% откажутся сдавать.

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

В современных сертификациях (1С тут не одинока) почти всегда всё уныло, узкие срезы знаний и не вполне релевантно. Я бы даже сказал, что 1С-ный экзамен релевантнее многих. Но это задание по объёму точно вылетает за рамки того, что большинство соискателей готовы были бы сделать для тестирования.

Вот я после 1с и понял что на сертификаты и прочие корочки смотреть смысла нет. Как и стремиться их получить. Понял это еще до сдачи спеца, но у франчей особые отношения с ними, так как вендор требует, потому они таки меня уломали за прибавку в, кажется, 25 или 30 % к зп (+10к). Очень мучался с подготовкой, просто засыпал за ковырянием этих задачек от скуки и их нудности.

Смысла в них мало, согласен. Но временами так и хочется, чтобы на собеседовании посмотрели наличие сертификата, а то недавно было так:
— Назовите модификаторы видимости полей в Java?
— private, protected, public и package-private. Он же default. Ребята, у меня есть базовый сертификат OCA и четыре года опыта, давайте более сложные вопросы.
— О, сертификат? Оракловский, по восьмой джаве?
— Ага. Так что азы точно знаю.
— А, тогда переходим к вопросам посложнее. Какие методы есть у класса Object? (это тоже входит в список вопросов на подготовку)
— ...


Впрочем, это собеседование, кажется, было проведено по первому попавшемуся в гугле списку на запрос "вопросы на собеседование java", но всё равно как-то бессмысленно вышло.

Вот смотрите:

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

2. 20% откажутся сдавать — с чего бы вдруг, если вы предложите интересные условия на своей вакансии? А уж как вы это обеспечите — это ваша задача, как работодателя. Я вас уверяю, хорошие спецы работу ищут не по принципу «лишь бы устроиться за 2-3 дня».

PS: А еще сэкономленные на п.1 ресурсы надо потратить на интересные условия в п.2

PPS: Есть еще вариант оплачивать такое тестовое, чтобы снизить количество тех, кто «откажутся сдавать», это тоже намного экономически более целесообразно, чем потом с 80% неудачных вариантов тратить время и бюджет на испытательном сроке.
Скорее stack overflow программисты)
Сначала погрузился тупо в помощь людям. Не получается решить задачу? Зови меня. Я подойду, сгоню тебя с компа, сяду и доделаю. А ты, бездарь, сиди рядом и запоминай, как работать надо.

Это не помощь, а медвежья услуга, оказанная в надменно-высокомерном тоне.
Я отслеживал все показатели их продуктивности и эффективности

Это какие?

НЛО прилетело и опубликовало эту надпись здесь

Ну тут все очевидно — плохо задачи распределяли, в итоге ребята начали простаивать.

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

Ладно они у вас хоть гуглить умеют, уже хорошо :((

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

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

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


Сам делю разработчиков на "авторов своего" и "сборщиков из готового". Последних недолюбливаю.

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


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

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

Как я вас понимаю…
(я не шучу, поглядите в мои публикации).

У Вас по большей части архитектурные вопросы подняты. В моем же случае это не так критично, т.к. в Android сообществе вопрос архитектуры в данный исторический момент почти всегда решается в пользу Clean Architecture, а в маленьких пет проектах архитектура не так важна.
В одной из Ваших статей столкнулся с близкой для меня проблемой строгой типизации и попыткой максимально полно отловить все ошибки ещё на этапе компиляции (одну из своих идей, связанных с этим вопросом описал в комментарии). В Android приложениях много что традиционно описывается через xml (верстка экранов, различные параметры, векторные изображения и многое другое), что часто приводит к падениям уже в Runtime. Использование xml было более-менее оправданно во времена многословной Java, в нынешние же Kotlin'овские времена плюсов в xml для этих целей вообще не вижу, т.к. Kotlin и более краток и типизирован и подсказки лучше работают.

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

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

О, за идею спасибо. Надо бы по собеседованиям походить, а то за 6 лет всего на двух был, и то первое в 1с сферу, а второе при уходе в андроид, там вообще почти не копали знания. Хоть узнаю что подтянуть стоит, да может и попадется чего интересного.
Это нормально, каждый должен сам написать достаточное количество велосипедов прежде, чем повзрослеть и поумнеть.

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

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

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

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

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

вместо простого JSON

Вместо минного поля, а не простого. Бинарных действительно имеет смысл. Но в 2013 году, к счастью, CBOR уже стандартизировали в RFC, можно не велосипедить уже.

Не в быстродействии (это не критично для пет проекта) и не в минности (не сталкивался с нестабильностью JSON) дело. А в том, что в Java использование рефлексии ограничено тем, что во время компиляции типы всех дженериков чистятся, и нет возможности без плясок с бубном раскодировать JSON в List<User>. Соответственно использование JSON'a накладывает определенные ограничения на передаваемые по сети данные.
Проблема обострилась ещё тем, что я решил использовать для валидации данных и наглядности кода обертки вокруг значений. То есть вместо того, что бы использовать в коде String в качестве логина пользователя, я решил сделать класс-обертку Login, который во-первых проверяет в конструкторе корректность строки логина и дает возможность в дальнейшем уже не переживать по этому поводу, а во-вторых позволяет писать более выразительный код (user: Login выглядит куда понятнее, чем user: String, ведь в этом случае можно подумать, что в поле user хранится не логин, а какой нибудь другой идентификатор пользователя). Такую же обертку я сделал и для пароля. А потом оказалось, что для параметра серверного метода login совершенно не нужно писать свой класс (Обычно такие POJO классы называются LoginParam и содержат два поля: login: String и password: String), а можно просто использовать Pair из Kotlin'а: Pair<Login, Password>. Но такая конструкция совсем уже была неудобна для JSON сериализации через рефлексию. А компактность Kotlin кода позволяет весьма аккуратно сделать бинарную сериализацию.

Видимо из-за таких опасений сейчас соискатели через одного просят сделать тестовое задание на полноценных 2 дня — неделю. Или на собеседовании просят написать за 20 минут функцию:

echo calc(12)(4)(1)(fn($x, $y) => $x + $y); // 17
echo calc(2)(3)(fn($x, $y) => $x * $y); // 6
echo calc(5)(2)(fn($x, $y) => $x / $y); // 2.5


или

// чем заполнить переменную $i, чтобы код заработал верно
var_dump(!is_bool($i) && $i == '1' && $i == '3' && $i == '5'); 
// bool(true)


или по телефону придумать реализацию связанную с оптимизацией и хранением в высоконагруженной части проекта. Задача практическая, как было сказано «попила не мало крови в свое время». Т. е. чуваки с тестовыми данными, пробовали разные запросы, «эксплейнили» их в доль и поперек не один месяц, а тут по телефону за 30 минут )))
С bool(true) справился менее чем за 20 минут. Хотя понятия не имею зачем это проверять. С каррированием справился бы быстрее, но это было бы совсем не честно, где-то до сих пор в закладках статья про него.
Ваш код нечитаем, спасибо, вы мне не подходите.
НЛО прилетело и опубликовало эту надпись здесь
В первом случае мне лень читать потому что это бесполезный код (мой мозг вообще отказывается переваривать бесполезные штуки), во втором потому что работать у них не хочу. Хотя в первом тоже не хочу, потому вместо разговора о сложных задачах и путях их решения, я вижу издевательство.
Я бы сделал первую задачу через возвращающую саму себя лямбду + array_reduce (либо через функциональный объект),
Вторую через магический метод __toString().
За 20 минут, если не сильно нервничать, успеть можно.

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

НЛО прилетело и опубликовало эту надпись здесь

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

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

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

НЛО прилетело и опубликовало эту надпись здесь
Вообще подозреваю, что у такого лида текучка та еще. Классический антипаттерн «Чайка»
Впрочем, хороший специалист далеко не всегда хороший руководитель.
Подход «напиши говно, а я за тебя переделаю» однозначно показывает, что автор руководить не умеет
мы еще не знаем, что автор считает «говном», вполне вероятно это может быть добротный код, который он с радостью переделывает в говнокод на свой лад
И такое может быть, но «не пойман — не вор»
или любимое перетекание MVC в MVP и так далее по цепочке без учета желания бизнеса по времени разработки
Вообще даже как-то удивительно, что статья заплюсована. Разве что только как экспанат тимлида, от которого надо бежать сломя голову еще на этапе собеседования. Особенно ужасает вот это вот повторное собеседование после пандемии — что, сотрудники действительно согласились в этом участвовать?
Похоже там действительно набрали малограмотную школоту, т.к. хороший специалист при таком взбрыке начальства сразу начинает искать новое место

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

Кстати не понял посыла что раньше было лучше. Сейчас куча всяких рейтингов, если вам нужен кто-то кто не гуглит, а сам отвечает — на том же StackOverflow есть система рейтингов, просто нанимаете того у кого он выше. Если нужны люди пишущие понятный код — GitHub тот же в помощь, звезды довольно трудно накрутить, если нужны приятные люди — смотрите кто выступает на конференциях, нанимаете их
Вообще не уверен что такие разработчики к автору пошли бы работать. С его стилем менеджмента который он постоянно продвигать пытается.
Что значит не пошли бы работать. Большинство таких людей как раз и ищут работу и клиентов(для этого они занимаются своими рейтингами, конференциями и прочими гитхабами). И они как раз и специализируются на «трудных» клиентах. Другое дело что рейты там будут соответствующие
Вы почитайте статьи автора сначала. У него ну очень своеобразный стиль менеджмента. И вопросы экономии и соковыжималки у него не на последнем месте насколько помню.
У меня высокий рейтинг на StackOverflow, только я там в основном задаю вопросы и почти не отвечаю. У меня чисто за вопросы высокий рейтинг набрался.
У меня высокий рейтинг на StackOverflow

Ну это смотря, что вы считаете высоким рейтингом. :) У меня на английском SO рейтинг приближается к 50k, но я не считаю его прямо особо высоким (это лишь 3k место в глобальном списке).
Ну, в смысле, что я понимаю, что я опытный разработчик в своем стэке, но не суперзвезда, которая может открывать двери HR гугла ногой и требовать принять её без собеседований.
Мой вузовский преподаватель по матану говорил, что студент, которые задает много вопросов — это очень правильный студент, который старается разобраться в теме.
звезды довольно трудно накрутить

А в чем сложность? Зарегистрировал 100500 пользователей и от их имени поставил звездочки.
По-моему причина отсутсвия накрутки просто в том что это никому ненужно.

Ну на SO таких хитрых вычисляют и удаляют накрученные голоса (их очень легко обнаружить), а при рецедивах — банят.

Так мы про github говорим, причем здесь SO?

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

Хехех. Вот кстати про рейтинги на SO достаточно любопытно.
Я там, допустим, в топ 3% глобальном сейчас, в прошлом году был в топ 1% или даже 0.5%, и на 30 месте по весьма хайповому тегу kubernetes (если интересно, вот тут можно свое место по тегу посмотреть — data.stackexchange.com/stackoverflow/query/52750/tag-rankings-fun). Был сильно выше, последний год очень редко отвечаю. Рейтинг набран исключительно ответами в скоупе Kubernetes и сопутствующих технологий.
Так вот, нужна эта информация примерно никому. Никто туда не смотрит, не смотря на ссылку на профиль в СV.
Ни разу еще такого небыло, чтобы кто-то сказал «да, мы не будем задавать вам тупых вопросов по K8s, потому что видели на SO что вы очевидно знаете на них ответ и даже отвечали там на точно такой же». Выборка — порядка 15-20 собесов за последние два года. И это учитывая, что все собеседования были в рамках европейского\американского рынка труда, в англоязычных компаниях и там уж точно нет проблем с тем, чтобы пройти по ссылке на англоязычный портал и что-то там понять.
НЛО прилетело и опубликовало эту надпись здесь

Говорить за всех — моветон.
Если кандидат в CV даёт ссылку на гитхаб, всегда смотрю что за проекты делает кандидат и в каких участвует.
Это просто кладезь для собеседования. Куча предметных вопросов, а почему ты тут вот так сделал, а здесь вот так, а как можно по другому это решить?
Не надо задавать тупых вопросов, ответы на которые в гугле пачками висят.
И не надо выдумывать нестандартные вопросы, они сами из кода проистекают)


Как пример что там можно найти)
В одном из недавних интервью, кандидат с несколькими годами опыта в Java + Spring дал ссылку на гитхаб, а там на сервисах висят одновременно 3 аннотации: Component, Service, Repository. Было забавно слушать фантазии на тему того как спринг обработает эту ситуацию)


P.S. Проблема только в том, что на пару-тройку десятков последних соискателей гитхаб был только у одного.

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

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


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


Но меня вполне устроило бы объяснение в духе: "А, лол, это копипаста, очевидная хрень написана, потому что… и объяснение что там написано и почему не имеет смысл так писать".

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

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

Если бы вы внимательно читали, что я написал, то могли увидеть, что я не решаю "правильно" ли решена тема проекта.
Мы же не бизнес развиваем, а техническое собеседование проводим)
И меня интересует в первую очередь техническое решение и его объяснение почему именно так сделано. Это тема для обсуждения решения, а не далеко идущие выводы по паре строк кода.
Когда разовьетесь как инженер, вам станет понятно, что единственного "правильного" решения просто не существует. Всё можно сделать разными способами. А собеседование на примере проекта это всего лишь способ пообсуждать эти решения, чтобы понять как человек мыслит и принимает решения.

Дело в том, что в CV можно вставить ссылку на любой произвольный профиль SO.
Как убедиться, что тот крутой чувак с SO это действительно вы?

Лично у меня в профиле на SO написаны имя и фамилия, он не анонимный.
Вряд ли есть еще один человек с таким же именем и фамилией, который занимается примерно тем же чем я, учитывая что я не «Джон Смитт».
Я как то спустя пару лет как свой первый ПК получил зашел в IRC что то в #linux канале спросить, ибо линукс впервые поставил, а на башорге ирк чатики часто упоминали. В итоге совершенно случайно за пару часов нахождения в этом чате наткнулся на своего тезку по имени и фамилии (Кирилл Власов, не сказать что прям частое сочетание) который именно в тот момент их чату спалил. Точнее спалил он фамилию, но я увидев однофамильца имя тоже уточнил. Он правда занимался тогда веб разработкой а я только начинающим интересоваться айти студентом был, но как бы совпадения случаются. Даже сейчас список друзей в ВК свой проверил, он до сих пор там висит, значит не ложные воспоминания)

Ок. Тогда следующий уровень.
Как убедиться, что тот крутой чувак отвечал на SO самостоятельно, а не нанимал китайцев для прокачки аккаунта?

А зачем нанимать китайца для прокачки профиля SO? Это же не биржа какая, заказы там не раздают,
Вы мне кажется придумываете какую-то проблему, которая могла бы объяснить «почему не стоить верить человеку». В таком случае можно много заговоров подкинуть, к примеру — интервью за меня может проходить тоже другой человек. Ремоут же.
А зачем нанимать китайца для прокачки профиля SO?

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


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

Но ведь в таком случае и CV можно подделать. У меня 12 лет опыта, из них бОльшая часть в российских компаниях, где толком концов не найдешь. В трудовую никто не смотрит, потому что не знает, что она существует. По сути — все на словах.
Я же не говорю о пропуске собеседования в этой части вообще, я говорю о весьма тупом опросе, вместо перехода к сути дела. Какой смысл долбить человека тупыми базовыми вопросами, чтобы вызвать у него скуку и ненависть вместо того, чтобы обсудить что-то действительно интересное и важное — архитектуру там, тонкости использования, малоизвестные, но важный грабли, паттерны и т.д. Понятно, что для того, чтобы поднять эту серьезную тему, надо убедиться что человек хотя бы основы знает, но если понятно что человек основый знает, то можно немного сохранить ценное время и пройти по более полезным вещам. Я сам собеседую периодически, недостаток живой информации о кандидатах весьма острый, любая доп. информация кроме резюме на самом деле большая ценность, но то ли я такой замороченый, то ли у большинства в голове скрипт засел, то ли просто большинство не особо заморачивается.
Кстати про «голос изменится» — большинство отборов сейчас — это раунды с совершенно разными людьми на разные темы. Чисто теоретически один человек может проходить одно собеседование, другой — другое и то, что это были разные люди никто не узнает.
Даже потом, т.к. кандидатов обычно много и вряд ли кто-то запомнит голос какого-то конкретного человека и потом свяжет его с тем, кого увидит через какое-то время лично.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Хм. А вы в резюме это указывали(что входили в топ1%)? Ну т.е. чем руководствовались люди задающие вопросы в таком случае
Тем, что они туда не смотрели:)
А указывать текущую позицию в CV рисковано, она регулярно пересчитывается и сегодня ты топ 0.5%, завтра топ 1%, послезавтра топ 3%, а потом еще куда-то съедет. Возможное несоответствие несет больше рисков, чем возможное игнорирование этого пункта вообще.
А что делать, если у кандидата нет аккаунта на github или SO?
Ну тут также как с другими работами и зависит от вашей позиции.
Если вы наемный работник, работаете за зарплату, то вам важно чтобы если кандидат все зафекапит, вас не обвинили. В этом случае нормальной выглядит стратегия гугления типичных вопросов для собеседования и спрашивания их.
Если вам хоть немного важно качество работы, то поступаете так же как с другими работниками. Я вот недавно нанимал дизайнеров, у них у каждого инстаграм(что в нашем случае равно github или SO), смотрите, выбираете. Ну т.е. я допускаю что может быть есть отличные дизайнеры которые не ведут инстаграм, но я бы побоялся их нанимать
Всё-таки, в инстаграм дизайнеры выкладывают примеры готовых работ. Соучастие в проектах на github или SO отнимает куда больше времени и, что ещё важнее, творческих сил. По-этому, ожидать что разработчики будут поголовно в чём-то таком участвовать — странно.
Да ладно. Не обязательно же туда выкладывать полноценные проекты или в опенсорсе участвовать. Какие то эксперименты сделанные за вечер-другой, конфиги, тестовые с собеседований.
Ничто не мешает программистам выкладывать идеи проектов(например в виде статей в блоге), с исключенной спецификой текущего проекта. Или какие-то практические советы. Или выступить на юзер группе с каким-то сложным опытом. Ну т.е. если вы не хотите нанять исполнителеля которой просто может тупо кодить по заданию, не особо задумываясь об этом, то на это логично смотреть.
Скажем так, есть масса личных качеств, которые не мешают профессионально, но мешают всей этой публичной деятельности. Мы ж, всё-таки, интроверты, в большинстве своём. Нельзя так просто взять, и выступить на юзер-группе…
С другой, стороны, по моему опыту, ни работодатели, ни, тем более, кадровые агентства этого всего не ценят. И как наниматель, я тоже, не стану отказывать человеку, если у него нет проектов на гитхабе. Опять же, из 20-и последних кандидатов, чего-то интересного ни у кого не было. Курсовые, у свежевыпущенных студентов, вот и весь улов
Я думаю у дизайнеров так-же. Т.е. большинству строительных компаний которые нанимаю дизайнеров к примеру по 50тыс в месяц тоже все равно, есть ли у них инстаграм или нет. Да и на качество никто не хочет заморачиваться, главное чтоб формально госты проходили. И тоже наверное главный ругается, что за идиоты у меня дизайнеры, основы простейшей эргономики не знают.
НЛО прилетело и опубликовало эту надпись здесь
Если есть проект, то обычно ничего не мешает его выложить на гитхаб. Но, у многих хороших специалистов нет проекта. Например, если человек работает на работе с полной отдачей, потом дома «отдыхает» по хозяйству/с детьми, потом читает десяток страниц книг, потом спит, то времени на проект, очевидно, не хватит. Делает ли это его плохим программистом? Кроме того, чтобы пилить свой проект его надо придумать. Не все наделены достаточной фантазией, чтобы придумать что-то достойное. Кроме того, человек может быть излишне самокритичным и считать свой достойные идеи ерундой. И это тоже не делает его плохим разработчиком.
По поводу блога, я вот хабр читаю лет десять, а писать начал две недели назад. Если же более глобально, то в России на 1-2 миллиона работников ИТ сферы (не считая русских из других стран) приходиться столько активных блогов на хабре? 1000? 10000?
Какие личные качества мешают писать в блог? Перфекционизм (не хочется писать плохо или ерунду) и стеснительность
НЛО прилетело и опубликовало эту надпись здесь
Делает ли это его плохим программистом?


Нет, не делает конечно. Но он явно не очень мотивирован и программирования у него это чисто работа. Что вполне нормально, конечно.


Обожаю категоричные мнения!

Я вот уже много лет как превосходно мотивирован в программировании.
Но на ГитХабе у меня нет пет-проектов. У меня их вообще нет.
Мой любимый «пет-проект» на сегодня — это тот проект над которым я сейчас работаю, за который мне и платят деньги.
НЛО прилетело и опубликовало эту надпись здесь
Если вам никогда не приходила мысль в голову делать что-то еще, помимо того за что вам платят


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

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

Кроме того на гитхабе могут быть приватные репо, которые кандидат не готов целиком открывать миру по разным причинам.

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

Но тут вмешиваются галерные метрики, ты должен писать, а не осмыслять. На это слишком много времени уходит.
Хочется выступить скромным адвокатом дьявола, позорного поколения G(oogle-программистов).
В первый день учёбы в институте нас собрали в аудитории на кафедре, и старый прокуренный дядька, зам. декана и доцент, сказал: «Институт не даёт знаний. Он учит добывать знания самостоятельно».

В первый день учебы на каждом учебном курсе, будь то «Основы программирования», «Сетевые технологии», «Тестирования ПО», «Операционные системы» преподаватели честно признавались «инфы — гора, раньше я этот курс читал 2-3 семестра, сейчас — один, а рассказать нужно то же самое + современные реалии, готовьтесь». Тут простонет времени посидеть в библиотеке и поизучать «все подряд», физически нет этого времени, потому чтоизучать нужно слишком много. А студенты всё те же самые люди, с теми же самыми нейросвязями в мозгу, двумя руками и двумя ногами, как было в начале 2000х, конце 1970х и пр.
Потом вот с этой кашей в голове ты выпускаешься. Уходишь из общаги, надо где-то жить. Просить родителей оплачивать жилье или жить с ними — уже стыдно, тебе 24 (магистратуру же закончил, умничка), большой человек. Идешь на собеседование по специальности, а там тебя валят сразу всем (на всякий случай): основы ООП, историю Java, что такое MVC, опишите алгоритм Дейкстры, найдите Аленький цветочек, расскажите про Java Beans, перечислите все методы библиотеки String, опишите пару аннотаций, «а что вы нервничаете? мы же с вами так хорошо беседуем», «ну а теперь решите задачу». Неужели кто-то упустит возможность найти красивое решение, чтобы попасть на желанную должность?
Да всё правильно вы пишете. Если бы лично у меня не было гугла, то я бы так и писал однотипный код на K&R Си, ибо начинал с него (когда этих ваших интернетов еще не было).
Да, в 95м меня можно было ночью дёрнуть за пятку и спросить как решить на Си какую-нибудь там задачу о рюкзаке (например), я бы скорее всего написал бы ее и без ПК (и возможно даже без ошибок).

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

И только с появлением возможности смотреть на большое количество ЧУЖОГО кода (интернет+поисковики), возможности делиться знаниями, все сразу круто пошло в гору.

Именно условный «гугл» (источников конечно же больше — это и SO и гитхаб и прочие ресурсы) позволяет мне сейчас довольно свободно и более-менее результативно на 5-7 языках и разбираться на среднем уровне в десятках технологий. Именно возможность получить мнение по моему коду от более продвинутого камрада, который может предложить более быстрое/элегантное/простое/красивое/итп решение моей проблеме — вот это решает. А не возможность «писать код без ПК».
И меня не смущает факт того, что если меня прямо вот сейчас просить про упомянутую «задачу о рюкзаке», я не то, чтобы не решу ее на бумаге, я даже вряд ли сходу вспомню сам алгоритм решения. Зато я знаю, где за 5 секунд про это в мельчайших подробностях почитать, а уже после я без проблем решу ее на любом доступном мне языке. И если сильно будет нужно — на неизвестном на текущий момент мне.
Гугл решает, да.
Вот видите. _Сначала_ вы научились в изобретать велосипеды а _потом_ условный гугл помог свободно и результативно…
Что-то подсказывает мне, что без способности изобрести велосипед условный гугл не помогает.

Я — хороший специалист. Уж поверьте на слово.


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


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

Чем закончилось собеседование?

Решил что надо мной издеваются и ушел.

Спасибо за статью.
Я понял, почему у меня стажер резко снизила показатели, как только пошли реальные задачи чуть посложнее, чем раньше.
Проверил — точно, все время гуглит, не запоминает даже что было неделю назад и не понимает суть кода.
А какого рода были показатели?
loc?
Субъективные, в основном скорость и полнота выполнения.
Ну и суть задаваемых вопросов.
Напоминает работу нейросетей — хорошо решаются типовые задачи, где не нужно понимание сути. А как только задача делается глубже — всё осыпается.
В институтах кстати есть пласт студентов которые «учатся не учась» — т.е. имитирут понимание материала и выдают стандартные ответы на стандартные вопросы.
Тут сети чуть лучше обучены, плюс постоянно идёт пополнения материала другими сетями, которые уже имеют понимание и время для документирования, объяснения кейсов и способов реализации кода. Правда из-за гор информации навык гугления тоже становится всё более сложен, не смотря на увеличение объёмов метаинформации для поиска.
не запоминает даже что было неделю назад и не понимает суть кода
А как она тогда гуглит? Как формулирует запрос, как находит нужную ссылку в выдаче, как понимает, что по ссылке то что нужно и как это применяет в своей тех. среде?
Понаблюдал. Ищет решение аналогичной задачи, потом пытается ее перетащить к себе путем копипаста, на простых задачах получается хорошо, а чуть с другими условиями — все, начинается гадание. Нет понимания сути кода (что он делает и почему так).
Сейчас вернулись к основам (базовым курсам), которые уже «прошли» и начали снова вдумчиво изучать.
Можете пример задачи привести? А то аж любопытно стало — я тоже разработчик, но сходу не могу представить вашу ситуацию.
Например делала ВПФ (внешнюю печатную форму) и внешний отчет, получилось. Потом нужно сделать еще одну ВПФ, но сложнее, чтобы был диалог для указания дополнительных параметров (по сути надо скомбинировать первых две работы), все, готовый пример не нашла и больше недели возилась.
Да, речь идет об 1С.
Всё понятно.
Надо было сделать два стандартных компонента для обработки своих данных со стандартными интерфейсами. А вот потом надо было обеспечить взаимодействие двух подобных компонентов, но для этого нет удобных стандартных интерфейсов, интеграция в разных ситуациях строится по-разному и есть какие-то нюансы. Это всё судя по ссылкам из гугла:
forum.infostart.ru/forum9/topic206847
infostart.ru/1c/articles/694647
Тут уже явно требуется не только хорошее знание платформы, но и опыт реализации таких штук. Неудивительно, что стажёр на чём-то споткнулась, удивительно, что сидела целую неделю и билась об стену, вместо того чтобы подойти и сказать «я тут застряла, не получается вот то-то». Вот об этом бы я на вашем месте задумался и поискал причины, а не о показателях.
ну если он даже в комментах тут агрессию выдает, не удивительно что она к нему с вопросами идти побоялась
Да, гуманитарии, часто делают только так и по-другому не могу.
не запоминает даже что было неделю назад и не понимает суть кода

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

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

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

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

С одной стороны да. С другой стороны, звучит как «эх молодёжь, когда пишут на своём этом новомодном Си, не понимают, какой код генерирует компилятор, не умеют читать в машинных кодах, не знают чем D-триггер от RS-триггера отличается, не умеют с помощью осцилографа найти поломку в менфрейме, ну разве это дело!»

Во времена новомодности Си точно так же надо было уметь понимать, какой код генерирует компилятор и подключить осциллограф хотя бы к RS-232.

НЛО прилетело и опубликовало эту надпись здесь
Автор, а в чем проблема?

Хотите спецов, которые отлично решают задачи на бумажке, без интернета — так ищите. Ну будет у вас конверсия 0.1% от приглашенных — в чем проблема? За капризы надо платить.

Или проблема в том, что бизнесу нужны люди, которые просто решают задачи, а вас тянет на ностальгию по программированию в 90-х? Тогда это вам стоит задуматься, за что вам платят — за решение задач (поиск программистов) или за личные прихоти.

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

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

Совсем не "все равно". Писать псевдокод на бумажке — или, если хотите, маркерной доске — абсолютно нормально и в промышленной разработке, не только собеседовании.

За все 6 лет ни разу не видел чтобы кто то писал псевдокод на доске или бумажке. Максимум схемы рисовали.

Не видел — не значит "не бывает". А псевдокод на доске обычно проще, чем блок-схему.

Я раньше тоже был гугл-программистом, но обычно только один раз. То есть, списав код со StackOverflow, я старался вникнуть в суть кода и наматывал себе на ус. Сейчас Гугл требуется только для поиска документации к библиотеке и примеров быстрого старта. Всё остальное уже не нужно, так как базовые вещи уже на уровне рефлексов.
Если вникать — то это не гуглопрограммист (в понимании автора).

Что-то мне мало верится, что в гугле можно так быстро найти решение на отдельную задачу, прям чтоб и код красивый и структуры и оптимизация. Либо задания были не сложнее 2*2=4, но тогда непонятно, откуда вводы про хороший код.
Я сам программист и не раз проходил интервью с компьютером, скорость потска кода в гугле намного меньше чем написание его самому.
В-общем, так и зочется воскликнуть: "поздравляю вас, автор, соврамши"

Сам не программист, учился не на программера, но в курсе были и ЯВУ и ООП и SQL и ассемблер (начало 2000х). И да, нам давали базу и больше учили учиться (самообразование, поиск нужной информации). Работаю не программистом, но в работе и для интереса использую программирование на разных языках. Ни в одном из них не являюсь крутым специалистом, знания на уровне наверное джуна (msSQL знаю лучше других, занимался около 10 лет, знаний хватало для поставленных задач). И т.к. это происходит набегами для реализации каких-то конкретных прикладных задач, не заморачиваюсь по поводу нагугливания решений как полностью, так и кусков кода и отдельных методов. Дальше стараюсь вникнуть что какой кусок делает и что мне нужно переписать под себя для внедрения в свой код. Плохо? С точки зрения саморазвития? — не совсем хорошо. Но с точки зрения экономии времени — отлично.

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

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

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


набросать карандашом на бумаге будет быстрее и куда нагляднее

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


минусаторы — аргументируйте

Полагаю, кто-то среагировал на "Сам не программист, учился не на программера" и не стал читать дальше, кто-то был несогласен, а третий — эффект толпы. Два минуса у комментария — значит автор явно не прав, надо минуснуть за компанию. :)

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

Ровно об этом я и писал :)

Несовременную бумагу можно заменить на модную доску и фломастеры или интерактивную eBord. Естественно, есть смысл в таких вещах писать укрупненные алгоритмы, схемы и т.д. Допускаю использование некоторых коротких элементов кода, например, сложных условий и т.п. для лучшей наглядности. Писать чистый код, тем более без ошибок в такой ситуации неуместно и не показательно, ИМХО.

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

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

Звучит, конечно, что гугл у вас в роле козла отпущения просадки KPI, хотя возможно дело в самом KPI?

Я продолжал беситься и орать в чатах.

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

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

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


Зависит от конкретного человека.

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

Мне тоже попадался чел, который на полном серьезе рассказывал, что «всё есть в Гугле и этого достаточно».
У вас два соседних предложения противоречат друг другу:
«копипастит из гугла участки кода» и «искать и адаптировать решения» две большие разницы.

На мой взгляд, если по существу "претензий", то везде есть правда (и в мнении автора, и в совокупном мнении комментаторов).


Я очень благодарен тому, что, поступив на ВМК (МГУ) в 2010-ом, всё ещё попал на проверочные работы и экзамены по программированию, когда код надо писать на бумаге. Это дало мне ценнейший опыт "прорабатывания кода в голове", "думать как интерпретатор/компилятор" и т.д. Не знаю, практикуют ли они сейчас по-прежнему такой формат — но "пожалуйста, да".


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


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


И немного больше про мой взгляд на собеседования...

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


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

НЛО прилетело и опубликовало эту надпись здесь

Конечно, бумажка не обязательна. Да и универ не обязателен. Вообще, обязательного в нашем мире не так много, как кажется. Просто всё имеет свои последствия, приятные или не очень.


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


Прелесть наличия подобной практики в университете для меня как раз в том, что человек сам собой таким редко занимается, это требует определённой толики мазохизма, а "в универ ходить вроде как надо" (если присутствует соответствующее воспитание), и — особенно про ВМК — это вроде как "место престижное", и вам сквозь некоторый дискомфорт приходится этим заниматься.
(Конечно, тут исключается человек абсолютно сознательный, коих процентно существенно меньше, кто уже в свои 17-18 понимает чётко, чем он хочет заниматься, как он хочет этим заниматься, какой университет/институт ему нужен, или что ему это вообще не нужно, и потом ни разу не жалеет о своём выборе. Такие ребята сами всеми силами пробьются к своей цели, потому никакие доп.стимулы им не нужны.)


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

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


Я сам не являюсь человеком из айти, но с 10 лет(сейчас мне 23) практически ежедневно с помощью Гугла пишу для себя полезные программы и решения. Я совершенно не понимаю что нужно бизнесу, но вполне могу для себя реализовать человеческий Майнкрафт лаунчер на c++ или Авито парсер с кучей фильтров на go. Просто подобные мне люди бывают более решительны, чтобы пойти с этим багажом куда-то работать)

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

ЗЫ. А успокоительных попейте. Помогает.
Заметил, что руководитель часто орет не потому, что он собой на владеет, а чтобы чисто биологически «застолбить» за собой место в стае. Сейчас правда такое редко встречается (и уж тем более в больших конторах), а вот раньше на каждом шагу.
кто не умеет управлять людьми, спускается на уровень «главного бабуина» стаи
Опять же, если большинство в команде составляют профессионалы, то бабуин-стиль приведет только к развалу команды. На профессионалов всегда есть спрос — если не на других проектах, то в других компаниях. Но бабуин, особенно если этот стиль он принес из эпохи «записок невесты программисты» это понять органически не способен. Он до сих пор считает себя «элитой», а всех вокруг ламерами
Гугло-программисты — это не совсем зло, «изобретатели велосипедов» гораздо вреднее. Но все равно, для интервью нужно иметь вопросы вроде «как работает Task» — чтобы иметь представление о том, насколько кандидат вообще понимает что происходит в системе.
1. Я пишу на нескольких языках, например: java, go, c++, vb, и, не редко, когда перехожу с одного языка на другой — могу путать даже базовые конструкции. Но вместо того, чтобы в голове держать, какие же методы у интерфейсa Bifunction, я держу, для чего этот интерфейс используется и в каких случаях может пригодиться. IDE же мне подскажет, какие-там методы, какие там типы и все такое. Я совершенно не хочу помнить, в каком пакете находится интерфейс Map или его реализация — HashMap, но вместо этого помню, принцип работы HashMap.

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

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

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

p.s.Добро пожаловать в реальность: Со слов Сассмана, «Программирование сегодня больше напоминает науку: вы берете часть библиотеки и «тыкаете» в нее — смотрите на то, что она делает. Затем вы спрашиваете себя, «Могу ли я настроить это так, чтобы оно делало то, что мне нужно?». — это ведь правда.
сомневаюсь, что смогу написать код длиннее пары десятков строк без ошибок

Я вот уверен что не смогу. Современные инструменты настолько все упростили что я не всегда даже в голове держу синтаксические конструкции языка с которым каждый день вот уже второй год работаю. Особенно если конструкции не каждый день используются. Куда уж там стандартную библиотеку помнить если часто ее помнят пальцы а не голова. Это как с паролями, я пару паролей не помню настолько хорошо чтобы на бумаге записать, но пальцы с клавиатуры их вводят безошибочно.
НЛО прилетело и опубликовало эту надпись здесь
при написании кода на листке(если требуется до буквы использовать методы из конкретного языка с нужными аргументамИ) — сомневаюсь, что смогу написать код длиннее пары десятков строк без ошибок

А на бумажке на собеседовании больше и не нужно — это вполне достаточно, чтобы оценить мышление кандидата.


Со слов Сассмана, «Программирование сегодня больше напоминает науку: вы берете часть библиотеки и «тыкаете» в нее — смотрите на то, что она делает. Затем вы спрашиваете себя, «Могу ли я настроить это так, чтобы оно делало то, что мне нужно?». — это ведь правда.

Знаете, описан совершенно не научный подход.

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

Институт не даёт знаний. Он учит добывать знания самостоятельно

Боже какая чушь. Как раз лекторы нужны за тем, чтобы от них получать знания. Самостоятельно можно знания добыть БЕЗ вуза. Кстати я вот с очень большим количеством людей говорил, которые повторяют эту мантру, и просил объяснить мне как их научили вот этому всему? И знаете что? А ничего, никто вообще не смог после размышлений подтвердить эту фразу, ну а поскольку бремя доказательства утверждения лежит на высказывающем, считаем эту фразу антинаучной.
Добыча знаний с появлением гугла кажется устаревшей, но под добычей подразумевают не только поиск, но и структуризацию, куда входят такие вещи, как конспектирование, доказательство того, что знания применимы к выбранной задаче и решают ее, и архивирование, по которым подразумевается ведение некоего «словаря, где вы можете повторно эти знания найти.

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

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

В общем и целом поиск знаний как правило начинает с осознания проблемы, посему самым важным скиллом для разработчика является способность использовать свой продукт и видеть его недостатки. Кстати, простой пример: попапов для вебстраничек с отображением по наведение — миллион и почти все любят пропадать если мышка ползет не строго над ними. Разработчики этого не видели? Они не в курсе как это бесит? Быть такого не может. (кстати, фраза для гугление «Dropdown Menus with More Forgiving Mouse Movement Paths»)
записи и делаются, чтобы забыть, архив или конспект делается как раз для того, чтобы можно было оперативно найти то, что вы забыли. Не знал, что есть вузы, где предмет вам не разбивают на главы, а главы — на конспекты.
Когда я говорю забуду, это значит совсем, под ноль. Такие «знания» бесполезны.

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

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

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

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

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

Это не проблемы, это вполне нормальная особенность работы мозга: выкинуть из памяти все, что ему не нужно. В качестве бонуса остаются несвязанные крохотные огрызки знаний, зачастую, абсолютно бесполезных.
До сих пор помню многие прочитанные в детстве художественные книги, но совершенно не помню ни одной лекции в универе, не говоря уже про школу.
Банальное дифференцирование? Гугл.
Большая часть геометрии и тригонометрии? Гугл.
За-то до сих пор помню формы эпюр усилий от разных нагрузок, и что сумма моментов сил в системе равна 0. А так же чем отличается формула серной кислоты от сернистой.
Теория прочности грунтов? Да вообще ничего не помню, хотя у меня 3 рабочих блокнота полностью исписаны формулами и рассчетами. Именно рабочих, не студенческих.
Нюансы работы с компортом напрямую? Я 3 года этим занимался по работе, сейчас даже не вспомню какие классы использовал, не то что параметры, а прошло «всего» 7 лет. За-то помню порядок открытия и закрытия клапанов от режима работы шагового двигателя насоса у установки, с которой через этот самый COM-порт я и работал.
7 уровней модели ОСИ? Ну 4 я еще вспомню.
За-то я до сих пор помню как работают карты Карно, хоть ни разу в работе оно мне и не пригодилось. Или решение СЛАУ методом Гаусса, которым я ни разу после универа не пользовался, даже когда эти самые СЛАУ надо было решать по работе.

При этом все актуальные рабочие знания замечательно лежат в памяти, а все редкоиспользуемые замечательно вытаскиваются из гугла с офф манов, статей или хабра. После этого так же замечательно забываются. Написать сложный SELECT на пяток таблиц и десяток условий? Легко и быстро, только надо глянуть в мане, как там дифф между датами вычисляется и какой синтаксис у HAVING, которым я пользуюсь 2 раза в год.
Регулярки? 4 раза в год, нужно глянуть краткую справку по синтаксису.
Обработка текстовика на несколько сотен метров с парсингом числовых данных из него? Да вообще не проблема, даже выбор запятая-табуляция и корректная поддержка кавычек будет без напоминаний. В довесок из коробки обработка будет поточная, расход памяти в сотню мегабайт, и без утечек памяти на строки, и даже c кастомным парсингом чисел, для N кратного ускорения работы. Я с этими нюансами постоянно сталкиваюсь, они уже давно лежат в оперативной памяти мозга.

И нас таких даже не двое, а намного-намного больше.
Все ваши «знания» действительно «бесполезны», потому что вы ни разу не построили абстрактную связь. Это значит, что любое что-то является чем-то, по отношению к чему-то. То что вы приводите — это реализации абстракций, а они никому не интересны. А самих абстракций у вас нет.
И да, вас таких действительно не двое, а 99.9%.
Странный вывод, как и странное отношение к абстракциям. Берем такую абстракцию, как СЛАУ, она же Система Линейных Алгебраических Уравнений. Кому она в таком виде нужна? Да никому, кроме чистых математиков, да и они абстрактными СЛАУ не занимаются, там еще пачка дополнительных критериев навешана, как минимум вырожденность-невырожденность.

Хорошо, добавим деталей: СЛАУ описывает точку пересечения N линий на гиперплоскости, через уравнения прямых. Это все еще абстракция или уже частный случай? Наверно все таки уже частный, так как Гаусс и Крюгер тут уже применимы. Полезно в жизни? Сомнительно.

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

Ну раз мы на IT ресурсе, давайте возьмем такую абстракцию, как Сборщик Мусора, который этот самый мусор из памяти и собирает. Прекрасная абстракция, понятная даже далеким от IT людям. А теперь столкнем эту абстракцию с реальностью, которая прекрасно проявляется на собеседованиях, ибо вопрос про особенности работы сборщика мусора в .NET/Java — это просто святая святых (хорошо отличает тех, кто читал спеку, от тех, кто ее не читал). Интересна эта абстракция интервьюеру? Нет, даже если вы на джуна собеседуетесь. Почему-то они будут оценивать знание нюансов в виде порядка очистки, основных триггеров срабатывания и методов принудительного освобождения памяти, а так же о возможных недостатках, которые могут вызвать эти действия.

Туда же идет глубокая теория пределов, диффуров и интегралов. И даже на интервью повара вас будут спрашивать как готовить суп, а не как пойдут трещины в плите перекрытия, если вся школа решит дружно встать на нее.

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

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

Интересный эффект. А если не записывать, запоминается лучше?

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

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

Неврологическое что-то?

Не в курсе, а что, стоит боятся? Способность построчно помнить свой код тоже достаточно редка: да я пишу подробные сообщения при коммите, но детальные комменты мне не нужны, я помню детали реализации. Думаю при этом мало смысла жаловаться на память. А даты, адреса, формулы, правила, теоремы, номера домов я практически не способен запомнить, только если их по принципу дворца памяти обвязывать. И это с детства: еще в младших классах выяснил, что я не помню номер своего дома, который написан большими цифрами на углу, мимо которого я каждый день ходил в школу. Со временем классифицировал примерно категорию информации которую я не могу запомнить, если кратко — «бесполезная». Да, все записанное тоже в этот разряд, потому что я всегда могу найти и прочитать.
Судя по тому, что вы пишете, тут скорее особенности вашей концентрации внимания, а с памятью проблеме нет. Насчет стоит бояться или нет — сложно сказать, но тут всегда можно обратиться к специалистам. На мой взгляд — все в порядке, просто особенности восприятия, но я все же простой обыватель.
а что, стоит боятся?
Не думаю. Это не то, чтобы очень распространённый образ мышления, но таких людей достаточно.

Это мои личные выводы, но видимо просто сознание заточено на «понимать», а не на «запоминать», а понимать — это дорого, потому что на это тратится время и энергия. Поэтому тривиальная ерунда и фильтруется на входе.

В «Программистском камне» подобное хорошо описано.

Лично у меня персональная вики в Zim на минималках

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

А что там доказывать? Даже элементарное написание реферата по источникам в библиотеке (да, в бумажной) уже прокачивает этот скилл.

Вообще то лектор прав. Знания могут и не пригодиться но скилл обучаться он должен прокачивать.

Его задача — подать материал, подать хорошо, грамотно, интересно. Материал по теме, со всеми нюансами с высоты его знаний. Я за это ему плачу.

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

Не являются ли их заказчики и начальники китайской комнатой?

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

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

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

Как людей-то бомбит, заглядение.
Для админов я использую термин, может где подсмотрел, а может и сам выдумал, monkey админ.
Это человек который что-то может, но совершенно не понимает, что и как работает.
Как результат, если он не может найти решение в гугле, то даже самая казалось бы элементарная задача полностью его парализует.
Часто нужно всего лишь поменять один параметре в решении из гугла, но он не может.
Он начинает перебирать решения хоть как-то похожие на его задачу. И если не одно не решает проблему, то все припыли, и даже скомпилировать из готовых вариантов готовое, он не может. Он просто не понимает, что все эти буковки значат.
Еще часто у них встречается синдром тыкателя, тыкать по кнопкам пока не заработает.
Спрашиваешь, а зачем ты вот здесь такой параметр поставил, отвечает, а вдруг поможет.
Фэйс палм, не понимая, что за параметр, зачем он, просто а вдруг подойдет.
Ингода их можно даже починить. На каждую возникшую проблему, бьешь по рукам и стоя над душой, заставляешь думать( это для них очень мучительный процесс ), по каждому параметру, по каждому пункту, чтобы объяснил зачем он нужен и за что отвечает, потом пусть построит взаимосвязи и так постепенно выйдет на правильный ответ.

Для разработчиков где-то видел, stackoverflow developer.

Точнее это называлось SDD — Stackoverflow-driven development.

Для админов я использую термин, может где подсмотрел, а может и сам выдумал, monkey админ.

Я чаще всего встречал — эникейщик.

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

Эникейщик — это тоже квалификация, должность то обычно у таких людей тоже «Системный администратор»

Называться-то должность может как угодно, вопрос в фактических должностных обязанностях. "Эникейщик" — это, по определению, человек, который бегает от одного пользователя к другому и нажимает им на клавиатуре "Any key" (более современный вариант — нажимает на кнопку "ОК" в модальном диалоге).


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

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

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

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

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

Ну назовите тогда хотя бы одну квалификацию, а не должность.

Загляните в начало этой ветки...

Ну вот у меня была как-то должность "программист прикладной". При этом исполнял роли от архитектора предприятия с 1000+ сотрудников до эникейщика, бегающего по рабочим местам в центральном офисе.

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

сносно работают со встроенной справкой...

Зачем?! Я ещё помню то время, когда вместе со средой разработки ставил все хэлпы (MSDN, справку по Python и т. п.) и активно ими пользовался — давно перестал, в современных реалиях это нафиг не нужно. Тот же MSDN весь есть в интернетах, и другие всякие справочные сайты, на которых, зачастую объяснено подробней и доходчивей.

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

Автор в сфере 1с работает. Там документацию только недавно частично открыли в бесплатный доступ.
И гуглить готовые чужие решения — очень полезная привычка, зачастую узнаёшь что-то новое: библиотека какая-то новая появилась, новая фишка в языке, старая фишка в языке, которая почему-то прошла мимо тебя, или ты всю жизнь делал что-то одним способом, а тут — сурпрайз! — есть, оказывается, способ лучше.

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

Увы, MSDN давно уже не торт — попробовал в этом году пользоваться на сайте, вскоре заностальгировал по временам шести дисков Visual Studio (404 на какие-то ссылки, недописанное в статьях, и прочее, и прочее).

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

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

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

автор сам то верит в эту чушь?

В теории: пришли делать MVP на крудах, сделали, запустили. Пошли, с одной стороны, хотелки не свойства сущностей редактировать, а процессы настроить, а с другой — затыки на базе, out of memory и т. п.

в теории… на другой планете…
Наши кандидаты код всегда пишут дома и спокойно. Задачи как правило с REST, DB и параллельное программирование. После мы делаем ревью на этот код, где все папки коментят интересные моменты для очной беседы ну и редка флеймы бывают по спорным моментам.

Потом кандидат все интересные моменты поясняет, что, как, почему. Не возможно, что бы человек загуглил решение петшопа на левел 2 или 3 REST API и потом не смог объяснить, как он пришел к этому решению, в каких случаях рест оправдан, когда и как контракты и т.д.
Если на собесе папка, то и это сразу видно. Разговор плавно уходит на архитектуры, реализации различных консистенций и комуникаций.
Автор здесь какую то ересь толкает. Либо с людьми потом общались о небесных пирожках и сразу контракт.
З.Ы. И да, я запросто путаю на sql sort вместо order by и гуглю все, что мне незачем держать в голове
Вот в такой компании как Ваша работать можно. Сразу видно, что не потогонка с чайкой на троне.
Мда, ни в жизнь бы мне такого начальника. Мало того что неадекват, который орет на подчиненных, не имея опыта и мозгов на то что бы решать проблемы спокойно, так еще и требует безостановочного роста. Для справочки: все новички по началу списывают. Дизайнеры повторяют работы других, строители делают скворечники по готовым зарисовкам, у людей посто нет еще опыта для того что бы научиться делать что-то свое ПЛЮС сюда прибавляется невероятное количество свойств и методов, которые тебе не нужно помнить. Иногда ты используешь метод несколько раз в жизни, но нет, супер крутой начальник хочет что бы ты помнил все наизусть. 80% работы программиста — находить готовый код и подгонять его под проект потому что все давно решено за тебя, а если ты тратишь на задачу 8 часов потому что ты такой классный и можешь написать все сам, а другой тратит 40 минут на то что бы скопировать код и допилить его, то я выберу последнего, потому что мне, как бизнесу, будет плевать на то скопирован ли этот код или написан, мне важно то сколько я заплатил за него.
Как мне показалось, что для бизнеса ценны варианты «за 40 минут сам». В текущее время ищу работу и надеялся что можно вот «как-то найти и втянуться в процесс»… нет, прилетают тестовые в формате «5 задач на 90 минут». Гугл тут уже явно не поможет — дольше искать. Понимание и «сам за 8 часов» тоже не подходят — долго.

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

Тестовое задание должно быть:
1) разумным по времени и сложности, чтобы кандидату не было ощущения необъятного фронта работ.
2) сохранять пользу (выяснение компетенции) даже при активном использовании гугла.
3) требовать разумного объёма нажатых кнопок (это немаловажно, потому что задание может быть лёгким, но требовать много бойлерплейта — такое лучше избегать).
4) Не быть гуглябельным (т.е. кандидат должен решить какую-то задачу в голове, и код на экране — всего лишь выражение этого решения, а не решение).
5) Не напоминать рандомную таску из джиры компании (потому что это будет подозрительно напоминать "программирование халявными программистами").
6) Должно быть сделано хотя бы двумя-тремя действующими программистами в режиме тест-драйва.


Вот последний пункт часто забывают.

Добрый вечер, не помню какой час без сна, поэтому умная мысля:
1990-ые воспитали в нашей стране поколение IT-гениев.
Связываю это с золотым поколением футбола в Бразилии, на фоне ужасного кризиса.
Нужда мотивирует сильнее всего.

Дискас? Или ну его?
Провожу аналогию, пардон!
Тогда футбол был единственным способом выбраться из нищеты.
В 1990 же айти была более-менее уверенной сферой в нашей стране.
Любые года воспитывают какое-то количество людей, считающих себя охренеть какими гениями, на основании того что они разбираются в какой-то области больше остальных. Из этих «гениев» большая часть — обыкновенные специалисты с фиговыми социальными скилами.
Сам офигевал – неужели современное поколение настолько прониклось технологиями, что пишут код, как дышат?

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

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

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

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

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

Сегодня «гугл-программисты» завтра «github-программисты», времена и люди меняются, но чтобы найти ответ, который поможет решить проблему, в первую очередь нужно научиться правильно и точно задавать вопросы.
сейчас не мало людей, которые не хотят или не могут вникать в суть.
немало встречал людей на интервью с 5+ летним опытом и знаниями уровня джуна.
даже нередко в различных статьях таким людям дают определение — «вечный джун» =)
не думаю что они заменят нормальных специалистов, просто такие люди будут занимать линейные позиции как кассир в пятерочке и получать соответсвующий оклад.
а тот кто захочет стать настоящим профессионалом — будет развиваться
Сейчас часто меняют область работы, а не сидят 20 лет на одной технологии, изучая наизусть стандартную библиотеку. Я сейчас зарабатываю на жизнь технологиями, которые я впервые увидел три года назад. И совсем не уверен, что еще через 5 лет это будут они же.
Эти идиоты-программисты читают хабр? Интересно, что чувствует человек, который видит статью где начальник себя и подчиненных называет идиотами.
Второй вопрос — умные все разбежались разом? Наставничество, кмк, могло бы частично решить эту проблему.
Интересно, что чувствует человек, который видит статью где начальник себя и подчиненных называет идиотами.


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

Ну он или обиделся и не признает себя идиотом или понял, что нужно браться за ум.
Если первое — то он идиот на самом деле.
Да почему ж нельзя, можно. Я бы тоже себя идентифицировал с «гугл-программистом», но гугл не решает 90% моих задач поскольку предметная область весьма специфичная. Тоже пришел понимая, что ничего не знаю о предстоящей работе. Только и тимлид знал о том, что я «идиот» в силу редкости требуемых знаний. Может быть поэтому в компании и развито наставничество, когда новичка ведут сразу несколько специалистов обучая тонкостям работы.
Но если бы меня назвали идиотом, то я бы все равно обиделся. Тому, что оказывается я идиот, работаю рядом с идиотами, и начальник тоже идиот по его же словам. Как-то сразу лишает мотивации и перспектив развития. Тем более если можно надеяться только на помощь гугла.
Ну начальник кокетничает, конечно. На самом деле он самый умный, самый продвинутый, с офигенным чувством юмора, ему все завидуют и не в состоянии понять, насколько он выше всех

Идентифицировал себя как Гугл-программиста, печалька :-(

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

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

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

И опять, как и в каждой дискуссии о качестве кода, часто проскальзывает некая нотка… нарциссизма и неприкосновенности (привет идеалистам). Не забывайте, что и без уборщиц этот мир выглядел бы иначе.

Проблема SO-программистов в том, что они будут забивать гвозди в стенку из гипсокартона, потому что не будут понимать, что такое гвоздь, и что такое гипсокартон. Да что уж там, они даже не задумаются, что стена может быть сделана не из дерева. Стена из кирпича составит очевидные проблемы, но преодолимые. А вот бетонная поставит в тупик.

Ой, ну, ладно вам. Вы же видите: человек год радовался, какие у него суперпрограммисты. Значит, делали своё дело и делали неплохо в итоге :)
Если не получается отличить гугловского копипастера от «какого-то там идеальный разработчик» за собеседование и сколько там месяцев работы, если разработчики резко достигают плато только при первых трудностях, то плато далеко не у них, а у автора. И это плато не соответствует требованиям должности в отличии от гугловиков которые справлялись со своими задачами.

Был опыт, пару лет назад искали пыхаря на усиление команды, тяжко шло, то нам не нравится, то мы — вообщем стандарт.
Однажды тех дир сказал, вы все олени, сейчас я быстро найду. В программировании он был около 0, но все же… нашёл где то вопросы по пхп с ответами, и давал их всем кому не глядя. Но не спрашивал их лично, а просто давал листочки и уходил по своим важным делам. Приходил где то через часик, спрашивал «кем вы видите себя через 5 лет» и отпускал кандидата.
В итоге, один такой персонаж успешно вышел на работу, как раз когда тех дир был в отпуске. На мою голову. После 3х дневных попыток поставить докер на убунту, и вопросы типа «какой порт фтп у гитлаба» человечек был уволен — тех дир больше не собеседовал никого)


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


Команда важнее всего, даже времени руководителя

Такое снова в Топе. Ясно понятно
Отчасти согласен с автором, сейчас по сути учаться на онлайн-туториалах, где просто переписывают код за ментором.
Если программист изучал глубоко (вел конспекты для лучшего запоминания) имел практику — то и к google/yandex/yahoo обращается редко или к примеру уточняет имя метода/свойства обьекта. Если же нет — то гуглит помногу а это ведет к большим затратам рабочего времени и как следствие затягиванию сроков. Другой момент — в сложных программных продуктах/системах желательно (по моему скромному мнению) применение диаграмм UML: код стает мало-мальски поддерживаемым и будет менее остро стоять проблема "-а что здесь происходит?".
nmivan Да, ваша проблема очень распространена, загуглите к ней решение
correlation does not imply causation
Был на нашей фирме начальник, который считал строчки кода у подчиненных для оценки производительности. Это было еще до эпохи IDE. Чем-то Вы мне его напоминаете своими подходами с Вашими «Плато» по продуктивности,«продуктивность застыла».
Согнать с компа и сделать за подчиненного — верх непрофессионализма. Вот даже не верю что так бывает, что какой-то начальник может себе это позволить — так втаптывать в грязь подчиненных. Представляю, какая у вас там атмосфера.
В одном месте вклад в проект измерялся пушами
красиво написано, с юмором, но это не столько про программистов, сколько вообще, про современное поколение специалистов без фундаментальных знаний. Например, мои проекты связаны с инсталляцией звука, расчетом и настройкой линейных массивов. Приезжают специалисты-инженеры одного из ведущих дистрибьюторов, согласовываем все технические нюансы, они все знают по своей системе из методички от А до Я, но тут маленькая проблемка — нам требуется нестандартная конфигурация звуковой системы… и тут я обнаруживаю, что между их знаниями по одной их конфигурации динамиков и другой… пустота. Ответы, которые следуют из ШКОЛЬНЫХ (пусть немного углубленных) знаний по физике — они родить не могут. А между тем они — успешные, востребованные специалисты в рамках моделей систем представленных дистрибьютором. Я тогда тоже прозрел.
Как ни печально, но гугл-программисты и стековерфлоу-программисты в данный момент составляют большую часть джунов (а иногда и мидлов)
подтвердите ваше утверждение статистическими выкладками?
Взять код с SO и грамотно его применить – это еще постараться надо. Бездумный копипаст видно либо сразу, либо почти сразу. Полгода не замечать неграмотный копипаст довольно-таки удивительно.
Грамотный инженер не должен знать всего, но должен уметь искать информацию и применять ее на практике. Кроме того, нужно уметь определять критерии поиска при постановке задачи. В данном случае они не известны. Не понятно, какая у автора цель. Найти человека для расстановки форм на сайте или запустить ракету в космос или просто потешить собственное самолюбие.
В вашем тексте слово «чувак» встречается семь раз. Это не язык делового общения и не язык дружеского общения, это слово — ПРОСТО ТАБУ. Я очень сомневаюсь в вашем профессионализме как руководителя.
НЛО прилетело и опубликовало эту надпись здесь
Недавно мне случайно попалась на глаза заметка с интригующим названием
Конец эпохи: в Индии массово увольняют программистов
Я не программист, поэтому до сего дня не вполне осознавал истинные причину и масштаб происходящего. Только прочитав эту статью на «Хабре», я понял, почему настолько медленно и неповортливо развиваются, в общем-то немногочисленные, программы и операционные системы, которыми пользуются сотни миллионов людей. Почему зачастую программистам проще похоронить отличный проект (пример — Opera на движке Presto), чем решать неизбежно возникающие в процессе его развития проблемы.
С помощью копипасты и бездумного конструирования мы, конечно, далеко не уедем.
Статья 2017 года. Прошло 3 года, но код по-прежнему пишут люди, а не ИИ.
На первый взгляд, да. Даже не удаётся найти более поздние публикации, которые развивали бы эту тему в настолько же пессимистичном ключе. Складывается впечатление, что, скорее, она — одна из последних. Предшественниц было немало и ничуть не менее весёлых:

habr.com/ru/post/303486
habr.com/ru/post/274987

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

Впрочем, вот свежая статья на ту же тему:
mediavektor.org/14391-gerd-leonhard-cherez-10-let-vse-programmisty-stanut-bezrabotnymi.html
НЛО прилетело и опубликовало эту надпись здесь
Когда-то давно «объясни почему так, а не иначе» называлось экзамен в вузе. Сейчас их почти отменили.
Совсем давно это называлось выпускной в школе и вступительный в вузе но теперь ЕГЭ.
Совсем совсем давно экзамены были в школе каждый год по нескольким предметам. Теперь от этого осталась только сценка с Волькой Ибн Алёшой из Старика Хотабыча.
Так что…
в школе эти экзамены в до-ЕГЭ времена были для галочки, чтобы выйти из школы со справкой надо было совсем быть безмозглым
Считаю название «гугл-программист» оскорбительным, ибо каждый из нас в какой-то мере гугл-программист. Но те специалисты, которых вы наняли, просто имеют базовую подготовку хуже, чем вы от них ожидали. Конечно, в вышесказанном есть доля юмора, но идея такова, что поиск информации в эру избытка этой самой информации становится чуть ли не ключевым фактором выживания. Поразительно.
Сейчас на проекте активно используется 3 ЯП + 1 еще иногда проскакивает, конечно же это не считая всяких языков разметок/стилей, разумеется, везде изпользуются фреймворки, ну и сверху конечно всякие YAMLы AWS, doker-ов etc. И на каждом проекте языки и фрейворки меняются. Это — будни, и, подозреваю, большинства людей тут.
Так что да, выкину интернет я, возьму по три книжки на каждый фреймворк, ямль etc и буду писать код, сверяясь только с ними, наконец преодолею своё Плато! Спасибо автору за совет! А то ведь я думал-гадал, почему я так путаюсь во всём и не могу запомнить ничего, не то что в универе, когда писал на голой Java диссер.
Странный автор)))) Как будто с Луны свалился, или с Титана.
99.9% так называемых программистов — программистами не являются вовсе. Это было сказано хз когда и хз сколько раз уже.

При этом, сея «статья» выглядит логически противоречивой.
Джентльмены, ну сами посудите, если автор является «программистом» [всмысле реальным], то он никак не мог не заметить, причём давно, что его окружение из так называемых программистов ими никак не являются, причём сие не заметит только что слепой-глухой-инимножычкатупой. Ессно автор всё это и так видел, причём давно. Однако же почему то только сейчас для него сие стало «открытием». Что и приводит к фундаментальным противоречиям, и это в свою очередь позволяет отправить сей чюдный авторский рассказ в раздел «фентези».

п.с.: Имеется тривиальная дыра, однако же т.к. она тривиальная, то и смысла нет про неё говорить конечно. Можно предположить, что автор вообще не программист, ни реальный ни липовый [«Рогозин»]. Но это совсем из разряда сюра.
Мне вот интересна судьба этих гугл-программистов в вашей Компании, которых вы набрали. Вы их уволили?
Ещё во времена большой популярности Delphi была притча про ленивых программистов, которая заканчивается примерно так: "… и только очень ленивый программист Delphi пишет всё сам, потому что ему лень искать готовое решение".
Очень часто такое слышу и читаю. и блин никак не могу понять, а что реально можно ничего не зная копипастить код с SO и всё прям работать будет?

Я вот без гугла не могу, наизусть оч много чего не помню (у меня не фотографическая память), помню даже завалил собеседование где мне сунули бумажку А4 со словами, а теперь напиши программу… я завис с синтаксисом языка… который всегда IDE подсказывает...wtf мы в каком веке чтобы синтаксис помнить наизусть? я конечно работал с программистами на emacs и vi, но я не такой всёже.
Я вообще не понимаю как можно копипастить код и он будет работать, 90% кода на SO или кривой или очень привязан к контексту или вообще лишь маленький кусок.
imho с точки зрения автора я наверное гугл-программист, но я там максимум буду гуглить официальную документацию и в крайнем случае бойлерплейт какойнить редкой штуки
Очень часто такое слышу и читаю. и блин никак не могу понять, а что реально можно ничего не зная копипастить код с SO и всё прям работать будет?

https://gkoberger.github.io/stacksort/


Раньше эта штука в среднем скорее работала чем нет, но сейчас что-то поломалась...

Не пробовали гугл-програмистам отключить интернет при сдаче тестов?

Чувак сначала проходил длинное собеседование по куче разнообразных вопросов, потом решал несколько задач. На бумаге, как мы делали в ВУЗе.

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

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

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

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

Гуглом можно не пользоваться, если ты работаешь несколько лет в одном окружении, и ничего там не меняется, ты все выучил, и всю систему можешь отлаживать в уме. Я хоть и работаю уже в веб-разработке около 15 лет, далеко не в курсе всех модных новинок. На PHP и JQuery могу что угодно написать, занимаю хорошую позицию в нашей компании, если что-то нужно «эдакое», то всегда ко мне идут. А вот по новым модным фишкам JS я бы наверное на джуна собесдование не прошел, и случись на нем писать, я бы наверное тоже неслабо копипастил.

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

Я интроверт и Гугл программист, и не вижу в этом ничего странного, да я провалю любое собеседование, где меня попросят писать код, но есть одно большое "но".
Я очень креативный, мои решения могут выходить за рамки стандартно умных, код для меня практически в любой форме второстепенное занятие. Я находил и нахожу решения, где другие программисты, которые могут писать "очень умный код" подходят к стене или пытаются создав ракету на Марс, перейти через улицу. Я не конфликтная личность и очень хорошо умею слушать других, за счет этого я хорошо вливаюсь в группу и потом зная общие запросы представляю свои решения. Мои решения имеют 100% попадание в цель и выполняю все раньше срока и за мой нестандартный подход, за короткое время, получил множество благодарностей и значительно вырос по зарплате. За короткое время я решил все наболевшие вопросы, решать которые не приходило на ум никому и продвинул фирму реально вперед, жалко только что из за этого уволили множетство работников.
И да, я был на собеседовании, где меня просили писать код, я его провалил с грохотом. Меня спроси в это время, сколько пальцев на руке, скажу 3. Я долго себя после этого успокаивал.
Теперь я знаю, что это моя сущность и моя сила. Я просто другой, это признают мои коллеги и мое руководство.


С уважением ваш
Гугл программист.

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

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

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

НЛО прилетело и опубликовало эту надпись здесь

Автоматизация процессов. Делалось вручную, соединил 2 системы. Фактически все было, но спали и в этом направлении, никто не думал, так как предыдущий программист завалил проект и сказал что апи очень сырое и не работает вообще. Это позволило запустить другие процессы, которые привели к сокращению персонала.

НЛО прилетело и опубликовало эту надпись здесь

Людей держали из за нужды переноса данных из одной системы в другую.
По сути присоединили 3 системы куда поступали данные с основной, откуда уже были рабочие пути дальше.
Одну из систем подключили даже через human Emulator, я проработал путь и предоставил сырое, но рабочее решение, которое довелось до ума другим. При некоторых задачах, люди это ошибки, которые появляются при переносе.

И, главное, скромный!
Что-то очень напоминает известное:
Я художник — я так вижу :)
Я реально фигею с хабра, такой обширный кипишь на пустом месте…
Я реально фигею с хабра, такой обширный кипишь на пустом месте…

Неохота работать просто.
Можно поболтать — почему бы и не поболтать.
Неоднократно слышал шутку, что самая главная книга для программиста «How to copy and paste from stackoverflow», но как-то даже в голову не приходило, что она превратиться в реальность реальность.
Ой, вей, собеседователь который скачал задачки для собеседования в интернете жалуется что собеседуемые скачивают решения его задачек в том же интернете. Да вы, право, достойны друг друга, да и пинка под зад тоже
Что же за задания они выполняли 3-6 месяцев до плато? Условно строки переворачивали?
НЛО прилетело и опубликовало эту надпись здесь

Это важное собеседование для вас было?

НЛО прилетело и опубликовало эту надпись здесь
Ваши программисты не напоминают вот этих студентов Фейнмана? То есть по сути являются биологическим аналогом умных колонок.

Будет очень хорошей идеей давать задание на который самому создавать код который бы гуглился в первую очередь. Потом их можно будет троллить вопросами — ой, какой интересный стиль, у кого учились? Как пришли к такому решению? Кстати, а вот эта строчка, она что делает?
Спасибо! Ссылка на очень хороший пример!
nmivan извините не успеваю прочитать миллион комментариев — что доказывает — статья животрепещущая. Но решается задача относительно просто — да пусть гуглят — но задачи для программирования должны быть уникальными — решения которых нет в гугле. Я в свое время делал так — работало хорошо — правда мои задачи потом появлялись в поиске гугла — приходилось актуализировать. Но согласитесь — получить хорошего спеца — небольшая цена за время потраченное на разработку уникальной задачи для собеседования
Не, я ж не говорил, что не знаю, как с этим быть. Я рассказал о своей ошибке и попытался её проанализировать.
Неплохо было бы дописать как с этим быть и что Вы сделали для решения данной ситуации и чем кончилось дело ;)
НЛО прилетело и опубликовало эту надпись здесь

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

Я очень извиняюсь, а что сейчас делают чтобы фильм посмотреть?
Включают телек и сразу смотрят.
НЛО прилетело и опубликовало эту надпись здесь
Netflix, Amazon Prime Video, etc.
Это же сколько людей не могут найти хорошую работу, думаю, что недостаточно хороши для неё… А оказывается, можно в принципе не стараться, и тупо воровать куски кода, не задумываясь о содержимом. Потрясающая в своей простоте гениальность.
А оказывается, можно в принципе не стараться, и тупо воровать куски кода, не задумываясь о содержимом. Потрясающая в своей простоте гениальность.


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

Да я не возражаю.

Однако часто бывает, что «слышал сколько платят в ИТ и хочу столько; что платят только специалистам, так я же гуглить научился уже; что нужно несколько лет вникать в суть программирования, то нет, то вы мне врёте и эксплуатируете; просто дайте денег».
Так я частично об этом и говорю. Не важна причина почему люди часто вообще без знаний продолжают работают на зп джуна, важно что это бывает очень часто
Интересно, в Роскосмосе тоже Google в топе? Как они потом, лет через двадцать, свой код курить будут?

Так же, как и 20 лет назад. Подобные структуры весьма консервативны, 20 лет — не срок.

Я очень хорошо помню тим-лида, который сказал: «Я всегда предпочту программиста, который использует встроенную в язык функцию, а не начнёт изобретать что-то своё». «Гугл-программисты» — это требование рынка. Других просто не возьмут. Те, кто умеют думать и могут придумать что-то без готового решения называют «изобретателями велосипедов» и отбраковывают.
Я очень хорошо помню тим-лида, который сказал: «Я всегда предпочту программиста, который использует встроенную в язык функцию, а не начнёт изобретать что-то своё». «Гугл-программисты» — это требование рынка. Других просто не возьмут. Те, кто умеют думать и могут придумать что-то без готового решения называют «изобретателями велосипедов» и отбраковывают.


Не-а.
Вы упускаете что будет если таковой функции не существует и её всё же надо написать.

Автор статьи написал об этом «выход на плато, без дальнейшего роста производительности».

P.S.:
А не писать то, что уже написано до вас нужно было еще и в прошлом веке, это никакое не требование сегодняшнего рынка.
Я работаю на Немецкой Бирже в Праге и я немного офигел, что европейцы относятся к собеседованиям совсем по-другому чем в России. У меня было 6 собеседований и 2 из них технические. Последнее было в ресторане 4 часа без затрагивания рабочих тем

На сколько я понимаю, в Европе очень важны рекомендации, без них даже квартиру арендовать в Западной Европе сложно. Так же важна психологическая совместимость и адекватность. Но если нет рекомендация и человек приехал из России, то приходится с ним долго общаться чтобы понять, что за человек
У вас маленькая выборка собеседований в Европе :-) Все холивары применимы и здесь и там, просто рынок труда уже практически международный.
Я вот ни программист ни разу, я инженер-атомщик. Поэтому вопросы от профана:
1. А у вас везде принято за фиксированную зарплату, положенную при приеме, требовать неограниченный рост продуктивности и сложности решаемых задач? Или в договоре сразу оговаривается, что либо ты обязательно вырастаешь и мы тебя озолотим, либо выходишь на плато и сразу «с пляжа»?
2. Может, у автора в конторе сразу выписывают денег в 3 раза «выше рынка» и ты уже как бы обязан расти над собой?
3. В IT не бывает пласта задач типовых относительно несложных задач, которых процентов 80-90 от объема и их надо тянуть ежедневно (просто потому что даже в прекрасном дворце большая часть физобъема стройки — тупо кладка камня по шаблону)? Для них тоже обязательно держать программистов с высоким потенциалом и заставлять кодить из головы, то, что миллион раз до этого уже использовано и работает?
Чаще всего все получается наоборот, на собеседовании разговор идет о всяких классных штуках, спрашивают по принципам правильного программирования, и все такое, а в реальности приходится копаться в говне пытаться заставить работать древний легаси код с чудовищным «культурным слоем», оставленным предыдущими поколениями разработчиков. Разные крутые штуки о которых говорилось на собеседовании оказываются вообще не нужны.
Всякие такие нетиповые задачи, где нужно наконец-то применить что-то из теории, скорее радуют — ну наконец-то что-то не рутинное подвалило.
плюсую… на собесах только и слышишь про solid/патерны, а приходишь — монолитное говно везде и никто толком ООП код писать не умеет. А если будешь писать нормально, так еще и по башке дадут.

это если со своей колокольни…
Да, это чаще всего. Бывает еще другой полюс, это проект на котором я сейчас тружусь. Там в истоках люди, видимо, ну очень старались сделать все максимально круто по своим понятиям крутости, искренне старались. Напихали все паттерны, которые только могли вспомнить, запилили кучу велосипедов с кодогенерацией и поэтессами, изобрели свою систему наименования, которую текущие разработчики поголовно уже не понимают (хз что это — thdjy.rhd_4554893838_ffg.SomeShit_tthdjur_778.java), намутили какую-то дикую иерархию классов данные по которой передаются маршрутом крысы в лабиринте, и вот со всей этой «крутотенью» как-то надо теперь разбираться.
нет, ну заставь дурака молиться, он и лоб расшибет.
патерны это крутой инструмент, которым нужно уметь пользоваться. Без паттернов сложные задачи весьма сложно решать. Как без моста сделать M+N реализаций вместо M*N? Или как без visitor'а собрать/обработать разнородные данные? Ну и т.д. Только колхозить.

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

Сложное и дурак придумает.

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


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


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


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


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


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

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

С джунами по-разному бывает. Бувают и вечные джуны, и бывают позиции на которых именно джун и нужен. Но в целом, да, в 90% от джуна ожидается рост как минимум в мидла.


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

Моё хобби: экстраполировать

image


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

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

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

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

Давно замечаю за собой привычки гугл-программиста. Симптоматика в принципе понятна, но не понятно, откуда отталкиваться. Сейчас настолько много материалов по всевозможным темам, что начать зачастую даже невозможно.
Для меня как самоучки(чего я стыжусь и что стараюсь в скором времени исправить)основным критерием усвоенности является способность применить знания в реальном проекте, но иногда даже этого бывает недостаточно.
:(
ИМХО — гуглить не стыдно и не плохо, плохо бездумно использовать результаты поиска. Для меня «гугл-программисты», это те, кто увидев в результатах поиска готовое решение, просто тупо копируют его к себе в код, зачастую не парясь даже о том что-бы удалить комментарии автора. Зачастую таким образом в проект попадают древние решения, из старых версий ЯП, либо просто даже кривой и опасный код.
Если уж на то пошло, то и люди, которые отвечают/выкладывают решения задач виноваты. Уверен что в основном на stackoverflow и прочих площадках сидят «старые» программисты (в том числе тоже нелюбящие подобных гугл-рекрутов у себя, но при этом сами и спонсирующие их). Хотя, думаю, что и «старые» программисты были бы такие же, будь у них подобные технологии. Ведь чем лучше живется, тем тупее будешь!
Я постоянно что-нибудь забываю (C++ такой язык в котором нужно многое помнить чтобы использовать правильно) и поэтому без гуглежа и помощи со стороны я мог бы вообще отлететь как программист.

Если я забыл закрыть дверь, уходя в офис, и меня обокрали, то и я виноват?

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

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

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

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

Давайте представим мир в котором верна гипотеза "за 15 минут каждый может понять что из себя представляет человек". В нем все "не идиоты" уходят с подобного рода собеседований спустя 15 минут. Следовательно, интервьюеры, практикующие подобный подход, смогут нанять только идиотов. Следовательно, у них не будет нормальных сотрудников. Наблюдаем ли мы такое в нашем мире? Нет, не наблюдаем. Следовательно гипотеза не верна.


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

не стоит утрировать и передергивать.
«можно понять за 15 минут» не означает, что все собеседования должны длиться 15 минут.

Интервью должно 1) соответствовать целям набора 2) раскрывать сильные стороны интервьюируемого (ну или слабые).

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

БОльшее число спецов работает по навыкам (порой не понимая сути). Это в любой сфере. Есть гугл, нет гугла — не важно. В любое время и в любой эпохе так было и будет. Почему? Таковы люди. Понимать — сложно. Научиться на примере легче. Перенять навык легче. Кто из нас любит сложности? Кто любит штудировать книги? Упорно работать? Единицы. Поэтому и хороших спецов вне зависимости от сферы всегда единицы.

А что касается 15 минут. Ну так задавай вопросы на понимание и понятно будет — разбирается человек или нет, понимает или нет. Чуть углубился и сразу понятно — вчера ли он это прочитал или реально разбирается.
как можно было на собесе давать компы подключенные к инету??
пусть IDE, пусть редактор с подстветкой синтаксиса — но _без_ интернета (и без смартфона!)
тогда это будет адекватной заменой «писать код на листке бумаги»
Как можно на приеме на работу столяра, давать ему в руки инструменты и доски для проверкие его умений!?
Пускай сам себе изготовит из руды инструмент, срубит и распилит на доски дерево и сделает наконец-то табуретку!!!
Нам ведь нужен не столяр, умеющий работать, а супермен, который оказавшись на необитаемом острове с одной зубочисткой в руках, сумеет построить небоскреб.
НЛО прилетело и опубликовало эту надпись здесь
сильно зависит от задачи на собесе.
скажем для проверки элементарщины вроде «написать реализацию односвязного списка с добавлением-удалением-поиском элементов» интернет не нужен.
мы ведь хотим проверить реальные знания кандидата, а не умение гуглить ответы.
НЛО прилетело и опубликовало эту надпись здесь
Почему на интервью должны быть отличные от работы условия?

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


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

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

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

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

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

А на собесе без гугла я по памяти за короткое время обязан накидать без ошибок рабочее решение… ага, офигеть как релевантно
К тому-же бывает так что ответа нет, но зато можно найти что-то близкое или что-то что натолкнет на решение. Конечно все это можно и без сети раскопать, по старинке, засесть в библиотеку, обложиться книгами… Но за пять минут, да с надсмотрщиками за спиной…
я работал в конторе где было вот так:
1) мы вам платим за знания а не за поиск в гугле
2) если вы чтото ищите в гугле, вы обманули нас при найме, сказав что вы специалист
p.s. ппц конечно
Это уже совсем какое-то издевательство над людьми.
Даже в докомпьютерные времена, типичное рабочее место инженера выглядело как стол с разложенными на нем справочниками и окруженный шкафами с книгами. Ни один человек, даже если он гений не может держать в голове весь массив информации, необходимый для хоть сколько-нибудь сложной профессиональной деятельности.
ага, и с включенным таймером на 5 минут и двумя наблюдателями за спиной?

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

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

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

А вы сами когда-нибудь проводили собеседования?

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

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

да, но судя по всему интервьюверы об этом не догадываются, что в реальности они проверяют совершенно не то что им нужно. Я много видел таких людей-коллег, которые знают наизусть учебник по языку, но совершенно не способны создать какуюто сложную систему… зато на кодревью потратить три дня на обсуждении реализации перебора списка при выводе логирования в режиме дебага- самое то, не обращая внимание на то что узкое место совершенно не там (а этомы уже не умеем, это нам не надо, там DBA нужен. SQL не учили, ORM наше всё)
С тимбилдингом что-то не то. Интересно, много ли еще осталось работ, где может быть дружба, где люди доверяют друг другу, где испытывают душевный подъем от общей победы или поддерживают друг друга после обломов?
В Макдаке?
много ли еще осталось работ, где может быть дружба, где люди доверяют друг другу, где испытывают душевный подъем от общей победы или поддерживают друг друга после обломов?

Профессии, где жизнь зависит от напарника.
По заголовку статьи я уже думал про сотрудников Гугла, хотел сказать хорошие там люди, а не, это про пользователей поисковика, почему не Бинг или Яху-программист? =))

Только мне кажется, что автор - писатель-фантаст?

Публикации