На прошлой неделе у меня произошло событие - я ушел с работы, чтобы полностью заняться своим проектом. Я думаю, об этом втайне или вполне открыто мечтает почти каждый разработчик. Но мы как мечтаем? Вот сидим, пишем классный софт и он как-то сам по себе продаётся. Через сарафанное радио...
Laravel Idea вроде получается очень неплохим продуктом. Полно отзывов в стиле "как я раньше жил без него", но какого-то ощутимого эффекта сарафанного радио нет. Мало кто готов рекламировать всем платный продукт. Как итог - всё больше и больше времени съедают продажи. Вести твиттер. Делать видео. Спонсировать конференции. Искать другие способы показать продукт широкой аудитории.
И всё чаще и чаще получается ситуация, когда ты понимаешь, что потратив время на определённые маркетинговые вещи вместо разработки какой-то фичи, получишь больше профита и не факт, что только в краткосрочной перспективе. Главное не упасть с головой в этот маркетинговый омут, и не забывать о фичах!
На этой неделе буду релизить новую версию с поддержкой livewire, laravel-modules и пары-тройки мелочей. А потом пойду пиарить это везде :)
Laravel Idea вроде получается очень неплохим продуктом. Полно отзывов в стиле "как я раньше жил без него", но какого-то ощутимого эффекта сарафанного радио нет. Мало кто готов рекламировать всем платный продукт. Как итог - всё больше и больше времени съедают продажи. Вести твиттер. Делать видео. Спонсировать конференции. Искать другие способы показать продукт широкой аудитории.
И всё чаще и чаще получается ситуация, когда ты понимаешь, что потратив время на определённые маркетинговые вещи вместо разработки какой-то фичи, получишь больше профита и не факт, что только в краткосрочной перспективе. Главное не упасть с головой в этот маркетинговый омут, и не забывать о фичах!
На этой неделе буду релизить новую версию с поддержкой livewire, laravel-modules и пары-тройки мелочей. А потом пойду пиарить это везде :)
Есть такая вещь как ошибка выжившего, когда люди делают выводы, исходя из неполных данных. Есть пример с самолётами, но прикольнее про дельфинов: "мнение о доброте дельфинов основано на рассказах пловцов, которых животные толкали к берегу, но без учёта мнения пловцов, которых толкали в обратном направлении".
Такая же штука может случиться с фидбеком о софтовых продуктах. 5% пользователей могут считать его хорошим и расхваливать. 95% посмотрели и закрыли, ничего не сказав. В итоге у автора формируется мнение, что он делает крутой продукт. А потом, спустя годы, когда он будет разорён, он будет обвинять более успешных конкурентов в хорошем маркетинге, из-за которого их продукты выиграли конкуренцию у такой классной вещи, которую "все хвалят". Я, видя все эти хорошие отзывы о своём продукте, всё переживаю, что окажусь в такой ситуации :)
Поэтому очень важно отслеживать такие параметры как процент продолжающих использовать продукт, как часто его используют, как много тех, кто его открыл и сразу удалил и т.д. К сожалению, у плагинов к шторму пока практически никакой статистики нет. Думаю, что скоро они добавят какие-нибудь возможности. А пока приходится слушать только тех, кто "выжил"
Такая же штука может случиться с фидбеком о софтовых продуктах. 5% пользователей могут считать его хорошим и расхваливать. 95% посмотрели и закрыли, ничего не сказав. В итоге у автора формируется мнение, что он делает крутой продукт. А потом, спустя годы, когда он будет разорён, он будет обвинять более успешных конкурентов в хорошем маркетинге, из-за которого их продукты выиграли конкуренцию у такой классной вещи, которую "все хвалят". Я, видя все эти хорошие отзывы о своём продукте, всё переживаю, что окажусь в такой ситуации :)
Поэтому очень важно отслеживать такие параметры как процент продолжающих использовать продукт, как часто его используют, как много тех, кто его открыл и сразу удалил и т.д. К сожалению, у плагинов к шторму пока практически никакой статистики нет. Думаю, что скоро они добавят какие-нибудь возможности. А пока приходится слушать только тех, кто "выжил"
Сегодня в 17 часов по Москве будет очередной митапчик. Про code review. С довольно известными людьми в мире PHP. Вообще, все эти онлайн-митапы эпохи ковида пока мне не очень доставляют. Чего-то в них не хватает. Но этот попробую послушать.
https://www.youtube.com/watch?v=JP7lppzWaLg
https://www.youtube.com/watch?v=JP7lppzWaLg
YouTube
Как готовить код-ревью: обсуждаем плохие и хорошие практики с подкастом SDCast
Слушайте аудиоверсию на других платформах https://sdcast.ksdaemon.ru/
3:30 - Кто пришел говорить и что болит у аутсорса, продуктовой разработки и опенсорса
7:35 - Для чего нам код-ревью и почему это не про баги (Сергей)
11:57 - Идеальный процесс код-ревью…
3:30 - Кто пришел говорить и что болит у аутсорса, продуктовой разработки и опенсорса
7:35 - Для чего нам код-ревью и почему это не про баги (Сергей)
11:57 - Идеальный процесс код-ревью…
После большого перерыва наконец начал опять писать статейки. Одну написал, еще где-то две готовятся. Эта статья просто мысли про ООП. Программисты ООП языков знают SOLID, киты ООП и прочие GRASPы, но код почти всегда получается процедурным. Процедурное мышление привычнее. Для ООП надо напрягаться, думая какие данные кому реально принадлежат. Иногда это непросто.
Статья на английском - https://adelf.tech/2020/oop-thinking
Перевод на Хабре - https://habr.com/ru/post/511744/
Статья на английском - https://adelf.tech/2020/oop-thinking
Перевод на Хабре - https://habr.com/ru/post/511744/
adelf.tech
Are you sure you write OOP code? | adelf.tech
We, PHP developers, proudly tell everybody that we know OOP and write pure OOP-code, but, honestly, more than 95% of Laravel applications code I usually see is procedural!
Если не в курсе, то недавно появилось сообщество laravel-программисток Larabelles. Один человек в твиттере решил раздать одну годовалую лицензию на PhpStorm случайной девушке, кто ответит на его твит. Я ему в привате: "подари и лицензию на Laravel Idea!" Он :"Классно! Я тут каждый месяц устраиваю нечто подобное." Я дал ему лицензий и благословил на их раздачу.
Через пару дней твит: https://twitter.com/JustSteveKing/status/1296751057499049984
Following on from supporting the amazing women in the #php community. I would like to next show my support to the #LGBTQ community by offering a years license for @laravel_idea for use in PHPStorm 🎉
Please drop a 🏳️🌈 or 🦄 in the comments ❤️
Неожиданный поворот. "Эй, представители ЛГБТ, пишущие на Laravel в PhpStorm! Пишите сюда! Ой чего подарю!" )) Даже не знаю как относиться к этому ) С трепетом жду какое сообщество будет следующим.
Через пару дней твит: https://twitter.com/JustSteveKing/status/1296751057499049984
Following on from supporting the amazing women in the #php community. I would like to next show my support to the #LGBTQ community by offering a years license for @laravel_idea for use in PHPStorm 🎉
Please drop a 🏳️🌈 or 🦄 in the comments ❤️
Неожиданный поворот. "Эй, представители ЛГБТ, пишущие на Laravel в PhpStorm! Пишите сюда! Ой чего подарю!" )) Даже не знаю как относиться к этому ) С трепетом жду какое сообщество будет следующим.
Twitter
Steve McDougall
Following on from supporting the amazing women in the #php community. I would like to next show my support to the #LGBTQ community by offering a years license for @laravel_idea for use in PHPStorm 🎉 Please drop a 🏳️🌈 or 🦄 in the comments ❤️ Winner chosen…
Совершенно случайно у меня оказались 9 билетов на Laracon Online. Он будет уже в среду, поэтому решил быстро их разыграть среди ответов на этот твит - https://twitter.com/laravel_idea/status/1297956995077672962 Подписываться необязательно )
Twitter
Laravel Idea
Suddenly, I realized that I have nine tickets to @LaraconOnline, which starts on Wed! We don't have much time, so they will be randomly gifted to this tweet repliers. Winners will be chosen tomorrow, August, 25 at 20:00 CET (14:00 EST).
29 сентября в 21:00 по Москве буду выступать на Laravel Worldwide Meetup - https://meetup.laravel.com/. Расскажу немного про то, как PhpStorm работает изнутри, что происходит во время индексации и на реальных примерах плагинов (.env files support, Laravel Idea, PEST) покажу как они могут встраиваться почти везде.
Посмотреть можно будет бесплатно и без регистрации тут - https://www.youtube.com/watch?v=h44R_ru8D3o Время, правда, для СНГ не очень удачное, но для этого и запись предусмотрена.
Посмотреть можно будет бесплатно и без регистрации тут - https://www.youtube.com/watch?v=h44R_ru8D3o Время, правда, для СНГ не очень удачное, но для этого и запись предусмотрена.
Это пиарили по всем чатикам, но если вы не видели, то сегодня в 19 по Москве будет стрим, где двое будут рефакторить код, видимо как-то соревнуясь друг с другом. Я посмотрю, вдруг интересно будет.
Ссылка: https://youtu.be/ucO7229o8Ew
Ссылка: https://youtu.be/ucO7229o8Ew
YouTube
Рефакторим c Александром Макаровым, Валентином Удальцовым, Валентином Назаровым, Леонидом Корсаковым
Стрим, на котором ребята из Yii, Skyeng, каналов Пых и PHPKazan посмотрят на код популярного гитхаб-проекта, найдут, что там порефакторить (и порефакторят).
00:22 - Интро от ведущих - Александра Макарова (Yii) и Валентина Назарова (Skyeng)
04:32 - В эфир…
00:22 - Интро от ведущих - Александра Макарова (Yii) и Валентина Назарова (Skyeng)
04:32 - В эфир…
https://habr.com/ru/company/vk/blog/527420/
ВКонтакте снова выкладывает KPHP, но в отличие от первого релиза, действительно впечатляет. Работа была проделана огромная. Даже плагин для шторма сделали: https://unserialize.github.io/kphpstorm/
Все эти красивые выводы типов... было много споров между сторонниками и противниками этих статических нововведений: типизированные свойства и т.д. А теперь реальный профит от типизации - оно хорошо укладывается в типы C++ и производительность сильно выше. Разумеется, это не на всех кейсах, но всё-таки. Я уверен, в будущем и в движке php произойдут такие изменения, поэтому типизируемся потихоньку.
ВКонтакте снова выкладывает KPHP, но в отличие от первого релиза, действительно впечатляет. Работа была проделана огромная. Даже плагин для шторма сделали: https://unserialize.github.io/kphpstorm/
Все эти красивые выводы типов... было много споров между сторонниками и противниками этих статических нововведений: типизированные свойства и т.д. А теперь реальный профит от типизации - оно хорошо укладывается в типы C++ и производительность сильно выше. Разумеется, это не на всех кейсах, но всё-таки. Я уверен, в будущем и в движке php произойдут такие изменения, поэтому типизируемся потихоньку.
Хабр
ВКонтакте снова выкладывает KPHP
Привет! Сейчас будет дежавю. Мы снова выложили на GitHub наш PHP-компилятор — KPHP. Он проделал большой путь, и чтобы рассказать о нём, сначала телепортируемся...
Кстати, если кто-то решил сразу начать использовать KPHP на своих проектах - зря. Нужно изначально писать код, учитывая его особенности. Я уверен, что фреймворки аля Laravel/Symfony просто не скомпилируются, поэтому никаких фреймворков - только хардкор.
Провожу сейчас небольшой эксперимент. Скидку на кибер-понедельник(ссылка если вдруг кому интересно - https://laravel-idea.com/promo/cyber-monday-2020, но не подумайте, что рекламирую). Всегда было интересно насколько выгодно делать такие акции и выгодно ли вообще. Где-то внутри есть уверенность, что если покупают со скидкой, то и без скидки купят, соответственно, лишь теряю деньги с этих скидок.
С другой стороны, программные продукты - не пылесосы. От того, что я продам двум людям вместо одного, у меня расходов не прибавится, а денег это принесёт больше. Этот день в итоге побьёт рекорд по дневным продажам(я уже вижу статистику), но как это отразится на декабрьских продажах?
P.S. Как же я задолбался заниматься этой ерундой, вместо того, чтобы просто разрабатывать софт... Но без этого никак нельзя. Кстати, я начал на плагине зарабатывать чуток больше, чем зарплата на последнем месте работы. Это большой прогресс и давняя мечта потихоньку реализуется.
P.P.S. По нескольким просьбам сделал обсуждения. Если вдруг кто хочет высказываться - милости просим.
С другой стороны, программные продукты - не пылесосы. От того, что я продам двум людям вместо одного, у меня расходов не прибавится, а денег это принесёт больше. Этот день в итоге побьёт рекорд по дневным продажам(я уже вижу статистику), но как это отразится на декабрьских продажах?
P.S. Как же я задолбался заниматься этой ерундой, вместо того, чтобы просто разрабатывать софт... Но без этого никак нельзя. Кстати, я начал на плагине зарабатывать чуток больше, чем зарплата на последнем месте работы. Это большой прогресс и давняя мечта потихоньку реализуется.
P.P.S. По нескольким просьбам сделал обсуждения. Если вдруг кто хочет высказываться - милости просим.
Завтра, 23 декабря в 19:00, будет стрим-холивар про вредность и полезность трейтов. Моя позиция понятна по картинке. Валентин Удальцов будет её защищать. Я напросился в команду поддержки :) Ссылка - https://www.youtube.com/watch?v=DEk56xbMITo
Большую часть декабря мало что хотелось делать. Горло побаливало, много спал и почти не работал. Сдал анализ на антитела - это был ковид. Хорошо когда твоей лени есть оправдание :)
После поста про скидку просили некий отчёт с цифрами. Совмещу это с итогами года. Разумеется, главное событие для меня - полный отказ от "работы на дядю". До сих пор не верится, но уже полгода я живу за счёт продаж своего продукта и, видимо, это продлится еще долго(см. графики). Работать меньше не стал(декабрь не считается). Засидеться допоздна, делая какую-то фичу - всё еще норма. Надо бы с этим завязывать. В 2021 хочу начать опять писать статейки, видюшки еще делать и другую всякую публичную активность. Мечты-мечты.
После поста про скидку просили некий отчёт с цифрами. Совмещу это с итогами года. Разумеется, главное событие для меня - полный отказ от "работы на дядю". До сих пор не верится, но уже полгода я живу за счёт продаж своего продукта и, видимо, это продлится еще долго(см. графики). Работать меньше не стал(декабрь не считается). Засидеться допоздна, делая какую-то фичу - всё еще норма. Надо бы с этим завязывать. В 2021 хочу начать опять писать статейки, видюшки еще делать и другую всякую публичную активность. Мечты-мечты.
Это график "уникальных загрузок" плагина. Здесь не считаются те загрузки, когда пользователи просто обновляют плагин на новую версию. Нетрудно заметить регулярный прогресс этого показателя и какой-то странный скачок в декабре, как раз тогда, когда я ничего не делал и даже твиттер плагина(https://twitter.com/laravel_idea) почти не вёл. Это связано с выходом шторма 2020.3 или сарафанное радио наконец заработало... не знаю.
Ну и самое интересное - продажи! Несмотря на кибер-понедельник в последний день ноября c рекордными дневными продажами, декабрьский доход чуток превысил ноябрьский. Прогресс виден и перспективы на 2021 прекрасные. Для понимания нарисовал примерный уровень моей зарплаты на последней работе (фулл-тайм фрилансе на американскую контору) - зелёная линия.
Почему график скачиваний такой ровный, а продаж нет - загадка. Аналитики у меня никакой нет, и это обидно.
Почему график скачиваний такой ровный, а продаж нет - загадка. Аналитики у меня никакой нет, и это обидно.
Ну и, напоследок в этом году, пару интересных ссылок.
Рома Пронский и SkyEng проводят опрос среди PHP-разработчиков. Анонимный, но если хочется выиграть пхпшного слона, то можно оставить свой email - https://skyeng-school.typeform.com/to/iNfIjQbr
Список чатиков, каналов и ютуб-контента про PHP - https://habr.com/ru/company/skyeng/blog/534758/
По обоим ссылкам есть упоминание этого канала, так что я обязан был это запостить )
Рома Пронский и SkyEng проводят опрос среди PHP-разработчиков. Анонимный, но если хочется выиграть пхпшного слона, то можно оставить свой email - https://skyeng-school.typeform.com/to/iNfIjQbr
Список чатиков, каналов и ютуб-контента про PHP - https://habr.com/ru/company/skyeng/blog/534758/
По обоим ссылкам есть упоминание этого канала, так что я обязан был это запостить )
Typeform
Подводим итоги PHP-года и разыгрываем слона
10 вопросов и пара минут - все, что потребуется
Медуза выпустила большую статью о том, как внутри устроена их система контента. Статья прям суровая техническая и её весьма интересно читать. Мне понравилось что они еще в самом начале использовали подход, о котором я часто думал. С традиционной базой данных(постгрес) работает только внутренняя система, в которой пишут редакторы и одновременно все нужные данные идут в редис. А сам сайт работает исключительно только с редисом. Когда все данные которые нужны приложению легко описать и структурировать их вполне можно хранить в редисах, получив и перформанс и упрощение системы.
https://meduza.io/feature/2021/02/10/kak-ustroeno-upravlenie-kontentom-v-meduze
https://meduza.io/feature/2021/02/10/kak-ustroeno-upravlenie-kontentom-v-meduze
О пользе тестов
Делал сегодня огромный рефакторинг. Перелопатил под сотню файлов и тысячи строк. Очень сильно упростил внутреннюю структуру авто-дополнений Laravel Idea. Всё стало проще и красивее и быстрее и появилась возможность реализовывать кастомные авто-дополнения, в общем одни плюсы, но суть не в этом.
Я запустил после всего этого тесты и один из них упал. Я быстро нашёл мелкий баг (там банально не ту переменную заюзал). Если бы этого теста не было - оно ушло бы в релиз и его заметили бы пользователи. То, что работало раньше и перестало после рефакторинга, называется регрессионным багом. Основная польза тестов именно в этом! Они позволяют находить баги регрессии на очень ранней стадии, позволяя смело делать даже крупные рефакторинги.
Понимаю, что повторяю то, что вы уже раз 10 читали где-то, но сегодня прям типичный случай со мной произошёл.
Делал сегодня огромный рефакторинг. Перелопатил под сотню файлов и тысячи строк. Очень сильно упростил внутреннюю структуру авто-дополнений Laravel Idea. Всё стало проще и красивее и быстрее и появилась возможность реализовывать кастомные авто-дополнения, в общем одни плюсы, но суть не в этом.
Я запустил после всего этого тесты и один из них упал. Я быстро нашёл мелкий баг (там банально не ту переменную заюзал). Если бы этого теста не было - оно ушло бы в релиз и его заметили бы пользователи. То, что работало раньше и перестало после рефакторинга, называется регрессионным багом. Основная польза тестов именно в этом! Они позволяют находить баги регрессии на очень ранней стадии, позволяя смело делать даже крупные рефакторинги.
Понимаю, что повторяю то, что вы уже раз 10 читали где-то, но сегодня прям типичный случай со мной произошёл.
Дмитрий Елисеев хорошую статью написал. В своём стиле, степенно и обстоятельно, разбирает ту проблему, о которой я кратко написал в своей статье "Вы уверены, что пишете объектно-ориентированный код?". Мне иногда не хватает этой обстоятельности. Всё пытаюсь писать коротко, боюсь написать много буков.
Ссылка: https://elisdn.ru/blog/142/structs-or-objects
Ссылка: https://elisdn.ru/blog/142/structs-or-objects