Ребёнку ту же профессию

Последнее эссе сложного и очень насыщенного года, потому без рационализма. Сплошная сентиментальность и некоторый сумбур от недосыпа.
Вот есть же династии. Особенно в Азии. Что в XIV веке на углу рисовыми колобками крестьянин торговал, что в XXI веке на том же углу из фургончика колобки разноцветные.
В разработке таких [привычных] династий пока нет. Индустрия слишком молодая и слишком недавно стала массовой. А было бы забавно: “Felix & Felix, Software since 1765”.
С другой стороны… вот смотрю на сына и фиг знает. Конечно, будет тем, кем захочет стать, никто его загонять в династию не собирается. Но даже если захочет быть программистом, что я смогу ему передать? Чему обучить? Да и зачем?
Почему вообще мы (я, ты, они) считаем, что это годная профессия? Да, она нам нравится. Вне неё себя представить уже трудно. Но и?

Она хлебная? Есть гораздо наваристее и даже без бандитизма. И даже не всегда добыча ресурсов. И даже не всегда спекулятивный бизнес. И вообще.
Она развивает интеллект? Я вас умоляю. Программисты вне своей области знаний не умнее и не тупее людей из областей того же класса (ну т.е. не дворников, но врачей, например). Поговорите с программистами не о программировании, убедитесь.
Она современная? Да как-то… современная, если человек решает современные задачи современными средствами. Вот из биоинформатики. А в складских программах или в web-витринах магазинов ничего современного нет. Или в набивших оскомину шаблонах проектирования прошлого века. Или ну офигеть двигают прогресс миллиарды творцов мобильных безделушек.
Она всем доступна? Ну т.е. прям вот любой может стать программистом? Нет. Часто бывает, что человек тратит 5..7 лет на учёбу и джуниорство, а потом оказывается, что выше прыгнуть не может, чего-то не хватает. Но узнаёшь об этом таки через 5..7 лет.
Можно работать свободно? Ну т.е. взял ноут и хоть на Таити сервисы клепай. Или не днём, но ночью. На деле с редким исключением будет чуть иначе. Работа всегда и всё время. Не пальцами, так головой. Не за ноутом, так за бумажкой или доской. Утром, днём, вечером и ночью. Шахтёр из шахты вышел и свободен. Программист у станка даже во сне (реально снятся задачи, тикеты и алгоритмы).

В итоге надумал только одно. В программирование детей стоит звать только тогда, когда оно уже им нравится. Когда есть зачатки любви к этому дурацкому хаосу под внешней строгостью микросхем.
Дать обнюхать клавиатуру, да и только. Пусть сам решает, что и когда. Не та профессия, в которой можно достойно трудиться без ведра эндорфинов при успешной компиляции миллиона строк кода. А так… возможно, показывать структуры данных на живой природе (деревья). Показывать алгоритмы (готовка). Давать гонять роботов. Калькулятор троллинга ради подсовывать. Но не больше.
Если рисовые колобки можно научиться и без латентной склонности делать, с кодом так не получится. Потому ни фига не будет каких-либо устойчивых династий программистов. Не ремесло, не искусство, но призвание. А оно либо есть, либо нет.

Как-то так. Бегло, отрывками, перед забавным Новым годом.
С праздником.

Сперва добейся II

Чёт меня всё более укачивает в сторону ярых сторонников “сперва добейся”. В программировании и разработке оно особо честно и наглядно. Всё потому, что зачастую другого критерия нет. Давайте посмотрим на один из вариантов оценки.

Вот два Васи. Один Петя, другой Игорь. Петя считает, что X равно 10. Игорь считает, что X равно кубическому бурундуку. Оба спорят месяц, загрузив друг друга горой аргументов. Мы же типа инженеры, местами даже учёные, вроде бы на каком-то этапе должно всё свестись к понятному результату — прав кто-то один. Но нет, где начинали, там и стоят — счёт равный. Наверное. Слишком много факторов.
Если вы действительно желаете принять и реализовать действительно правильное решение, вам требуется учесть сотни переменных прошлого, текущего и будущего, да ещё стопку неформализуемых штуковин вроде человеческого фактора (вероятность которого зачастую рядом с динозавром на улице — либо встретишь, либо нет).
А не получается. Программисты — одни из величайших мастеров придолбаться и к столбу посреди поля. Каждый из нас знает, что другому каждому жизни не хватит что-либо доказать в мере, удовлетворяющей заядлого спорщика. Даже сама эта мера (точка, в которой Петя с Игорем готовы остановиться) является предметом частых споров.
Настоящий победитель — тот, кто сделает. Пока пара балаболов тратила месяц на вербальное обтачивание гениальных хрусталей, в сторонке Ипатий наваял своё решение. Может, хуже. Может, косенькое. Но наваял. Оно работает и даёт работу чему-нибудь другому (матерящемуся админу, раз в день поднимающему Cool Ipaty Service). А те двое так и сотрясают воздух.

Если оценивать результат, всё меняется. 99% спорщиков отсекаются уже на первом этапе — они ничего не сделали по теме. Ни. Че. Го. Очень легко сравнивать пустоту с чем-нибудь. Как в поселковой школе — можно вовсю рубиться о том, что круче, Ferrari или Lamborghini, но всех уделывает Васька на стареньком Минске ММВЗ-3.111. Два года торговал на рынке, подметал улицы, потом разбил три кубышки, да и купил мопед. Он сделяль. В ваших фантазиях может происходить всё, но девочек на дискотеку в Кукуевку будет возить он.
В мире программирования и на рынке разработки всё ровно так же.
Давайте капсом и болдом: ВАШИ СЛОВА ИНТЕРЕСНЫ ТОЛЬКО СКУЧАЮЩИМ ЗА ЗАВТРАКОМ ИЛИ УЖИНОМ. Кушает человек, да и время убивает. Покушал? Забыл.
Только работающие программы как-то на что-то влияют. Чтобы что-нибудь изменилось, должна быть проделана работа. Сначала программист думает и тратится. Потом пишет код. Потом выдаёт на внешний или внутренний рынок (да хоть в соседний цех). Потом программа работает и следствием её работы является изменение мира.
Вы добавили кнопку в бухгалтерский софт. Бухгалтер кликнула. Распечаталась бумажка. Рабочий понёс бумажку в кассу. Получил получку. По пути домой купил на неё конфету. Конфету дал дочке. Та обрадовалась и заснула довольная.
Так вот даже эта маленькая кнопка в маленькой программе в маленькой деревне у маленького завода на порядок порядков круче и важнее, чем миллиарды слов миллиарда Игорепеть.
А вы в процессе получили опыт. Практические знания. Нейроны мозга сложились в хитрые кукиши, которые сделали из вас более другую личность (и вы готовы написать новую кнопку, круче предыдущей). Можно даже сказать, что вы-ферма намайнили bitcoin-кнопку, пока Игорепети впустую грели воздух серверами.
Двойной результат. Продукт (кнопка), которого нет у спорщиков. Опыт, которого нет у спорщиков. Тут можно возразить, что спорщики могли до сего момента выдать сотню кнопок, но тонкий нюанс: практика моего мира показывает, что людям, накопившим большой опыт производства кнопок, спорить о них нет нужды. Они на другом уровне развития. Там, где Ваня с пеной будет доказывать, что круглый уголок очень важен цивилизации, Ипатий уверенно знает, что в Измайловке круглый уголок не понравился, в Мухнянске за него дали премию, а на промысле в Якутии контроллер не потянул скругление, потому нужны и прямые уголки. Ибо реальный опыт, а не фантазии о нём.

Вот примерно такая философия. Миром правят не те чуваки, которые в Medium’е мудро рассуждают о том, какой язык лучше. Миром правят чуваки, которые эти языки сделали и делают. Я могу сутками критиковать Python, но это никак не повлияет на бизнес сервисов, на нём живущих. Вы можете морщиться от C++, но системе управления контейнеровоза в Атлантике на это плевать. Уж сколько критики в сторону Go и Rust, только вот… всем пофиг на критиков.
Потому покивать, вежливо поулыбаться, пропустить митинг противников и сторонников мимо себя, да и продолжить писать полезный код. Единственное верное. А если спорить, то с теми, кто таки сперва добился.
Хау.

Занятие программиста

В крови достаточно предновогодних промилле алкоголя, никотина и кофеина, чтобы написать правды-пчёлки более обычного.
Программирование — не то, чем обычно занимаются программисты в конце 2016 года. Мне так кажется и думается. Я этой ботвой занимаюсь уже 17..18 лет и с каждым годом недоумеваю всё насыщеннее.
Вы программисты. Ваша задача — писать программы. Код. Получить задачу. Осмыслить. Построить модель. Модель перевести в язык компьютера. С десяток раз протащить через “метод проб и ошибок”, затем отдать пользователю или как-то иначе сделать мир лучше. На деле же постоянная девиация.

Во-первых, происходит сдвиг мышления. Уже до фига программистов, не считающих написание кода основным занятием. Основное занятие — разработка. Тут тонкая грань, которую хорошо бы чувствовать. То, что в 70-х или 80-х было абсурдом, сейчас таковым не является. Слепить из кирпичей поделие — норм. Было норм написать свой парсер своего языка, сейчас норм нагуглить чужой парсер для чужого языка. Тогда тебя назвали бы программистом, сейчас тебя назовут программистом. Как по мне, во втором случае ты просто продвинутый пользователь. Ну или разработчик. Софт работает? Работает. Ну и хорошо.
Во-вторых, всё больше задач, не требующих головы. Программист — это чугуниевая жопа, холодные пальцы и горячая голова. Фигня в том, что этот чудесный комплект некуда применять. Пик развития и Клондайка прошёл, теперь на любой чих есть сотня “будь здоров” в виде “эта задача уже решена, найди библиотеку и подключи”. Нашу касту теперь выращивают не архитекторами, но каменщиками, т.к. архитекторы предыдущих поколений всё сделали. Что не сделали, то делается либо гениями, либо корпорациями (собирающих батальоны обычных для XXI века бойцов). Миллионы же пилят софт в режиме, не особо отличном от работы за станком.
В-третьих, нас убеждают, что это правильно и нормально. С некоторой циничной и рациональной позиции я могу понять и принять следствие во-первых из во-вторых, но помню как по старым мануалам, так и по ранним годам довольно многое. Пусть руководители льют свою правду в уши. Пусть авторы учебников фиксируют сложившуюся норму. Но разработчик — не программист. Разработчик ближе клеркам. Чем отличается перекладывание бумажек из стопки в стопку от повседневной рутины перекладывания чужого кода из модуля в модуль? Чем отличается рутинное заполнение бланка по форме 416/б от автоматического написания 100-строчного “клея”? Да ничем. И это не может быть нормальным для программиста. Никак не может. Кивайте в ответ на заверения, но хоть внутри бунтуйте.

Программист — напрягающийся творец. Посредник между мирами. Переводчик с множества многомерных языков на строгий язык процессоров Беты Центавра. Увлекающийся калькулятор. Программирует себя знаниями, чтобы программировать. Бог множества мирков. В конце концов, долбанутое на все извилины нечто.
Если в процессе решения задачи не погиб миллион нейронов и не родился пяток миллиардов новых, задача не для программиста, но для разработчика. Ты должен несколько раз умереть и родиться, пережив сатори и потратив полную стопку бумаги A4, чтобы почувствовать жизнь. Вот в чём содержание настоящей работы. Ради этого шли в профессию. Они к звёздам, мы к регистрам.
Не ведитесь на гнилую современность. Живите мечтой. Программист — тот же космонавт из книг Sci-Fi. Не техник, вытачивающий по лекалу винтик ракеты в одном из сотен субподрядчиков NASA, но боевая единица со стопкой специальностей, могущая и маршрут построить, и внезапную внеземную цивилизацию привести к миру. В этом призвание.
Всё остальное фигня и самообман.

Книги: Как музыка стала свободной

Как музыка стала свободной
Стивен Уитт.
Как музыка стала свободной. Конец индустрии звукозаписи, технологический переворот и “нулевой пациент” пиратства.
Белое яблоко, 2016.
Прямо к разработке книга не относится, но почитать её полезно.
Во-первых, она даёт чудесную картину того, как технология может повлиять на индустрию, на миллионы пользователей и на миллиарды денег. Казалось бы, подумаешь, mp3. Очередной формат очередного сжатия очередных файлов. Ударивший вовремя по домику, сложил его до подвала.
Во-вторых, она показывает то, как можно продолбать влияние технологии и безуспешно сегодня бороться с тем, с чем бороться поздно было уже вчера. Мейджоры во всей этой истории показали себя мамонтами-идиотами, достойными вымирания.
В-третьих, она показывает зарождение Сцены и трекеров. То, что сейчас привычно, тогда только-только начиналось. Наконец, на фоне трекеров интересно почитать о том, как на самом деле сливалась музыка (а позже и фильмы) в сеть и зачем этим занимались.
Технического жаргона почти нет. Написано живо. Писал журналист, за пять лет поговоривший со всеми героями истории. Получилось толково, почитать стоит.