Pull to refresh

Comments 44

С Py2 против Py3 всё не так однозначно, как написано в статье, это известно любому питонисту.
Но если рассматривать статью, как наброс, то получилось вполне.
edit: скорее всего именно как наброс Бруно её и писал, судя по количеству комментов к другим его статьям в блоге.
UFO just landed and posted this here
А где провести черту, когда уже будет пора уходить с Py2 на Py4/5/6?
UFO just landed and posted this here
когда можно провести черту, когда можно переселяться в новый, большой удобный дом/дворец/личный город? Что мешает это сделать сейчас?
Привычен и вполне достаточен старый? Нет денег на новый дом?

Нужно просто помнить, что для бизнеса — программирование это всего лишь часть бизнес-плана, и терзания по поводу версии, заказчику до лампочки. Нужно сделать чтобы все работало по ТЗ и как можно дешевле.
Просто в НОРМАЛЬНОМ бизнес-плане, вопрос дешевле включает в себя разумное дешевле.
Переплачивать просто за новое решение ради нового решения (вдобавок внутренности все равно видят ТОЛЬКО айтишники) — совершенно нет смысла.

Когда Python 2 перестанет запускаться или понадобится библиотека, которой под Python 2 нет.
возможно, речь отчасти о том, что когда появится библиотека, которой нету в Py2, то вам придется сразу перепиливать всё приложение. если же заранее запустить этот процесс — всё может быть немного менее болезненно
Ну как сказать… тумана как такового нет. Все достаточно ясно. asyncio, улучшенный GIL, unicode и так далее…
UFO just landed and posted this here
Все это конечно очень интересно.

А примеры успешных проектов, следующих данным советам есть?
Многие так рассуждают, а побеждает все равно С++ и python 2.
UFO just landed and posted this here
Ну явно хорошее, если legacy побеждает. Вообще, любое решение по поломке обратной совместимости, обрекает тысячи незнакомых людей на лишнюю работу, а люди не любят делать лишнюю работу даже во имя чего-то светлого и великого типа функции print вместо оператора.
UFO just landed and posted this here
Ну, не то чтобы совсем нельзя. В Python 3 — exception chaining, аннотации функций, синтаксис для keyword-only аргументов.
extended tuple unpacking, nonlocal, отдельное целочисленное деление, расширенный функционал range(slice, count, index...), yield from.
Сам уже где-то год как полностью перешел на python 3. Использую в основном в научной сфере(numpy, scipy, matplotlib, cython) и слегка tornado. Год назад еще были отдельные косяки с некоторыми библиотеками, а сейчас всё ок вроде бы.
Был бы Бруно бизнесменом, он бы думал по другому.

ps: Лично я гневно против легаси, но иногда он маст би.
Пусть автор попробует писать код на фреймворке, который с каждым релизом меняет api, не заботясь об обратной совместимости, посмотрим, насколько его хватит.
Эти пользователи — мертвый груз, они должны быть уничтожены вне зависимости от того сколько денег они вам приносят. Дайте им возможность перехода и двигайтесь дальше, если они способны, то догонят вас. Если же нет, то они того не стоят.


Просто пример из жизни:

В рабочем проекте мы привязаны не столько к версиям SDK и прочих third-party (которые мы поддерживаем в максимально актуальном состоянии), сколько к версии операционной системы, которую мы поддерживаем (что закрывает для нас возможность использовать САМУЮ актуальную версию некоторых third-party и, в результате мы иногда сами повторяем функциональность более новых версий). И, с одной стороны, это наша боль и наше страдание.

А с другой стороны, инком, который генерят пользователи, сидящие на «неактуальной» версии операционной системы — достаточен чтобы оплатить большой отдел разработчиков, которые и поддерживают эту старую систему. И еще останется. В частности на людей, занимающихся глубинным рефакторингом и пишущий код с большим количеством #ifdef для улучшения производительности на разных версиях. И вот смогли бы вы ДОКАЗАТЬ, что внедрение новых и хипстоватых инструментов даст вам такой бонус в новых пользователях, способный покрыть (и перекрыть) уже существующий доход?
А вообще — это программирование ради программирования. По-моему не стоит забывать, что программисты работают, чтобы решать задачи пользователей, а не для того, чтобы красиво и удобно разрабатывать.
Фраза «пользователи — мертвый груз» — это вообще, на самом деле, за гранью.

Можешь обосновать выгодность новых технологий для бизнеса (например, стратегической выгодой, что переход на новый инструментарий значительно увеличит ретеншн засчет повышения стабильности и быстродействия сервиса — и желательно в цифрах и на основе какого-то опыта) — вперед, делай. Не можешь — плачь, колись, продолжай жрать кактус.
Тут речь идет о разработке «for developers» приложений/библиотек/фреймворков/языков. Их основная задача как раз сделать так, чтобы можно было красиво и удобно разрабатывать.
И для этого есть прекрасный пример :-) Reactive Cocoa, которые пользуясь новыми фичами языка были вынуждены поднять минимальную версию iOS, причем значительно.

Или если ваша IDE в один прекрасный момент откажется собирать для старой версии.

Или компилятор C++, который после обновления откажется компилировать старый код и не предложит инструментарий для миграции.

Вообще — в этом плане очень хорошо поступили разработчики XCode — делая какое-то существенное и значимое изменение — они вместе с тем предлагают и инструментарий по адаптации вашего кода к этому.
И это хорошая практика.

В остальных случаях — можно понять разработчиков, но это их решение приносит иногда весьма существенные затраты на адаптацию. И черт его знает, насколько это хорошо в общем смысле.
Разработчики — тоже пользователи, если рассчитывать только на новых, то старые уйдут и создадут плохую славу (заслуженно), так что новых и не появится. Несовместимые изменения иногда приходится делать, но это должен быть компромисс, либо должно быть четко обозначeно, что это альфа/бета версия и на продакшене использовать пока нельзя. Иначе это действительно программирование ради программирования.
Нет в мире достаточно больших приложений, которым нужно более двух месяцев для полного перехода, а если и есть, то они должны быть переписаны с нуля — веб намного проще, чем вы всегда предполагали.


Прекрасный максимализм. Не знаю юношеский или просто по неопытности.
В статье много идеализаций. Особенно в экономической части:
Эти пользователи — мертвый груз, они должны быть уничтожены вне зависимости от того сколько денег они вам приносят.… они того не стоят.
Сколько бы денег не приносили — они того не стоят? А если миллионы? А если миллиарды?
Потратьте лучше эти часы на создание новых версий и наймите разработчиков, которые будут помогать пользователям с переходом.
Мы только что отказались от миллиардов, так на какие деньги нанимать разработчиков? Впрочем, ответ следует дальше:
Решениями, принятыми для толпы, которая уже давно и безнадежно отстала от технологий, вы отчуждаете и негативно влияете на продвинутых пользователей, способных принести гораздо большие деньги.
На самом деле сложно оценить кто больше принесёт денег: продвинутые пользователи, внимание которых ещё нужно заслужить, или толпа, которая уже приносит нам деньги?

В целом я тоже за прогресс, но не стоит забывать и о бизнесе. Если не будет денег, то не будет никаких разработчиков и новых продуктов вообще. Статья какая-то однобокая.
Я конечно согласен с автором, что мажорные релизы имеют право ломать совместимость с прошлыми версиями, но «забить на клиентов» которые приносят деньги? ХаХа.

Если контора где я работал сделала бы именно так, то ее бы уже не существовало. Да, мы пишем новый проект, но старый кормит всю компанию и его тоже надо поддерживать и не важно что ему уже 8 лет. Выйдет новая более крутая замена — но этого времени надо еще дождаться.
Всё вокруг Lagacy-код. Включая цивилизацию и структуру ДНК. Давайте выкинем всё на фиг.
Это что — у нас сетчатка чувствительной стороной внутрь головы направлена. Вот это говнокодище в продакшен выкатили.
Да, ладно! Серьезно? Пруф есть? (пригодился бы)
А, вот креативисты, используют глаз как подтверждение своей т.з. Дескать: «не может эволюция создать такой сложный орган как глаз». Хм. И к кому после этого аппелировать?

Хотя… тут время разработки продукта нааамного превосходит время использования. Иными словами, что бы (условно) с «windows 3.1» перейти на «windows 10» надо пройти реинкарнацию…
Ну так может это наоборот фича — защита от черезмерной засветки и «сжигания сенсора»? Зачем фичу сразу багом-то называть?
Это не баг, это просто со старого проекта код тупо перетащили. Нужно было бы отрефакторить, но решили просто нейроны пустить через сетчатку туда и обратно. Правда слепое пятно образовалось, но вообще работает, так что лучше не трогать.
Оп-па, выходит, в этой цитате с баша есть доля правды:
Kotyabra: Как все в природе мудро устроено! Заметили? Ведь дырочки на шкурке у кошки именно там, где у кошки глазки!
Torin: Если б кошку писали программисты, глаза были бы на ж*пе, под кожей, а для передачи изображения использовалась бы система зеркал!

bash.im/quote/406246
Ненавижу, когда меня заставляют переходить на новые версии программ, старые версии которых прекрасно работали и решали свои задачи.

Зачастую в новых версиях появляются новые баги, портится дизайн, снижается скорость работы (из расчета производителя, что я должен обновить не только их программу, но и купить новый компьютер/телефон); внедряются шпионские и другие ограничительные функции, появляется реклама, выкидываются «устаревшие» функции, которые именно у меня находили хорошее применение. Если продукт сложный — то у меня могут быть свои разработки, связанные с ним, и при переходе на новую версию все мои старые разработки ломаются, их нужно адаптировать. Мгновенно и бесплатно это не делается. Обновление версии почти всегда сопряжено для пользователя с издержками. И далеко не всегда выгода от обновления превышает эти издержки.
Добавлю. Разработчику всегда кажется, что новая версия во всем лучше старой. И по молодости лет я, бывало, удивлялся, что пользователи моих программ не всегда страстно желают немедленно обновить версию и отказаться от старой навсегда. Потому, что продукт был критичный, в новых версиях могли (помимо моего желания и старания) сломаться некоторые функции, которые раньше надежно работали. Тестировать абсолютно все функции было нереально. Вот и осторожничали пользователи, обновляясь только тогда, когда выгода от обновления (новые нужные им функции) превышала издержки (риск того, что сломаются старые; затраты на тестирование).
И еще скажу. Если вы пишете программу не для себя (а профессиональное и коммерческое программирование, как правило, только для этого и существует) — то вы должны понимать, что вы только разработчик программы, а не ее пользователь. Ваш труд — разработка. А для пользователя ваша программа — это орудие его труда, его инструмент. Использование программы является для пользователя трудом. И как при использовании любого другого орудия труда, пользователь должен к нему приспособиться. Это занимает время и усилия; в период приспособления производительность труда уменьшается. Это как если вы научились хорошо забивать гвозди одним молотком, а производитель молотков постоянно совершенствует их, и заставляет вас постоянно менять молотки. Может быть, новые молотки где-то лучше старых, но к ним все равно надо приспосабливаться, пока рука почувствует баланс, и вы снова станете хорошо забивать гвозди новым молотком.
Скажите, где вы работаете, чтоб я точно знал, что с вами не имеет смысла связываться?

P.S. я уже увидел что перевод, спасибо.
Bruno is a coder from Croatia with Master’s Degrees in Computer Science and English Language and Literature. He’s the editor of SitePoint’s PHP channel and a developer evangelist for Diffbot.com. He avoids legacy code like the plague and when picking projects makes sure they’re as cutting edge as possible. He’s a treadmill desk enthusiast and active (board)gamer who sometimes blogs.

www.sitepoint.com/author/bskvorc/
Если молодой — еще есть шанс, что исправится. Юношеский максимализм проходит вместе с юностью.
Поскольку я вдоволь наслушался аргументов типа «ну мы уже столько тут написали, что переделать это не реально», или «а зачем? оно же как то работает — будем поддерживать» что бы не упало, то позволю себе согласится с автором статьи.

Я стараюсь ставить вопрос иначе: Хотим мы внедрять, что либо новое, или нет? Нужен ли нам этот опыт?

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

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

В общем, если желания нет, то никакие аргументы из серии «быстрее, выше, сильнее!» не будут восприняты.
Еще раз встряну насчет того, к чему все сводится.

В подавляющем количестве случаев, вопрос «хотим мы внедрять что-либо новое или нет», стоит ПОСЛЕ вопроса «кто за это заплатит». Редкие исключения — когда что-то делается с нуля и стоимость практически одинакова.
Если программисту постоянно нужно думать о бизнесе и деньгах, то пропадает все веселье :c
Ну так пускай веселится, если не хочет думать о бизнесе и деньгах. Только за свой счёт, пожалуйста.

P.S. Даже я это понимаю, при том, что программист и люблю веселье.
А как понять что v3 тоже устарела? А не только v1 и v2?
Sign up to leave a comment.

Articles