tgoop.com/metaprogramming/161
Last Update:
Суть программирования
В книге Getting Real создатели Ruby on Rails описывают секрет успеха своей компании: "нанимайте хороших писателей!" (имеется в виду на должность программистов).
Научные исследования показывают, что способности к языкам более важны для программистов, чем способности к математике.
Настало время сделать финальное обобщение и прямо так сказать: программирование это способность создавать языки.
В самом благородном и парадном виде это, конечно, создание именно языков программирования. Но вообще говоря новые языки повсюду. Будь это Kubernetes со своим языком "описания того как на множестве серверов развёрнуты приложения" или ActiveRecord с языком "объявления критериев верности данных". И так далее.
Далее можно провести различие senior programmer от middle и junior. Обычно этой темы либо избегают (и это не худший вариант), либо приводят формальные критерии (количество лет опыта, перечень изученных технологий и т.п.). Понятно, что, во-первых, отличие есть. И, во-вторых, оно отнюдь не формальное, а вполне себе существенное. Но чтобы получить возможность хоть немного продвинуться в рассуждении надо зайти на формализацию этих понятий с другой стороны. Курсант военного училища это почти офицер, а прапорщик с 20 годами опыта службы никогда им не станет.
Кто-то из программистов после 5 месяцев обучения является "делающим первые шаги senior-ом". А кто-то после десяти лет опыта будет де-факто "опытным middle". Как между ними будет распределяться зарплата и прочие такие вопросы к делу отношения не имеют. Есть некое объективное различие.
Это объективное различие как раз будет связано со способностью создавать (и развивать) языки. Способный программист очень быстро ухватывает, хоть может быть и не вполне осознаёт, что дело именно в этом, после чего у него волшебным образом с каждым разом всё лучше и лучше начинает всё получаться:
– здесь он оформил адреса для страниц приложения правильно (потому что система адресов это крошечный искусственный язык, для которого надо выбрать красивую грамматику);
– здесь он не поленился дописать документацию (потому что документация это свой жанр текстов и в этом смысле тоже свой язык);
– здесь он провёл рефакторинг (отношения модулей, частей кода, друг с другом – тоже сорт "грамматики");
– здесь он выделил общую функциональность в отдельный пакет со своим DSL (это уже разработка своего языка без всяких кавычек и оговорок).
Пользуясь случаем, напоминаю, что у меня есть небольшой цикл лекций, посвящённый элементарным основам создания языков программировния :)
#programming
BY Metaprogramming
Share with your friend now:
tgoop.com/metaprogramming/161