Pull to refresh
0
Павел Баранов @PavelABread⁠-⁠only

Инженер-программист

Send message

Приплюснутый, плюсы и «кресты»: за что мы любим и ненавидим C++

Reading time8 min
Views20K

В конце прошлого года 71 год исполнился Бьерну Страуструпу – создателю C++, одного из самых сложных и интересных языков программирования. Мы в ABBYY любим C++, ведь он лежит в основе и наших технологий компьютерного зрения, и используется в алгоритмах обработки естественного языка, да и опенсорсная библиотека ABBYY NeoML опирается на «плюсы».

По случаю дня рождения Бьерна Страуструпа мы поговорили с Дмитрием, руководителем группы разработчиков, которые создают в компании технологии для интеллектуального анализа бизнес-процессов. Мы уже немного рассказывали об этом решении в одном из постов. Дима работает на C++ уже 15 лет, начинал еще до того, как появился так называемый modern C++ (C++11/14 и выше). Он рассказал о том, как впервые столкнулся с C++, какие возможности есть у этого языка и что советует тем, кто только начинает погружаться в его основы или хочет прокачаться в теме.

Читать далее
Total votes 21: ↑18 and ↓3+19
Comments114

Как измерять производительность инженерных команд

Reading time4 min
Views3.9K

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

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

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

Читать далее
Total votes 2: ↑1 and ↓10
Comments5

Почему, работая бесплатно, мы получаем больше

Reading time6 min
Views15K

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

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

Не все так однозначно и ниже объясню почему. Во-первых, этот пост основан на моем собственном опыте, а также опыте знакомых, которые в IT уже 15 и более лет.

И всем нам, тезис "работать бесплатно" приносит свои плоды до сих пор.

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

Ну давай, расскажи нам
Total votes 25: ↑20 and ↓5+19
Comments51

Если вы не нанимаете джунов, то не заслуживаете сеньоров

Reading time9 min
Views53K
Позвольте рассказать вам историю об одной очень успешной компании, совершившей большую, глупую ошибку:
Мы не нанимаем младших программистов и интернов… Если не заводить щенка, не придётся убирать лужи.
--Netflix

Я был совершенно поражён, как некое корпоративное нечто умудрилось представить щенков в отрицательном свете, да ещё кого-то этим убедило. Щенки — самые чистые создания на Земле, живая пушистая радость! Лучики света в одиноком мире. Но перейдём к сути.

Многие компании последовали данной стратегии «нанимать только сеньоров». Они обосновывают это так:
  • У нас нет времени и ресурсов нанимать младших программистов; мы слишком быстро развиваемся.
  • Наша компания может себе позволить сеньоров, так что в джунах нет необходимости.
  • На текущем этапе мы не можем позволить себе ошибки. Ставки слишком высоки.
  • Наш процесс предоставляет сотрудникам большую автономность. Мы не готовы держать джунов за ручку, как они в том нуждаются.
  • Мы хотим заложить фундамент продукта прежде, чем начнём нанимать неопытных сотрудников.
Читать дальше →
Total votes 81: ↑71 and ↓10+61
Comments281

OCP против YAGNI

Reading time9 min
Views8.4K

Эта статья является переводом материала OCP vs YAGNI.

В этом посте хочется осветить тему OCP и YAGNI – противоречия между принципом открытости/закрытости и принципом «вам это не понадобится».

Давайте начнем с того, что вспомним, что такое OCP. Принцип открытости/закрытости гласит, что: Объекты программного обеспечения (классы, модули, функции и т.д.) должны быть открыты для расширения, но закрыты для модификации.

Впервые он был представлен Бертраном Мейером в его канонической книге «Конструирование объектно-ориентированного программного обеспечения». С тех пор его популяризировал Боб Мартин, когда он представил принципы SOLID.

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

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments24

Почему программисты через 10 лет будут не нужны?

Reading time9 min
Views125K
Это один из распространённых вопросов о судьбе программирования: мне не раз приходилось его слышать от журналистов, блогеров и родителей, чьи дети выбирают будущий вуз. Для меня этот вопрос звучит довольно удивительно: во-первых, 10 лет для программирования это не такой уж большой период, чтобы выпасть из обоймы, во-вторых, я пока не вижу никаких прорывных движений в этом направлении, в-третьих, мне не кажется что за 10 лет полностью исчезнут компьютеры или люди — а это два единственных условия для уничтожения программирования на планете. Между тем вопрос есть, он в топах поисковых запросов по теме, а значит, это жжжж неспроста. Давайте разбираться.


Disclaimer

Мы открываем в блоге RUVDS на Хабре новую рубрику — вопросы с поиска. Принцип прост: выбираем самые интересные и популярные поисковые запросы о программировании, технологиях, программистах и карьере в ИТ и отвечаем на них с помощью наших постоянных экспертов. Будет интересно.
Читать дальше →
Total votes 87: ↑61 and ↓26+63
Comments381

Объектно ориентированное программирование на Си без плюсов. Часть 1. Введение

Reading time5 min
Views25K

Приветствую! 

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

Статья рассчитана на тех кто уже знаком с Си, а все примеры ориентированы на ОС Linux. Мои познания Windows закончились на «WinXP», после которой в Windows стало уже очень много политики ("безопасности") и коммерческой составляющей, но я сейчас не об этом и надеюсь, что здесь вы найдёте для себя полезные моменты, а если я в чём-то не прав или заблуждаюсь, то поправите.

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

Так сложилось, что изучать традиции ООП я начал с Delphi и Java, являющихся, как считается, на 100% объектно ориентированными языками программирования, а потому аналогия решений у меня ассоциируется именно с ними. И далее в тексте я иногда буду на них ссылаться, что надеюсь не испортит суть полного понимания.

Читать далее
Total votes 12: ↑11 and ↓1+14
Comments41

«Двойной плюс»: биография создателя С++ Бьярне Страуструпа

Reading time8 min
Views9.9K

Можно не любить язык C++, можно даже не знать о его существовании, но вот не пользоваться софтом на нём — это, наверное, получится только в пещере. C++ есть в операционных системах и браузерах, автомобилях и банкоматах, сервисах вроде YouTube и программах вроде Photoshop. Получается, всё человечество каждый день взаимодействует с тем, что когда-то создал один конкретный человек.

Ранее мы публиковали интервью, которое Бьярне Страуструп дал на нашей конференции C++ Russia. А теперь решили, что и описать биографию такого человека никогда не будет лишним.

Читать далее
Total votes 17: ↑16 and ↓1+21
Comments3

Актуальность принципов SOLID

Reading time5 min
Views37K

Впервые принципы SOLID были представлены в 2000 году в статье Design Principles and Design Patterns Роберта Мартина, также известного как Дядюшка Боб. 

С тех пор прошло два десятилетия. Возникает вопрос - релевантны ли эти принципы до сих пор?

Перед вами перевод статьи Дядюшки Боба, опубликованной в октябре 2020 года, в которой он рассуждает об актуальности принципов SOLID для современной разработки.   

Недавно я получил письмо с примерно следующими соображениями:

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

Принцип подстановки Лисков давно устарел, потому что мы уже не уделяем столько внимания наследованию, сколько уделяли 20 лет назад. Думаю, нам стоит рассмотреть позицию Дена Норса о SOLID - “Пишите простой код”

Читать далее
Total votes 39: ↑33 and ↓6+36
Comments87

Как решать сложные (технические) проблемы

Reading time4 min
Views14K
image


Мировоззрение


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


Поиск первопричины


  • Постарайтесь воспроизвести проблему
    • Можете ли вы воспроизвести это из командной строки?
      • Другим людям легче воспроизвести проблему
      • Легче проверить исправление
  • Есть ли логи? Что за сообщение об ошибке?
    • Прочтите описание ошибки. Каждое его слово. Дважды.
    • Есть ли где-нибудь опечатка (командная строка / конфигурация / код)?
  • Изолируйте проблему
    • Удалите некоторые части системы и попробуйте воспроизвести ошибку
    • Меняйте одно за раз, сохраняя все остальное постоянным
Читать дальше →
Total votes 17: ↑12 and ↓5+10
Comments6

Собеседование в Яндекс: театр абсурда :/

Reading time14 min
Views514K

Привет, Хабр!

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

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

Как вы думаете, что делают рекрутеры, когда видят "Alexandr, NOT OPEN FOR WORK"? Правильно, пишут "Алексей, рассматриваете вариант работать в X?" Я обычно игнорирую это, но тут мне предложили попытать счастья с Яндекс.Лавкой, и я не смог пройти мимо - интересно было, смогу ли я устроиться куда-нибудь, когда введут великий российский файерволл. К тому же за последние 3 года я проходил только два интервью, и мне показалось, что я не в теме, что нынче требуется индустрии. Блин, я оказался и вправду не в теме. И вы, скорей всего, тоже - об этом и статья.

Читать далее
Total votes 531: ↑504 and ↓27+610
Comments1270

Про outsource и product компании

Reading time6 min
Views7.4K

Всем привет.

Я team lead, сертифицированный коуч и начинающий психолог.

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

Я работал в двух продуктовых компаниях, одной outstaff (жил и работал в Абу Даби, по контракту с минской компанией) и двух outsource. В общей сложности был где-то на 15 проектах.

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

Читать далее
Total votes 10: ↑1 and ↓9-6
Comments7

14 полезных инструментов, ускоряющих и упрощающих веб-разработку

Reading time4 min
Views35K
Я занимаюсь разработкой сайтов уже много лет и не верю в то, что если буду держать в секрете используемые мной инструменты, это даст мне серьёзное преимущество на рынке труда.

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



Здесь я расскажу о 14 инструментах, которые помогают мне в решении моих рабочих задач.
Читать дальше →
Total votes 41: ↑28 and ↓13+23
Comments15

Разложение монолита

Reading time14 min
Views16K

Эта статья является конспектом книги «От монолита к микросервисам». Материал статьи посвящен шаблонам разложения монолита.

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments7

Один бинарник, любое окружение. Магия чистого C

Reading time5 min
Views34K


Как мы представляем себе кроссплатформенность? Мы пишем программу на языке, который либо компилируется в исполняемый файл отдельно для каждой поддерживаемой платформы, либо использует разновидность виртуальной машины вместо бинарника (и тогда эта среда должна присутствовать в целевых системах). Есть также и низкоуровневые языки, на которых писать серьёзные программы менее удобно, чем на высокоуровневых монстрах со своими компиляторами или рантаймами, но зато такие программы менее требовательны к предустановленному софту или наличию ОС в принципе, как и менее разборчивы в архитектуре. И всё же, есть возможность писать один и тот же код и собирать один и тот же бинарь под все популярные архитектуры и ОС (и даже bare metal), и эта возможность появилась благодаря гениальной Justine Tunney. Она написала Cosmopolitan, библиотеку на C, позволяющую исполнять один и тот же код на любой машине, подобно Java… но без какого-либо предустановленного интерпретатора или виртуальной машины! Один и тот же скомпилированный файл может исполняться как минимум в любом дистрибутиве Linux, на Mac OS, Windows NT, FreeBSD, OpenBSD, и NetBSD и на bare-metal на x86 и ARM*. Это настоящая магия.
Total votes 104: ↑94 and ↓10+113
Comments63

Как понять свою стоимость на рынке

Reading time7 min
Views17K

Привет, меня зовут Мария Смагина, я руководитель IT кадрового агентства RecruitIT. До собственного бизнеса работала HR-директором во многих российских и международных компаниях: Mamba, Nexters, YouDo, ADV/web-engineering.co.

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

Умение оценить стоимость своей работы — необходимый в современных реалиях навык. Один специалист с определенными задачами и зоной ответственности в одной компании получает «X», а другой специалист в другой компании за такой же функционал — «Х2». Та же ситуация и при поиске работы: смотрите на похожие вакансии, а ценник у них совершенно разный.

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

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

Читать далее
Total votes 24: ↑9 and ↓15-1
Comments40

Идеальное резюме для разработчика

Reading time8 min
Views31K

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

Читать далее
Total votes 16: ↑10 and ↓6+4
Comments35

Заповедник российского фриланса

Reading time6 min
Views11K

Привет! Данная статья абсолютно бесполезна, но, возможно, будет забавна.

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

Так что вот вам моя личная энциклопедия по миру российского фриланса.

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

Читать далее
Total votes 23: ↑19 and ↓4+25
Comments9

Быть тимлидом, ч2: Технологии

Reading time6 min
Views13K

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

Читать дальше →
Total votes 31: ↑27 and ↓4+27
Comments11

Быть тимлидом, ч.1: Люди

Reading time9 min
Views14K


Всем привет. Меня зовут Семён, я руковожу разработкой партнёрских сервисов в ДомКлик. О роли тимлида сказано и написано много: бесконечное число книг, технических и не очень, тренинги, конференции, каналы и прочее. Проблема в том, что ни одна книга не даёт рецепта «серебряной пули», которая позволила бы эффективно управлять людьми и процессом разработки, не совершая ошибок. Поэтому каждый тимлид со временем создаёт свой фреймворк работы, который помогает справляться с ежедневной рутиной, при этом не забывать про развитие, делать это эффективнее и совершать меньше ошибок. Форма у этого фреймворка может быть любая: где-то его формализуют и делают частью бизнес-процессов компании, а где-то он может существовать в виде чек-листа в заметках тимлида. Главное, чтобы он был, чтобы им пользовались, актуализировали и развивали. В этой серии статей я хочу описать свой взгляд на работу тимлида, поделиться опытом и лайфхаками. Кого заинтересовал — прошу под кат.

Читать дальше →
Total votes 54: ↑48 and ↓6+49
Comments6
1
23 ...

Information

Rating
Does not participate
Registered
Activity