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

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    1. commit message
    2. task tracker (JIRA или аналоги)

    Если их интегрировать друг с другом, будет еще и довольно просто перемещаться по коммитам
    Ответ написан
    Комментировать
  • Как происходит работа с Git в крупных проектах?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    В проекте имеются ветви: master, dev, release и features. Я создал feature от master и, при попытке слияния с dev, вижу, что моя ветка отстаёт от dev на 200 коммитов


    Тогда может надо было создавать feature от dev, а не от master?
    или выяснить почему ваш dev так отстает от master

    git flow в каждом проекте может быть немного свой, но он должен быть описан и установлен тимлидом/архитектором. Если в вашем проекте хаос бардак и никто не париться, то имеет смысл всем собраться и продумать как минимизировать конфликты.

    200 коммитов разницы это довольно много, или слишком долго висел feature или реально бардак в проекте.
    Ответ написан
    Комментировать
  • Как в неопытной команде найти баланс в code rewiew между требуемым качеством кода и объемом исправлений?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer

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

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

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

    За именование не по конвенциям - бить по рукам. Это однозначно. Конвенции описать в документе и просто режектить скидывая ссылку на документ с конвенциями. Без подробного разжевывания. Через небольшое время все выучат конвенции. Убедить менеджмент что нужно поддержать идею о конвенции легко, ибо не только общеизвестные практики, но еще и очень легко объяснимые с точки зрения удешевления последующей поддержки этого кода.
    Ну и если конвенции соблюдены, то читать код должно быть удобно.
    В конвенциях - правила именования функций, переменных, файлов, переноса строк, оформление комментариев и коммитов (например хорошее именование коммитов в мастере - возможность автоматизации отчетов, релиз ноутс, а также интеграция CI с код ревью по заголовкам коммитов). Также необходимо контролировать использование библиотек. Если кому-то для реализации задачи нужно подключить еще одну библиотеку, это надо согласовать - какую, где, краткий инвестигейшн кто эту библиотеку делает. Вдруг она уже устарела, никто ее не саппортит и через год-два придется ее менять на что-то новое. В идеале иметь внутренний репозиторий куда подтягивать то, чем пользуетесь в проекте и регулярно но контролируемо его обновлять.

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

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

    Например в процессе эксплуатации выявлялись проблемы, которые были исправлены. Но по статистике 90% этих проблемы ты комментировал еще в момент реализации, и если бы изначально тебя послушались, то проблем бы не возникло, и не надо было бы переписывать - это прямая экономия времени и денег.
    Или наоборот, 5% комментариев были бы полезны, остальные - практически никак не повлияли на работу в пролакшене. Сам сделаешь тогда выводы.
    Ответ написан
    Комментировать
  • Как называется такая практика и является ли она приемлемой?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Ветка отпочковывается от любого коммита. Обычно руками никто не создает ветку из старых коммитов, делают из последнего свежего.
    Просто весь смысл ветки в том, чтобы свою фичу пилить не блокируя мастер или релиз

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

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

    А так - обычный feature-branch flow
    Ответ написан
    Комментировать
  • Как и где лучше всего хранить список постоянно используемых [консольных] команд?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    сделай два файлика, в одном git в другом sql
    Ответ написан
    4 комментария
  • Как организовать парную разработку с Git для отладки на сервере?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Банально сделать несколько "енвайрнментов", то есть тестовых ботов, и привязать ветки к этим веткам.

    Намример можно привязать к именованиям бренчей, и создать заранее токены для release-bot, main-bot, dev1-bot, dev2-bot.
    Каждый разработчик делает свои ветки согласно dev1/feature-blabla и так далее.

    Триггер на сервере, что если пришел коммит в ветку по указанной регулярке - пересобрать и перезапустить бота с его токенами.
    Ответ написан
  • Как делать игру в команде?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Гугли
    Control Version System
    Code Review
    Ответ написан
    Комментировать
  • Каким образом лучше подходить к организации файлов на диске?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Для ЕГЕ лучше не шаблонизировать а делать от руки. Больше в голове задержится.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Мессенджер, разработчики должны знать общее время друг друга, должно хотя бы несколько часов совпадать.
    Ответ написан
    Комментировать
  • Является ли порочной практика итеративных попыток сдачи тестировщикам сырых результатов работы?

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


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

    Эм, если все настолько плохо, что надо повторять цикл снова и снова, то где все это время был тимлид, который давал изначальную задачу?
    Его привлекать в первую очередь, чтобы он либо переобъяснил разработчикам все, либо поправил свои требования, чтобы они были понятнее.
    В моем понимании тимлид - это один из разработчиков, который ежедневно контролирует их работу, а не ждет пока ему принесут готовое через месяц.
    А так да, тестировщик помогает разработчикам правильно понять требования, но он не должен биться головой об стену в одиночку. Если разработчикам что-то неясно, они могут и сами поднять жёпку и сходить к тимлиду, к аналитикам, к тестировщикам чтобы понять задачу правильно.
    Ответ написан
    1 комментарий
  • Почему лучше иметь несколько акаунтов gitHub?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Нет, несколько аккаунтов совсем не лучше.
    Но иногда бывает вынужденная ситуация, когда ты не хочешь или не можешь некоторые репозитории хранить под одним аккаунтом.
    Бывает у тебя есть личный и рабочий аккаунт, с разным доступом.
    Ну или два личных, тоже с разным доступом и разными задачами, ты не хочешь их связывать друг с другом.
    Но в своем большинстве, достаточно одного аккаунта, а личные репозитории просто делать приватными.
    Ответ написан
    Комментировать
  • Какой бывает обычно график программиста удаленно работающего с зарубежными компаниями?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Какой бывает обычно график программиста удаленно работающего с зарубежными компаниями?

    1. 40 часов в неделю на усмотрение разработчика, плюс созвоны в запланированное время
    2. стандартное время работы с 9-10-11 утра до 5-6-7 вечера, плюс созвоны в запланированное время
    3. Зарубежные компании могут быть в Европе или Японии или Китае, где часовые зоны могут совпадать практически полностью.

    Если говорить про американские компании, то там все может быть как угодно. Но программист это же не саппорт. По идее график может быть гибкий, и если заказчик требует работу по "сменам", то это разработка связана с поддержкой?
    Ответ написан
    2 комментария
  • Как быстро разобраться в чужом проекте?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Доков особо нет. Что точно должно быть задокументировано?

    Все логины, пароли, хостинги, зависимости, версии использованного ПО и либ, структура БД, политика бэкапов.

    А дальше все зависит от того, что нужно делать - если активно разрабатывать, то может и не стоит браться.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Я пользуюсь ice-book-reader, отвлекаюсь на приятную расцветку крупным шрифтом, читаю что-нить из беллетристики и ем.
    Ответ написан
    Комментировать
  • Как понять, каких скиллов не хватает комманде?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Разработчиков у вас у всех есть бэкап. А QA если уйдет в отпуск или на больничный?

    Кто выполняет функции аналитика? Или разработчики точно знают что хочет клиент?
    Ответ написан
    Комментировать
  • Как перестать делать баги?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Я делаю много, порой в 10 раз больше. Я не знаю как побороть это.

    Ну если не знаешь, то никак

    Я уже пишу тесты, знаю что и как, но даже это не успокаивает.

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

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

    А как тесты тогда проходят? Можешь взять test-driven-development. Сперва пиши тест, закоммитить, убедись что он запустился и зафейлился, а потом пиши функционал. И тут уже пока тест не позеленеет, не пропустишь.

    Или я неправильно понял документацию или прочитал но не обратил на важные моменты.

    Читай внимательно, обращай внимание.

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

    Плохие названия функций/переменных? Недостаточно комментариев?

    И обычно я знаю правило чистого кода, пользуюсь eslint, изучал алгоритмы и решал задачки.

    Надо знать не обычно, а всегда, упрощает.

    Ну а так - самоорганизация это заставить себя делать аккуратно. Нет волшебного ингредиента.
    Ответ написан
    Комментировать
  • Как организовать разработку клиент-сервеного приложения?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    UML
    Ответ написан
  • Информация для мозга во время перерывов между программированием в течение рабочего дня?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Серфи не разные сайты, а один конкретный.
    Я вот нашел для себя тостер. Иногда вопросы на тостере заставляют сбегать на википедию или SO.
    Иногда, когда хочу напрячься, хожу на SO, но там вопросы посложнее, поэтому на тостере я больше отдыхаю.

    По новостям вообще не бегаю, это плохой вариант для отдыха.

    Ну и еще юмор, но немного. Конкретные пару исполнителей найди и все.

    А так - самодисциплина. Час поработал, 5-10 минут отдохнул.
    Ответ написан
    Комментировать
  • Как правильно вести разработку на Django и TeleBot?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    git-flow?
    Ответ написан
    Комментировать
  • Почему в компаниях сидят на linux и нельзя на windows?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Зачастую в качестве рабочей машины может быть любая ОС, но веб сервера в основном крутятся под линукс.
    А также контейнеры крутятся под линукс.
    под MS IIS сервер в основном могут крутиться внутренние ентерпрайз решения, редко публичные порталы.

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

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