На примере бота с вакансиями я хочу показать процесс создания продукта от идеи до монетизации.
Какие трансформации с ним происходят в процессе. Что разработать продукт - это только малая часть. Есть еще продвижение, монетизации и т.д.
Если интересен такого рода контент, обязательно ставьте лайки!
Продолжаем делать партнерскую программу для бота.
Я пообщался, для начала, с тремя админами крупных каналов. Двое готовы участвовать в программе. Один сказал, что партнерка не интересна, но просто разместит ссылку. Что тоже очень хорошо :)
Теперь дело техники. Сразу на всякий случай, предусмотрим, что у партнера может быть несколько реферальных ссылок.
Создаем таблицу рефералов и добавляем поле у каждого пользователя ONE-TO-MANY.
Как теперь узнать от кого пришел пользователь? Есть такая штука как deeplink. Можно указать у бота параметр ?start=.., например https://t.iss.one/FastCodeIM_Bot?start=turbocoderblog
И теперь, когда пользователь нажмет Запустить в боте, мне в обработчике придет этот параметр и я привяжу реферала к пользователю.
Дальше создадим рефералов для наших новых партнеров и выдадим им ссылки.
Какие трансформации с ним происходят в процессе. Что разработать продукт - это только малая часть. Есть еще продвижение, монетизации и т.д.
Если интересен такого рода контент, обязательно ставьте лайки!
Продолжаем делать партнерскую программу для бота.
Я пообщался, для начала, с тремя админами крупных каналов. Двое готовы участвовать в программе. Один сказал, что партнерка не интересна, но просто разместит ссылку. Что тоже очень хорошо :)
Теперь дело техники. Сразу на всякий случай, предусмотрим, что у партнера может быть несколько реферальных ссылок.
Создаем таблицу рефералов и добавляем поле у каждого пользователя ONE-TO-MANY.
Как теперь узнать от кого пришел пользователь? Есть такая штука как deeplink. Можно указать у бота параметр ?start=.., например https://t.iss.one/FastCodeIM_Bot?start=turbocoderblog
И теперь, когда пользователь нажмет Запустить в боте, мне в обработчике придет этот параметр и я привяжу реферала к пользователю.
Дальше создадим рефералов для наших новых партнеров и выдадим им ссылки.
Кстати, 10 лет назад я выпустил 1-ю версию программы TurboConf. И это не шутка 😀
🍾6🔥1
Почему разработчику нужно радоваться когда возникают ошибки в программе?
Ответ простой. Потому, что вы узнали о ней.
У меня было много случаев, когда я был в полной уверенности, что все работает. Я все проверил, протестировал на своих устройствах и т.д.
И тут внезапно какой-нибудь пользователь пишет - программа не работает. Причем бывает это в разных формах - от позитивной, до совсем негативной.
Если удастся получить подробную информацию по проблеме и пользователь идет на контакт - эта информация на вес золота.
Внезапно может выяснится, что программа может не работать у сотен пользователей. Когда у программы есть демо-версия, 99% процентов пользователей просто удалят демку, вместо сообщения о проблеме. Хотя в большинстве случаев исправить ошибку можно достаточно быстро и просто.
Поэтому лично я всегда стараюсь сообщить об ошибках разработчикам.
Как раз сегодня выяснилось, что TurboConf может подвешивать 1С на Windows 7 на релизах выше 8.3.21 и проблеме как минимум пол года.
Понятно, что Windows 7 уже не так актуальна и снята с поддержки MS, но еще продолжает использоваться в энтерпрайзе.
Проблема интересная, в чем она заключается и как ее буду пытаться решать напишу позже.
Ответ простой. Потому, что вы узнали о ней.
У меня было много случаев, когда я был в полной уверенности, что все работает. Я все проверил, протестировал на своих устройствах и т.д.
И тут внезапно какой-нибудь пользователь пишет - программа не работает. Причем бывает это в разных формах - от позитивной, до совсем негативной.
Если удастся получить подробную информацию по проблеме и пользователь идет на контакт - эта информация на вес золота.
Внезапно может выяснится, что программа может не работать у сотен пользователей. Когда у программы есть демо-версия, 99% процентов пользователей просто удалят демку, вместо сообщения о проблеме. Хотя в большинстве случаев исправить ошибку можно достаточно быстро и просто.
Поэтому лично я всегда стараюсь сообщить об ошибках разработчикам.
Как раз сегодня выяснилось, что TurboConf может подвешивать 1С на Windows 7 на релизах выше 8.3.21 и проблеме как минимум пол года.
Понятно, что Windows 7 уже не так актуальна и снята с поддержки MS, но еще продолжает использоваться в энтерпрайзе.
Проблема интересная, в чем она заключается и как ее буду пытаться решать напишу позже.
🔥2👍1
После нескольких лет бесперебойной работы, внезапно решил упасть хостинг.
Все мои сайты и сервисы стали недоступны. Но благо это произошло в пятницу вечером, когда активных пользователей было не так много :)
Надо отдать должное RuVDS быстро ответили на запрос в техподдержку, провели работы и решили проблему за несколько часов. Не пришлось прибегать к плану Б (запускать сервисы на резервной машине). Главное в такой ситуации не отмалчиваться, сообщить о проблеме, отвечать на письма пользователей и держать их в курсе проводимых мероприятий. Всем хороших выходных ))
Все мои сайты и сервисы стали недоступны. Но благо это произошло в пятницу вечером, когда активных пользователей было не так много :)
Надо отдать должное RuVDS быстро ответили на запрос в техподдержку, провели работы и решили проблему за несколько часов. Не пришлось прибегать к плану Б (запускать сервисы на резервной машине). Главное в такой ситуации не отмалчиваться, сообщить о проблеме, отвечать на письма пользователей и держать их в курсе проводимых мероприятий. Всем хороших выходных ))
👍6
Нужен ли рефакторинг бизнесу?
Если это не преждевременный рефакторинг, то для разработчика это скорее всего польза. Когда я был наемным программистом, я бы с удовольствием потратил время на приведение кода в порядок.
Но когда я стал разрабатывать и продавать свои собственные продукты, то стал размышлять с точки зрения бизнеса. Что лучше, потратить время на рефакторинг кода или на добавление новых фич и исправление ошибок?
Рефакторинг не принесет денег в моменте. Скорее всего добавит новых ошибок, что приведет к потерям в доходах. За это время не появится новых функций в продукте и т.д.
Да, через какое-то время это возможно окупится. А может и нет. Может продукт вообще устареет и проще написать новую версию или другой проект. В общем затея рискованная.
Поэтому для себя выбрал такую стратегию. Изначально писать код достаточно приемлемого качества. Придерживаться определенного стандарта, который я установил для себя (писать самодокументирующийся код с отражающими суть названиями и т.д.). Делать минимальный рефакторинг в процессе разработки (типа выносить повторяющийся код и т.д.) и не доводить до того чтобы код вышел из под контроля.
Рефакторинг делать не глобально, а только в случаях, если это действительно необходимо. Например для оптимизации быстродействия в критичных участках или если логика какого-то метода стала слишком сложной.
А вы что думаете. Нужен рефакторинг с точки зрения бизнеса или можно обойтись без него? 😉
Если это не преждевременный рефакторинг, то для разработчика это скорее всего польза. Когда я был наемным программистом, я бы с удовольствием потратил время на приведение кода в порядок.
Но когда я стал разрабатывать и продавать свои собственные продукты, то стал размышлять с точки зрения бизнеса. Что лучше, потратить время на рефакторинг кода или на добавление новых фич и исправление ошибок?
Рефакторинг не принесет денег в моменте. Скорее всего добавит новых ошибок, что приведет к потерям в доходах. За это время не появится новых функций в продукте и т.д.
Да, через какое-то время это возможно окупится. А может и нет. Может продукт вообще устареет и проще написать новую версию или другой проект. В общем затея рискованная.
Поэтому для себя выбрал такую стратегию. Изначально писать код достаточно приемлемого качества. Придерживаться определенного стандарта, который я установил для себя (писать самодокументирующийся код с отражающими суть названиями и т.д.). Делать минимальный рефакторинг в процессе разработки (типа выносить повторяющийся код и т.д.) и не доводить до того чтобы код вышел из под контроля.
Рефакторинг делать не глобально, а только в случаях, если это действительно необходимо. Например для оптимизации быстродействия в критичных участках или если логика какого-то метода стала слишком сложной.
А вы что думаете. Нужен рефакторинг с точки зрения бизнеса или можно обойтись без него? 😉
🔥3👍2
Как, на первый взгляд, простая задача превращается в сложную.
Пришлось поменять сервис SMTP рассылки, которым я пользовался уже долгое время.
Простая задача: создать учетную запись в новом сервисе, подтвердить домен, добавить записи DKIM/SPF/DMARC в DNS и заменить несколько параметров в конфиг-файле (логин, пароль, порт, хост). Все - ну пусть максимум час-два на все.
Но не тут-то было...
После всех вышеуказанных действий все заработало, но письма стали приходить с неправильной кодировкой темы письма, типа ??????? ?????????? или ÐоÑÑÑановление паÑолÑ
Странно, все вроде работало до этого. Начинаем ковыряться в C# SmtpClient, штатный класс для отправки писем. Пробуем менять кодировки туда-сюда. Ничего не помогает.
Смотрим заголовки письма. Почему-то тема приходит в PlainText:
Subject: Восстановление пароля
а не как должно быть:
Subject: =?utf-8?B?0JLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjQtSDQv9Cw0YDQ?=
Гуглим и находим, что это баг в асинхронном методе SendMailAsync. Он известен, но Microsoft почему-то не исправляет его уже долгие годы. Видимо предыдущий сервис как-то исправлял кодировку сам. Пробуем на всякий случай обновить .NET до последней версии, но не помогает.
Пробуем несколько обходных путей, которые предлагаются. Тоже.
В общем, беру синхронный метод Send и оборачиваю его в асинхронный и все работает. Понятно, что костыль но т.к. отправка на сайте нормально не работает, нужно что-то срочно делать.
Итого, задача усложнилась в несколько раз и потребовала почти день, вместо одного часа и то не решена до конца . А у вас часто бывает такое?😉
Пришлось поменять сервис SMTP рассылки, которым я пользовался уже долгое время.
Простая задача: создать учетную запись в новом сервисе, подтвердить домен, добавить записи DKIM/SPF/DMARC в DNS и заменить несколько параметров в конфиг-файле (логин, пароль, порт, хост). Все - ну пусть максимум час-два на все.
Но не тут-то было...
После всех вышеуказанных действий все заработало, но письма стали приходить с неправильной кодировкой темы письма, типа ??????? ?????????? или ÐоÑÑÑановление паÑолÑ
Странно, все вроде работало до этого. Начинаем ковыряться в C# SmtpClient, штатный класс для отправки писем. Пробуем менять кодировки туда-сюда. Ничего не помогает.
Смотрим заголовки письма. Почему-то тема приходит в PlainText:
Subject: Восстановление пароля
а не как должно быть:
Subject: =?utf-8?B?0JLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjQtSDQv9Cw0YDQ?=
Гуглим и находим, что это баг в асинхронном методе SendMailAsync. Он известен, но Microsoft почему-то не исправляет его уже долгие годы. Видимо предыдущий сервис как-то исправлял кодировку сам. Пробуем на всякий случай обновить .NET до последней версии, но не помогает.
Пробуем несколько обходных путей, которые предлагаются. Тоже.
В общем, беру синхронный метод Send и оборачиваю его в асинхронный и все работает. Понятно, что костыль но т.к. отправка на сайте нормально не работает, нужно что-то срочно делать.
Итого, задача усложнилась в несколько раз и потребовала почти день, вместо одного часа и то не решена до конца . А у вас часто бывает такое?😉
🔥6👍1
Кто-нибудь вообще читает Помощь в программах?
Мы часто критикуем пользователей, за то что они не читают инструкции и помощь к нашим программам. А сами поступаем точно так же.
Например, для TurboConf я создал большой раздел на сайте, где подробно с картинками и гифками расписаны все функции программы. Но читают его достаточно редко. Хотя в самой программе есть куча ссылок на него. Даже в ТурбоПоиск (поле которое всегда на виду) интегрирована помощь по всем скриптам и функциям.
Но и сам я тоже не могу себя заставить сесть и детально ознакомится со всем инструментарием который я использую. Максимум могу просмотреть какой-нибудь обучающий ролик на YouTube. Если что-то не работает или не знаю как воспользоваться функцией лезу в Гугл.
В древние времена, когда не было интернета - мануал был единственным источником информации. Поэтому да, тогда читал.
Но мне также попадались пользователи, которые внимательно читают Помощь от А до Я. Но сейчас это большая редкость. Видимо времена сейчас такие.
Как по мне, лучше всего работают какие-то подсказки, которые доступны прямо в процессе использования функции программы. А еще лучше когда все понятно без всяких подсказок, но так не всегда можно сделать.
Писать и поддерживать документацию в актуальном состоянии достаточно трудозатратная задача. Может ну ее тогда совсем? ))
А вы сами читаете мануалы? 😉
Мы часто критикуем пользователей, за то что они не читают инструкции и помощь к нашим программам. А сами поступаем точно так же.
Например, для TurboConf я создал большой раздел на сайте, где подробно с картинками и гифками расписаны все функции программы. Но читают его достаточно редко. Хотя в самой программе есть куча ссылок на него. Даже в ТурбоПоиск (поле которое всегда на виду) интегрирована помощь по всем скриптам и функциям.
Но и сам я тоже не могу себя заставить сесть и детально ознакомится со всем инструментарием который я использую. Максимум могу просмотреть какой-нибудь обучающий ролик на YouTube. Если что-то не работает или не знаю как воспользоваться функцией лезу в Гугл.
В древние времена, когда не было интернета - мануал был единственным источником информации. Поэтому да, тогда читал.
Но мне также попадались пользователи, которые внимательно читают Помощь от А до Я. Но сейчас это большая редкость. Видимо времена сейчас такие.
Как по мне, лучше всего работают какие-то подсказки, которые доступны прямо в процессе использования функции программы. А еще лучше когда все понятно без всяких подсказок, но так не всегда можно сделать.
Писать и поддерживать документацию в актуальном состоянии достаточно трудозатратная задача. Может ну ее тогда совсем? ))
А вы сами читаете мануалы? 😉
👍1
Решил провести кое-какой рефакторинг на сайтах, обновить версии .NET Framework, перевести методы на асинхронные где еще не было сделано до этого.
В результате потом три дня разбирался с исключениями и периодическими падениями IIS. Зато разобрался как определять причину падения w3wp.exe.
Если коротко, то нужно снять дамп во время падения и проанализировать его.
Для снятия дампа нужно:
1. установить на сервер Debug Diagnostic Tool от Microsoft.
2. запустить DebugDiag Connection и настроить к какому процессу сайту цеплять отладчик и какой дамп снимать. Я выбрал полный. Все это занимает буквально несколько кликов.
3. Ждать падения, в окне будет увеличиваться счетчик ошибок.
Для анализа:
1. Запустить DebugDiag Analysis
2. Загрузить дампы, которые насобирал DebugDiag
3. Выбрать нужный отчет, в моем случае Default (Crash report) и нажать Анализ
4. В отчете ищем текст исключения и трассировку.
В общем в падениях была виновата одна библиотека, которая использовалась при синхронизации сайта с ВКонтакте. Для нее после обновления .NET почему-то в конфиге сайте не прописался нужный binding. В тестовой среде все работало, а вот на продакшене уже нет.
Ошибку исправил, а заодно еще исправил несколько проблемных мест. Сейчас бы это все заняло, конечно, гораздо меньше времени.
Но опыт получен 😉
В результате потом три дня разбирался с исключениями и периодическими падениями IIS. Зато разобрался как определять причину падения w3wp.exe.
Если коротко, то нужно снять дамп во время падения и проанализировать его.
Для снятия дампа нужно:
1. установить на сервер Debug Diagnostic Tool от Microsoft.
2. запустить DebugDiag Connection и настроить к какому процессу сайту цеплять отладчик и какой дамп снимать. Я выбрал полный. Все это занимает буквально несколько кликов.
3. Ждать падения, в окне будет увеличиваться счетчик ошибок.
Для анализа:
1. Запустить DebugDiag Analysis
2. Загрузить дампы, которые насобирал DebugDiag
3. Выбрать нужный отчет, в моем случае Default (Crash report) и нажать Анализ
4. В отчете ищем текст исключения и трассировку.
В общем в падениях была виновата одна библиотека, которая использовалась при синхронизации сайта с ВКонтакте. Для нее после обновления .NET почему-то в конфиге сайте не прописался нужный binding. В тестовой среде все работало, а вот на продакшене уже нет.
Ошибку исправил, а заодно еще исправил несколько проблемных мест. Сейчас бы это все заняло, конечно, гораздо меньше времени.
Но опыт получен 😉
👏2
Начал заполнять на сайте раздел о клиентах. Все руки не доходили, хотя понимал что это очень важно.
Добавил карусель с логотипами на лендинг и в раздел Купить.
Буду постепенно добавлять, список длинный 😏
Это может помочь новым пользователям принять решение о покупке.
Как говорится, лучше позже чем никогда.
Добавил карусель с логотипами на лендинг и в раздел Купить.
Буду постепенно добавлять, список длинный 😏
Это может помочь новым пользователям принять решение о покупке.
Как говорится, лучше позже чем никогда.
👍4🔥1
Решил наконец-то окончательно победить неправильное отображение форм, при использовании масштабирования в системе.
Сейчас все больше мониторов с высоким разрешением, поэтому обращений по этому поводу поступают все чаще и чаще.
Проблема в том, что для WinForms масштабирование в Windows настоящий ад. На разных системах и разных версиях .NET все реализовано по своему. А если еще у вас несколько разных мониторов...
Даже в пределах Windows 10 масштабирование может вести себя по разному, в зависимости от установленного обновления Creators Update и .NET 4.7.2
По тестам, лучше всего программа отображалась на Windows 11, но зная неповоротливость энтерпрайза, рассчитывать на это пока не стоит.
Еще из бонусов. Смену масштаба при переносе с монитора на монитор можно отследить только в последних версиях .NET и ОС.
В общем решил писать свою реализацию.
Разрабатывать формы нужно обязательно на 100% DPI, а тестировать уже при другом. При чем нужно перелогиниваться, что бы было все корректно. Либо проверять на другой машине.
Замерил размер шрифта 8.25 на своей системе, с масштабированием 100%. Затем в программе, при создании формы, добавил вычисление строки с таким шрифтом на текущей форме и поделив эти значения получил точный коэффициент. Далее корректирую размеры элементов формы.
Проверил на разных системах, с разным масштабированием. Работает как часы. 😉
Сейчас все больше мониторов с высоким разрешением, поэтому обращений по этому поводу поступают все чаще и чаще.
Проблема в том, что для WinForms масштабирование в Windows настоящий ад. На разных системах и разных версиях .NET все реализовано по своему. А если еще у вас несколько разных мониторов...
Даже в пределах Windows 10 масштабирование может вести себя по разному, в зависимости от установленного обновления Creators Update и .NET 4.7.2
По тестам, лучше всего программа отображалась на Windows 11, но зная неповоротливость энтерпрайза, рассчитывать на это пока не стоит.
Еще из бонусов. Смену масштаба при переносе с монитора на монитор можно отследить только в последних версиях .NET и ОС.
В общем решил писать свою реализацию.
Разрабатывать формы нужно обязательно на 100% DPI, а тестировать уже при другом. При чем нужно перелогиниваться, что бы было все корректно. Либо проверять на другой машине.
Замерил размер шрифта 8.25 на своей системе, с масштабированием 100%. Затем в программе, при создании формы, добавил вычисление строки с таким шрифтом на текущей форме и поделив эти значения получил точный коэффициент. Далее корректирую размеры элементов формы.
Проверил на разных системах, с разным масштабированием. Работает как часы. 😉
🔥4👏3
Решил преобразовать канал FastTalk 1C в TurboConf 1C
Решение было не просто принять, но взвесив все за и против я это сделал.
Преимуществ несколько:
1. Канал FastTalk 1C не особо взлетел. Предполагалось что в нем будут публиковаться разные авторы, в различных рубриках. Как думаете сколько за год авторов, кроме меня, добавило статьи? Правильно, 0.
2. Создавать с нуля еще один канал, процедура не простая. А т.к. аудитория на канале уже была и большинство публикаций в последнее время были как раз посвящены ТурбоКонф, то решение логичное.
3. У меня и так много каналов и вести еще один просто нет возможности.
Отдельный канал TurboConf я давно хотел сделать. Группа была, но не все любят участвовать в чатах. Да и информации там слишком много, нужные новости можно случайно пропустить.
Планирую публиковать не только информацию посвященную TurboConf, но и о других инструментах, продуктивной разработке и администрировании.
Понятно, сейчас происходят отписки, но и новые пользователи тоже прибавляются. Со временем думаю все устаканится и будет ОК 😉
Решение было не просто принять, но взвесив все за и против я это сделал.
Преимуществ несколько:
1. Канал FastTalk 1C не особо взлетел. Предполагалось что в нем будут публиковаться разные авторы, в различных рубриках. Как думаете сколько за год авторов, кроме меня, добавило статьи? Правильно, 0.
2. Создавать с нуля еще один канал, процедура не простая. А т.к. аудитория на канале уже была и большинство публикаций в последнее время были как раз посвящены ТурбоКонф, то решение логичное.
3. У меня и так много каналов и вести еще один просто нет возможности.
Отдельный канал TurboConf я давно хотел сделать. Группа была, но не все любят участвовать в чатах. Да и информации там слишком много, нужные новости можно случайно пропустить.
Планирую публиковать не только информацию посвященную TurboConf, но и о других инструментах, продуктивной разработке и администрировании.
Понятно, сейчас происходят отписки, но и новые пользователи тоже прибавляются. Со временем думаю все устаканится и будет ОК 😉
Как там дела с ботом вакансий?
Подключил несколько партнеров - админов крупных телеграм каналов по 1С. Они разместили у себя ссылку на бота и будут получать комиссию, если будет прибыль 🙂.
Копится база пользователей и работодателей. Пользователей бота уже более 800.
Начал тестировать монетизацию. Ввел два типа размещения Бесплатное и Премиум.
Бесплатное - размещение в боте без уведомлений и публикация в телеграм канале.
Премиум - рассылка пользователям бота с уведомлением, публикация в канале, закрепление в топе в боте и канала. Стоимость тестирую от 1р. за отправку одному пользователю и выше. Стоимость рассчитывается перед публикацией, с учетом оборов пользователей.
Практически все работодатели пока выбирают бесплатную публикацию.
Но сегодня один работодатель уже купил Премиум размещение за 770 руб. Значит спрос есть и с этим можно уже работать. Из этой суммы часть будет начислена партнерам.
Пока это все еще MVP и нужно как следует над ним поработать. Но тем не менее кое-какие успехи уже есть 😉
Подключил несколько партнеров - админов крупных телеграм каналов по 1С. Они разместили у себя ссылку на бота и будут получать комиссию, если будет прибыль 🙂.
Копится база пользователей и работодателей. Пользователей бота уже более 800.
Начал тестировать монетизацию. Ввел два типа размещения Бесплатное и Премиум.
Бесплатное - размещение в боте без уведомлений и публикация в телеграм канале.
Премиум - рассылка пользователям бота с уведомлением, публикация в канале, закрепление в топе в боте и канала. Стоимость тестирую от 1р. за отправку одному пользователю и выше. Стоимость рассчитывается перед публикацией, с учетом оборов пользователей.
Практически все работодатели пока выбирают бесплатную публикацию.
Но сегодня один работодатель уже купил Премиум размещение за 770 руб. Значит спрос есть и с этим можно уже работать. Из этой суммы часть будет начислена партнерам.
Пока это все еще MVP и нужно как следует над ним поработать. Но тем не менее кое-какие успехи уже есть 😉
🔥1
Какие только баги не встречаются на свете!
Случайно обнаружил, что если имя пользователя TurboConf содержит .st, то возникает ошибка загрузки штатных шаблонов *.st конфигуратора.
Например:
C:\Users\s.stepanov\AppData\Roaming\1c\1cv8\1cv8cmn.pfl ))
Программа думает что C:\Users\s.st - это файл шаблона и пытается его загрузить.
Обнаружил случайно при анализе лога пользователя, на предмет другой ошибки.
Чего только не бывает 😀
Случайно обнаружил, что если имя пользователя TurboConf содержит .st, то возникает ошибка загрузки штатных шаблонов *.st конфигуратора.
Например:
C:\Users\s.stepanov\AppData\Roaming\1c\1cv8\1cv8cmn.pfl ))
Программа думает что C:\Users\s.st - это файл шаблона и пытается его загрузить.
Обнаружил случайно при анализе лога пользователя, на предмет другой ошибки.
Чего только не бывает 😀
😁4
Бывает у вас такое?
Исправил небольшую ошибку, надо выпускать в релиз и решаешь сразу закрыть еще одну. А тут тоже можно улучшить, тут подправить, тут добавить... В результате 3 дня разработки и релиз на 20 изменений 😉
Исправил небольшую ошибку, надо выпускать в релиз и решаешь сразу закрыть еще одну. А тут тоже можно улучшить, тут подправить, тут добавить... В результате 3 дня разработки и релиз на 20 изменений 😉
👍10
Добавить новую фичу не сложно, сложно довести ее до рабочего состояния.
В точности по правилу Парето, 20% времени занимает создать прототип который работает у самого разработчика. А потом начинается 80% доведения до ума, чтобы фича работала везде (самая скучная часть).
Начинают всплывать нюансы, в других функциях появились баги (да, далеко не все можно выявить Юнит тестами).
А руки чешутся добавить еще новый функционал, а не копаться в исправлениях и доработках.
Но что делать, таков Путь разработчика 😉
В точности по правилу Парето, 20% времени занимает создать прототип который работает у самого разработчика. А потом начинается 80% доведения до ума, чтобы фича работала везде (самая скучная часть).
Начинают всплывать нюансы, в других функциях появились баги (да, далеко не все можно выявить Юнит тестами).
А руки чешутся добавить еще новый функционал, а не копаться в исправлениях и доработках.
Но что делать, таков Путь разработчика 😉
🔥1
Хотел перейти на более короткий цикл выпуска релизов. Т.е. одна большая фича - новый релиз.
Но опять сделал монстра. И новый API, и поднятие версии .NET и OneScript, куча нового функционала и улучшенные механизмы взаимодействия.
В общем уже почти тянет на новую мажорную версию TurboConf 6, а не TurboConf 5.18 🙂
Но опять сделал монстра. И новый API, и поднятие версии .NET и OneScript, куча нового функционала и улучшенные механизмы взаимодействия.
В общем уже почти тянет на новую мажорную версию TurboConf 6, а не TurboConf 5.18 🙂
🔥9⚡2
Что-то почтовые рассылки совсем перестали работать.
Делал прошлую рассылку 3 месяца назад, отклика почти не было, зря потратил 1000 руб.
Сегодня еще раз попробовал рассылку о новом большом релизе. Опять бесполезно. 1% переходов. В предыдущей было 4%. До этого было 8% и выше.
Просмотров 12% вместо 33% у прошлой.
Видимо от рассылок на почту придется отказаться.
ВК тоже глухо. 41 просмотр из 270 подписчиков. 1 лайк и то мой 😀 Зачем я веду эту группу 🤔
Но зато Телеграм радует.
Видимо все окончательно перешли в Телеграм и почту уже не смотрят.
Делал прошлую рассылку 3 месяца назад, отклика почти не было, зря потратил 1000 руб.
Сегодня еще раз попробовал рассылку о новом большом релизе. Опять бесполезно. 1% переходов. В предыдущей было 4%. До этого было 8% и выше.
Просмотров 12% вместо 33% у прошлой.
Видимо от рассылок на почту придется отказаться.
ВК тоже глухо. 41 просмотр из 270 подписчиков. 1 лайк и то мой 😀 Зачем я веду эту группу 🤔
Но зато Телеграм радует.
Видимо все окончательно перешли в Телеграм и почту уже не смотрят.
Когда я работал наемным программистом, мне всегда нравился вопрос от руководства, "Сколько точно нужно времени чтобы добавить такой-то функционал"?
Как по мне для алгоритма расчета времени на выполнение новой задачи лучше всего подходит этот отрывок из Р. Шекли.
Вальдец удрученно вздохнул, извлек из пояса клочок бумаги и огрызок карандаша и спросил:
– Сколько монет у вас в кармане?
Порывшись в кармане, Марвин сказал:
– Восемь.
Вальдец записал эту цифру, потом выяснил год и день рождения Марвина, номер его удостоверения личности, размер обуви и рост в сантиметрах. Над этими данными он произвел какие-то математические выкладки. Затем попросил Марвина назвать наудачу любое число от 1 до 14. К названному числу он прибавил несколько своих, после чего несколько минут выводил какие-то каракули и что-то подсчитывал.
– Ну? – поторопил его Марвин.
– Помните, результат представляет собой всего-навсего статистическую вероятность, – сказал Вальдец, – и заслуживает доверия лишь как таковой.
Марвин кивнул. Вальдец продолжал:
– В вашем конкретном случае период раскрытия системы истекает ровно через одну минуту сорок восемь секунд плюс-минус пять минимикросекунд.
Как по мне для алгоритма расчета времени на выполнение новой задачи лучше всего подходит этот отрывок из Р. Шекли.
Вальдец удрученно вздохнул, извлек из пояса клочок бумаги и огрызок карандаша и спросил:
– Сколько монет у вас в кармане?
Порывшись в кармане, Марвин сказал:
– Восемь.
Вальдец записал эту цифру, потом выяснил год и день рождения Марвина, номер его удостоверения личности, размер обуви и рост в сантиметрах. Над этими данными он произвел какие-то математические выкладки. Затем попросил Марвина назвать наудачу любое число от 1 до 14. К названному числу он прибавил несколько своих, после чего несколько минут выводил какие-то каракули и что-то подсчитывал.
– Ну? – поторопил его Марвин.
– Помните, результат представляет собой всего-навсего статистическую вероятность, – сказал Вальдец, – и заслуживает доверия лишь как таковой.
Марвин кивнул. Вальдец продолжал:
– В вашем конкретном случае период раскрытия системы истекает ровно через одну минуту сорок восемь секунд плюс-минус пять минимикросекунд.
👍5