Просто в следующем проекте вам нужно самостоятельно создать все репозитории, серверы и бэкапы. Или, если не знаете как - нанять специалиста, который сделает эту настройку за вас и передаст вам ключи. А дальше уже приглашать разработчиков на готовую инфраструктуру. Тогда ситуация "код в руках у разработчиков" возникнуть не сможет. К тому же, легко моментально закрыть доступ человеку, если потеряли к нему доверие.
Вообще, конечно, вряд ли что-то получится с командой, в которой плохие отношения друг с другом и(или) с руководителем, но вот эти шаги про начальную настройку и контроль доступов - как будто бы основа для начала любого проекта.
Есть, правда, и другая сторона вопроса, она заключается в юридической очистке прав. Когда я работал в найме на компанию, которая выпускала продукты на российский рынок, я подписывал отдельный документ, что компания выкупает у меня все права на написанный мною код для продукта такого-то за номинальную сумму рублей. То, что я работал в штате на зарплату в этой компании, было недостаточно. Уж не знаю, перестраховка ли это или так и правда надо делать.
Ждем теперь шуточную пятничную статью "7 типов разработчиков", в которой вы опишите свои злоключения с разрабами :)
Спасибо за такой подробный разбор. Признавать свои ошибки всегда больно, а публиковать их ещё и страшно.
Действительно не представлял, сколько подводных камней может быть в создании биржи. Хотя понимаю, что описана лишь их малая часть. Мне, как активному участнику бизнеса в телеграм, всегда не хватало конкурентов основной бирже-монополисту, которая заламывает космические комиссии. Но теперь примерно понятно, почему у неё нет конкурентов.
Конечно, некоторые вещи читались с улыбкой. Мидл за 500к и 3 месяца? При том, что Мидл на рынке стоит 200к, а агентству ещё свою маржу нужно посчитать, ещё ПМ что-то должен получить с проекта, ну и не забываем про правило удвоения срока: оценка в 3 мес = реализация в 6 мес. И это без правок от заказчика. Если все посчитать, то получается, что бюджет на прогера заложен в 60-70к₽ в месяц, а это, очевидно, стажёр. Даже не джун.
Я, как разработчик с 12 летним опытом (кстати, фронтенд), конечно очень хорошо понимаю желание коллег по цеху что-то зарефакторить, да и на созвоны, бывает, опаздываю, чего греха таить. Здесь можно было бы поспорить, насколько оправдан принцип "идём вперёд, не останавливаясь, не тратя лишнего времени, главное, чтоб работало", тем более, что здесь же в статье упоминается, сколько раз пришлось то или иное переделывать. А чистый код - это уменьшение времени на переделки. Так что здесь палка о двух концах и мне сложно было бы работать с руководителем, который готов уволить за опоздание на созвон или не позволить отрефакторить код, который не получилось хорошо написать с первого раза.
Но одно я знаю точно: владелец продукта не должен физически находиться в заложниках у разрабов, и все ключи доступа должны быть у владельца. Это владение репой в гите, админский доступ к серверам, админский доступ к базе и доступ к бэкапам. Иначе это как строить себе дом и на время строительства переписать права собственности на строителей.
Не меню. Страница сайта. А проблема с меню была лишь внешним проявлением ошибки в компоненте.
Ну, кстати, не знаю, насколько много там ресурсов отжиралось. Скорее всего, не слишком много. Потому что никаких вычислений не было, просто бесконечные и очень частые вызовы функций. Если бы эти функции потребляли ресурсы, приложение просто зависло бы сразу. А оно работало быстро и отзывчиво, поэтому никто и не заметил проблему.
Но - да, этот опыт в том числе учит, что нужно всегда тестировать приложение на возможные проблемы с производительностью, чтобы не получить вот такое вот
Чтобы точно ответить на этот вопрос, нужно обновить ангуляр и попытаться воспроизвести баг. Этого я, конечно, не делал.
Но я видел, что в последней версии код компонента совсем другой, и этих функций и вычисления вообще нет (или где-то в другом месте). Там полностью изменилась логика, поэтому сильно подозреваю, что этот баг не воспроизведется.
Подозреваю, что раньше поле что-то меняло в шаблоне (например, стиль компонента при выделении/блюре). Подозреваю даже, что раньше метод напрямую из шаблона и вызывался. А потом этого стало недостаточно и кто-то добавил вызов этого метода на afterContentChecked, не заметив, что внутри таймаут создается.
Ну а потом шаблон изменился, компонент убрали, но метод не удалили, ведь он уже вызывался не только из шаблона, но и из хука, а значит он зачем-то нужен.
Точнуюисторию, почему это поле осталось, я не знаю (и не буду смотреть по гит логу), но предположение выше вполне реалистичное
Не понимаю, почему минусуют. Классная подборка! Некоторые шортсы пересматривал несколько раз, а с Олесей-дизайнером вообще залип на ее канале на 15 минут.
Я тут расширю свою мысль. Мне кажется, что лояльная аудитория - это актив намного более ценный, чем статистика количества игроков или количества подписок. Лояльная аудитория может: - рекомендовать игру знакомым (это уже есть) - покупать мерч - донатить - подписываться на платный закрытый чат с разработчиками - получать за плату какие-то неигровые фишки, например, купить за 1000 рублей повышение приоритета работы вашей команды над багом или фичей (на ходу придумал, но идея вроде интересная)
В общем, я думаю, стОит попробовать разные способы монетизировать любовь вашей аудитории. Самое главное, чтобы они понимали, что вы на них не наживаетесь, а наоборот, пытаетесь выжить, так как работаете сейчас в убыток. Они помогают вам не бросить проект, а не заработать на яхту
Очень круто, вы молодцы! Зацепила фраза "Сейчас у нас есть порядка 0,5% платящих пользователей, что конечно же мало". Я совершенно не знаком со средними показателями в индустрии, может это и действительно мало, но кажется, что бизнес модели в этой области строятся на массовости пользователей и нет ни одной игры/приложения, где 3000 пользователей приносили бы доход, близкий к окупаемости. Разве что сделать игру полностью платной, тогда есть шанс. Но скорее всего, вы целитесь в миллион пользователей и выше, что принесет окупаемость даже на 0,5%.
А может быть, если аудитория лояльная, вы добавите в бота функцию доната? Ну, там, "киньте на стакан кофе разработчику, у него прибавится +30 энергии для разработки новой фичи, а вы получите +15 от него в знак благодарности". Возможно, многие не делают игровые покупки, потому что считают, что не нужно подсаживаться на такие вещи. Лично я сам всегда так считаю - если играю в онлайн игры, никогда не покупаю внутриигровые предметы, монеты и прочее. А вот поддержать донатом - это другое.
Просто в следующем проекте вам нужно самостоятельно создать все репозитории, серверы и бэкапы. Или, если не знаете как - нанять специалиста, который сделает эту настройку за вас и передаст вам ключи. А дальше уже приглашать разработчиков на готовую инфраструктуру. Тогда ситуация "код в руках у разработчиков" возникнуть не сможет. К тому же, легко моментально закрыть доступ человеку, если потеряли к нему доверие.
Вообще, конечно, вряд ли что-то получится с командой, в которой плохие отношения друг с другом и(или) с руководителем, но вот эти шаги про начальную настройку и контроль доступов - как будто бы основа для начала любого проекта.
Есть, правда, и другая сторона вопроса, она заключается в юридической очистке прав. Когда я работал в найме на компанию, которая выпускала продукты на российский рынок, я подписывал отдельный документ, что компания выкупает у меня все права на написанный мною код для продукта такого-то за номинальную сумму рублей. То, что я работал в штате на зарплату в этой компании, было недостаточно. Уж не знаю, перестраховка ли это или так и правда надо делать.
Ждем теперь шуточную пятничную статью "7 типов разработчиков", в которой вы опишите свои злоключения с разрабами :)
Спасибо за такой подробный разбор. Признавать свои ошибки всегда больно, а публиковать их ещё и страшно.
Действительно не представлял, сколько подводных камней может быть в создании биржи. Хотя понимаю, что описана лишь их малая часть. Мне, как активному участнику бизнеса в телеграм, всегда не хватало конкурентов основной бирже-монополисту, которая заламывает космические комиссии. Но теперь примерно понятно, почему у неё нет конкурентов.
Конечно, некоторые вещи читались с улыбкой. Мидл за 500к и 3 месяца? При том, что Мидл на рынке стоит 200к, а агентству ещё свою маржу нужно посчитать, ещё ПМ что-то должен получить с проекта, ну и не забываем про правило удвоения срока: оценка в 3 мес = реализация в 6 мес. И это без правок от заказчика. Если все посчитать, то получается, что бюджет на прогера заложен в 60-70к₽ в месяц, а это, очевидно, стажёр. Даже не джун.
Я, как разработчик с 12 летним опытом (кстати, фронтенд), конечно очень хорошо понимаю желание коллег по цеху что-то зарефакторить, да и на созвоны, бывает, опаздываю, чего греха таить. Здесь можно было бы поспорить, насколько оправдан принцип "идём вперёд, не останавливаясь, не тратя лишнего времени, главное, чтоб работало", тем более, что здесь же в статье упоминается, сколько раз пришлось то или иное переделывать. А чистый код - это уменьшение времени на переделки. Так что здесь палка о двух концах и мне сложно было бы работать с руководителем, который готов уволить за опоздание на созвон или не позволить отрефакторить код, который не получилось хорошо написать с первого раза.
Но одно я знаю точно: владелец продукта не должен физически находиться в заложниках у разрабов, и все ключи доступа должны быть у владельца. Это владение репой в гите, админский доступ к серверам, админский доступ к базе и доступ к бэкапам. Иначе это как строить себе дом и на время строительства переписать права собственности на строителей.
Ещё раз спасибо за статью!
Не меню. Страница сайта. А проблема с меню была лишь внешним проявлением ошибки в компоненте.
Ну, кстати, не знаю, насколько много там ресурсов отжиралось. Скорее всего, не слишком много. Потому что никаких вычислений не было, просто бесконечные и очень частые вызовы функций. Если бы эти функции потребляли ресурсы, приложение просто зависло бы сразу. А оно работало быстро и отзывчиво, поэтому никто и не заметил проблему.
Но - да, этот опыт в том числе учит, что нужно всегда тестировать приложение на возможные проблемы с производительностью, чтобы не получить вот такое вот
Чтобы точно ответить на этот вопрос, нужно обновить ангуляр и попытаться воспроизвести баг. Этого я, конечно, не делал.
Но я видел, что в последней версии код компонента совсем другой, и этих функций и вычисления вообще нет (или где-то в другом месте). Там полностью изменилась логика, поэтому сильно подозреваю, что этот баг не воспроизведется.
Ну, примерно так, да :)
Подозреваю, что раньше поле что-то меняло в шаблоне (например, стиль компонента при выделении/блюре). Подозреваю даже, что раньше метод напрямую из шаблона и вызывался. А потом этого стало недостаточно и кто-то добавил вызов этого метода на afterContentChecked, не заметив, что внутри таймаут создается.
Ну а потом шаблон изменился, компонент убрали, но метод не удалили, ведь он уже вызывался не только из шаблона, но и из хука, а значит он зачем-то нужен.
Точную историю, почему это поле осталось, я не знаю (и не буду смотреть по гит логу), но предположение выше вполне реалистичное
Не понимаю, почему минусуют. Классная подборка! Некоторые шортсы пересматривал несколько раз, а с Олесей-дизайнером вообще залип на ее канале на 15 минут.
Да и столы вы делаете с вау-эффектом!
Я тут расширю свою мысль. Мне кажется, что лояльная аудитория - это актив намного более ценный, чем статистика количества игроков или количества подписок.
Лояльная аудитория может:
- рекомендовать игру знакомым (это уже есть)
- покупать мерч
- донатить
- подписываться на платный закрытый чат с разработчиками
- получать за плату какие-то неигровые фишки, например, купить за 1000 рублей повышение приоритета работы вашей команды над багом или фичей (на ходу придумал, но идея вроде интересная)
В общем, я думаю, стОит попробовать разные способы монетизировать любовь вашей аудитории. Самое главное, чтобы они понимали, что вы на них не наживаетесь, а наоборот, пытаетесь выжить, так как работаете сейчас в убыток. Они помогают вам не бросить проект, а не заработать на яхту
Очень круто, вы молодцы!
Зацепила фраза "Сейчас у нас есть порядка 0,5% платящих пользователей, что конечно же мало". Я совершенно не знаком со средними показателями в индустрии, может это и действительно мало, но кажется, что бизнес модели в этой области строятся на массовости пользователей и нет ни одной игры/приложения, где 3000 пользователей приносили бы доход, близкий к окупаемости. Разве что сделать игру полностью платной, тогда есть шанс.
Но скорее всего, вы целитесь в миллион пользователей и выше, что принесет окупаемость даже на 0,5%.
А может быть, если аудитория лояльная, вы добавите в бота функцию доната? Ну, там, "киньте на стакан кофе разработчику, у него прибавится +30 энергии для разработки новой фичи, а вы получите +15 от него в знак благодарности". Возможно, многие не делают игровые покупки, потому что считают, что не нужно подсаживаться на такие вещи. Лично я сам всегда так считаю - если играю в онлайн игры, никогда не покупаю внутриигровые предметы, монеты и прочее. А вот поддержать донатом - это другое.