metaclass: (Default)
[personal profile] metaclass
http://theiced.livejournal.com/199627.html?thread=2403019#t2403019
Большинство реальных проблем вызывается криворукими мудаками, которые по служебной халатности руководителя проекта получили доступ к клавиатуре и репозиторию. Станут ли мудаки менее мудаками, если сменять рабочие инструменты? Нет, не станут.

п. 1: вреда от мудаков будет меньше. У них со статик типизацией код не соберется, а за несобираемый код в репозитории наказывают болью.

п. 2: если дать не-мудакам кривые инструменты - они хочешь-не хочешь, но будут писать мудацкий код. И на все вопросы "а чтойта в у вас нету контроля версий и юнит-тестов" будут просто посылать в известном направлении, т.к. с бинарными файлами скриптов, набираемыми из справочников в программе под дос и дублирующимися в файловой БД (реальная система, я с ней работал несколько лет, обслуживал) - никакой контроль-версий и прочее не работает.

Это, например, как делать ремонт в советском союзе - из подручного говна, палок и спизженных на работе инструментов и делать ремонт сейчас - через 45 минут в общественном транспорте доступен гипермаркет с доставкой и японскими школьницами на инфоцентрах.
В итоге: личные умения и опыт, конечно, решают, но инструменты соответствующие помогают работать аккуратно и не задолбавшись.

Date: 2012-10-12 07:45 pm (UTC)
From: [identity profile] polycode.livejournal.com
Статическая типизация и автоматическая сборка не спасает от криворукости. Несколько смягчает эффект, но полностью не спасает. Например, когда я у себя в отделе ввел обязательное написание комментариев к коммитам (до этого не писали), то в комментариях в большинстве случаев можно увидеть "Незначительные изменения" или что-то столь же невразумительное. А письма с руганью от билд-сервера кто-то заботливо сортирует в отдельную папочку, которую никогда не открывает.

Date: 2012-10-12 10:07 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
> Статическая типизация и автоматическая сборка не спасает от криворукости.

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

> я у себя в отделе ввел обязательное написание комментариев к коммитам

А вы проинструктируйте подчинённых, что комментарии должны описывать название новой фичи или фикс бага.
Во-первых, они об этой идее узнают.

Date: 2012-10-13 07:01 am (UTC)
From: [identity profile] polycode.livejournal.com
Странная у вас медицинская аналогия (или это в мой адрес?). Я бы сказал по-другому: если плохому врачу дать хорошие инструменты, качество его работы повысится незначительно.

В своем отделе я не главный, поэтому не могу проинструктировать, а могу только убеждать. Где-то треть сотрудников убедил, что надо в каждом комментарии описывать суть изменений и номер тикета. Еще треть согласилась, что мое предложение хорошее, но все равно делают по-старому.

Date: 2012-10-13 09:00 am (UTC)
From: [identity profile] metaclass.livejournal.com
Кстати, я на работе всех тоже заставляю писать изменения и номер тикета. Полезная практика, тем более что баг-трекер умеет это парсить и показывать изменения к тикету.

Но вот если плохому врачу дать хорошие инструменты и поставить над ним командовать хорошего врача - то или врач действительно плохой (т.е. совсем не лежит душа к этому делу, или же ленивый, как скотина) или таки он станет, по крайней мене, обычным врачом. Т.е. люди не всегда реально рукожопые мудаки, иногда это вызвано обстоятельствами.

Date: 2012-10-13 11:21 am (UTC)
From: [identity profile] gineer.livejournal.com
А как же правильные инструменты, которые сами увяжут комит с номером тикета? ;)

Date: 2012-10-13 12:02 pm (UTC)
From: [identity profile] polycode.livejournal.com
Это как? Я тоже такое хочу!

Date: 2012-10-13 12:10 pm (UTC)
From: [identity profile] gineer.livejournal.com
Ну вот есть стек продуктов от Confluence
там вроде есть такая возможность,
хотя, мы до такого уровня его и не использовали

Date: 2012-10-13 12:05 pm (UTC)
From: [identity profile] polycode.livejournal.com
Хорошего врача поставить командовать плохим - это правильно. Но, опять-таки, роль инструментов здесь маленькая. У меня нет опыта руководства стадами мудаков, поэтому с уверенностью я говорить не могу, но мне так кажется.

Date: 2012-10-14 07:13 am (UTC)

Date: 2012-10-14 11:19 am (UTC)
From: [identity profile] arush-damage.livejournal.com
Надо не самому заставлять а написать скрипт который без этих данных комитить не даст.

У нас например p4 настроен так что не дает комитить если не указан правильный номер бага.
В добавок должно быть указано кто ревьювал и комент.

Date: 2012-10-14 07:24 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
Медицинской аналогией я пытался проиллюстрировать пагубность и безумность хода мысли "Х не спасает от У".
Этот ход мысли глупый и бессодержательный. Инструмент оценивать надо не на спасение, а на эффективность и последствия.

Date: 2012-10-15 06:42 am (UTC)
From: [identity profile] migmit.livejournal.com
> Я бы сказал по-другому: если плохому врачу дать хорошие инструменты, качество его работы повысится незначительно.

Конечно, хороший хирург ведь может сделать операцию на сердце, имея только кухонный нож, бутылку водки и прищепку. А если дать ему продезинфецированный скальпель - качество его работы повысится очень незначительно.

Date: 2012-10-15 06:52 am (UTC)
From: [identity profile] polycode.livejournal.com
Это такая ирония? Если хорошему хирургу дать плохие инструменты, он во многих случаях не сможет работать хорошо, да. Как это противоречит моему утверждению?

Date: 2012-10-14 07:12 am (UTC)
From: [identity profile] vinslivins.livejournal.com
=) знакомо

Date: 2012-10-12 07:54 pm (UTC)
From: [identity profile] vit-r.livejournal.com
п.1 - ещё не видел ни одну техническую проблему, которую бы не обошли способом "студент пишет руками"

Date: 2012-10-12 08:21 pm (UTC)
From: [identity profile] theiced.livejournal.com
1. не будет.потому что у них в width будут или отрицательные значения или вес луны в фунтах.

Date: 2012-10-12 09:11 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Типы, типы, типы, типы.
Width int check (width>0 and width <MaxWidthOfRetinaIPadIn10e10years)

Date: 2012-10-12 09:21 pm (UTC)
From: [identity profile] theiced.livejournal.com
а такое делается и на динамических языках и ни разу не сложнее же ;]

Date: 2012-10-12 09:29 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Нет уж, ad hoc велосипедные тайпчекеры заведут нас в ад почище хаскеля :)

Date: 2012-10-12 09:48 pm (UTC)
From: [identity profile] theiced.livejournal.com
>Width int check (width>0 and width <MaxWidthOfRetinaIPadIn10e10years) вот такие?

Date: 2012-10-12 09:51 pm (UTC)
From: [identity profile] theiced.livejournal.com
то есть я в руби могу писать attr_check :width, lambda { |w| w > 0 && w < Хуй }. имплементация attr_check (для всех-всех-всех классов) займёт ровно одну строку (манки патчим Object).

Date: 2012-10-14 07:15 am (UTC)
From: [identity profile] vinslivins.livejournal.com
да. зато какие-то дятлы мне например впендюрили через лямбды кусок db query-логики в КОНФИГУРАЦИЮ.

Date: 2012-10-14 07:15 am (UTC)
From: [identity profile] vinslivins.livejournal.com
в руби тяжко то, что нельзя пускать людей ниже среднего, да ваще людей, не набивших шишек, за клавиатуру. нельзя.

Date: 2012-10-12 08:34 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
ну если мудаку вместо тупой пилу дать острую, он пилить будет лучше, а японских школьниц людей порежет столько же
а если вместо пилы дать бензопилу, пилить будет в сто раз больше и людей в сто раз больше порежет

Date: 2012-10-12 09:13 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Я сегодня 4 часа болгаркой с алмазным кругом и перфоратором рефакторил особенности конструкции санузла.
Надо заметить, делать это с инструментами гораздо удобнее, чем без них :)

Date: 2012-10-12 09:18 pm (UTC)
From: [identity profile] themech.livejournal.com
И теперь вам нужно больше санузлов? ;-)

Date: 2012-10-12 09:20 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
Рефакторить санузлы соседям в перерывах между хаскельными библиотеками.

Date: 2012-10-13 04:23 am (UTC)
From: [identity profile] nivanych.livejournal.com
И это ещё ви не говорили про хороший мощный перфоратор!

Date: 2012-10-13 08:38 am (UTC)
From: [identity profile] levgem.livejournal.com
Кстати, меня поразило, что мощный перфоратор тише дрели с перфоратоной примочкой.

Перфоратор шмак и за секунду делает дырку. А дрелью можно час изводить соседей.

Date: 2012-10-13 09:01 am (UTC)
From: [identity profile] metaclass.livejournal.com
Ну. После этого вопрос "стоит ли использовать хорошие инструменты, или только то, что менеджеру кажется приемлемым", можно считать закрытым :)

Date: 2012-10-13 09:13 am (UTC)
From: [identity profile] levgem.livejournal.com
Если уж так хочется обманывающих аллегорий, то можно вот что обсудить: какой покупать перфоратор, за 25 000 р. или за 3000 р?

С одной стороны дорогой перфоратор имеет суммарный срок жизни выше, чем пропорциональное количество дешевых. С другой стороны, дешевый инструмент можно завозить прям на объект и бросать там.
Опять же, не страшно, что его сломают или украдут.

Рабочему, конечно, хочется перфоратор за 250 000 рублей.

Date: 2012-10-13 10:38 am (UTC)
From: [identity profile] metaclass.livejournal.com
Зависит не от цены, а от задач - если там нужно в бетонных стенах пробить 100 отверстий под канализацию, то очевидно надо более мощный, а если повесить кухню - то хватит и поменьше.

Дешевые бытовые покупать смысла вообще нет, брать надо профессиональные.

Date: 2012-10-13 02:55 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Мне даже показалось, что дело не только во времени делания дырки, а что как будто, даже и тише ;-)

Date: 2012-10-13 08:56 am (UTC)
From: [identity profile] metaclass.livejournal.com
У меня еще есть дремель с бурами для прецизионного выпиливания по плитке :)

Date: 2012-10-12 10:15 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
Комменты у вас показательные. Полностью подтверждают общемировую славу русских программистов как мизантропов, органически неспособных к управлению людьми. Поэтому менеджеров-индусов в западных компаниях навалом (а они тоже ой не сахар), а русских по пальцам. Угадайте, кому больше платят и чаще увольняют.

В бизнесе тип используемого инструмента крайне слабо определяется соображениями эффективности работы. В основном причины выбора такие:
- что в предметной области обычно используют
- к чему у менеджера самого душа лежит
- кадровые соображения, как оно у программеров пойдёт.

Джаваскрипт чудовищный язык и с ним всё непросто. Но это не повод его не применять в типовых местах.

Date: 2012-10-12 11:33 pm (UTC)
From: [identity profile] jakobz.livejournal.com
А чо джаваскрипт-то? Нормальный вполне язык. Не такой гейский как руби и питон, но по-сути тоже самое.

Понятно что писать на node.js стоит только чтобы в гей-бары пускали бесплатно, но для UI javascript - вполне даже ок.

Date: 2012-10-14 07:21 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
> А чо джаваскрипт-то? Нормальный вполне язык.

То-то на него стандарт под 1000 страниц.

Для простых применений жс ок -- бейсик как бейсик. К сожалению, на нём можно выстрелить себе в ногу, и люди регулярно стреляют. Пока нет культуры правильного использования жс, и например унаследованый мегабайт хардкор скрипта практически невозможно постичь. Часто -- и даже живыми авторами.
(deleted comment)

Date: 2012-10-14 07:33 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
Комплексы, дорогой мой орчонок, у вас, матерящихся крестьян. Человек это как умная лошадь, человека надо не плёткой бить и не считать мудаками, а человека надо УМЕТЬ применять по назначению, с уважением к инструменту. Вы людей не любите и стремитесь унизить. Это экономически убыточно.

Если я в чём-то неправ по фактам о менеджерах, репутации и эффективности, то скажите.
А беспредметную ахинею про комплексы я записал в неудавшуюся попытку сказать "сам дурак". Вероятно, вы чем-то расстроены, раз в отношении коллег идёт лксика типа "мудак". Что-то вам стоит исправить.

Date: 2012-10-12 11:37 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Типизированные языки просто либо весьма говёно типизированы (типа C#), либо слишком задротские (типа хаскеля).

Но движуха идет и все у нас будет. К старости. Typescript вон - ничо так инициатива.

Date: 2012-10-13 06:05 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Есть и промежуточные (типа окамла и D ) , но их почти никто не использует, поэтому мало библиотек и/или кривые инструменты, поэтому их никто не использует.

Date: 2012-10-13 10:18 am (UTC)
From: [identity profile] raisner.livejournal.com
А в чем проблема типизации C#?

Date: 2012-10-13 03:35 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Даже если не смотреть на всякие хаскели, в C# масса проблем на голом месте:
- все reference-типы - nullable, через что имеем кучу гемора и проблем в рантайме, тогда как все это прекрасно можно было решить системой типов
- дженерики появились только во втором .net, через это библиотека загажена нетипизированными коллекциями вдоль и поперек
- тяжеловесный синтаксис для классов. В 4-м можно лепить анонимные типы, но вернуть их из метода нельзя
- очень слабый вывод типов

Короче C# постоянно ставит палки в колеса и заставляет писать кучу кода на пустом месте. Хотя в C# еще все относительно неплохо, у многих хуже.

Date: 2012-10-13 04:05 pm (UTC)
From: [identity profile] raisner.livejournal.com
- в чем неудобство nullable в рантайме? Надо в коде постоянно проверять, что аргумент не пустой? Так в любом случае какая-то логика будет, только проверкой типа HasValue.
- для всех методов библиотеки где можно было воткнуть дженерики это сделали. Странно если бы они убили старые методы, сломав совместимость. Ими же не заставляют пользоваться при наличии хорошей альтернативы.
- да, невозможность возвращать анонимные типы печальна, но как это сделать, сохранив строгую типизацию?
- тут согласен

Возможно я ничего слаще морковки не пробовал (только C\C++, C#, Java, JavaScript), поэтому мне шарп кажется весьма удачным языком на фоне всего остального. На что посмотреть для расширения кругозора (ну кроме академических хаскелей)?

Date: 2012-10-13 04:26 pm (UTC)
From: [identity profile] jakobz.livejournal.com
- неудобство в том, что нельзя выразить на уровне системы типов что какое-то значение не может быть null. Соответственно компилятор не может проверить что мы передаем null туда куда нельзя, или без проверки используем nullable.

- мало где можно было уже поправить библиотеки на дженерики. Повсюду там NameValueCollection-ы всякие до сих пор.

- решаемо, но для этого нужен полноценный вывод типов

В контексте разговора static vs. dynamic можешь глянуть на новый этот MS-овский typescript. Там заход в типизацию со стороны динамических языков, выглядит красиво.

Date: 2012-10-13 06:47 pm (UTC)
From: [identity profile] metaclass.livejournal.com
1) системы типов не дают сделать тип null и проверки не нужны. Например в F# чтобы тип мог быть null нужно это явно указать при объявлении типа
2) чтобы возвращать анонимные типы, нужно усилить выводилку типов. Т.е. чтобы вывод типов мог работать за границами отдельного метода.

Попробуйте F#, благо он в студии 2010 есть, а в 2008 ставится дополнительно. Там тайпчекер хоть и не такой мощный, как в хаскеле, но по крайне мере даст представление.

Date: 2012-10-13 07:56 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
Как говорил персонаж фильма Snatch "Never underestimate the predictability of stupidity". Я бы короче сказал "never underestimate stupidity". Мудаки могут все.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 24th, 2025 11:41 am
Powered by Dreamwidth Studios