В связи с последними изменениями в ПВТ в белорусской ИТ-сфере возобновился дискурс относительно продуктовой и аутсорсинговой моделей построения бизнеса. iOS-разработчик Антон Марченко написал колонку об этой проблеме, а заодно и рассказал о книге Адитья Бхаргавы «Грокаем Алгоритмы», посвящённой объяснению ключевых аспектов машинного обучения.
Читать далее
Общественное мнение остановилось на том, что выработка на одного сотрудника (net income per employee) в продуктовых компаниях, вроде Apple и Google, драматически отличается от традиционных показателей, и с точки зрения бизнеса продуктовые компании могут быть заметно эффективней.
Растить «Чёрных лебедей» куда полезней для нашей экономики, так как они обладают высокой масштабируемостью. Вернее будет сказать, что для реализации стратегии штанги, нужны как традиционные бизнесы (на которые продуктовые компании смотрят немного снисходительно и относятся как к донорам «ресурсов»), так и новаторские. Если кто-то ещё не понимает разницы между высоко масштабируемыми бизнесами и не очень, то скоро приедет Нассим Талеб и всё на пальцах объяснит (Речь о залпанированном на апрель выступлении американского экономиста в Минске. — Прим. dev.by).
Меня же больше занимает вопрос из подмножества данного дискурса, а именно — имеют ли качественные отличия программисты, которые трудятся в продуктовых и аутсорсиноговых компаниях? Ранее мне казалось, что качественных отличий нет и все особенности работы лежат в косметической плоскости. Качественный ли в офисе кофе? Есть ли свежие фрукты, завозятся ли они ежедневно? Как насчёт Маргаритницы (Margaritaville — устройство для приготовление коктейлей, в одном из эпизодов South Park используется как символ сверхпотребления, поднимающий проблемы излишнего консюмеризма)? Понятно, что если в офисе есть свежие орешки в симпатичных баночках, то при прочих равных мы выберем офис с орешками.
Но возьмём условный Facebook и условный EPAM, и обратим внимание на собеседование в этих компаниях. В Facebook спрашивают алгоритмы (как первое условие входа), а для условного EPAM будет куда приоритетней иметь 2 года опыта на Java EE (Enterprise Edition). И основной спор среди айтишников (по всему миру) идёт в области «нужно ли знать алгоритмы, чтобы быть хорошим программистом?».
Парадокс в том, что многие хорошие и опытные программисты принципиально отказываются заморачиваться с «балансировкой красно-чёрных деревьев», а многие люди, хорошо знающие алгоритмы (особенно в академических кругах), являются плохими программистами. Почему у нас тут, казалось бы, такие незначительные отличия и где истина?
В качестве яркой иллюстрации возьмём победителя первого Al Hackathon в Минске Марата Духана (проект mInference — оптимизация производительности слоев в нейросетях). Завершив учёбу, Марат прошёл собеседование в Facebook, после чего попал в рабочую группу под названием Facebook Artificial Intelligence Research, где и занимался своими выдающимися исследованиями. Внимание: вопрос! Смог бы г-н Духан использовать и развивать свои компетенции в какой-то другой компании, работающей по аутсорс модели? Думаю, что нет: исследование по искусственному интеллекту достаточно сложно продать как человеко-часы.
Следовательно, программистам лучше работать в продуктовых компаниях которые могут позволить себе R& D. Но нужно отдать должное реальному EPAM, который стремится к Outsourcing 3.0 со своими центрами компетенций, а минское комьюнити по Big Data решает очень интересные задачи и растит весьма уникальные компетенции (мне это г-н Добкин ещё пять лет назад пытался объяснить, только я тогда ничего не понял).
В наших СМИ начала циркулировать информация о какой-то тысяче качественных программистов, а остальные мол высококвалифицированные ПТУшники. Откуда г-н Бабарико взял цифру в тысячу программистов? Единственное, где я встречал этот magic number — интервью Дмитрия Гурского, который утверждает что в Беларуси только тысяча программистов на всю отрасль (пара процентов от общего числа) которые могут разобраться в области AI. Я с этим утверждением категорически не согласен: по моему мнению, в Беларуси тысяча программистов которые уже сейчас могут написать что-то интересное в этих областях, и 10-20 тысяч программистов, которые могут в этом разобраться, если будет потребность и такие задачи будут поставлены.
Так вот, к чему это я. Все интересные задачи в области искусственного интеллекта, машинного обучения, нейронных сетей, персонализации требуют знания алгоритмов. Адитья Бхаргава пробил очередное «дно», и объяснил O-большое, быструю сортировку, хеш-таблицы, поиск в ширину, алгоритм Дейкстры, жадные алгоритмы, динамическое программирование, о том как сделать правильный рекомендательный сервис (алгоритм k ближайших соседей), базовые принципы алгоритмов прогнозирования бирж и др… понятным даже восьмикласснице! И показал, куда при необходимости нужно копать дальше.
Мне кажется, что совсем скоро без этих базовых знаний в приличном обществе будет уже как-то некомфортно. И задачи на алгоритмы и структуры данных в Беларуси будут спрашивать не только в «Яндексе», а во всех приличных компаниях. Новые бизнес-модели потянут за собой Computer Science уже в новом качестве. Классическое академическое образование станет ещё более востребовано, и это очень хорошо.
P. S. Все примеры в книге Бхаргавы написаны на языке Python, я немного заморочился и теперь все примеры доступны и на Swift 3.0.2.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.