Как стать автором
Обновить
10
0

CIO

Отправить сообщение
Заходы к нему от имени его родственников, осуществлявшиеся органами советской разведки с целью установления его текущего местонахождения, он игнорировал (сотрудники советской разведки, очевидно, рассчитывали сыграть на его семейных чувствах, не зная об истинном положении дел в его отношениях с супругой). О своей прошлой жене он сказал, что ненавидит её, с мачехой отношения у него были весьма прохладные, а своего трёхлетнего сына Дмитрия последний раз он видел перед тем, как тёща забрала того к себе «на воспитание».
Результаты расследования:
Были изучены и вскрыты перегибы в действиях партийно-должностной элиты, принявшие к тому времени систематический характер и массовость. Например, равнодушие к жизни честно выполняющих свой долг офицеров на фоне личных карьерных мотивов (в частности, превращение выходных дней подчинённых в рабочие с целью быстро выделиться видимыми результатами).

Материалы следствия свидетельствовали о том, что у Беленко действительно имелись основания быть недовольным своим служебным положением. Срок выслуги в воинском звании старший лейтенант у него окончился 10 января 1976 года, однако до сентября звание капитан из-за нерасторопности командования он не получил (обычно, массовое присвоение очередных званий советским военнослужащим происходило либо ко Дню СА и ВМФ в феврале, либо ко Дню Великой Октябрьской социалистической революции в ноябре). Обещанная должность начальника штаба эскадрильи давала ему право на поступление в академию, куда он очень стремился.

В общем, если кратко — результат работы советского дерьмового менеджмента.
В наследие от СССР нам осталось множество книг и брошюрок на самые разные темы — от разведения кроликов до постройки индукционных печей и фузоров Хирша в домашних условиях из подручных материалов.
Но вот чего вы не найдёте ни в одной такой брошюре — так это руководств по управлению командой. Способы выявления и гашения конфликтов, построение команды, слияние и разделение команд, организация работы… Накапливать и передавать другим эти знания почему-то не считали нужным.
Вот и выходило, что там, где в США конфликт между участниками команды был бы погашен в зародыше, советские менеджеры от сохи начинали чесаться не раньше, чем всё разрасталось до совершенно космических масштабов. И только когда уже вся команда вместо работы занималась откровенным саботажем и вредительством, просто чтоб досадить друг другу, набирая в итоге на два пожизненных и три расстрела, только тогда конфликт наконец разруливали, естественно сваливая всю вину на тех самых «антисоветских саботажников», а вовсе не на абсолютное неумение руководства не доводить до подобной катастрофы.
Без обид, но Вы считаете, что Вы не часть стада?
На самом деле нет никакой «задумки» в том, почему финансовая система такая. Всё проще — вокруг нас куча людей. Быть богаче их можно только делая что-то более уникальное. Покупка акций сама по себе не уникальна, а уникальные знания о финансовых рынках невозможно получить из статей на Хабре. Потому идея «купить акций и ничего не делая стать богатым» — полная наивность.
Есть всего 2 варианта быть богаче окружающих:
— удача. С вероятностью выиграть в лотерею можно выиграть в лотерею.
— уникальность. Если Вы умнее, больше работаете, больше знаете и т.д., то да, можете выделиться.

И это ответ и nanmen в том числе — когда покупка биткоинов стала не уникальна и доступна окружающим, это превратилось в лотерею.
Интервьюер: Итак, вы считаете себя плотником?
Плотник: Всё верно. Это именно то, чем я занимаюсь.

Интервьюер: Как долго вы занимаетесь этим?
Плотник: Десять лет.

Интервьюер: Очень хорошо. А теперь я бы хотел задать вам несколько технических вопросов, чтобы оценить, насколько вы впишетесь в нашу команду. Договорились?
Плотник: Конечно, было бы неплохо.

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

Интервьюер: Да, я понимаю, но не могли бы вы подсказать мне, сколько у вас опыта именно с коричневыми? Ну, плюс-минус.
Плотник: Я действительно понятия не имею. С того момента, как дом построен, меня не волнует, в какой цвет его покрасят. Может, шесть месяцев?

Интервьюер: Шесть месяцев? Вообще-то мы ищем кого-нибудь с гораздо большим опытом коричневого, но позвольте мне задать вам ещё несколько вопросов.
Плотник: Ладно. Но, знаете, покраска — это покраска.

Интервьюер: Да-да, хорошо. Что насчёт Ореха?
Плотник: А что с ним?

Интервьюер: Много ли вы работали с ореховым деревом?
Плотник: Конечно. Ореховое дерево, сосна, дуб, красное дерево — всё, что угодно.

Интервьюер: Но сколько лет вы работали с Орехом?
Плотник: Да не знаю я, чёрт возьми. Я что, должен считать каждую доску?

Интервьюер: Ну хотя бы примерно?
Плотник: Хорошо, тогда я бы сказал, что у меня есть полтора года опыта работы с ореховым деревом.

Интервьюер: Но вы не ореховый гуру?
Плотник: Ну, я же плотник — я работаю с любыми типами дерева, которые, конечно, имеют некоторые отличия, но я считаю, что если ты хороший плотник…

Интервьюер: Да, да, но мы используем ореховое дерево. Это нормально?
Плотник: Ореховое дерево — это прекрасно! Всё, чего пожелаете — я же плотник.

Интервьюер: Что насчёт чёрного Ореха?
Плотник: А с ним что?

Интервьюер: У нас было несколько ореховых плотников, но потом случайно выяснилось, что они не были плотниками по чёрному Ореху. Имеется ли у вас опыт с ним?
Плотник: Конечно, немного. Полагаю, было бы хорошо иметь больше опыта для моего резюме.

Интервьюер: Ладно. Позвольте мне свериться со списком вопросов.
Плотник: Да пожалуйста.

Интервьюер: Итак, последний вопрос на сегодня. Мы используем Камень 5.1 для забивания гвоздей. Использовали ли вы Камень 5.1?
Плотник: [становясь белым...] Ну, я знаю, что множество плотников начали использовать камни, чтобы забивать гвозди, когда Craftsman купил каменоломню, но, вы знаете, честно говоря, у меня это получается гораздо лучше с моим гвоздомётом. Или молотком, если хотите. Мне кажется, что, когда я использую камень, то слишком часто ударяю себя по пальцам, и моя рука сильно болит, потому что камень очень большой.

Интервьюер: Но другие компании используют камни. Вы хотите сказать, что камни не работают?
Плотник: Нет, я вообще-то не говорю, что камни не работают. Я лишь считаю, что гвоздомёты работают лучше.

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

Интервьюер: Ок. У нас есть ещё несколько кандидатов; мы свяжемся с вами, когда примем решение.
Плотник: Что ж, спасибо за ваше время. Было приятно поговорить.

СЛЕДУЮЩИЙ ДЕНЬ

Звонок…

Интервьюер: Алло?
Плотник: Здравствуйте! Помните меня? Я тот плотник, которого вы собеседовали для работы с чёрным ореховым деревом. Хотел лишь узнать, приняли ли вы решение.

Интервьюер: Вообще-то приняли. В целом, нам нравится ваш опыт, но мы решили взять кого-то, кто больше работал с коричневыми.
Плотник: Правда? И это всё? Меня не взяли на работу, потому что у меня недостаточно коричневых?

Интервьюер: Ну, это только частично правда, но частично, мы взяли другого парня, потому что он намного дешевле.
Плотник: Серьёзно? И сколько же у него опыта?

Интервьюер: Ладно, он не совсем плотник, он продавец машин. Однако он продал много коричневых машин и работал с отделкой из орехового дерева.
Плотник: [короткие гудки]
Никак, все, что на frontend не безопасно. Не существует механизмов как-то безопасно хранить ключи и идентификацию пользователя. Тем более скрыть это. С localStorage так же как и с кошельком: оставите на видном месте — будет соблазн его спереть, а кто-то да и сопрет. Но это не защитит вас от грабителя, который целенаправленно идет вас грабить.
Отличие TDD от code-first заключается в том, что TDD принуждает к максимальному покрытию кода тестами и к написанию качественного кода. При использовании code-first велик соблазн оставить кусок кода непротестированным, ведь и так всё работает. При TDD такого не будет.

Но аргументы, написанные выше, не столько против TDD, сколько против тестов вообще в определённых случаях.

Дело в том, что основной смысл в тестах — это фиксация поведения программы при определённых сценариях, чтобы не допустить регрессий при доработке программы. Также тесты играют роль документации. При это тесты не гарантируют корректность работы программы. Тесты, как и код, могут содержать ошибки. Тесты могут быть неполными даже при TDD.

Нужно ли писать тесты, если задача поисковая? Моё мнение — нет, потому что поведение программы постоянно меняется, а тесты, наоборот, его фиксируют. То есть придётся делать двойную работу: переписывать и код, и тесты. А если это обработка изображений, так затраты на тесты там вообще на порядки выше, чем на написание кода. Работоспособность алгоритмов намного проще проверить глазами.

Ну то есть тут уже всё становится индивидуально. Есть люди, кому проще писать код сразу с тестами — ок, пусть пишут. А если люди, кому это в тягость — пусть не пишут.
Другие языки тоже столкнутся с такими проблемами?
 Это прост красиво
null == 0
false
null < 0
false
null <= 0
true

Самое очевидное приведение типов.
[] + []
""
[] + {}
"[object Object]"
{} + []
0
{} + {}
NaN

А это числа, которые сортируются как строки
[1,0, 4, 13, 9, 3].sort()
Array(6) [ 0, 1, 13, 3, 4, 9 ]

переполняются как инты
1 << 31
-2147483648
1 << 32
1

и теряют точность как эммм... флоаты?

103209823048320840000 + 1
103209823048320840000
103209823048320840000 + 20000
103209823048320860000
А если у нас микросервисная архитектура приложения? Тогда добавится Consul (Service Discovery) + Consul template.

кубер не отменяет необходимости использовать кучу СТОРОННИХ решений. Потому что тот же сервис дискавери и балансировка в кубере — она подходит только для определенного класса задач — иначе приходится тащить тот же консул и строить балансировку самому. Аналогично с хранением секретов. Секреты в кубере в base64? Srsly? Тащим vault и получаем нормально управление жизненным циклом секретов, acl и все прочее
Что еще. Балансировка входа трафика в кубер. Что там? Ах, да — надо тащить MetalLB тот же, потому что на бареметал этот вопрос не продуман от слова совсем.
Блю-грин, канари и прочее — нет встроенных примитивов. Rolling Update Strategy костыль, причем лютый, который покрывает только базовый случай — нормальный A/B (или blue/Green) на нем не собрать, поэтому и появляются продукты вроде Flagger, в опеншифте там свои штуки и многое другое

Например потому, что блокировка противоправного «пиратского» Sci-Hub мгновенно уничтожит остатки российской науки. Поскольку власть тратит деньги на безусловно гораздо более важные вещи, чем какая-то там наука, то даже в Москве мало кто может проплатить для сотрудников подписку на иностранные научные журналы.
А поскольку бесплатное скачивание платных статей — это пиратство, то Sci-Hub считается противоправным контентом. Как только доступ к нему станет полностью невозможным, про науку в России можно будет забыть.
Ещё примеры нужны или этого одного хватит?
В общем, да. Далее процитирую себя же:
Нет интеллекта в нейронах, нет интеллекта у животных, нет интеллекта в машинном обучении, нет интеллекта даже у человека при рождении. Только когда человеческая психика встречается с человеческой культурой, внутри человеческого мозга начинает расти интеллект. И если эта встреча впервые происходит после 14 летнего возраста, либо вообще не происходит, то интеллект у такого индивидуума никогда не возникнет.
И все это должны отлично понимать настоящие строители настоящего ИИ. Вряд ли что либо из этого понимает директор отдела DARPA Валерия, судя по ее высказываниям.
И еще, а сами-то что сделали или мы только бла-бла

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

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

crate.io — шикарная штука которая совсем не упоминается на Хабре, но верю что выстрелит во всей красе. Ребята очень хорошую базу закрутили, жаль до релиза еще далековато.
В случае Rust у меня будут проблемы только если я захочу иметь возможность что-то мутировать одновременно? Но не будет если я передам ссылку на то, что мутирую, последовательно? Или вообще на каждом шагу компилятор будет бить меня битой по голове?

Вы не можете иметь изменяемую ссылку на структуру и ее внутренность одновременно, потому что это эквивалентно двум изменяемым ссылкам на структуру.


Если вам такое нужно время от времени, то вы можете вынимать значение из структуры с помощью mem::replace, изменять его как отдельный объект вместе со структурой, а затем помещать измененное значение поля назад в структуру.


Если же вам такое нужно постоянно, то придется использовать контейнерные типы для внутренней изменяемости, такие как RefCell:


use std::rc::Rc;
use std::cell::RefCell;

struct MyStruct {
    a: Rc<RefCell<i32>>,
}

fn main() {
    let a = Rc::new(RefCell::new(0));
    let s = MyStruct { a };

    let b = s.a.clone();

    *s.a.borrow_mut() += 1;
    *b.borrow_mut() += 1;

    println!("{}", s.a.borrow());
}

Запустить


Как вы можете видеть — это больно, но терпеть можно :)

НЛО прилетело и опубликовало эту надпись здесь
А что мешает накидать мини общее хранилище переводов с добавлением и т.п ключа с переводом? + Экспорт сразу же в эйпл формат.

Или использовать готовые решения, аля poeditor.com :)?
На работе мы используем Poeditor + для своих приложений, я написать мини скрипт на баше, который скачивает переводы и заменяет на то что в клиенте.
Используется для ios и андроид. Ещё голову забивать этим не хватало.

P/S: Если дерзко написал, прошу простить, просто статья такие эмоции вызвала.

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность

Специализация

Chief Technology Officer (CTO), Chief information officer (CIO)
C#
Software development
Project management
Product management
Development management
Agile
Scrum
Kanban
Development of tech specifications
Scala