Одним из тренингов Стратоплана, который фирма Иностудио в прошлом году организовала для своих сотрудников был тренинг "Практические приемы работы с мотивацией". В числе прочего отрабатывали целеполагание и приемы как побудить себя достигать эти цели.
Две профессиональные цели я тогда для себя определил — снова поучаствовать в профессиональном обучающем мероприятии (до этого я один раз участвовал на User Group) и сделать для своих продуктов систему автоматического обновления.
Первая цель трансформировалась через какое-то время в организацию в Таганроге конференции Стратоплана.
Вторую включил в график билдов, в начале года дошло дело до неё и тут случился интересный повод порефлексировать.
Все ПМы знают про "профессиональную болезнь" программистов (аналог корпоративных болезней) — хвататься первым делом за клавиатуру и начинать писать код, вместо того, чтобы начать на листике набрасывать архитектуру и логику решения. Многие также знают про другую "болезнь" — считать что свой код всегда более "труъ", чем чужой. Из второй, в частности, происходят такие явления, как "написание собственных фреймворков", "да тут чёрт ногу сломит, тут надо всё переписать", когда программист после скучной возни с контролами, формами, выравниванием всего по линейке и борьбы с валидаторами наконец-таки дорывается до того, ради чего он (или она) вообще стал программистом — намонстрячить кучу крутого кода.
Да, и на старуху бывает проруха — я чуть было не стал жертвой этой второй болезни. Вовремя спохватившись, сперва покопался в интернете и нашел несколько платных библиотек, несколько бесплатных, какие-то поделки на codeproject и остановился на одной из них - NetSparkle. Интересная штука, простая, локализованная. Поискал её на NuGet, попутно нашёл ещё одну, похожую — AutoUpdater.Net. Дальше уже всё по писанному:
Две профессиональные цели я тогда для себя определил — снова поучаствовать в профессиональном обучающем мероприятии (до этого я один раз участвовал на User Group) и сделать для своих продуктов систему автоматического обновления.
Первая цель трансформировалась через какое-то время в организацию в Таганроге конференции Стратоплана.
Вторую включил в график билдов, в начале года дошло дело до неё и тут случился интересный повод порефлексировать.
Все ПМы знают про "профессиональную болезнь" программистов (аналог корпоративных болезней) — хвататься первым делом за клавиатуру и начинать писать код, вместо того, чтобы начать на листике набрасывать архитектуру и логику решения. Многие также знают про другую "болезнь" — считать что свой код всегда более "труъ", чем чужой. Из второй, в частности, происходят такие явления, как "написание собственных фреймворков", "да тут чёрт ногу сломит, тут надо всё переписать", когда программист после скучной возни с контролами, формами, выравниванием всего по линейке и борьбы с валидаторами наконец-таки дорывается до того, ради чего он (или она) вообще стал программистом — намонстрячить кучу крутого кода.
Да, и на старуху бывает проруха — я чуть было не стал жертвой этой второй болезни. Вовремя спохватившись, сперва покопался в интернете и нашел несколько платных библиотек, несколько бесплатных, какие-то поделки на codeproject и остановился на одной из них - NetSparkle. Интересная штука, простая, локализованная. Поискал её на NuGet, попутно нашёл ещё одну, похожую — AutoUpdater.Net. Дальше уже всё по писанному:
- Перелопатил ещё раз NuGet, ничего более интересного не нашёл.
- Создал тестовое решение с двумя приложениями, реализовал их обновление через обе библиотеки, проверил.
- В результате NetSparkle завести толком не смог, ни свое прилоожение, ни пример из их исходников — ругается, что подпись не родная и хоть ты тресни. Причем окно с этой руганью локализовано так, что надписи не вмещаются в диалоговое окно.
- На проверке актуальности файла мне свет клином не сошелся, а второе решение работало вполне понятным образом, обновлялось и с сайта и по локальной сети.
- Тем не менее, в AutoUpdater.Net был без локализации и нашёл один небольшой баг — библиотека брала название приложения не из атрибутов сборки, а из имени сборки (программисты, блин!). Качнул исходники, сделал из них репозиторий Mercurial, локализовал библиотеку, починил баг, связался с автором библиотеки, он изъявил интерес к моим изменениям, сделал дифф и отправил ему. Пара часов и инстинкт программиста удовлетворен по полной!
Выводы:
- Реюз — страшная сила! Сам бы я с нуля писал это дело гораздо дольше.
- Все приемы управления проектами основаны на практике и до них можно дойти самостоятельно, но проще и дешевле вдумчиво почитать умную книжку, там уже почти всё есть (реюз опыта) ;)
- Если у вас есть программист — любитель покодить, предложите ему усовершенствовать готовый опенсорсовый инструмент или сделать свой опенсорсовый проект. Это мотивирует в разы сильнее, чем просто сделать что-то для проекта, что заказчик даже не увидит (мне, почему-то, шедулеры достаются часто).
- DVCS — рулит. Процесс получения диффа быстрый и легкий — все утилиты уже встроены и не нужно инфраструктуру создавать.
P.S. Для тех, кто дружит с английским рекомендую послушать подкаст Скотта Хансельмана про GIT. http://hanselminutes.com/350/learning-how-to-learn-git-with-michael-sarchet В начале, при обсуждении Mercurial гость, который "использовал Mercurial 2 месяца" упоминает одну фишку, которой ему очень не хватало. Я, как человек, который работает с Mercurial почти три года, скажу, что это есть и делается довольно просто ;)