Pull to refresh
1
0
Send message
В Италии с первого дня все предприятия устроили забастовку, решение пришлось отменить, премьер ушел в отставку.
Во Франции беспорядки, Париж в огне — через неделю правительство сдалось, правящая партия подверглась люстации.
Дефенестрация в Чехии, импичмент в США.

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

Нерелевантно в этой ветке, но к посту: вспомнилась риэлтор из «Красоты по-американски»:
Заголовок спойлера


А автору стоит рассмотреть возможность перестать жрать психоделы и подобрать себе гештальт психотерапевта.
+ Аксенов Георгий Андреевич, TypeScript + JavaScript open-source libraries contributor, эмигрировал в Чехию
Достаточно не попасть в ловушку «я могу писать код на языке с классами, значит, я умею ООП» и учиться некоторое время.

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

Но, у нас на это нет времени, товарищ! Код должен работать еще вчера, так что мы тут используем архитектуру с синглтон-сервисами (чтоб по ооп!), которые в себе не будут содержать данных (только объекты с интерфейсом, состоящим из геттеров и сеттеров), а будут все-все знать о правилах, по которым должна работать система (в виде IFов, конечно, как еще можно по-вашему выражать правила, не смеши мои опытные портянки, я 15 лет код пишу, все остальное от дьявола и я этого не знаю усложняет читабельность).
В общих чертах я вроде понял мысль: не позволять наглеть заказчику

Не совсем, гораздо ближе мне такая формулировка:
отстаивать желание получить нормальный срок разработки

Это ваше желание естественно для вас так же, как для хирурга — желание дезинфицировать руки перед операцией, для строителя — заложить хороший фундамент, для продавца — провести исследование рынка. Это желание на самом деле — ваше профессиональное мнение.

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

Насчет смены работы. Я сменил за первые 2 года работы 3 фирмы и 3 платформы.
В первой фирме я работал на front-end'е 5 месяцев. Мне не понравилась специфика направления, я ушел.
После изучения PHP я пошел на сервер во вторую фирму. Там были именно такие люди, которых вы описываете: по их мнению, если тебе что-то не нравится, ты виноват сам и либо терпи, либо вали. Я ушел через 2 месяца. В этой фирме обманывали заказчиков (при продаже разработко-часов), после моего ухода новых продуктов в портфолио не появлялось (оттуда меня ссаными тряпками гнали).
Третья работа была на C#. Это была полная противоположность предыдущему месту работы — разработчики стояли плечем к плечу с менеджементом и продажниками, качеству кода и технологиям уделялось время и внимание. В той фирме своим вторым таском я потратил 2 месяца на рефакторинг одного контроллера, который начал самовольно (с позиции начитанного джуна). Там всегда были деньги, были иностранные заказчики, которые приезжали лично, чтобы участвовать в обсуждении архитектуры приложения. Я бы наверное работал там и сейчас, но через полгода я покинул страну.
Сейчас работаю в фирме, где я трачу (с позиции мидла) сотни человеко-часов, чтобы ввести на проекте TypeScript, в который я верю. Фирма растет эксплозивно, расширяя линейки продуктов и развивая в том числе убыточные (пока) инновационные проекты типа автопилота.
В данный момент я живу в стране, где мнение жителей ценится, а в моем родном городе ОМОН и Росгвардия щитами и дубинками оттесняют людей с центрального сквера, чтобы на его месте возвели храм, элитный жилой комплекс и торгово-офисный центр (земля продана городом за 3.5 млн рублей) www.e1.ru/news/spool/section_id-3463.html?from=storyline. Пока я там жил, мне говорили, что я маюсь дурью, протестуя против несправедливой администрации.

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

Человек может делать выбор — кому приносить пользу и кого одаривать своим временем. Хоть и нужна доля отваги, чтобы распрощаться с теми, кто говорит, что вы им не нужен, и предложить себя всем остальным — оно либо стоит того, либо можно ложиться в сосновый гроб и накрываться крышкой.
На фразу
пока деньги будут править миром нам придется делать всё в том темпе, в котором нам позволят.

вспоминается момент из фильма Зеленая Книга, когда итальянец отстраняется от проблемы расизма словами «не я устанавливаю эти правила». И черный отвечает ему: «если не вы, то кто?».

На самом деле, соглашаясь играть по чужим правилам, мы принимаем их, и уже неважно, придумали мы их сами или согласились их принять — мы их легитимизируем.

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

Благодаря подобному дефитизму и строятся иерархии, приводящие к тому, что некомпетентный парень может взять и изменить правила так, как он видит правильным, только потому что он уверен в своей правоте. Благодаря этому дефитизму возникает дисбаланс, когда есть касты чиновников, прожигающих в роскоши средства, кровью и потом добытые народом; кто, как не народ решает, что эти средства могут и должны быть сожжены на роскошь право имеющих, правила устанавливающих?

Зачем ждать, что, встречая лишь молчаливое несогласие разработчиков, менеджемент вдруг (сам!) перестанет переть «заказчику нужно было еще вчера, так что к утру надо доделать, там куча денег»? Менеджемент не плохой, у них просто точка зрения всегда немного другая. И есть два варианта: молчаливо ждать, пока менеджемент скажет «ну все, все фичи сделаны, давайте теперь рефакторинг!», и выйти на пенсию разочарованным; или стоять на своем, продвигать свою точку зрения, и в споре рождать истину.
В условиях отсутствия статической типизации

На проектах на PHP, JS (node, vue, vanilla+JQuery shit frontend clients).

Упреждая вопрос: нет, я не проводил замеры, и да, 80/20 — не точные цифры, и критерии оценки тоже сугубо субъективные (я бы даже сказал, сенсорные).
Что значит сломался undefined?

(Runtime) Type error: foo is undefined.

Что значит распаковать undefined?

(Runtime) Reference error: cannot get property bar of undefined.

Что значит работает ли null?

Например, что строгая проверка на значение === null не обломается о значение === undefined.

частично решается подключением Typescript

Именно так! Причем, насколько мне известно, TS поддерживает strictly nullable types, что делает его (статическую) систему типов даже сильнее чем в C# и Java.
В условиях отсутствия статической типизации, по моему опыту, работает правило 80/20, где 80% багов как раз разрешаются статической типизацией.

И применение TDD вкупе со статической типизацией получается более эффективным, потому что на оставшиеся 20% багов бизнес-логики можно выделить уже 100% тестов (подходя к их написанию с бóльшей внимательностью и затрачивая то время, которое мы сэкономили на багах типов).
Несколько раз сталкивался с вау-эффектом, производимым TDD на разработчиков на языках без статической типизации, и каждый раз он меня удивлял.

Недавно же я сам перешел с проекта на Kotlin на проект на Node.js, со значительно меньшей и более простой кодовой базой. И теперь сам испытываю на себе тот же стресс перед мерджем в мастер — а не сломался ли undefined? Работает null? Удаленное неиспользуемое свойство в объекте — вдруг где-то было использовано? Помог ли линтер, некоторые тесты, ревью? Вполне вероятно, что нет. Линтер проверяет всякую фигню, тесты часто могут быть в стиле ASSERT_TRUE(true), а человек на код-ревью — человек. Вот бы иметь такую прогу, которая могла бы проверять семантические ошибки, опечатки, и попытки распаковать undefined зараз. И потом еще подключить эту прогу к IDE, чтобы работала в режиме real-time, вот было бы круто!

А если всерьез, то вот мысль про качественный и быстрый код с TDD. Обдумывание будь тестов или типов перед написанием кода имеет общую природу — программист думает перед тем, как писать код :)

Я понимаю разницу между TDD и статической типизацией, и хочу обратить внимание на их схожие стороны. В конце-концов, при наиболее полной системе типов (в языке Idris или в Haskell на стероидах), любые (поправьте меня, пожалуйста, если ошибаюсь) юнит-тесты выражаются через систему типов (dependent types).

Information

Rating
Does not participate
Registered
Activity