• Как планировать спринт, если во время спринта всплывают критичные баги от пользователей?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    делить разработчиков - ничем не обоснованная мысль - вы не сможете грамотно сбалансировать нагрузку между ними, всегда будет часть разработчиков простаивать - всегда будут кто-то кто медленнее или быстрее будет делать часть работ, больше делений, больше таких вещей.
    опять же уверен, лучше всего баги править тому кто делал этот функционал, ему по крайней мере не надо объяснять что там и как работает.
    ========
    По поводу спринтов и фикса багов.
    Баги будут всегда, начните разрабатывать продукт предполагая что во всех узлах и модулях уже есть баги (так оно на самом деле и бывает), это сразу поменяет подход к разработке - перейдя на схемы в которых продукт работает независимо от сбоя и багов в отдельных модулях.
    В итоге вы получите всегда рабочий продукт независимо от багов, в котором вы можете в любой момент начать отдельные спринты по повышению качества его работы (снижению уровня багов).
    В текущем спринте вы работает только над текущими поставленными задачами - это закон (ничего другого не берете). Срок спринта фиксирован - что успели то успели, все остальное переносится или на другой спринт, или вообще выкидывается.
    В этом вся суть, иначе какой вообще смысл в этих спринтах если вы просто там сидите и над какими-то багами из прошлых этапов ковыряетесь.
    Ответ написан
  • Какую архитектуру и фрейморк выбрать для реактивного приложения на джаве?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    1. Для реактивного подхода да важно.
    У вас нет зависимого состояния в случае отдельного сбоя в отдельном узле, можете легко восстановить работу узла, без особых заморочек, это часть подхода.
    2. Для производительности на отдельный запрос - асинхронные вызовы всегда хуже. Мы делаем запросы асинхронными не для того чтоб выжать максимум из одного запроса. Асинхронность открывает путь к параллелизации (раз нет зависимости, запросы могут быть выполнены в любом порядке, в том числе и параллельно), такие запросы повышают отзывчивость системы (интерфейса), лучше распределяют нагрузку.
    3. Работа с коллбэками - всегда было то еще удовольствие, композиция функций конечно более предпочтительна.
    ----------
    для создания реактивной архитектуры традиционно - akka, play, kafka (все это с джавой работает в том числе)
    Ответ написан
  • Стоит ли подписывать такого рода NDA договор?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    можете смело подписывать, у этих ребят нет никаких реальных вариантов с вас в России взыскать эти 5К, в чем бы вы не были "виноваты".
    Ответ написан
  • Почему в IT так много индусов?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    отсутствие вариантов для заработка, нищета.
    типа Белоруссия - только в 100 раз больше по населению.
    соответственно на фрилансе индусов больше чем белорусов раз в 100.
    Ответ написан
  • Быть проф-верстальщиком или всего понемногу?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    развивайте в первую очередь то за что вам платят прямо сейчас, остальное по остаточному принципу.
    хотя на фрилансе гуру не нужны, нужны люди которые решают поставленные задачи, в рамках бюджета)
    Ответ написан
  • Какие есть технологии, методики или инструменты для упрощения валидации и обработки данных на Front-end и Back-end?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Один из подходов (достаточно успешный), использовать единую кодовую базу со статической типизацией.
    В которой одна и таже кодовая база (модель данных например), переиспользуется как на бэке, так и на фронте.
    Для этого или бэкенд на ЖС набирается (нода), или Фронтэнд (ЖС), генерируется из языка на бэкенде.
    Такой подход позволяет очень быстро создавать прототип и его быстро переделывать, при этом можно сделать бесшовную связь бэкенда с фронтэндом без необходимости описывать апи.
    Конечно в итоге вы получаете сильно связанный код, который по-хорошему потом все равно переписать надо, однако для прототипирования самое то.
    Ответ написан
  • Можете оценить уровень кода?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    объем выполненных работ впечатляет (желающих в никуда столько работать, не так много) -> соответственно как тестовое задание, безусловно вы справились успешно.
    По поводу улучшений есть множество моментов - но они упираются примерно в одно - избыточность.
    например очень большой размер некоторых классов, очень большое количество оберток, черезчур много проверок, много не нужных скобок, оберток и тд.
    Вот например у вас множество переменных нулом инициализированы (возможно это такой стандарт в с$, я не сильно знаком)
    При этом много где стоят геттеры без проверки на нул, в значения инициализированных нулом. Конечно во многих местах есть эта проверка, и это создает излишнюю избыточность в коде, возможно если бы вы сразу инициировали какими-то значениями по умолчанию (или сделали отложенную инициализацию до того как будет что-то известно про эти переменные), можно было бы избежать и ошибок, и лишних оберток.

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

    П. С.
    есть одна тонкость, в том что те кто делают тестовые задания - никогда их не проходят)
    У нормальных разработчиков все эти типовые наброски уже в различных вариациях есть, они просто ссылаются на то что у них есть, нормальный разработчик не будет тратить на такое бесполезное занятие время, такое только джуны делают, а джуны как правило не нужны.
    Ответ написан
  • Нужен ли слепой 10-ти пальцевый набор?

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

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Сложность, запутанность кода -> одно из естественных следствий развития проекта.
    Как держать сложность в разумных предлах - об этом все эти ООП, SOLID, микросервисная архитектура и тд.
    Но суть везде схожая -> разделить один запутанный код на независимые части (функциональные блоки, модули, микросервисы), которые проще понять, проще развивать, переиспользовать, переделывать, или вообще заменять другими модулями.
    Ответ написан
  • Как грамотно реализовать портфолио backend-разработчику, чтобы заинтересовать заказчика?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Внешняя подача продукта это еще не все, хотя конечно существенно.
    Можно показать производительность ваших решений, возможность вашего бэкенда выполнять сложные задачи в реальном времени, "моментальное" реагирование на запросы пользователей, параллелизация задач, отказоустойчивость - способность сервису работать даже несмотря на баги или отказы в отдельных модулях.
    это очень важные параметры которые может оценить заказчик, само собой пытаться залазить бэкэндщиком на рынок разработки лэндингов, блогов на вордпресе или интернет магазинов на джумле - для вас должно быть табу там ценность толкового бэкенд разработчика стремится к нулю. Не стоит позиционироваться на тот рынок где вы не нужны и не можете иметь никаких преимуществ.
    Еще в портфолио укажите про ваши "доменные знания" в предметной области, это тоже очень ценится.
    Ответ написан
  • Как вы думаете какие IT-специальности имеют самый низкий порог вхождения, и наоборот самый высокий?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    тестировщики классически считались самым простым для вкатывания.
    в HR (внутри айти компаний) так вообще филологи идут, о каком вообще пороге вхождения может быть речь?
    ну верстальщики тоже очень простая для вкатывания тема.
    По поводу машинного обучения, уровень сложности через чур переоценен - тотже геймдев или системное программирование повыше сложностью будет.
    однако если задача по быстрому вкатится и денег по-легкому срубить, то айти уже давно не та сфера.
    таксистом проще заработать, ну или на отделочных работах (штукатурить, обои клеить и тд) -> там уж точно проще быстрее и выхлоп больше.
    Ответ написан
  • Где лучше всего искать со-основателя из области IT для моего стартапа?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    место поиска значения не имеет, результат будет тотже самый как вы и описали.
    Видимо нужно сильнее продумать чем вы можете заинтересовать толкового специалиста.
    Доля + зарплата вполне себе типовая схема. Только за долю или только за зарплату толкового специалиста тоже не привлечь. Должно совпадать множество факторов
    Ответ написан
  • Какие хорошие курсы по анализу данных вы знаете?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Нет никаких таких "продвинутых курсов", нужно тупо годами заниматься темой, разбирать задачи, создавать решения и тд.
    Все курсы что есть примерно одинаковые, про одно и тоже, так же например как и по программированию, или там математике.
    это вещи в которых нет разночтений, не имеет значения на каких курсах тебе рассказывают как например "делятся дроби", это все равно везде будет одинаково.
    Ответ написан
  • Как в Jetbrains продуктах сделать так что бы я сразу в коде видел где латиницей написано, а где кириллицей?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    как вариант используйте в с шрифт в котором нет поддержки кириллицы, вместо нее какая-нибудь не читаемая хрень (таких полно из зарубежных шрифтов), тогда возможно будет более заметно.
    Ответ написан
  • Что включает в себя Agile сервис?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    >какой-то Agile
    :)))))
    Эджаил это не сервис - а философия/ценности.
    Сервис - скорее всего "планировщик задач".
    Что нужно сделать -> выкинуть маркетинговый мусор из головы, самостоятельно определиться что вам нужно, за вас никто этого не решит и заняться этим.
    Нужен планировщик задач? ну выберите себе подходящий. Полно бесплатных вариантов - если надоело платить.
    Ответ написан
  • Можно ли сделать «умный дом» по настоящему умным?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Сделать можно, как вы заметили нужен более менее единобразный интерфейс подключения и схемы работы с оборудованием. Постепенно либо производители к этому прийдут, либо появится один производитель который предложит простые и понятные и не дорогие схемы работы.
    Плаг энд Плей - как на ПК. типа включил и система (главный сервер) всех видит, предлагаются автоматически варианты взаимодействия с новым оборудованием.
    Ответ написан
  • Как объяснить клиенту, что дизайн необходимо оплатить, если он даже не понравился?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Вы ничего обьяснять не должны, у вас условия все прописаны в договоре, в том числе за что и когда он должен платить (сомневаюсь что там указанно типа не плачу пока не понравиться)

    Если это взрослый человек который живет в этом мире, он наоборот вам не сможет обьяснить и привести примеров где это бы работало таким образом -> типа ты заказываешь услугу, после ее выполнения, говоришь что тебе "не понравилось" и не платишь. Где интересно он вообще мог встретится с такими условиями? так мир не функционирует.
    Ну если это малолетний идиот, то таким бесполезно что-то доказывать, только время потратишь.
    П. С.
    по поводу оплата за принятый проект -> если заказчик не принимает проект, то он должен написать мотивированный (обоснованный) отказ.
    Варианты типа не понравилось не являются таким обоснованием, это должно быть именно описание нарушений например условий договора.
    Ответ написан
  • Когда действительно нужен Event Sourcing и микросервисы?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    микросервисы это ответ на ту сложность с которой приходится сталкиваться при разработке больших сервисов.
    В первую очередь ответ на вопрос как эффективно создавать отказоустойчивые, легко масштабируемые сервисы, которые постоянно изменяются и эволюционируют.
    сложный и большой проект, легче разрабатывать небольшими независимыми частями (в которых даже запись или чтение "состояния" разнесено по разным сервисам), также такие независимые части легче масштабировать, внедрять, обновлять, тестировать.
    Микросервисы вместе с CQRS, DDD, ES помогают решать эту задачу.
    Если у вас такой задачи НЕТ, у вас типовой интернет магазин, который сделал один раз и забыл, то микросервисы вам не нужны, точнее большого выхлопа вам не дадут по сравнению с монолитами+модулями внутри монолитов (при этом разработка микросервисов действительно несет определенный оверхед, например необходимость в микросервисах разрабатывать АПИ и АнтиКорапшен слои)
    Опять же по поводу нагрузки и масштабирования, в целом у вас небольшая нагрузка которая легко закрывается силами одного дешевенького сервера.
    Однако с микросервисной архитектурой можно организовать динамическое масштабирование в облаке -> масштабировать как вверх так и вниз практически в режиме реального времени, что например позволит во время распродаж обрабатывать например 10х типовой нагрузки, при этом не переплачивать за инфраструктуру.
    Во время низкой нагрузки использовать 1/10 типовой мощности (и оплачивать 1/10) а в условиях высокой нагрузки (100х от минимальной нагрузки -> с оплатой 10х от типовой но за очень короткий период времени).
    При этом можно использовать типа гибридные облака, в которых в начале сервис масштабируется по вашей инфраструктуре, а при резких пиках (на обработку которых у вас нет мощности) дополнительно масштабироваться внутри стороннего облака.
    Но это все не типовые решения, разработка которых на порядки сложнее и дороже.
    Ответ написан
  • Где попросить денег на стартап?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    хехех, люди уже разучились создавать проекты за счет свой окупаемости?
    пора начинать заново учится, и забыть о сторонних деньгах / ресурсах, только на свои ресурсы, силы, деньги (ну и друзья, родственники, близкие), больше никто вам не поможет.
    Как только вы докажите что ваш проект жизнеспособен, успешен и будет развиваться сам по себе без чужих вливаний, сразу появятся желающие вписатся в ваш проект. Их искать не надо будет. Сами вас найдут, а пока
    сфокусируйтесь на проекте/продукте/клиентах/продажах.
    Ответ написан
  • Как обеспечивается совершенно бесперебойная работа сервера?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    на уровне 1-2х серверов вы все равно не сделаете высокую отказоустойчивось которая бы по форс мажерам/стихийным бедствиям противостояла.
    Для такой отказоустойчивости вам необходимо:
    1. Отделить софт от железа, используя виртуализацию, упаковав в контейнер софт.
    2. Разместить контейнер в облаке, там такие задачи будут автоматически решаться на уровне "оркестрации" контейнеров.
    Ответ написан