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

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

Я сам немного разнорабочий, и научился этому, задавая любопытные вопросы другу — профессиональному художнику. Он был достаточно любезен, чтобы не только ответить на мои вопросы, но и показать мне. Я поймал себя на том, что съеживаюсь от чистой уверенности, что он позволил себе вырезать дверной косяк только щеткой. Однако результаты говорят сами за себя: правильные инструменты в руках профессионала дают отличные результаты.

Вы можете увидеть это в других отраслях. Например, в ответ на перепродюсированный, автоматически настроенный, цифровой мусор, не требующий таланта, который многие так называемые «музыканты» выпускают на рынок, группа Foo Fighters, как известно, выпустили свой альбом «Wasting Light», не используя никаких цифровых инструментов. Продюсер группы предупредил их в начале альбома,

Это означает, что вы, ребята, должны быть предельно жесткими. Ты должен быть так хорошо отрепетирован, потому что я ничего не могу исправить. Я не могу вставить барабанные партии и припевы. Это будет запись об исполнении, о том, как вы, ребята, играете.
— Бутч Виг (кредит)

В то время, когда действительно легко записывать бессистемно и исправлять в цифровом виде, чтобы исправить каждый фальшивый нюанс или не в темпе, Foo Fighters сделали смелое заявление. Речь идет не о самых крутых высокотехнологичных инструментах, которые превращают худшее в лучшее. Это искусство, ремесло, дисциплина. Правильные инструменты в руках профессионала дают отличные результаты.

Корни

Прошло более десяти лет с тех пор, как я впервые столкнулся с загрузкой, сборкой и запуском программы с открытым исходным кодом. Однако то, что я обнаружил при этом, является чем-то очень глубоким. Эти программные пакеты могут быть готовы к запуску после ввода одной команды в командной строке. Часто простойmake install приводил программное обеспечение в рабочее состояние в моей системе. Если бы я не был уверен, что все будет работать правильно, я мог бы использовать make test install, чтобы убедиться, что все самопроверки программного обеспечения прошли до того, как оно будет установлено на моем компьютере.

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

СПОК

Мы, разработчики программного обеспечения, часто сталкиваемся с концепциями проектирования систем, которые призваны направить нас к созданию надежного программного обеспечения. Одной из концепций, в частности, является идея единой точки управления (SPOC). Эта идея, которую вы также можете назвать шаблоном фасада, предполагает, что часто желателен четко определенный и упрощенный интерфейс для более сложной системы. Это позволяет вам управлять этой сложной системой в одном месте, а не во многих, и делать это с помощью простого интерфейса, а не сложного.

Что мне кажется интересным, так это то, что интерфейс командной строки (CLI) вполне подходит для SPOC, когда речь идет о взаимодействии с элементами повседневных задач программиста. Это простой интерфейс, понятный, последовательный, но достаточно мощный и компонуемый для решения даже самых сложных задач. Я считаю, что GUI бледнеют по сравнению с CLI в их способности облегчить четко сформулированное управление сложными проблемами. Правильные инструменты в руках профессионала дают отличные результаты.

Любители и профессионалы

Я часто сталкиваюсь с сопротивлением обучению и использованию CLI среди технических работников. Они предпочитают инструменты на основе графического интерфейса, утверждая, что они проще: командная строка якобы слишком тупая, чтобы быть полезной. Я считаю, что это предпочтение просто не соответствует действительности. По той же причине, по которой устройство для рисования краев менее мощное и менее производительное, чем кисть в руках профессионала, и по той же причине, по которой талантливая группа музыкантов не нуждается в излишествах цифрового редактирования звука для создания альбома. полный отличной музыки, я считаю, что владение интерфейсом командной строки гораздо более эффективно и продуктивно, чем инструменты с графическим интерфейсом.

Например, рассмотрите возможность автоматизации сборки. Самые модные и простые инструменты с графическим интерфейсом по-прежнему требуют автоматизации, когда дело доходит до настройки и запуска сборки с непрерывной интеграцией. Каков механизм, с помощью которого мы автоматизируем эти инструменты? Да, вы уже догадались: CLI. Далее рассмотрим командыdotnet <whatever> в .Net Core. Разве не интересно, что новейшая и самая лучшая платформа Microsoft ориентируется на управление всем из CLI? И, наконец, давайте рассмотрим Git, очень успешную распределенную систему контроля версий. Его рабочий процесс может быть трудным и громоздким для выражения в графическом интерфейсе, но интерфейс командной строки позволяет просто и эффективно сосредоточиться на том, что важно, и устранить шум.

Чем дольше я занимаюсь разработкой программного обеспечения, тем больше я ценю мощь и простоту, которые предоставляет командная строка, и я изо всех сил пытаюсь избавиться от назойливого подозрения, что CLI не имеет потолка производительности, который многие графические интерфейсы устанавливают для производительности. Я часто обнаруживаю, что инструменты с графическим интерфейсом — особенно те, которые лежат поверх CLI — приравниваются к дешевой пластиковой штуковине для рисования, продаваемой любителям. Мне кажется, что выбор довольно очевиден. С одной стороны, я мог бы вести себя как дилетант, использовать дилетантские инструменты и получать результаты, как дилетант. С другой стороны, я могу вести себя как профессионал, использовать профессиональные инструменты, развивать навыки профессионального уровня с этими инструментами и добиваться отличных результатов.

А теперь убирайся с моей лужайки!