Pull to refresh

Comments 78

Дарт Индусиус является наиболее распространенным темным. Получил свое название от прото-ареала обитания, и его научное название Дарт Бангалориус. Умело сочетает почти все черты вышеописанных темных, но обладает и некоторыми уникальными свойствами.

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

В одиночном виде неопасен, но при объединении в группу себе подобных превращается в отряд клонов, интересы которого не совпадают с целями и задачами как проекта, так и его нанимателя. Крупные отряды Дартов Индусиусов экстремально опасны для любых светлых начинаний и практик.
И про светлую сторону тоже в таком духе напишите :) Хотя что-то мне подсказывает, что разновидностей Джедаев будет меньше чем Ситхов.
Обязательно напишу, скорее всего он будет о направлении в развитии джедаев — мастер, рыцарь и так далее)
На митинги к нам заходит Дарт Внедрейдр. Это слышно по сопению в трубку.
Ох… уже месяц сижу на поддержке проекта, который писался исключительно ситхами, застрелиться хочется :(
Дарт Костыль. Не признаёт коридоры, стены и двери, всегда ходит кратчайшим путём, напролом. Но зато очень быстро добирается до цели и руководство его за это любит, а джедаи поминают крепким словом, когда ходят вслед за ним, заделывают дыры, пробоины и восстанавливают коммуникации.
Оказывается я на темной стороне. Слава богу печеньки есть.
Много, много, много печенек.
Дарт Копипастус — без комментариев…
А, нет. Без комментариев — это Дарт Нокоментус…
Тогда стоит и про Капитануса вспомнить. Вот я, например…

/* adds A to B */ sometype add_a_to_b(sometype a, sometype b) { ...
Дарт ИнлайнСтайл — не признает css в отдельном файле и пишет все стили прямо в теги. Обычно предпочитает «старые добрые таблицы» и атрибуты border, width, height, etc.
UFO just landed and posted this here
Дарт Паттернус — ученик Четырех великих Джедаев, перешедший на Темную сторону Силы. Он внедряется в проект и запутывает код бесконечными и не связанными паттернами. Никто не может быстро понять, что написано там, где побывал этот ситх. Самое страшное — то, как этот Дарт извращает мантру Рефакторинга, часто используя ее в своих черных целях. Его древний враг — могучий джедай Тест Драйвен, но даже он иногда не в силах совладать с паутиной, которую сплел Паттернус. Есть лишь один способ борьбы с ним — использование новейшего ROI-оружия Республики. Однако мало где оно есть, и есть джедаи, умеющие его применить…
Как говорил Учитель Бек, «Паттерн сам — антипаттерн это, иногда».
И его ученик, Дарт Факториус. Лично я его не встречал, но, по слухам, именно он изобрел класс HandlerFactoryFactoryFactory, после чего положил его в DI-контейнер…
Дарт Оптимизатурус. Разворачивает все циклы, которые видит, не приенят foreach в принципе, использует указатели и работает с памятью напрямую, не смотря на то, что пишет на C#. Не признает слоев приложения, потому что это «замедляет программу».
Работая мускулами всегда побеждает своих оппонентов и навязывает им свою волю


Несколько раз перечитывал, пытаясь понять, причем тут mysql, пока не осознал, что мускул — это то, что под кожей.
Кодекс ситов
— это потому, что на С пишут, что ли?
В том-то и дело, что английскому звуку [θ] соответствует транскрипция [т], либо [с] или [з] в качестве исключения. Поэтому сит, но никак не ситх.
Насколько я помню, в переводе «Звёздных войн» были-таки ситхи (википедия, конечно, не последняя инстанция, но клац и клац). Ну и, за компанию, ещё один клац.
Да, в русском языке прижился вариант «ситх», но это ошибка перевода.
Очень частая ошибка при переводе индийских слов: «Маратхи» вместо «Марати», «Гатх» вместо «Гат». Т.к. Индия была долгое время английской колонией, многие слова там написаны на английском, через gh или th. Все переводят не с оригинала, а с английских транскрипций… коряво.
действительно очень старые — 10 и 15-летней давности.
Это порадовало. Автор счастливчик и не имел дело с кодом 30-летней давности.
Имел счатье интергрироваться с кодом 75 года розлива, но на этом все и кончилось, внутрь его мы не лезли
Расскажите, что это за чудо? Зачем оно понадобилось?
Это был один из самых первых проектов для меня. Писали систему для шедулинга (создание расписания для логистики в данном случае), а эта система отвечала в компании заказчика за внутреннюю бюрократию — счета, платежи и так далее. Так и работали — мы делаем расписание и считаем стоимость перевозок и если ок, то пользователь нажимал большую кнопку и генерировались нужные документы. Надо сказать, что система работала на редкость стабильно.
На чём была написана эта система? На каком железе работала? Переносили ли её на новое железо (потому что не верится, что могло железо 38 лет проработать)?
Если я не ошибаюсь, то оно было написано на фортране. А вот про железо не был в курсе, так как был еще падаваном и изучал яву.
Спасибо за ответы. Даже не знаю, сочувствовать или завидовать подобному опыту. В любом случае, было бы интересно взглянуть на исходники тридцатилетней давности.
Ещё иногда встречается очень опасный Дарт Начальнус. Обладает неимоверной мощью и знанием тёмной стороны силы. У него есть способность уничтожать качественную работу и разрушать амбиции джедаев. Обычно заклинание выглядит так: «это должно работать и работать через 2 часа, меня не волнует какой будет код, главное — чтобы клиент был доволен и мог нажимать на эту кнопочку. Сделай. Быстро».
Дарт ООПиум. Вечно молодой и задорный ситх, главное оружие которого «Молот ООП». С легкостью берется писать на любом языке, но не способен профессионально овладеть ничем, кроме Java/C#. В итоге мыслит в Java/C#, что сразу отражается на коде: безумное количество «классов», *Factory, попытки закодить типозависимость в языках с duck-typing и многое другое. Изнасиловал JavaScript введя дескрипторы типов и их проверку, incapsulation через getter/setter properties, наследование с глубоким деревом «типов». Презирает мета-программирование и всячески пытается его уничтожить. По этой причине не понимает и отвергает Ruby/Python. Обожает SOAP сервисы и генерить десятки классов из WSDL. Еще больше любит пересобирать и деплоить весь проект, когда меняется мелочь в WSDL. Пытался подчинить себе Erlang, но сдался - нет классов; сейчас молиться на Akka.
Я бы WSDL выделил в отдельную личность, ибо к ООП оно имеет очень далекое отношение…
Тут личность скорее не ООП, а Jav'иус, человек для которого ООП только в лице Java (чистый ООП красив для моделирования). А это упор не на поведение (как примеру интерфейсы в go), а на иерархию типов. В итоге имеем разного рода адаптеры, proxy и прочее.

А если кратко: попытка забивать одним молотком все «гвозди». Отрицание самой идеи, что под разные задачи языки отличные от Java/C# могут справляться лучше. Ну и конечно истерика при виде связки Erlang + Lua (drive-in) для сильно нагруженного сервиса.

Да, WSDL можно вынести в отдельну личность. Все его проблемы в Java – отсутствие мета-программирования, как итог: генерация статичного кода. Это не проблема языка, это проблема мышления.
Дарт Тырпрайзус. Живет в WSDL и мыслит исключительно на XML
О да, он еще BPEL придумал…
> Изнасиловал JavaScript введя дескрипторы типов.

Это он TypeScript придумал, да?
Дарт Динамикус — хипстер, увешанный яблочной продукцией, гордящийся умением быстро запускать в продакшн новые проекты. Ставит серверную ферму там, где можно обойтись одной виртуалкой. Любит сапрессить ошибки, потом проводит недели пытаясь понять что происходит. В итоге, находит место в котором в функцию передали значение не того типа, а функция его проглатывает. Когда проект разрастается и начинает падать в продакшене начинает покрывать код ассертами на типы и юнит-тестами на ассерты на типы, чей объем в несколько раз превосходит объем рабочего кода. Никогда не уверен, что код действительно работает именно так как он задумал. Верит, что слабая типизация — это такая фича, и в языке должно быть два оператора сравнения. Все равно пользуется только строгим.
А может кто-нибудь привести пример поделок Дарта Автотестиуса? Как нужно написать тесты, чтобы потом пришлось выделить половину ресурсов на их поддержку?
Я вот тут пытаюсь как-раз внедрить что-то подобное в проекте и что-то призадумался. :)
Как нужно написать тесты, чтобы потом пришлось выделить половину ресурсов на их поддержку?

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

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

В общем, если писать тесты не по спецификации, а по существующему коду (как вариант — писать спецификацию модулей по существующему коду), то каждая правка будет требовать 3-4 исправления в тестах…
Дарт-Потомвсёпеределаем по 100500 раз переписывает требования к фиче, из-за чего приходится помногу раз переписывать уже написанный код. Изменения в требования вносит аккурат перед окончанием реализации, так что фичи могут быть так полностью не реализованы даже после нескольких человеко-месяцев.
… и его антогонист:
Дарт-Продуман по несколько месяцев пишет прототип какой-либо простой фичи, усложняя и раздувая сложность реализации до вселенских масштабов. Пишет 100500 абстракций «на всякий случай». Прототип обычно готов, но фича уже не актуальна.
Дарт-Джекверистиус из клана Дарк-Фрэеймвоксус познвыший страшную силу селекторов. Дарт-Джекверистиус это частное воплощение Дарт-Инлайнус. Ни тот, ни другой не признаю истиный путь джедаев «Сказание о спецификации», а предпочитают сатхлые свитки, написанные в блого-пещерах прородителями всея джедаев.
К сожалению, некоторые jQuery-программисты даже не знают getAttribute (не говоря уже про throttle). Вот из реального проекта:
$('.catalogue_navigation .catalogue_navigation__layer1').mousemove(function(event) {
	var $target = $(event.target);
	if ($target.is('a[category-id]')) {
	
	}
})

ну или не понимают, что внутри делает метод $().is на селектор по аттрибуту
Одно из зол, да. Пользоваться jQuery вообще не думаю. Самый популярный фэйл это наверно выбирать один и тот же селектор в 15 местах под ряд.
Дарт-Внестандартиус — фреймворк выбирает, но основу заменяет всю его на классы свои все равно. Классы не работают потом как необходимо это. Исчезает он, после действий коварных таких. Понять пытаются джедаи что это и что делать после него. Проект сменит архитектуру не раз, пытаясь на рельсы фреймворка вернуться. В кашу превращается в итоге все это.
DART_MACROS чаще всего заводится в долгоиграющих проектах из одного разработчика. Делает свое темное дело медленно и беспощадно, и если настоящий джедай вовремя не увидит угрозу, через какое-то время о языке, на котором изначально создавался проект, напоминает только расширение файлов. Внутри же странно кристаллизованная, чуждая всему живому, запутанная и многоэтажная логика препроцессорных инструкций.
Дарт Скраммастер. Когда войско джедаев выросло и они сами не знают, как собой управлять, приходит Скраммастер и проповедует религию ежедневных Стенд-Преев, склоняет к карточным играм и замешивает в них тех, кто не владеет знанием проекта, приобщая посторонних менеджеров якобы чувствовать проект, а на самом деле, создавая толпу, ведомую красноречием одного. На самом деле, его цель — не научить войско быть организованным, а получить внимание и знаки похвалы в виде перевода Субстанции Зелёной Силы на свой счёт. И чем больше он получит внимания, чем больше методик успеет посеять, тем сильнее становится.
С сожалением, в некоторых узнаю и себя. Хотя и парочка истинных Дарт Андедкодду мне известна.
Несговорчивым Дарт Андедкодду автоматически становится любой, кого назначат на сопровождение древнего проекта. Он будет незаменимым, потому что другого, кто во всём этом разобрался, нет. А несговорчивым, потому что хоть он и разобрался, но не до конца, и знает, что когда меняешь что-то в этой лапше, почти всегда ломается в другом месте.
Неа. Дарт Андедкодду — это только тот человек, который пытается новые проекты подвести под архитектуру старых, им поддерживаемых. Нормальный же джедай, наоборот, будет пытаться изолировать новый код, в котором все разбираются, от старого, никому не понятного.
Дарт Пенсионерус. Одна из самых сложных проблем для джедая — почувствовать, что время вышло и пора уступать дорогу молодым. Тот, кто этого не сумел, быстро деградирует и переходит на тёмную сторону, становясь учеником Дарта Пенсионеруса.
Этот ситх никогда не покинет рабочее место по собственной воле, только ногами вперёд.
Его жизненные ценности давно сузились до семейных, а идеалы с «отдам жизнь за идеальный код» деградировали до «квартира, машина, дача».
«Работа» Пенсионеруса заключается в том, чтобы изо дня в день вести изощрённую псионическую атаку на мозги джедаев, в подробностях рассказывая им придуманные байки времён бурной молодости или что-нибудь из семейной хроники (как растут внуки, чем болеют, сколько у них на текущий момент зубов и т.д.). Мантры Пенсионеруса однообразны, они почти дословно повторяются изо дня в день. Эффективность джедаев, попавших в область действия тёмной ауры, падает на порядок.
Дарт Пенсионерус больше всего на свете боится риска, а любит — корпоративы (с увлекательными застольными беседами в стиле «все говорят, но никто не слушает») и стабильность (которую понимает как отсутствие любых изменений). Поэтому всем языкам программирования предпочитает Фортран, а на машинах захваченной им организации до сих пор крутится Windows 98 («а зачем менять, если и так всё работает?» — внушает Пенсионерус).
В последнее время коварному канцлеру удалось протолкнуть несколько указов, увеличивающих срок службы в республиканских войсках, поэтому мощь Дарта Пенсионеруса значительно выросла.
Интересно, как вы считаете, какой должен быть возраст у джедая, чтобы понять, что время вышло? Не учитывая другие факторы.

Меня интересует эта тема, т.к. возраст увеличивается. Но никто цифр не дает.
Конечно, старческий маразм и закостенение мозга — это ужас в нашей быстро меняющейся сфере, но вот это:
> а идеалы с «отдам жизнь за идеальный код» деградировали до ...
> «а зачем менять, если и так всё работает?» — внушает Пенсионерус
заставили почувствовать себя Дартом Пенсионерусом задолго до срока :) Да и наверное любой, кто девелопил больше 5 лет, согласится, что бессмысленные изменения ради изменений — чистая Тьма, а идеального кода не существует.

Опыт и алкоголизм побеждают молодость и энтузиазм…

Но действительно интересно, какой возраст кажется молодым людям уже старостью. Я тоже раньше думал, что 40 — это кранты в нашей отрасли. Но вот, будет скоро. Не замечаю каких-то ухудшений сообразительных способностей. Местами даже улучшилось. Конечно, это всё благодаря чтениям и тренировкам. Неайтишники и люди не интеллектуального труда возможно в 40 уже совсем плохо думают.

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

Программирование, к сожалению, не слишком интеллектуальная деятельность. И в программировании можно много встретить людей, которые путают умение мыслить с коллекционированием знаний-мелочевок. Вот, сравнить если с физикой, там такое не проходит. Там можно знать от силы 10 формул, но уметь выводить все.

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

Потом, проблемы с возрастом не очевидны.
1. 10 лет назад действительно, людей за 40 не брали программистами. Но похоже, у этого была объективная причина: люди, которые в то время были старше, скорее всего обучались и получили высшее образование не в области айти.
2. Многие, бывавшие в США или Лондоне, отмечают, что там работают программистами люди и под 70. Причем есть целые коллективы из таких стариков. Т.е. это косвенно подтверждает пункт 1.
3. Знакомые HR-ы говорят, что на счет возраста сейчас беспокоиться не о чем, всё это чушь.

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

Молодые и амбициозные, сразу после ВУЗа, за представляют, что за 30-ать они будут владельцами крупных компаний или по крайней мере, крупными начальниками, а не чернорабочими кодерами. Но вот, бывает такое, что человек любит свою работу, любит писать код и поэтому и в 30 и в 40 (и скорее всего, пока ногами не вынесут вперед) будет заниматься тем, что ему нравится.
К 60 годам уже в любом случае заметны явные признаки перегорания человека, поэтому лучше уходить с некоторым запасом, лет в 55-57. Хорошо ещё, коль человек действительно любит именно писать код — тогда не так страшно, если засидится на своём месте (особенно если требуется поддерживать сильно старые проекты).
Однако же, обычно человек под 50 лет простым кодером-то и не работает. К этому времени он успевает очень высоко подняться по карьерной лестнице, а пропорционально должности растёт и иллюзия собственной незаменимости, так что такому человеку очень трудно решиться на уход, даже если он сам понимает, что не тянет (ему кажется, что остальные ещё хуже, и что всё только на нём одном и держится).
А как раз на руководящих-то должностях и нельзя засиживаться, потому что старики-руководители крайне эффективно ограничивают прогресс всей организации, что в условиях жёсткой конкуренции может быть смертельно.
Вот взять например Microsoft — сколько лет тем, кто там в руководстве? Когда были помоложе, то и дела у фирмы шли получше. Только старики могли проглядеть появление мобильных устройств (смартфонов/планшетов) — наверняка посчитали их всего лишь модной пеной на поверхности рынка.
И противоположный пример: сколько руководителям Гугла? А уж Пейджу и Бринну даже 40 лет не исполнилось пока, вот разница и налицо…
Мы же вроде про программистов здесь писали. Про дартов-пенсионериусов. Хотя, может это я только так представил. Программист, который любит писать код, разрабатывать, проектировать — будет этим и заниматься. Тут не особо есть руководящие должности.

Желающих поруководить чуть менее чем 100%. И они находят такие места. Гораздо раньше 50-ти.

А на счет перегорания… Я от программистов слышал жалобы еще до 30-ти, что уже ничего не хочется. А 30 лет — чуть ли не смерть.
Перегорание — это психологическая черта. Оно наступает скорее не от возраста, а от эго. Скорее всего такие люди до 50-ти не доработают сами и увольняться просить не надо.

Потом, возраст программистов будет в любом случае расти. Раньше по-сути не было образования и компьютеров у людей, если получили высшее образование до 90-х годов. И практически неоткуда было взяться старикам в этой отрасли. Вначале двухтысячных все были молодые. Теперь же программистов немало и они взрослеют, стареют. Куда они денутся? Неужели каждый начнет руководить? Да нет столько руководящих должностей. И далеко не каждому нравится руководящая должность — ковыряние в бумагах и лизать кому-то повыше.
При этом, много программистов не только переходят в зрелый возраст, но и опыт растет, что немаловажно. Если вы хотите оставаться программистом (не знаю ваш возраст), то и через 10 лет будете видеть новые горизонты о что нужно почитать, что узнать. Поэтому опыт важен. И поэтому, никуда эти программисты не денутся.
Это не молодым надо уступать дорогу, а молодым надо тянуться в знаниях к опытным. Качество образования ухудшается. Работающие с каждым годом увеличивают опыт. ВУЗы за 5 лет не в состоянии дать даже минимальных знаний, потому как объем их неуклонно растет.

После 40 или после 50-ти, например, я с трудом представляю, что пошел бы на завод. Или заработать денег и сидеть дома? Нет. Открыть «бизнес»? Не всем интересно.
> Только старики могли проглядеть появление мобильных устройств (смартфонов/планшетов) — наверняка посчитали их всего лишь модной пеной на поверхности рынка.

Вы про какой год говорите? WindowsMobile и Windows Tablet PC Edition вышли лет за 5 до того, как это стало модным
Дарт велосипедус не признает фреймворков и стандартных библиотек. Оккупирует мозги юных падаванов либо паразитирует на замшелых джедаях с угасающей Силой, заставляя их снова и снова делать собственные реализации давно готовых механизмов.
Написание велосипеды, зачастую, — одна из немногих отдушин среди рутины.
А вот и он, собственной персоной :)
У всех из нас есть маленькие слабости :)
Написание велосипедов, зачастую, — одна из немногих возможностей понять как работают большие фреймворки. Ну или понять, как делать не надо :)
Дарт externals, заклятый враг Дарта велосипедуса, тем не менее тоже является темным ситом. Когда-то был светлым, но незаметно для самого себя перешел на темную сторону. Для решения любой задачи подкачивает новый сомнительный фреймворк или библиотеку, используя лишь 1-2% её функционала. Если не распознать этого злодея, проект перестает существовать как отдельная сущность, запутываясь и растворяясь в паутине внешних библиотек различных версий, лицензий и платформ.
Дарт Обфускатиус — известен своей любовью к обфусцированию кода сразу во время его написания.
Причем некоторые достигают такой силы своего темного искусства, что пишут уже обфусцированный код.
… но высшая степень искусства — это придумывание популярных write-only языков!
Дарт Новопочитарсис — вчера прочитал в книге что-то новое, сегодня все будут внедрять эти идеи. Всё что написано до этого уныло и старо и подлежит полной аннигиляции.
Дарт Хабраписус — использует Силу в основном для того, чтобы писать статьи на Хабре. Может даже сложиться ощущение, что он глубоко разбирается в вопросе и обладает колоссальным опытом, но это не так. Уверенно Хабраписус владеет лишь самыми основами, а его мастерство скорее иллюзия, чем реальность. Открытых сражений старается избегать, чаще всего атакуя противника со спины лазерным мечом в виде красный стрелки, направленной вниз. Любит повторять, что его имя произносится как «Копирайтер», а не «Писус».
Дарт Тýду — когда видит что-то, что требует исправления, пишет комментарий «TODO: исправить» или «FIXME», но никогда не создает багов в багтрекере, и не исправляет ничего сам. С течением времени проект зарастает этими туду-шками, на которые все перестают обращать внимание.
Sign up to leave a comment.