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

Пользователь

Отправить сообщение

«Чистый» код, ужасная производительность

Время на прочтение16 мин
Количество просмотров65K
Один из самых часто повторяемых советов программистам, особенно начинающим — это рекомендация писать «чистый» код. Она сопровождается длинным списком правил, сообщающих, что нужно делать, чтобы код был «чистым».

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

Если посмотреть на список правил «чистого» кода и вытащить из него правила, которые действительно влияют на структуру кода, то мы получим следующее:

  • Отдавайте предпочтение полиморфизму, а не «if/else» и «switch»
  • Код не должен знать о внутреннем устройстве объектов, с которыми он работает
  • Функции должны быть маленькими
  • Каждая функция должна выполнять одну задачу
  • Принцип «DRY» — Don’t Repeat Yourself («не повторяйся»)

Эти правила достаточно чётко формулируют то, как должен создаваться конкретный фрагмент кода, чтобы быть «чистым». Но я задам такой вопрос: если мы создадим фрагмент кода, соответствующий этим правилам, какова будет его производительность?
Читать дальше →
Всего голосов 221: ↑185 и ↓36+149
Комментарии368

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

Время на прочтение8 мин
Количество просмотров70K

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

Не ждите, пока он обустроится


Ему всё ещё не выдали монитор? Менеджер проекта так и не добрался до него, чтобы познакомить с продуктом, над которым работает команда? Его бейдж не работает и ему приходится просить коллег провести его в туалет? Это самое подходящее время встретиться с ним и объяснить все подробности нового проекта. Есть какой-то компонент, который он пока не освоил? Сэкономьте своё время и пока не объясняйте его — пусть разберётся самостоятельно после завершения проекта.
Читать дальше →
Всего голосов 111: ↑107 и ↓4+103
Комментарии80

Разработчик с мозгом груга

Время на прочтение14 мин
Количество просмотров86K

Введение


это сборник мыслей о разработке программ собранный разработчиком с мозгом груга

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

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

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

Ещё больше-больше ДУМАЮТ, что они разработчики с большим мозгом и им она тоже не понравится

(груг раньше думал груг с большим мозгом, но потом всё понял)

это ладно!

груг надеется, что тебе понравится читать и может ты научишься на много-много ошибка груг совершил за длинную жизнь программиста
Читать дальше →
Всего голосов 261: ↑235 и ↓26+209
Комментарии81

Распределённые транзакции Kafka + PostgreSQL средствами Spring

Время на прочтение9 мин
Количество просмотров23K

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

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

В этой статье рассмотрим подход к реализации распределённых транзакций (в рамках одного Java-приложения), которые охватывают Kafka и реляционную СУБД. Для этого воспользуемся средствами управления транзакциями, имеющимися в Spring.

Варианты с организацией eventual consistency с помощью типовых паттернов (Saga, Transactional Outbox и др.) и/или использования дополнительных платформ (Debezium, Kafka Connect и пр.) - тема для отдельной статьи (так что ждите продолжения). В этой статье тему затрагивать не будем. 

Читать далее
Всего голосов 46: ↑46 и ↓0+46
Комментарии15

Как мы избавились от 80% своего кода, повысив скорость разработки и уменьшив количество ошибок

Время на прочтение12 мин
Количество просмотров63K


Оптимизация кода и развитие микросервисной архитектуры занимает значительную часть жизни команды разработчиков МВидео-Эльдорадо. Тем любопытней изучить опыт коллег за рубежом. Предлагаем вашему вниманию очередной пост на тему: «А как там у них».
Читать дальше →
Всего голосов 98: ↑90 и ↓8+82
Комментарии101

IT — не для всех

Время на прочтение4 мин
Количество просмотров66K

Не ходите, девки, замуж! 
Ничего хорошего!..

Ребята, вы серьёзно? Хотите в ИТ? Извините, но вам тут не место…

Нет, мне не жалко вакансий для кого-то со стороны, благо их до боли много. Перманентно нахожусь в состоянии поиска специалистов, но их НЕТ!!! И проблема не в отсутствии желающих занять тёпленькое местечко, а в катастрофической нестыковке желаний с возможностями. И знаете что самое ужасное? Люди, порой, даже не осознают, что ИТ-специальность им не подходит от слова “совсем”. И для этого есть ряд причин, давайте разложим всё по пунктам: во-первых, отсутствие хард-скилов, во-вторых, отсутствие софт-скилов, и наконец, отсутствие врожденных способностей. Да, да, последняя фраза именно о главном - о том, что люди не равны с рождения. И да, в ИТ не может попасть каждый желающий, а причина этому - вы не так устроены с рождения. Уж простите! Но тут совершенно не на что обижаться! Я объясню…

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

>>>
Всего голосов 385: ↑266 и ↓119+147
Комментарии383

Почему твоя мама всё ещё не прогает?

Время на прочтение11 мин
Количество просмотров122K

Случай с бомжом

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

Обычно вместо денег я даю попрошайкам-мужчинам телефон отдела кадров одной курьерской компании, которая постоянно нуждается в сотрудниках. Но у него не было ног… Тогда я подумал: «Чувак, у тебя полным полно времени. Работа за компом — лучшее, что может случиться в твоей жизни. Купон со скидкой на курс по PHP — вот, что должны были положить тебе на койку туда, где раньше были ноги, когда ты очнулся после ампутации».

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

Читать далее
Всего голосов 304: ↑276 и ↓28+248
Комментарии468

В софте все всрато и становится еще всратее

Время на прочтение5 мин
Количество просмотров176K

Приветствую хабравчане!

Глава 1 - Нытье про то, что раньше было лучше

Десяток лет читаю Хабр, в основном разработка, программирование, старое железо и посты с адовым рейтингом. Видел несколько постов об ожирении сайтов, софта. О разочаровании в программировании с 2000+ постов. И пост, что в софте все ок, но никто не доволен или как оно там. А не важно. Хочу поделиться своими мыслями и наблюдениями на этот счет.

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

Читать далее
Всего голосов 630: ↑546 и ↓84+462
Комментарии1418

Почему принцип программирования на уровне интерфейсов в большинстве случаев ошибочен и приводит к плохой архитектуре

Время на прочтение3 мин
Количество просмотров41K

(Disclaimer!) Данная точка зрения не претендует на роль абсолютной истины и является лишь результатом моего опыта, чтения, наблюдений и размышлений.

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

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

Читать далее
Всего голосов 137: ↑112 и ↓25+87
Комментарии123

Почему экология не может быть плохой?

Время на прочтение15 мин
Количество просмотров11K

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

Читать далее
Всего голосов 40: ↑29 и ↓11+18
Комментарии58

Что такое устройство защиты от дугового пробоя (УЗДП) и с чем его едят?

Время на прочтение14 мин
Количество просмотров77K
Продолжаем тему современных устройств защиты для домашних электрощитов. На очереди Устройства защиты от дугового пробоя (УЗДП — формулировка из ГОСТ), они же «Устройства защиты от искрения» (УЗИс) они же  arc-fault detection device (AFDD), они же  arc-fault circuit interrupter (AFCI)… Имен много, а суть одна: это устройство призвано отключить линию, если обнаружится дуговой пробой где-то на линии. Это часть теоретическо-методическая. Тесты и расчленение устройств будет в продолжении.

Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии74

Насколько быстры компьютеры

Время на прочтение3 мин
Количество просмотров42K

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

Читать далее
Всего голосов 152: ↑151 и ↓1+150
Комментарии60

Катастрофы, с которыми я столкнулся в мире микросервисов

Время на прочтение9 мин
Количество просмотров27K

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

Когда пост Мартина Фаулера о микросервисах вышел в 2014 году, команды, в которых я работал, уже занимались SOA-приложениями. Эта статья и последующий хайп коснулись почти каждой команды разработчиков в мире. Стек Open Source-софта от Netflix был самым крутым в то время, поскольку позволял инженерам по всему миру перенимать опыт Netflix в распределенных системах. Если мы взглянем на работу разработчиков программного обеспечения сегодня, более шести лет спустя, большая её часть касается архитектуры микросервисов.

Читать далее
Всего голосов 78: ↑78 и ↓0+78
Комментарии23

Нельзя так просто взять и вычислить абсолютное значение

Время на прочтение4 мин
Количество просмотров33K

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


public static double abs(double value) {
  if (value < 0) {
    return -value;
  }
  return value;
}

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

Читать дальше →
Всего голосов 121: ↑118 и ↓3+115
Комментарии102

Генеральный конструктор vs Скрам-мастер

Время на прочтение5 мин
Количество просмотров40K
image

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

Я бы хотел рассказать о некоторых приемах древнего(доскрамового периода) менеджмента, которые позволяли добиваться таких результатов. Поднять в воздух на новом принципе железную бандуру размером с хрущевку и разогнать ее до пятисот киломtnров в час, по мне — это более творческая и технически сложная задача, чем открытие очередного интернет магазина, поэтому возможно стоит перенять опыт предков.
Читать дальше →
Всего голосов 157: ↑136 и ↓21+115
Комментарии209

Если у вас нашли SCRUM

Время на прочтение3 мин
Количество просмотров15K

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

Анамнез
Всего голосов 66: ↑59 и ↓7+52
Комментарии16

Посадите программиста в поток. Защищайте. Не мешайте. Наслаждайтесь

Время на прочтение5 мин
Количество просмотров36K
Нужна справка на каждого ребенка. Да, и согласие на обработку персональных данных. От каждого из родителей. Пусть и анкету каждый заполнит. Статистический отчет о том, сколько мальчиков и девочек. Да, и по возрастам. И по районам прописки. Ну и по школам. Разделите там, пожалуйста, обычные школы, лицеи и гимназии. Нет, педсовет пропускать нельзя. Это всего 4 часа. Раз в неделю. Да, всем педагогам надо прийти. Конечно, вам нужно работать еще и в детских садах. Каждому из вас. Трижды в неделю. И костюмы ваши нам не нравятся, нужно меньше красок – чего как попугаи-то?

Так, а почему новых постановок нет? Где победы на конкурсах? Что значит два месяца бегаете бумажки собираете? Какое еще творчество? И почему у вас на него времени нет? Какого еще секретаря вам нанять? Что значит «я ухожу»? Вы серьёзно думаете, что справитесь без нас? Что ж, удачи.

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

Случай запал в душу, т.к. я как раз проводил эксперимент (в очередной раз) по избавлению других творческих людей – программистов – от непрофильной, но «такой важной, нужной и обязательной работы» — успеванию в срок.
Читать дальше →
Всего голосов 106: ↑94 и ↓12+82
Комментарии118

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

Время на прочтение12 мин
Количество просмотров38K
Недавно наше внимание привлёк один вопрос, заданный на stackexchange.com. Этот вопрос был направлен на то, чтобы разобраться с влиянием скрама на работу программистов. Автор вопроса, пользователь Qiulang, поднимает довольно смелую тему: «Скрам превращает хороших разработчиков в программистов средней руки. Возможно ли это?».

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



Вопрос, о котором идёт речь, перешёл с workplace.stackexchange.com на softwareengineering.stackexchange.com. Это говорит о том, что программисты рассматривают соображения, связанные со скрамом и с его эффективностью, как нечто достаточно серьёзное, выходящее за рамки управления циклом разработки ПО. Они ощущают воздействие этого метода управления проектами на рабочую обстановку в целом.
Читать дальше →
Всего голосов 60: ↑54 и ↓6+48
Комментарии137

«Почему Kotlin хуже, чем Java?»

Время на прочтение6 мин
Количество просмотров75K

Такой провокационный вопрос задал реддитор nenemen в сабреддите Java:

«Я думаю о том, чтобы свой следующий проект сделать на Kotlin + Spring Boot, но мощь всенародной любви к Kotlin и одновременно ненависти к Java заставляют всё это походить на какой-то культ. Поэтому хотел бы услышать аргументы «против».

Мы в FunCorp в своё время сделали именно такой выбор в пользу Kotlin. И сегодня соотношение Java/Kotlin у нас составляет примерно 20 на 80, продолжая уменьшаться при каждом удобном случае. Поэтому ответы на этот вопрос меня заинтересовали, и я стал листать секцию комментариев. Там наткнулся на реплику реддитора rzwitserloot, которая мне показалась настолько взвешенной, многосторонней и рациональной, что я захотел поделиться ей с нашей командой, а заодно и читателями Хабра.

Далее перевод его аргументов.

Читать далее
Всего голосов 157: ↑143 и ↓14+129
Комментарии681

За что получает деньги наемный работник? Не понимаете? Сейчас поймете

Время на прочтение4 мин
Количество просмотров151K
«За что я плачу тебе деньги?» — обычный вопрос работодателя работнику, причем саркастический, как правило.

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

Читать дальше →
Всего голосов 234: ↑230 и ↓4+226
Комментарии888

Информация

В рейтинге
Не участвует
Откуда
Львов, Львовская обл., Украина
Зарегистрирован
Активность