Моя локальная теория: написание тестов это способность подвергать свои убеждения проверке.
Программист, который не тестирует код: уверен в том, что его код работает, всегда будет работать, и ничего никогда не изменится. Он просто не может ошибаться.
Программист, который тестирует код: больше четырех строчек? Пора писать тест. Не покрыто тестами? Вообще хрен знает, что оно делает, никаких гарантий. Работает сейчас? Завтра сломается. Я написал это? Тестируем вдвое больше.
Программист, который не тестирует код: уверен в том, что его код работает, всегда будет работать, и ничего никогда не изменится. Он просто не может ошибаться.
Программист, который тестирует код: больше четырех строчек? Пора писать тест. Не покрыто тестами? Вообще хрен знает, что оно делает, никаких гарантий. Работает сейчас? Завтра сломается. Я написал это? Тестируем вдвое больше.
Реплай Сереге (https://t.me/seryogaBombit/55).
Когда я пришел на свою текущую работу там не писали тесты. Когда я стал указывать на болото технического долга и чудесный эффект тестов, мне предъявили этот аргумент: "Это что, в два раза больше кода писать теперь? И еще поддерживать код тестов?" Это справедливое опасение, но на самом деле, парадоксально, тесты не добавляют времени работы. Возможно дело в том, что ловля багов в коде без тестов занимает примерно столько же, или в чем-то ещё. Просто я с тестами и я без тестов пишу код одинаково быстро. Дело в том, что написание тестов это не какая-то отдельная работа, а часть написания основного кода. Часто сижу такой: "Блин, че оно вообще должно делать?", начинаю писать тест и сразу понимаю, и заодно замечаю еще пару новых кейсов, которые надо покрыть. Потом дорабатываешь код, чтобы тест проходил, понимаешь что на еще один кейс теста не хватает, дорабатываешь тесты, и так далее. Медитативный циклический процесс
Когда я пришел на свою текущую работу там не писали тесты. Когда я стал указывать на болото технического долга и чудесный эффект тестов, мне предъявили этот аргумент: "Это что, в два раза больше кода писать теперь? И еще поддерживать код тестов?" Это справедливое опасение, но на самом деле, парадоксально, тесты не добавляют времени работы. Возможно дело в том, что ловля багов в коде без тестов занимает примерно столько же, или в чем-то ещё. Просто я с тестами и я без тестов пишу код одинаково быстро. Дело в том, что написание тестов это не какая-то отдельная работа, а часть написания основного кода. Часто сижу такой: "Блин, че оно вообще должно делать?", начинаю писать тест и сразу понимаю, и заодно замечаю еще пару новых кейсов, которые надо покрыть. Потом дорабатываешь код, чтобы тест проходил, понимаешь что на еще один кейс теста не хватает, дорабатываешь тесты, и так далее. Медитативный циклический процесс
Telegram
Серега Бомбит
Локальная теория кодера с завода:
Ненаписание тестов может также быть способностью подвергать свои убеждения проверке при отсутствии времени на эти самые проверки.
Я работаю на zavod, программирование не моя специальность, по должности я вообще инженер-конструктор…
Ненаписание тестов может также быть способностью подвергать свои убеждения проверке при отсутствии времени на эти самые проверки.
Я работаю на zavod, программирование не моя специальность, по должности я вообще инженер-конструктор…
Forwarded from STACK MORE LAYERS (Alexander Mamaev)
🌤ODS Summer of Code 🌞
Стартовала летняя школа проектов в сфере DL от ODS. Суть примерно та же, как и в Google Summer of Code. Записываетесь на проект, пилите в рамках него крутые и полезные задачки, а в конце получаете всякие ништяки и гору опыта.
Среди проектов есть и мой 🌚, пусть пока и не очень развитый, но есть шанс это исправить!
https://ods.ai/tracks/summer-of-code-2021
Стартовала летняя школа проектов в сфере DL от ODS. Суть примерно та же, как и в Google Summer of Code. Записываетесь на проект, пилите в рамках него крутые и полезные задачки, а в конце получаете всякие ништяки и гору опыта.
Среди проектов есть и мой 🌚, пусть пока и не очень развитый, но есть шанс это исправить!
https://ods.ai/tracks/summer-of-code-2021
Forwarded from OpenDataScience RU
Мы запустили первую Летнюю школу ODS Summer of Code! 🔥
Вдохновившись GSoC, наша школа на 100% состоит из проектов и практики. Хотите что-то по-настоящему поделать своими руками — ждём вас!
Уже в эту субботу, 17 июля, мы устроим onboarding в Spatial.Chat ODS, где вы сможете задать вопросы организаторам и поболтать с другими участниками. Пароль доступен на странице Феста в разделе “Нетворкинг”. Да, школа — прямое продолжение Data Fest 2021. Если вы уже зарегистрировались - вперёд выбирать проекты себе по интересам.
Вас ждут 3 направления проектов:
⚒️ Open Source — проекты открытых библиотек, которым вы можете помочь: LightAutoML, Catalyst, Deep Pavlov, scikit-uplift и DVC.
🔮 Open Science — исследовательские проекты с крутейшими ML задачами: RL среда для Heroes 3, твиты на языке урду, ML в маммографии, metric learning с Qdrant, community baseline в Про//Чтение, и онлайн галерея ML Art.
😇 ML4SG — проекты, которые делают мир чуть лучше: можно помочь фонду Lacmus в поиске пропавших людей, вместе с MaritimeAI поработать над сегментацией морского льда, или поддержать NewsVis во множестве их задач.
🤝 Наши партнеры Intel® и Sbercloud подготовили для вас совместный трек Cloud Сity и дали возможность всем участникам школы попробовать свои крутые инструменты как oneAPI ☁️
И это ещё не всё!
У нашей школы уже есть призовой фонд более 💰1,000,000 рублей! Но и 👕мерч для победителей и самых активных участников тоже будет. Все подробности тут. Присоединяйтесь! 💫
Вдохновившись GSoC, наша школа на 100% состоит из проектов и практики. Хотите что-то по-настоящему поделать своими руками — ждём вас!
Уже в эту субботу, 17 июля, мы устроим onboarding в Spatial.Chat ODS, где вы сможете задать вопросы организаторам и поболтать с другими участниками. Пароль доступен на странице Феста в разделе “Нетворкинг”. Да, школа — прямое продолжение Data Fest 2021. Если вы уже зарегистрировались - вперёд выбирать проекты себе по интересам.
Вас ждут 3 направления проектов:
⚒️ Open Source — проекты открытых библиотек, которым вы можете помочь: LightAutoML, Catalyst, Deep Pavlov, scikit-uplift и DVC.
🔮 Open Science — исследовательские проекты с крутейшими ML задачами: RL среда для Heroes 3, твиты на языке урду, ML в маммографии, metric learning с Qdrant, community baseline в Про//Чтение, и онлайн галерея ML Art.
😇 ML4SG — проекты, которые делают мир чуть лучше: можно помочь фонду Lacmus в поиске пропавших людей, вместе с MaritimeAI поработать над сегментацией морского льда, или поддержать NewsVis во множестве их задач.
🤝 Наши партнеры Intel® и Sbercloud подготовили для вас совместный трек Cloud Сity и дали возможность всем участникам школы попробовать свои крутые инструменты как oneAPI ☁️
И это ещё не всё!
У нашей школы уже есть призовой фонд более 💰1,000,000 рублей! Но и 👕мерч для победителей и самых активных участников тоже будет. Все подробности тут. Присоединяйтесь! 💫
Более подробный пост, чтобы по ссылкам не пришлось ходить. Я никак не связан с ODS и это не реклама, но проекты правда мега крутые (и я даже не про обучение нейронок играть в 3 героев), так что не жалко репостнуть два раза.
В последнее время я много собеседуюсь и вдруг понял: самое важное это показать работодателю, что ты уже делаешь то, что надо будет делать на работе.
Я собеседуюсь на рисерч позиции и люди заметно теплеют когда слышат, что я уже читаю статьи, я уже пишу статьи, и мне только надо, чтобы кто-то рядом тоже писал статьи, и ещё чтобы за это платили.
Я неосознанно использовал это ещё в 2016 когда, только вернувшись из армии, устраивался бекендером. У меня был околонулевой релевантный опыт (работа JS и Java разработчиком, менее года в сумме, на полставки, в ноунейм компаниях). Устроился сразу мидлом на 80к. А все потому что на собеседованиях быстро выяснялось, что я уже делаю сайты, уже гоняю таски в канбане, уже пользуюсь Git, итд. Получалось, что меня можно просто посадить за рабочий комп, и я буду приносить пользу (Ну еще устроился потому, что до этого готовился полгода как проклятый).
Такой же совет я слышал со стороны работодателя на тему, когда надо давать сотруднику повышение. Ответ: когда он уже выполняет обязанности более высокой роли.
Я собеседуюсь на рисерч позиции и люди заметно теплеют когда слышат, что я уже читаю статьи, я уже пишу статьи, и мне только надо, чтобы кто-то рядом тоже писал статьи, и ещё чтобы за это платили.
Я неосознанно использовал это ещё в 2016 когда, только вернувшись из армии, устраивался бекендером. У меня был околонулевой релевантный опыт (работа JS и Java разработчиком, менее года в сумме, на полставки, в ноунейм компаниях). Устроился сразу мидлом на 80к. А все потому что на собеседованиях быстро выяснялось, что я уже делаю сайты, уже гоняю таски в канбане, уже пользуюсь Git, итд. Получалось, что меня можно просто посадить за рабочий комп, и я буду приносить пользу (Ну еще устроился потому, что до этого готовился полгода как проклятый).
Такой же совет я слышал со стороны работодателя на тему, когда надо давать сотруднику повышение. Ответ: когда он уже выполняет обязанности более высокой роли.
Forwarded from Just links
Per-Pixel Classification is Not All You Need for Semantic Segmentation https://arxiv.org/abs/2107.06278
Forwarded from Серёга Бомбит
Однажды один корейский босс поспорил, что напишет самый грустный рассказ об алгоритмах обработки данных с датчиков. Он выиграл спор [1]:
A number of algorithms have been proposed in the past for processing the outputs from such arrays. Two algorithms, Maximum Likelihood and Signal Reconstruction with Kalman Filtering were developed in the 4th Framework WAVE project. However, it was concluded (Dolcemascolo 1999) that the results were not significantly more accurate than taking a simple average of the
multiple measurements.
____________
Нет для исследователя большего унижения, когда разработанный хитрющий алгоритм может быть избит в хламину простым осреднением....
[1] O'Brien, E. J., Gonzalez, A., & McInerney, F. (2008, May). A Statistical Spatial Repeatability Algorithm for Multiple Sensor Weigh-in-Motion. In International Conference on Heavy Vehicles, Paris, France, 19-22 May 2008. Wiley.
A number of algorithms have been proposed in the past for processing the outputs from such arrays. Two algorithms, Maximum Likelihood and Signal Reconstruction with Kalman Filtering were developed in the 4th Framework WAVE project. However, it was concluded (Dolcemascolo 1999) that the results were not significantly more accurate than taking a simple average of the
multiple measurements.
____________
Нет для исследователя большего унижения, когда разработанный хитрющий алгоритм может быть избит в хламину простым осреднением....
[1] O'Brien, E. J., Gonzalez, A., & McInerney, F. (2008, May). A Statistical Spatial Repeatability Algorithm for Multiple Sensor Weigh-in-Motion. In International Conference on Heavy Vehicles, Paris, France, 19-22 May 2008. Wiley.
Внезапно назрел комментарий к отличному посту Сереги про неравномерности в науке. Там Серега пишет, что в Computer Science ребята делают для одной работы целый тестбенч для воспроизводимых экспериментов и это просто базовый уровень, а в каком-нибудь материаловедении разультаты в статьях не воспроизводимы вообще: "лол, ну если найдете где-нибудь установку для плазменного напыления - велкам))))".
Текущий ML/DL на самом деле ближе к материаловедению. В топовых статьях (которые предлагают новые архитектуры нейронок и подходы, влияющие на всю сферу) хорошо описаны эксперименты, но воспроизвести их невозможно, потому что внутри у них есть:
1. Инхауз датасет в 300 раз больше ImageNet, например JFT-300M у Гугла.
2. "Мы учили нашу нейронку 6 месяцев с помощью распределенного обучения на 1000 GPU и размером батча 8976".
3. 300 PhD студентов для оптимизации гиперпараметров.
То есть ты теоретически можешь написать свою реализацию метода, но ты никак не можешь провести те же самые эксперименты и узнать, получишь ты те же результаты, что Google/OpenAI/Microsoft или нет.
Текущий ML/DL на самом деле ближе к материаловедению. В топовых статьях (которые предлагают новые архитектуры нейронок и подходы, влияющие на всю сферу) хорошо описаны эксперименты, но воспроизвести их невозможно, потому что внутри у них есть:
1. Инхауз датасет в 300 раз больше ImageNet, например JFT-300M у Гугла.
2. "Мы учили нашу нейронку 6 месяцев с помощью распределенного обучения на 1000 GPU и размером батча 8976".
3. 300 PhD студентов для оптимизации гиперпараметров.
То есть ты теоретически можешь написать свою реализацию метода, но ты никак не можешь провести те же самые эксперименты и узнать, получишь ты те же результаты, что Google/OpenAI/Microsoft или нет.
Telegram
Серега Бомбит
О неравномерностях в науке
Рассмотрим двух ученых X и Y
Ученый X занимается материаловедением при хайповой лабе, где все оборудование стоит больше, чем годовой бюджет российского городка средней руки.
Ученый Y занимается computer science, конкретнее, разрабатывает…
Рассмотрим двух ученых X и Y
Ученый X занимается материаловедением при хайповой лабе, где все оборудование стоит больше, чем годовой бюджет российского городка средней руки.
Ученый Y занимается computer science, конкретнее, разрабатывает…
Forwarded from Figure 1
KagNet parses concepts from a question-answer pair, builds a knowledge graph of relations between concepts, and uses attention to weight the strength of relations in this question context. Finally, it picks the answer with the strongest relation.
KagNet attempts commonsense reasoning by combining information from a knowledge graph and BERT embeddings of the question.
By using the ConceptNet knowledge graph authors try to integrate knowledge into a NN. For some extracted concepts (pen, ink, write) they extract a minimal spanning subgraph cowering all question and answer concepts. They apply a GCN to the subgraph, and LSTM to paths between question concepts and answer concepts, and finally attention.
They train and test on the CommonsenseQA dataset (34.57% accuracy vs 88.9% by humans, no skynet yet), then apply the model to SWAG and WSC datasets without retraining. The model appears to transfer well, unlike pure language-model based approaches.
KagNet, Lin et al., EMNLP-IJCNLP 2019
KagNet attempts commonsense reasoning by combining information from a knowledge graph and BERT embeddings of the question.
By using the ConceptNet knowledge graph authors try to integrate knowledge into a NN. For some extracted concepts (pen, ink, write) they extract a minimal spanning subgraph cowering all question and answer concepts. They apply a GCN to the subgraph, and LSTM to paths between question concepts and answer concepts, and finally attention.
They train and test on the CommonsenseQA dataset (34.57% accuracy vs 88.9% by humans, no skynet yet), then apply the model to SWAG and WSC datasets without retraining. The model appears to transfer well, unlike pure language-model based approaches.
KagNet, Lin et al., EMNLP-IJCNLP 2019
# Строим концлагерь по Scrum
"Мы делаем свой фреймворк для вычислений на больших графах", рассказывает мне тимлид в Х-компании.
"Очень интересно",- говорю я.
"Китайцы явно хотят всех объединить в один граф. Если забыть, о том, что это китайцы, и представить, что это просто узлы, то...",- продолжает тимлид.
Мне никогда раньше не было страшно на собеседовании. Но в этот раз внутри похолодело. "Проектирование этой печи очень интересная, уникальная задача... если забыть, что в ней сжигают людей",- вот, что я услышал.
Меня позвали в офис познакомиться с командой исследовательского центра Х-компании, показать условия, убедить меня принять офер. Они рассказывали о своих задачах: занимаются фундаментальной наукой с такими ресурсами, как не получится даже в университетах. Одна из команд изучает методы нейроморфных вычислений: как делать нейронные сети без обратного распространения ошибки. ML/DL давно вышел на плато и явно нужен какой-то качественный сдвиг для дальнейшего продвижения, и эти ребята занимаются одной из вещей, которая может им стать. Очень круто.
Я очень люблю методы на графах. Вы знали, что бесполезно скрывать свой возраст в соцсетях? Возьмите возраст всех своих друзей, у которых он открыт, усредните и получится ваш возраст с минимальной ошибкой. Так можно восстановить любой признак, и это ещё самое тривиальное применение вычислений на графах. После фразы тимлида я вдруг осознал, как легко задача вычислений на графах преобразуется в задачу построения кибер-гулага. И это происходит не где-то в научной фантастике, и не в далеком будущем, и даже не в Северой Корее, а прямо здесь и сейчас. "Как это остановить?",- вот о чём я думал до конца встречи. Не этих конкретных людей. Не эти так другие. Как остановить всё ЭТО?
Мне рассказывали про процесс: таски в канбане, agile и scrum, юнит-тесты, KPI и ревью, выступления на конференциях, конкуренция между отделами, динамичные кросс-функциональные команды. И про специфику: когда-то в Российском офисе Х-компании сидел специальный китаец, который мониторил по камерам как ты работаешь, и вежливо задавал вопросы, если ты отходил на лишний час. Работа была по часам, нужно было писать объяснительные за опоздания. Я слышу: они взяли наши скрамы, аджайлы, конкуренцию и капитализм, вовзвели всё это в людоедский абсолют и поставили на службу построения антиутопии. Копают эту яму для всех нас ребята с таким подходом: "Если забыть о том, что это китайцы...". Как это остановить? Возможно ли это остановить?
Вайбы корпорации зла Arasaka были такие, что я впал в полную дереализацию. Мне представился железный монстр-левиафан, переплетение проводов, парящий над нами. Он одержим абсолютным контролем над жизнью. Внизу копошатся послушники, строят ему портал в наш мир. Каждый считает, что просто работает за спортазл, ДМС и годовой бонус. Работа как работа. И всё, что они в итоге могут получить, это право быть сожранными первее остальных.
В моих правилах есть несколько вещей, которые легальны, но заниматься ими зашкварно: алготрейдинг, микрозаймы, казино и ставки, некоторые видеоигры, любая слежка и face recognition. Пришло время добавить к этому социальные графы.
"Мы делаем свой фреймворк для вычислений на больших графах", рассказывает мне тимлид в Х-компании.
"Очень интересно",- говорю я.
"Китайцы явно хотят всех объединить в один граф. Если забыть, о том, что это китайцы, и представить, что это просто узлы, то...",- продолжает тимлид.
Мне никогда раньше не было страшно на собеседовании. Но в этот раз внутри похолодело. "Проектирование этой печи очень интересная, уникальная задача... если забыть, что в ней сжигают людей",- вот, что я услышал.
Меня позвали в офис познакомиться с командой исследовательского центра Х-компании, показать условия, убедить меня принять офер. Они рассказывали о своих задачах: занимаются фундаментальной наукой с такими ресурсами, как не получится даже в университетах. Одна из команд изучает методы нейроморфных вычислений: как делать нейронные сети без обратного распространения ошибки. ML/DL давно вышел на плато и явно нужен какой-то качественный сдвиг для дальнейшего продвижения, и эти ребята занимаются одной из вещей, которая может им стать. Очень круто.
Я очень люблю методы на графах. Вы знали, что бесполезно скрывать свой возраст в соцсетях? Возьмите возраст всех своих друзей, у которых он открыт, усредните и получится ваш возраст с минимальной ошибкой. Так можно восстановить любой признак, и это ещё самое тривиальное применение вычислений на графах. После фразы тимлида я вдруг осознал, как легко задача вычислений на графах преобразуется в задачу построения кибер-гулага. И это происходит не где-то в научной фантастике, и не в далеком будущем, и даже не в Северой Корее, а прямо здесь и сейчас. "Как это остановить?",- вот о чём я думал до конца встречи. Не этих конкретных людей. Не эти так другие. Как остановить всё ЭТО?
Мне рассказывали про процесс: таски в канбане, agile и scrum, юнит-тесты, KPI и ревью, выступления на конференциях, конкуренция между отделами, динамичные кросс-функциональные команды. И про специфику: когда-то в Российском офисе Х-компании сидел специальный китаец, который мониторил по камерам как ты работаешь, и вежливо задавал вопросы, если ты отходил на лишний час. Работа была по часам, нужно было писать объяснительные за опоздания. Я слышу: они взяли наши скрамы, аджайлы, конкуренцию и капитализм, вовзвели всё это в людоедский абсолют и поставили на службу построения антиутопии. Копают эту яму для всех нас ребята с таким подходом: "Если забыть о том, что это китайцы...". Как это остановить? Возможно ли это остановить?
Вайбы корпорации зла Arasaka были такие, что я впал в полную дереализацию. Мне представился железный монстр-левиафан, переплетение проводов, парящий над нами. Он одержим абсолютным контролем над жизнью. Внизу копошатся послушники, строят ему портал в наш мир. Каждый считает, что просто работает за спортазл, ДМС и годовой бонус. Работа как работа. И всё, что они в итоге могут получить, это право быть сожранными первее остальных.
В моих правилах есть несколько вещей, которые легальны, но заниматься ими зашкварно: алготрейдинг, микрозаймы, казино и ставки, некоторые видеоигры, любая слежка и face recognition. Пришло время добавить к этому социальные графы.
👍2
Борис опять pinned «# Строим концлагерь по Scrum "Мы делаем свой фреймворк для вычислений на больших графах", рассказывает мне тимлид в Х-компании. "Очень интересно",- говорю я. "Китайцы явно хотят всех объединить в один граф. Если забыть, о том, что это китайцы, и представить…»
Серега (https://t.me/seryogaBombit) включи уже комментарии, чтобы можно было орать в них
Я конечно ничего не понимаю в RL, но уже пол статьи прочитал. Это очень круто. Позже будет обзор (когда я нагуглю все непонятные слова)