Go - мій молоток, і все навкруги - цвяхи

Переклад
Go is my hammer, and everything is a nail Always choose the right tool for the job? Nah. I use Go basically everywhere, which either makes me insightful or stupid. Decide for yourself! :D

Ви знаєте цей старий вислів:

"Завжди обирай правильний інструмент для роботи." — Шекспір, чи хтось такий

Що ж, я перевернув це з ніг на голову. Я використовую один інструмент для всіх можливих завдань, і вважаю, що маю на це вагомі причини. Але я забігаю наперед.

Давайте почнемо з іншого. Я Маркус, незалежний розробник та творець цифрових продуктів. Це лише я. У мене немає команди чи підрядників, і я маю намір так і залишити. Я обрав спосіб життя, який включає власний бізнес, оскільки це дає мені найбільшу гнучкість у тому, як і коли я хочу працювати. Можна сказати, щоб структурувати свою роботу навколо решти життя. Я хочу співпрацювати, але не керувати іншими людьми.

Як незалежному розробнику, я вважаю, що варто мудро обирати свої інструменти. Навіть більше, ніж у командному середовищі, занадто складний технологічний стек може поховати вас у непотрібній метушні; ви закінчите тим, що будуватимете інфраструктуру та доглядатимете за шарами технологій цілий день, замість того, щоб, знаєте, спілкуватися з клієнтами та створювати те, що вони хочуть. Приносити цінність комусь, будь-кому, світу.

У 2016 році я почав створювати речі на Go. Спочатку він мені не подобався, але я почав "розуміти його", і він залишився зі мною. Настільки, що я врешті-решт відвернувся від інших мов програмування. Тоді я писав багато на Python та Javascript, але я відмовився від цього. Зрештою я створив курс для розробників Go, а також певною мірою переизобрів React для генерації HTML на бекенді на Go. Тепер я створюю практично все своє програмне забезпечення на Go, від крихітних одноразових інструментів до веб-сервісів, CLI та всього між ними.

Але чому? Коли загальноприйнята мудрість полягає в тому, щоб завжди брати проблему, аналізувати її, а потім обирати інструменти, чому я ігнорую це і кажу: "ні, я просто знову використаю Go"?

Що ж, представляю вам: ПРИЧИНИ.

Причина 1: Go може робити практично все

Так, Go може робити практично все. Насправді, я розширю це твердження до того, що всі популярні мови програмування можуть робити практично все. Так, більшість відомі чимось одним чи іншим, і вони, безумовно, мають свої сильні та слабкі сторони. Але я думаю, що в кінцевому підсумку це зводиться до думки та смаку.

Мені подобається Go. Він достатньо простий, легкий для читання, послідовний і має багато інших хороших речей, які добре узгоджуються з тим, як я хочу створювати програмне забезпечення. Звісно, є речі, які мені не подобаються, але мене це не достатньо турбує. Але ви, ймовірно, вже знаєте все це.

Go добре підходить для очевидних речей: створення CLI, хмарної інфраструктури, HTTP-серверів, мережевих речей.

Але люди також створюють ігри для Nintendo Switch на Go. Вони створюють GUI-додатки за допомогою Go. Я навіть спробував струнний синтезатор у терміналі, створений на Go, що я вважав неймовірно крутим. Ви розумієте суть: часто можливо зробити те, що ви хочете, незалежно від інструменту, який ви використовуєте.

Причина 2: Менше перемикання контексту

Ви знаєте це відчуття, коли починаєте писати синтаксис для однієї мови програмування, розумієте, що ні, ви повинні використовувати іншу, і намагаєтеся перемкнути свій мозок в інший режим, відчуваючи себе трохи дурним? Я знаю, що раніше відчував.

Але тепер я більше не відчуваю цього, тому що використовую лише одну мову програмування! Ха! Жарт на минулому мені.

Але це йде набагато глибше. Мова програмування - це не просто купа синтаксису для створення речей. Це також компілятор, IDE, інструментарій. Спільнота для спілкування. Нескінченна новинна машина, за якою треба стежити. Екосистема бібліотек, інструментів, програм, ідіом, стилів. Само по собі це може бути досить складним, тому я вважав overwhelming намагатися встигати за кількома. Чи це можливо? Звісно. Чи буде це більш поверхневим? Також так.

Що приводить мене до моєї третьої причини.

Причина 3: Глибина знань

Коли мені не потрібно встигати за всім навколо кількох мов і я будую все лише однією мовою, я можу копати глибше. Вивчати речі, в які б інакше не заглиблювався. Досліджувати закутки і щілини, про які б навіть не подумав. Вивчати езотеричні особливості мови, історію, читати маловідомі блог-пости про деталі, якими б я не обов'язково переймався.

Очевидно, це не означає, що я ігнорую решту світу. Ви і я знаємо, що в цій галузі завжди є чому вчитися. Відкидання мов програмування не робить розробку програмного забезпечення менш складною в багатьох інших аспектах, але робить це в одному дуже конкретному середовищі, в якому я проводжу багато часу.

То що, я збираюся обмежити свої кар'єрні можливості?

Світ величезний. Кількість проектів практично нескінченна. Навіть якщо я виріжу крихітну підмножину нескінченності, це все одно нескінченність. Досить добре для мене та моїх кар'єрних амбіцій.

І я буду дійсно добрим хоча б в цій одній речі. Я набагато продуктивніший в Go, ніж коли тільки починав (очевидно, інакше мені, мабуть, варто було б перейти на сантехніку), і я сподіваюся залишатися на цьому шляху, і, можливо, навіть збільшити нахил. ЕКСПОНЕНЦІАЛЬНО. Гаразд, менше теж підійде.

В будь-якому разі, це мої думки. Давайте цвяхи, і я буду бити їх кривавим, рішучим гофером, який кричить "ЦЕ ВСЕ, ЩО ТИ МОЖЕШ?!?"

1