Возможно, вы понимаете как писать хороший код, как придерживаться хорошего дизайна. Но структурировать эти знания не получается. Книга Джона Оустерхаута “A philosophy of software design” может помочь исправить это.
Она позволила структурировать знания, накопленные мною за 3 года работы разработчиком и исправить многие ошибки в понимании хорошего дизайна кода. Она помогла четче прояснить для себя, что же это такое.
Здесь я хочу сделать краткое изложение всей книги в виде заметок, которые я записывал, когда читал её.
Как говорили классики, «я знал, что рано или поздно мы дойдем и до этого». Вот и я спустя много лет спокойной жизни с Symfony в рабочих и ReactPHP в пет-проектах вписался в создание своего фреймворка.
Но его история только начинается. А как было у тех, чье детище доросло до продакшн-уровня, но так и осталось нишевым решением? Я нашел человека, который знает ответ на этот вопрос — автора и ведущего разработчика аспектно-ориентированного фреймворка.
Всемирная организация здравоохранения недавно обновила определение профессионального выгорания в своем справочнике медицинских диагнозов. На фоне развития удаленной работы из-за коронавируса симптомы заболевания стали появляться всё чаще. Раньше выгорание характеризовали как «синдром общего стресса». Теперь — как «синдром… возникающий в результате хронического стресса на рабочим месте, с которым не удалось успешно справиться». ВОЗ описывает три симптома выгорания на работе:
28 августа американская компания NuScale Power получила одобрение Комиссии по ядерному регулированию США на конструкцию первого малого модульного реактора. Текущая модель рассчитана на 50 мегаватт энергии, а уже в 2022 году будет рассмотрена заявка на реактор мощностью в 60 мегаватт.
Стартап NuScale Power призывает отказаться от больших реакторов, основы современных АЭС. Вместо этого разработчики предлагают небольшие модульные реакторы, которые можно производить на заводе, а потом транспортировать на место строительство электростанции. Стандартная АЭС такого типа будет состоять из 12 малых реакторов. По словам разработчиков, малые реакторы гораздо безопаснее обычных. Кроме того, они могут использоваться в небольших городах, на промышленных объектах и подводных лодках.
Каждый из нас хотя бы раз в жизни видел программиста (сами себя они предпочитают называть разработчиками). Как правило, программисты довольно замкнутые, очень пугливые и любят подолгу смотреть в монитор. Они – либо следующая ступень эволюции человечества, либо предыдущая. Они плохо умеют разговаривать, но очень хорошо понимают человеческую речь и компьютерные сигналы. В этой статье я хочу рассказать, как заставить ваших разработчиков работать лучше, при этом не доставляя им никакого дискомфорта и не пугая их. А для этого вам необходимо будет запомнить несколько правил.
ARM-процессоры занимают новые для себя ниши. Это уже давно не только маломощные чипы с минимальным энергопотреблением. Недавно анонсировано третье поколение ARM-процессоров Thunder-X, о чем мы уже рассказывали. Теперь представлен процессор, который превосходит все предыдущие решения в серии R.
Он предназначен для работы в real-time системах, которые должны быть крайне надежными. Т.е. речь идет про оборудование, которое эксплуатируется в экстремальных условиях. Это промышленность, медицина, службы спасения и т.п.
Вернёмся года на два назад, когда я был разработчиком. Что я думал? «Хочу стать тимлидом. Это круто, он решает все вопросы, получает больше денег, им становятся после сеньора». Тогда не было никого, кто сказал бы мне: это вообще про другое. Пришлось учиться на своих ошибках.
Я дважды становился тимлидом
У меня есть такая черта: стараться во всем наводить идеальный порядок, систематизировать, выстраивать процессы. Поэтому меня всегда тянуло брать на себя больше, чем просто написание кода. В моём первом стартапе, назовем его «T», был полный хаос в процессах разработки.
Эволюция веба на протяжении последнего десятилетия отражает развитие американской экономики. Все ключевые показатели движутся на графиках «вверх и вправо», стабильный поток фундаментальных прорывов обеспечивает ощущение «прогресса», но в действительности удобство работы и влияние технологий на людей стагнирует или даже регрессирует.
Этот кризис влияет на платформы, творцов и потребителей.
Американский стартап Nano Diamond Battery представил прототип бета-гальванической батареи, которая способна проработать тысячи лет. Это не теория, сейчас разработку переводят на коммерческую основу. Несколько недель назад разработчик завершил тестирование, убедившись в работоспособности системы. Первые батареи такого типа появятся в продаже в конце этого года. Инвестором разработчиков выступил стартап-инкубатор Volkswagen Future Mobility.
Разработка представляет собой специальный корпус из синтетических алмазов, внутрь которого помещен радиоактивный сердечник. В процессе неупругого рассеивания бета-излучение изотопов преобразуется в электрический ток. В качестве топлива используются переработанные ядерные отходы углерода-14. Этот изотоп применяется для радиоизотопного датирования и диагностики некоторых заболеваний желудочно-кишечного тракта. Он также накапливается в графитовых деталях ядерных реакторов, которые поглощают излучение ядерных топливных стержней. Хранить такие отходы опасно, дорого и трудно. Батареи на углероде-14 решают сразу две проблемы — недолговечность обычных элементов питания и переработки радиоактивных отходов.
Пару недель назад мы провели онлайн-квест для хакеров: построили комнату, которую заполнили умными устройствами и запустили из нее YouTube-трансляцию. Игроки могли управлять IoT-девайсами с сайта игры; целью было найти запрятанное в комнате оружие (мощную лазерную указку), хакнуть его и устроить в комнате короткое замыкание.
Чтобы добавить остросюжетности, мы поставили в комнате шредер, в который загрузили 200 000 рублей: шредер съедал по купюре в час. Выиграв игру, можно было остановить шредер и забрать все оставшиеся деньги.
Недавно мы объявили на Хабре, что начинаем принимать заявки на Яндекс.Алгоритм и другие треки чемпионата по программированию Yandex Cup. Уже много лет онлайн-соревнования Яндекса и других компаний проходят на платформе Контест. Меня зовут Павел Тыквин, я один из разработчиков Контеста. Основная задача нашей платформы — получить от участника чемпионата исходный код решения, скомпилировать и запустить этот код, прогнать тесты и вернуть результат. Звучит не очень сложно. Давайте попробуем.
int main()
{
int n = 500000000;
int *a = new int[n + 1];
for (int i = 0; i <= n; i++)
a[i] = i;
for (int i = 2; i * i <= n; i++)
{
if (a[i]) {
for (int j = i*i; j <= n; j += i) {
a[j] = 0;
}
}
}
delete[] a;
return 0;
}
Важно: для комфортного прочтения статьи нужно уметь читать исходный код на Rust и понимать, почему оборачивать всё в Rc<RefCell<...>> — плохо.
Введение
Rust не принято считать объектно-ориентированным языком: в нём нет наследования реализации; инкапсуляции на первый взгляд тоже нет; наконец, столь привычные ООП-адептам графы зависимостей мутабельных объектов здесь выглядят максимально уродливо (вы только посмотрите на все эти Rc<RefCell<...>> и Arc<Mutex<...>>!)
Правда, наследование реализации уже как несколько лет считают вредным, а гуру ООП говорят очень правильные вещи вроде "хороший объект — иммутабельный объект". Вот мне и стало интересно: насколько хорошо объектное мышление и Rust сочетаются друг с другом на самом деле?
Первым подопытным кроликом станет паттерн State, чистой реализации которого и посвящена эта статья.
Недавно один из моих знакомых инженеров устраивался на работу в Facebook. Он успешно прошел несколько кругов собеседований, его позвали на собеседование в офис, и уже там на этапе leadership and drive что-то пошло не так. Как признавался знакомый позднее, отвечать на вопросы в виде «как вы сработались со сложным коллегой» или «как вы добивались целей в токсичной обстановке» он был не очень готов.
Именно подобные вопросы позволяют оценить так называемые гибкие навыки (soft skills) инженеров. История собеседования в Facebook меня сильно заинтересовала, поэтому я решил изучить тему soft skills, их проверки и тренировки поподробнее. Бонусом прикладываю список полезных ресурсов и статей, на которые наткнулся в процессе подготовки материала. Поехали!
Не так давно я прочитал интересную статью о том, как стать тимлидом и что нужно делать в этой роли. И мне захотелось рассказать про следующую ступень развития — в качестве менеджера и руководителя IT-отдела или IT-директора в небольшой компании.
Привет Хабр! Сегодня в рамках курса продакт-менеджмента от Acronis мы поговорим о том, как нужно позиционировать продукт, и чем это отличается от позиционирования бренда. Кроме этого, речь пойдет об уникальных компетенциях, конкурентных преимуществах и о том, что является самой большой ценностью для бизнеса на высококонкурентных рынках. Всех заинтересованных приглашаю под кат!
Работу с колоночными базами данных я начал с BigQuery. Когда пришлось “переехать” на Clickhouse я был неприятно удивлен фактом отсутствия полноценных оконных функций. Есть, конечно, множество функций по работе с массивами, функций высшего порядка и прочие функции (одна функция runningDifferenceStartingWithFirstValue чего стоит). Сразу на ум приходит победитель 1999 года на звание самого длинного слова Donaudampfschifffahrtsgesellschaftskapitänswitwe. Что в переводе с немецкого означает «вдова капитана пароходного общества на Дунае».
Поиск по словосочетанию “оконные функции в Clickhouse” не дает вразумительных результатов. Эта статья является попыткой обобщить разрозненные данные из интернета, примеры с ClickHouseMeetup и собственный опыт.
Не секрет, что чем крупнее программный проект, тем больше его успех зависит от результатов работы аналитиков, в частности, от выбора правильной стратегии составления и согласования проектных решений. Однако как организовать работу этих творческих сотрудников? И как сделать так, чтобы результаты их деятельности были одинаково понятны как представителям заказчика, так и программистам? Как оценить возможные сроки выполнения и значимость этой работы для проекта? В этой статье я попытался сформулировать свои рецепты оптимизации управления аналитической работой на проектах по созданию программного обеспечения для государственных заказчиков. Приветствуется любая критика.
«Чего рассуждать, делать надо!», «Нечего бумагу марать», «Это всё хорошо только на словах» – многим пишущим людям не раз приходилось сталкиваться с таким пренебрежительным отношением к своему труду. А зря. Порой слово – это вполне себе действие, а точнее импульс к тому, чтобы в реальной жизни произошли значительные изменения. Печатные статьи действительно могут спасать или губить жизни людей и корпораций, и сегодня мы хотим поделиться с вами топовыми историями о том, как публицисты с 1850-х до 2000-х меняли мир с помощью своего пера.
Так как ClickHouse является специализированной системой, при его использовании важно учитывать особенности его архитектуры. В этом докладе Алексей расскажет о примерах типичных ошибок при использовании ClickHouse, которые могут привести к неэффективной работе. На примерах из практики будет показано, как выбор той или иной схемы обработки данных может изменить производительность на порядки.