Как стать автором
Обновить
40
0.6

Senior Back-End Developer .NET Core C#

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

API FIRST — что это поменяло

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров7.4K

Я долго не могла понять, почему это пример API-driven дизайна. Оказалось, api — это пчёлы

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

  • Первый — возможность получить обратную связь есть только тогда, когда код готов и пользователь может проверить решение, кликая разные кнопочки в GUI. Это часто приводит к тому, что реализованную часть системы приходится писать заново.
  • Второй, что хуже — CODE FIRST предполагает каскадную модель разработки: нет возможности настроить параллельно несколько потоков работ.
  • Третий недостаток — отсутствие документации и часто слишком детализированное API. Такое API невозможно переиспользовать. 
  • И ещё один, четвёртый, минус — отсутствие адаптации к изменениям. А изменения обычно происходят уже во время разработки.

На замену CODE FIRST пришёл подход DESIGN FIRST. Главными героями здесь становятся дизайнеры. Сначала они отрисовывают все макеты, проектируют кликабельные интерфейсы, и только потом, после ревью пользователей, пишется код системы. Это улучшает UX/UI, команда получает обратную связь до того, как продукт будет готов. Но и тут есть очевидные недостатки:

  • Дефицит бизнес-навыков и аналитического мышления у дизайнеров.
  • Маршруты, положенные в основу архитектуры системы и UI, часто не совпадают с картой бизнес-процессов пользователя. Проще говоря, дизайнер может изобразить любой вариант UI, но возникает вопрос: а можно ли реализовать ту или эту фичу как функционал?
  • Ну и та же проблема, как и с CODE FIRST: нет возможностей для быстрой и эффективной адаптации к изменениям. 

И вот тогда, на стыке CODE FIRST и DESIGN FIRST, появился подход API FIRST, который удачно объединил достоинства всех предыдущих методов.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+12
Комментарии2

ИП в РФ на УСН / ПСН / НПД / ОСНО – как платить налоги с иностранных доходов – FAQ 2023 г

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

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

В 2022 / 2023 году, возник массовый, довольно новый для налоговиков РФ и налоговиков стран ЕАЭС тренд, при котором физическое лицо в статусе индивидуального предпринимателя осуществляет аналогичную деятельность в РФ и еще где-то, то есть как ИП в РФ (на УСН, ПСН, НПД) и как ИП образованное по законам зарубежного государства, при этом такое физическое лицо, может не иметь статус налогового резидента ни в одном из этих государств, административная и судебная практика по таким кейсам только формируется.

Читать далее
Всего голосов 14: ↑10 и ↓4+6
Комментарии23

Что будет, если от разработчиков не отстать: умирающая команда

Время на прочтение11 мин
Количество просмотров61K
Мне досталась команда, которая болела. Все понимали, что происходит, никому не нравилось, что творится в команде, и традиционно менеджеры такие команды сильно режут. Но здесь были шансы вылечить и без ампутаций.


Источник

15 человек, из них — один руководитель проекта, три фронта, два бэка, три аналитика, девопс. Симптомы обычные: процессы всем не нравятся, соседи — козлы, потому что не то и не так делают, а как нужно — не знают, ответственности ни на ком толком нет ни за что.

Вроде бы когда-то это был настроенный конвейер, но теперь его куски — как будто в разных зданиях. Особо не заботятся о том, что было «до» и что будет «после». А если всё падает, то люди поднимают руки: «Я не виноват. Я не знаю, как поднять».

Проект — внутренний банка, он нужен для улучшения работы внутри компании. Традиционных решений в кровавом энерпрайзе — два: нанять новую команду (но вгружать мидла на проект такой сложности — три-четыре месяца) или же оставить проект на поддержке, через два года найти ему замену, а команду тихо похоронить в подвале. Точнее, не так: те, кто плывет по течению и не заботится о карьере, остаются тихо сидеть «на пенсии», то есть в бесконечной поддержке проекта. А самые проактивные тут же перейдут в другие команды или другие компании.

Почему процессы разваливались? На первый взгляд, потому, что была куча ненужных совещаний и встреч с теми, кого разработчики вообще не должны были видеть. Плюс местами странноватые KPI. Как это ни странно, но если психологически давить на разработчика пару лет, то ничем хорошим это не закончится. Руководство подразделения дало мне карт-бланш на исправления, и я начал разбираться, что же случилось.
Читать дальше →
Всего голосов 171: ↑167 и ↓4+205
Комментарии74

Парадокс Соломона. Легко давать советы другим, но не себе

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

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

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

Раз уж мы так любим раздавать ценные советы другим, почему бы этим не воспользоваться? Попробуем представить, что проблема, которую нам нужно решить, не наша собственная, а чья-то ещё.

Читать далее
Всего голосов 35: ↑28 и ↓7+35
Комментарии24

Как на самом деле работает Async/Await в C# (Часть 1)

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров59K

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

Читать далее
Всего голосов 17: ↑16 и ↓1+16
Комментарии8

Когда поможет только нагрузочное тестирование

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.8K
В мире ИТ непрерывно происходят эволюционные изменения, которые ставят во главу угла такие аспекты, как безопасность и надёжность решений.



К подобным изменениям, в частности, приводит развитие сервисов, которые должны работать с большим числом пользователей: онлайн-банкинг, маркетплейсы, сервисы покупки билетов и бронирования, бесконтактная оплата через POS-терминалы (вспомните, когда вы последний раз платили на кассе наличными?), оплата метро по Face ID, запрос и получение информации на Госуслугах и т.д.

Качественно создавать и развивать подобные сервисы сложно, к тому же, помимо понятных забот об удобстве, а также безопасности и сохранности личных данных, вас поджидают неочевидные риски, связанные именно с ростом числа пользователей. Именно здесь на помощь приходит нагрузочное тестирование. О нём ниже и поговорим, а также разберём конкретные жизненные примеры.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

Как работает веб-браузер (с картинками)

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров35K

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

Эта статья приоткроет завесу магии, скрывающуюся за кулисами веб-браузеров.

Давайте начнем!

Читать далее
Всего голосов 25: ↑22 и ↓3+24
Комментарии9

Где решать задачи по программированию, чтобы пройти путь from zero to hero

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров123K

Если вам о чём-то говорят фамилии Зив, Хомченко и Рымкевич, иди сюда, дай обниму, бедолага-олимпиадник, то вы наверняка знаете, как важно прорешивать задачи для полноценного, осознанного и глубокого понимания изученного материала. Когда нет или совсем мало реальной практики, задачи дают возможность покрыть практикой все теоретические знания, погрузиться в неожиданные выводы, сложности, баги, препятствия. Более того, даже если практики достаточно, задачи помогают относительно быстро, комплексно и глубоко проработать типичные и нетипичные ситуации, возникающие в разработке (любой другой науке). Это всегда безопасный (никто не взрывает лабораторию и не роняет прод), доступный и удобный способ подробно разобраться в предмете. Определённо, программирования это касается в первую очередь.

Читать далее
Всего голосов 42: ↑41 и ↓1+65
Комментарии25

Когда НЕ нужно использовать Apache Kafka?

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров11K
image

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


В статье, перевод которой мы подготовили, автор Kai Waehner постарается ответить на эти вопросы. В отдельных главах приводится объяснение, когда стоит использовать Kafka, когда — нет, а когда — возможно.

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

Шрифтовая «не-пара»

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

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

Читать далее
Всего голосов 9: ↑5 и ↓4+5
Комментарии64

Гайд по написанию пользовательских историй и критериев приёмки

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров32K

Всем привет! Меня зовут Валентина Ляликова. Я ведущий бизнес-аналитик в X5 Tech и преподаватель направления «Пользовательские истории и критерии приёмки» в Школе бизнес-анализа X5 Tech. 

Большой опыт работы на разнообразных проектах помог сформировать мне список правил, которых я придерживаюсь каждый день при написании User Story и Acceptance Criteria (US+AC). В этой статье хочу поделиться ими с вами и показать на примерах ошибочных вариантов написания документа US+AC, почему так важно применять эти правила в работе.

Читать далее
Всего голосов 13: ↑10 и ↓3+9
Комментарии3

На что способен хороший отладчик

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

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

Tl;dr — в этом эпизоде дедовского нытья вы узнаете, что хороший отладчик поддерживает различные виды точек останова, предлагает широкие возможности визуализации данных, имеет среду REPL для выполнения выражений, может показывать зависимости между потоками и контролировать их выполнение, может подхватывать изменения в исходном коде и применять их без перезапуска программы. Также он может проходить код от конца к началу и перематывать состояние программы до любого момента в истории её выполнения. Можно даже записать весь ход управления программы и визуализировать поток управления и историю потока данных.

Читать далее
Всего голосов 24: ↑23 и ↓1+32
Комментарии10

Получил ВНЖ Цифрового Кочевника в Испании

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров13K

я Андрей Поснов, переехал из Москвы в Барселону с женой и собакой: въехал по туристической визе, получил студенческую, а как только появилась digital nomad visa, подался на нее. Я работаю инжиниринг-менеджером в американском стартапе удаленно и веду свой ютуб и телеграм каналы

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

Читать далее
Всего голосов 30: ↑14 и ↓16+6
Комментарии14

Как я делал внутренний cookbook по тому, как писать код (и результат можно скачать)

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров17K

Авокадо с зубами подсказывает, что так код легче поддерживать, дописывать и рефакторить. Мы всё теперь пишем только так.

Привет, Хабр! У нас была проблема: каждый писал код как хотел. Было очень тяжело это поддерживать и ревьюить. Мы сначала думали, что достаточно написать стандарт кода. Оказалось, недостаточно, ему ещё надо обучить. Чтобы обучить, мы открыли для ревью эталоны кода, чтобы покрыть ими самую частую логику взаимодействия с компонентами. Тоже не хватило. А заодно я узнал, что мои же «золотые» образцы противоречили моему же стандарту кода (сначала было смешно, а потом пришлось переписывать).

В итоге я сделал кукбук с большим количеством примеров, чтобы объяснить культуру и методологию не через абстракции, а очень предметно. Начал вроде как просто для себя, оказалось полезно — и внедрил в работу команды.

Всё это было нужно для того, чтобы мы все в команде понимали, что такое наш стандарт кода, делали одинаковые вещи примерно одинаково, имели набор готовых шаблонов на системные или платформенные обращения и уменьшили объёмы как самого ревью, так и диалогов после.

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

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

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

Посвящается всем, кто коллекционирует элегантные решения без привязки к языку, фрэймворку, Фаундлингам и Software Craftsmanʼам.

Погнали.
Читать дальше →
Всего голосов 19: ↑18 и ↓1+19
Комментарии4

Сравнение MySQL и PostgreSQL в 2023 году

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров65K

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

Читать далее
Всего голосов 19: ↑11 и ↓8+6
Комментарии41

6 простых принципов написания приложения на Vue, которое легко поддерживать (часть 1)

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

Привет! Меня зовут Наташа Калачева. Я Frontend-разработчик в компании AGIMA. Vue — один из самых популярных фреймворков JS, его используют для разработки SPA и PWA. А его главные плюсы — это понятная, четкая документация, готовая структура и низкий порог входа.

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

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

Следуя этим рекомендациям, вы сможете создавать более эффективные проекты.

Читать далее
Всего голосов 47: ↑42 и ↓5+40
Комментарии70

Нужен ли ConfigureAwait?

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

image


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


Одна из многословных конструкций .NET связана с деталями реализации асинхронности и обросла кучей мифов. Про неё спрашивают на собеседованиях, код-ревью, делают обязательной, добавляя в правила линтера. Это .ConfigureAwait(false), сопровождающий каждый await в коде.


В этой статье я расскажу, зачем нужен ConfigureAwait(false) и как обойтись без него.

Читать дальше →
Всего голосов 46: ↑45 и ↓1+59
Комментарии19

Made at Intel. Свой среди чужих, чужой среди своих

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

2014-й стал переломным годом для моей карьеры в Интел. В начале 2013-го меня назначили генеральным директором по R&D в России – и мне казалось, что теперь все дороги будут открыты. От перспектив сделать что-то хорошее и для Интела и для России за спиной прямо-таки росли крылья. Но не тут-то было.

Год сразу начался по-дурацки — я полетел в Новосиб в легкой курточке и простудился на тамошнем морозе. В Сибири погода вообще коварная. У нас — минус 30 это адский ад из‑за высокой влажности. А там сухо, солнечно, тихо и ощущается как минус 10, в худшем случае минус 15. А на самом деле те же самые минус 30. И в результате вместо поездки на Олимпиаду в Сочи я сидел дома и болел две недели. Ну а потом началось — в конце февраля — начале марта Россия присоединила Крым, а в апреле начались бои на Донбассе. Нас обложили санкциями. Ну и на корпоративном фронте ситуация также резко накалилась. В том году я летал в Штаты 6 раз и провел там в общей сложности четыре месяца, уговаривая интеловый истеблишмент не закрывать бизнес в России. Дамоклов меч повис уже тогда, однако судьбе было угодно дать нам еще 8 лет...

Шок и трепет

Поначалу, как всегда, была паника и неразбериха. Никто не понимал, куда бежать и чего бояться. Вспоминается апрельский диалог с Биллом Сэвиджем – директором Developer Product Division, основным стейкхолдером Интел в России. На него тогда работало у нас человек, наверно, 700. Как сейчас помню, разговор этот состоялся в пятницу, часов в 6 вечера в санта‑кларовском офисе SC12. Обычно амеров в пятницу из офиса «сдувает» в половине 4го. Ну самый край в 4. Но Билл не уходит — переживает отчасти за Россию, но больше за свою карьеру. И мы уже несколько часов гоняем по кругу его страхи — фантомные и реальные.

Читать далее
Всего голосов 152: ↑139 и ↓13+164
Комментарии31

Архитектура Шредингера и способы с ней бороться

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


Представьте, что вы работаете в команде над крупным проектом какое-то время. Проект прошел начальный этап и уже работает в продакшн среде. Им пользуются люди, даже можно сказать, что им пользуются много людей и они рассчитывают на ваш продукт, он для них важен. С какого-то момента вдруг вами овладевает беспокойство, что что-то не так. Каждый спринт дается тяжело. Новые задачи вызывают проблемы с внедрением, а после релиза вы ловите один инцидент за другим. Каждый день вы со страхом смотрите в свой месенджер, боясь увидеть очередное сообщение с очередной проблемой, которую нужно срочно решать. Запросы к базе начинают тормозить, важная информация теряться, все валится из рук, контроль над ситуацией утекает как песок сквозь пальцы. Вы начинаете плохо спать, начинают снится кошмары о бесконечных сообщениях в очередях вашего брокера, которые воркеры не способны переварить. Вам снятся сервера, на которых заканчивается CPU и память, потому что сервисы безмерно потребляют ресурсы. Утилизация дисков на серверах с СУБД уже давно под 100%, ведь сервисы что-то постоянно с них читают или пишут. Ошибки, задержки, падения. Вы просыпаетесь.

Читать дальше →
Всего голосов 16: ↑15 и ↓1+19
Комментарии2

Что нужно знать, чтобы быть синьором?

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

В последнее время случилась (и продолжает случаться) тьма публикаций про кадровый голод в айти, про переоценённость синьоров, недооценённость всех остальных, про золотые горы, скандалы, интриги и конский перекос баланса фракции "программисты". Ну, короче, вы сами всё читали и вполне себе в теме. Так вот, в сим опусе хочется вспомнить, а ктож такой синьор и что ему крайне желательно знать, чтобы синдром самозванца не накрывал и чтобы окружающие уважали и на поклон за советом приходили.

Ну-ка, ну-ка...
Всего голосов 165: ↑147 и ↓18+151
Комментарии258

Информация

В рейтинге
1 876-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

Backend Developer
Senior
C#
.NET Core
SQL