Pull to refresh
6
0
Игорь @peacecoder85

Backend Engineer

Send message

Что такое красивый код и как научиться его писать

Reading time9 min
Views24K
Меня зовут Маша, я автор курса по С++ в Яндекс Практикуме. Все вопросы, задачи курса, его тексты и описания решений — это всё наша команда. И сегодня я хочу поговорить про красоту кода. Обсуждать её я буду по большей части на примере С++, так как я на нем и пишу, чаще всего программируя довольно низкоуровневые проекты для устройств интернета вещей, умного дома и медицинских аппаратов. Но сами правила и подход к пониманию красоты кода актуальны для любого языка.

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

  1. Визуальный. Это как раз все про coding conventions, правильные переменные, оформление и прочее.
  2. Восприятие кода. Про ощущения, которые возникают у людей, работающих с вашим кодом.
  3. Продуманность архитектуры. Это тоже критично и тоже относится именно к красоте кода.

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

А теперь давайте по каждому пункту отдельно.


Читать дальше →

Вторая главная обязанность CEO стартапа

Reading time13 min
Views4.8K
image

Али Рогани — работал в Pixar 9 лет (из них 6 лет — CFO, коммерческим директором). 2 года работал CFO в Twitter и еще 2 года COO. Руководит YC Continuity — программа для успешных выпускников YC.

Успешные‌ ‌стартапы‌ ‌по‌ ‌мере‌ ‌своего‌ ‌роста‌ ‌проходят‌ ‌три‌ ‌основных‌ ‌этапа,‌ ‌и‌ ‌CEO‌ ‌стартапа‌ ‌кардинально‌ ‌меняется‌ ‌на‌ ‌каждом‌ ‌из‌ ‌них.‌ ‌

  • Первая‌ ‌задача‌ ‌CEO‌ ‌-‌ ‌создать‌ ‌продукт,‌ ‌который‌ ‌понравится‌ ‌пользователям.
  • Вторая‌ ‌задача‌ ‌-‌ построить‌ ‌компанию,‌ ‌чтобы‌ ‌максимизировать‌ ‌возможности,‌ ‌которые‌ ‌открывает‌ ‌продукт.
  • Третья‌ ‌- получение‌ ‌прибыли‌ ‌от‌ ‌основного‌ бизнеса,‌ ‌чтобы‌ ‌инвестировать‌ ‌в‌ ‌трансформирующие‌ ‌идеи‌ ‌новых‌ ‌продуктов.‌ ‌

Этот‌ ‌пост‌ описывает,‌ ‌как‌ справляться со второй задачей‌ ‌CEO,‌ ‌сосредоточившись‌ ‌с‌ максимальной‌ ‌отдачей‌ ‌на‌ ‌задачах,‌ которые‌ ‌может‌ ‌выполнить‌ ‌только‌ ‌CEO.‌ ‌

Как‌ ‌команда‌ ‌преемственности‌ ‌YC,‌ ‌мы‌ ‌видели,‌ ‌как‌ ‌многие‌ ‌CEO‌ ‌справлялись с первой задачей и ‌ ‌успешно‌ ‌переходили‌ ко ‌второй,‌ ‌а‌ ‌некоторые‌ ‌-‌ ‌нет.‌ ‌Будущее‌ ‌вашего‌ ‌стартапа‌ ‌зависит‌ ‌от‌ ‌того,‌ ‌к‌ ‌какому‌ ‌типу‌ ‌вы‌ ‌относитесь.‌

Ваше первое творение — это продукт, ваше второе творение — это компания

Читать дальше →

Почему бухгалтеров мы можем обучать, а программистов — нет

Reading time11 min
Views21K

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


Позвали Григория Петрова, DevRel’а Evrone.com (ex. Voximplant, Radmin, Digital October Center) и вдохновителя сообщества Moscow Python, рассказать, как писать хороший код самому и научить команду. А еще обсудили, как понять, какие механизмы нас тормозят, и как посмотреть на нейрофизиологию через призму прикладной разработки и руководства технической командой. Разговор оказался настолько интересным, что сделали статью по его следам.


Наш гость сам себя называет генералистом. Пишет на большинстве мейнстримовых языков разработки, кроме Haskell, и интересуется нейрофизиологией. В какой-то момент он посмотрел на свой предыдущий опыт работы и понял, что ему нравится писать документацию, объяснять сложные вещи простым языком и общаться с разработчиками, но не руководить. Поэтому позиция DevRel (Developer Relations) оказалась для него оптимальной.




Читать дальше →

Немного про SOLID и суровое зомби-легаси

Reading time7 min
Views9.5K

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

Читать далее

Различные типы инвесторов и их мотивации

Reading time9 min
Views24K
image

Автор: Аарон Харрис — инвестор, основатель Tutorspree, главный по раунду А в Y Combinator.

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

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

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

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

10 полезных книг для менеджера и лидера в IT секторе

Reading time5 min
Views34K


Я работаю много лет в индустрии разработки программного обеспечения и последние несколько лет я активно вовлечен в консалтинг и pre-sales фазы. И я заметил, чтобы быть успешным лидером как для менеджера проектов, представляющего бизнес-сторону, так и для архитектора – технического представителя необходимо совмещать в себе технические и лидерские качества.

Для меня наиболее полезным и эффективным источником обучения являются книги. И я бы хотел поделиться с вами топ 10, по моему мнению, книг полезных для начинающих и не только лидеров в разработке программного обеспечения. Эти книги помогут развить и улучшить лидерские качества необходимые в данной индустрии. Я не буду перечислять знаменитые менеджерские бестселлеры такие как Laws of Leadership или Good to Great. Я порекомендую более целевые книги, которые будут, несомненно, полезны именно лидерам в индустрии разработки программного обеспечения.

Название всех книг будут указаны на языке оригинала, но вы без труда сможете найти многие из них и в переводе.
Читать дальше →

Более 10 лет ставлю цели на год: рассказываю, как это делать эффективно

Reading time12 min
Views216K

Меня зовут Павел Комаровский, и я алкоголик занимаюсь саморазвитием уже более 10 лет. Эта статья о том, какой подход к личному целеполаганию я выработал для себя в итоге – надеюсь, она поможет вам избежать ошибок, которых в своё время наделал я.

Я полностью прошёл все стадии грехопадения: в студенческие годы искал сакральные ответы в стопках self-help макулатуры; затем разочаровался и решил, что весь этот «успешный успех» – это разводилово для дурачков (до сих пор уверен, что Наполеон Хилл – шизофреник); позже переосмыслил всё ещё раз и пришёл к своему пониманию того, как может выглядеть саморазвитие с адекватным лицом.

Читать далее

Разработка и мышление: как работает мозг во время кодинга

Reading time3 min
Views17K

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

Существует мнение, что программирование само по себе напоминает процесс изучения иностранного языка. Технически здесь есть общие моменты, но фактически для мозга все выглядит не совсем одинаково. Чтобы выяснить, какие же части мозга отвечают за кодинг, ученые из MIT просканировали мозг разработчиков-добровольцев в процессе работы. Молодые люди работали с применением текстового языка Python и графического языка ScratchJr.
Читать дальше →

Трассировка и логирование в микросервисах: как мы втаскивали единый стандарт на 30 независимых команд

Reading time6 min
Views16K
Сервисы падали, падают и будут падать

Когда вы быстро растете, микросервисы начинают появляться буквально по щелчку пальцев и в самых неожиданных местах. В таких условиях каждая команда обычно на ходу решает, где, как и какие логи будет складывать. Когда сначала 10, потом 20, а там и более команд логируют по-своему, начинается хаос.



Например, наша команда сопровождения маркетинга в Skyeng знала: пользователь с таким-то айдишником нажал в личном кабинете кнопку «Сменить преподавателя» — постучался в наш сервис, дальше ушло три сообщения, в очереди было 2 вызова сервисов и эти сервисы ответили 200. Но на самом деле, что было у команд сопровождения учителей или биллинга, к которым мы стучались, не знал никто…

Тогда мы придумали инструмент, чтобы маркировать трафик

Читать дальше →

Тимлид как психолог: задачи, риски, инструменты работы

Reading time5 min
Views6.6K

Привет! Меня зовут Анастасия, психолог и много консультирую IT-специалистов. И я вижу большое сходство в работе тимлида и психолога. В чём оно? Работа с людьми, безусловно. А если конкретнее, как думаете? 

Читать далее

Возможности ClickHouse для продвинутых разработчиков. Алексей Миловидов (2018г)

Reading time23 min
Views18K


В докладе планируется рассмотреть малоизвестные или недостаточно хорошо освещённые в документации возможности ClickHouse: инкрементальная агрегация и манипуляции с состояниями агрегатных функций, межкластерное копирование, выполнение запросов без использования сервера и т.п. Будут приведены примеры из практики разработки сервисов Яндекса: как выжать из системы максимум возможного.

Субъективный взгляд на выгорание: как начать подгорать, но не выгореть

Reading time7 min
Views20K
4 с лишним года назад я писал код в стартапе, который хотел наносить пользу клиентам частных медицинских клиник. «Режим стартапа» предполагал стабильное ощущение дедлайна, жесткую фокусировку и частую смену планов на лету. И я выгорел. На любимой тогда работе.



Возможно, это мнение покажется непопулярным и даже странным — но с тех пор я не хочу (и не могу) работать по-другому. Мне в кайф, когда разработка идет в сверхбыстром темпе. Я понял, что хочу так кайфовать. Но не хочу больше выгорать. И стал выстраивать защиту от выгорания: давайте расскажу, что получилось и как это помогло мне и команде в карантин, когда нам пришлось работать в формате «спринт за день», чтобы помочь школьникам.
Читать дальше →

Как убрать из Git-репозитория файлы с конфиденциальной информацией

Reading time4 min
Views32K
Файлы проиндексированы, написано сообщение коммита, данные отправлены на сервер… И вдруг хочется повернуть время вспять. В коммит попал файл, которого там быть не должно. Когда такое случается, приходит время обращаться к поисковику.

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

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


Удаление файлов с конфиденциальной информацией из Git-репозитория (изображение большого размера)
Читать дальше →

Я 20 лет наслаждаюсь разнообразием архитектур и хочу поделиться мыслями

Reading time8 min
Views23K


Сначала хотел написать комментарий к статье "Я десять лет страдал от ужасных архитектур в C#...", но понял две вещи:

  1. Слишком много мыслей, которыми хочется поделиться.
  2. Для такого объёма формат комментария неудобен ни для написания, ни для прочтения.
  3. Давно читаю Хабр, иногда комментирую, но ни разу не писал статей.
  4. Я не силён в нумерованных списках.

Disclaimer: я не критикую @pnovikov или его задумку в целом. Текст качественный (чувствуется опытный редактор), часть мыслей разделяю. Архитектур много, но это нормально (да, звучит как название корейского фильма). 

Однако давайте по порядку. Сначала моё мнение о том, что влияет на архитектуру, потом про спорные моменты в статье об «исправлении архитектур». Ещё расскажу о том, что у нас хорошо работает — может, пригодится кому-нибудь.
Читать дальше →

Реализация технологии SSO на базе Node.js

Reading time10 min
Views17K
Веб-приложения создают с использованием клиент-серверной архитектуры, применяя в качестве коммуникационного протокола HTTP. HTTP — это протокол без сохранения состояния. Каждый раз, когда браузер отправляет серверу запрос, сервер обрабатывает этот запрос независимо от других запросов и не связывает его с предыдущими или последующими запросами того же самого браузера. Это, кроме прочего, означает, что получить доступ к серверным ресурсам, которые никак не защищены, может кто угодно. Если нужно защитить от посторонних некие серверные ресурсы, это значит, что нужно как-то ограничить то, что может запрашивать у сервера браузер. То есть — нужно аутентифицировать запросы и отвечать только на те из них, которые прошли проверку, игнорируя те, которые проверку не прошли. Для аутентификации запросов нужно владеть некими сведениями о запросах, хранящимися на стороне браузера. Так как протокол HTTP не хранит состояние запросов, нам для этого нужны некие дополнительные механизмы, которые позволяют серверу и браузеру совместно управлять состоянием соединений. Среди таких механизмов можно отметить использование куки-файлов, сессий, JWT.



Если речь идёт о каком-то одном веб-проекте, то сведения о состоянии конкретного сеанса взаимодействия клиента и сервера легко поддерживать с применением аутентификации пользователя при его входе в систему. Но если такая вот самостоятельная система эволюционирует, превращаясь в несколько систем, перед разработчиком встаёт вопрос о поддержании сведений о состоянии каждой из этих отдельных систем. На практике этот вопрос выглядит так: «Придётся ли пользователю этих систем входить в каждую из них по-отдельности и так же из них выходить?».
Читать дальше →

Как научиться заканчивать проекты: правило двух недель

Reading time5 min
Views15K

«Этот олень просто огромный!»

Той ночью я поздно возвращался домой. Когда я подъезжал к дому, в свет фар попал самый большой олень, которого я видел в жизни, он стоял прямо посередине дороги. Я живу в лесистой местности, и соседи говорили, что олени здесь гуляют свободно, но тогда я впервые увидел одного из них. Это животное выросло таким большим точно не благодаря своим инстинктам: когда его осветили фары, Бэмби рванулся… прямиком на дорожку к моему дому!

Возвращайся!

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

Этого было слишком мало, мне нужно было увидеть Бэмби снова!

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

Хм… можно ли как-то исправить ситуацию?

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

Пора приступать к мозговому штурму по разработке моего изобретения:
Читать дальше →

Принципы PDD — Panic Driven Development

Reading time2 min
Views21K
Привет, Хабр! Уважаемые читатели, сие есть перевод замечательной статьи за авторством Мауро Фрезза. Надеюсь, он доставит вам истинное наслаждение и поддержит вас в курсе современных тенденций в методологиях разработки.

image

После того как прошла волна успеха методологий разработки из семейства Agile, проверку временем выдержали лишь немногие из них. Но среди них есть одна особая техника: PDD Panic Driven Development — Разработка через панику.

Эта техника разделяет основные принципы методологии разработки Agile, но она лишена бесполезных церемоний и технологической нагрузки, которые лишь снижают скорость работы команды. Давайте подробнее ознакомимся с принципами этой методологии.
Читать дальше →

Дружим ELK и Exchange. Часть 1

Reading time6 min
Views8.2K


Начинаю серию статей, где хочу поделиться своим опытом подключения Exchange и ELK. Этот стэк поможет обрабатывать большие объемы логов и не задаваться вопросом, при каком размере привычные инструменты логирования откажутся нам помогать. Давайте знакомиться с новым бойцом с логами.
Читать дальше →

Заметки по книге «Философия разработки ПО»

Reading time11 min
Views16K


Возможно, вы понимаете как писать хороший код, как придерживаться хорошего дизайна. Но структурировать эти знания не получается. Книга Джона Оустерхаута “A philosophy of software design” может помочь исправить это.


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


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

Читать дальше →

Information

Rating
7,716-th
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity

Specialization

Backend Developer
Senior
From 4,000 $