В Haraj решихме да използваме Go като наш основен език за изграждане на бекенд услуги от преди ~2 години.

Много хора предполагат, че избираме Go поради неговата производителност, популярността му или дори единствено поради това, че е подкрепен от Google. Но, по дяволите, ние всъщност дори не се интересуваме много от всичко това в началото! 😂

Така че в тази статия бих искал да изясня защо изобщо решихме да направим Go наш основен език за бекенд разработка.

TL;DR Защото неговата простота прави нашия екип по-продуктивен.

Малко за Харадж

Харадж започна като личен проект от нашия основател през 2007 г.

Стратегията му беше да създаде платформа, която да се харесва на хората и да изгради стабилен бизнес около нея. Така че от самото начало инженерните постижения никога не са станали наш приоритет. Нашият приоритет е да гарантираме щастието на нашите потребители, като създаваме и поддържаме необходимите функции за тях.

Всяка от тези характеристики беше възложена на конкретни инженери. Проблемът е, че няма установени стандарти за това как инженерите трябва да разработват функциите. Така че те можеха да използват каквито технологии предпочитат за изграждане на функциите.

Можете ли да си представите ситуацията, в която една функция е изградена с помощта на PHP + MySQL, докато друга функция е изградена с помощта на NodeJS + PostgreSQL просто защото инженерът е предпочел технологиите вместо това поради необходимост? Доста хаотично за поддръжка, нали? 😂

Друг проблем е, че всеки от нашите инженери най-често се отнасяше към присвоените им функции като към свой личен проект. Така че не ги интересуваше дали другите хора могат да четат или поддържат техния код или не. Докато работи, те смятат, че работата е свършена. 🤣

О, забравих да спомена, че почти нямаше документация за всеки от тези проекти. 🤣

Години наред този модел на работа беше добър, тъй като екипът ни е малък и повечето от нашите инженери решиха да останат дълго с нас. Но когато решиха да си тръгнат, това беше голяма катастрофа за нас! 😅

Ето защо в средата на 2020 г. решихме да създадем стандарти за разработка. Всички наши проекти трябва да се придържат към тези стандарти, за да могат лесно да се предават на всеки в екипа.

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

Така че защо да отидете?

В продължение на няколко години разработка на бекенд използвахме различни езици за програмиране като PHP, Javascript, Python, Go и Typescript, за да изградим различни услуги в нашия бекенд.

Всички тези езици за програмиране имат своите предимства и недостатъци. Въпреки това има един език за програмиране, който особено ни учуди поради голямото си влияние върху производителността на екипа ни: Go.

Go е език за програмиране, който е глупаво прост и самоуверен. Това е като да използвате рамка, но вместо това на ниво библиотека, това е самият език. Така че е доста лесно да разберете как да правите нещата в Go, защото най-вече начинът вече е дефиниран и има само един начин да го направите.

Тази яснота и простота наистина улесняват хората да започнат с Go. Дори един от нашите старши инженери успя да получи приноса си към проект с отворен код, написан на Go само за ~1 месец, откакто научи самия език Go. Доста невероятно, нали?

След това решихме да назначим един от нашите младши инженери да работи и с Go. И знаете ли какво? Резултатът беше доста невероятен! Този човек вече може дори да прегледа кодовата база на Go, написана от неговия старши. Дори той би могъл да посочи някои от грешките, които неговият старши е създал. Доста невероятно, нали?

Ето защо, когато създадохме стандарта за разработка за бекенд, решихме да направим Go наш основен език за програмиране. Причината е просто защото прави нашия бекенд екип по-продуктивен и оживен:

  • Проекти, които обикновено отнемат 6–12 месеца, сега могат да бъдат изпълнени само за 1–1,5 месеца.
  • Преди нямахме преглед на кода, защото единственият човек, който разбира кода, е самият автор. Но сега, тъй като всеки можеше да разбере кода, всеки можеше да участва в прегледа на кода, дори младшите инженери.
  • Тъй като всеки може да участва в прегледа на кода, това насърчава всеки в екипа да стане по-отворен в споделянето и обсъждането на своите идеи с другите. Това доведе до много пробиви в нашия бекенд инженеринг. 😃
  • Преди не създавахме автоматизирано тестване за нашето приложение, но сега го правим, тъй като е много лесно да се създаде автоматизирано тестване в Go.
  • Улесняване на психическото натоварване на нашите инженери, защото те знаят, че когато пишат приложение, не само той/тя може да поддържа приложението, но и целият екип. 😁
  • Тъй като работата ни стана по-продуктивна, имаме повече време за игра и изследване на тонове нови неща! 😁

Така че, да, това са основната причина, поради която избираме Go за бекенд разработка дори досега! 😁