Два дні тому я досяг важливої віхи: три місяці роботи над живим додатком у компаніях Meghee та Cloudnotte. Роздумуючи над цим шляхом, я відчуваю вдячність за те, як багато я досягнув за такий короткий час. Ріст був неймовірним, а досвід — і складним, і корисним. Хочу поділитися своїм шляхом та тим, чого я досяг за ці три місяці.
Початок з нуля
Коли я розпочинав цю подорож, у мене не було попереднього досвіду роботи з Golang. Мені довелося зануритись у його вивчення з головою, працюючи одночасно над живим додатком — завдання, яке було одночасно страшним і захоплюючим. Вивчення нової мови програмування в контексті реального проєкту означало, що не було місця для вагань. Кожен день приносив нові виклики, але вони також давали можливість рости та вчитися в прискореному темпі.
Простота та ефективність Golang зробили його вивчення справжнім задоволенням, хоча й вимагали зміни підходу в порівнянні з мовами, з якими я був знайомий. Я швидко зрозумів, що навчання в контексті розробки додатка означає не тільки розуміння синтаксису чи концепцій; я застосовував їх для вирішення реальних проблем. Такий практичний підхід зробив процес навчання набагато цікавішим і кориснішим.
Подолання складної структури додатка
Одним з перших викликів було розуміння та внесення змін у структуру додатка. Система була розроблена з урахуванням унікальних взаємозв'язків і ролей:
- Сім'ї управляють залежними (Dependents), які не мають прямого доступу.
- Постачальники керують дома для догляду (Carehomes), які також не мають прямого доступу.
Ці сутності взаємодіють складним чином, і проектування системи, яка б підтримувала їх взаємодію, вимагало ретельного обдумування. Я мав забезпечити, щоб стосунки між цими сутностями були чітко визначені, а сама система — масштабованою та підтримуваною.
Створення реального зв'язку
Один з найцікавіших моментів проекту був впровадження функціональності чату. Це включало створення двох окремих систем зв'язку:
- Між сім'ями (через залежних) та постачальниками (через будинки для догляду)
- Між постачальниками (через будинки для догляду) та студентами
Проектування цих чат-систем стало викликом, оскільки потрібно було поєднати функціональність із простотою. Кожен чат мав обробляти динамічні взаємодії користувачів, зберігаючи цілісність даних. Я розробив та реалізував модель повідомлення (Message), що включала:
- Унікальні ідентифікатори за допомогою
primitive.ObjectID
(MongoDB) - Інформацію про відправника та отримувача (як об'єкти, так і ID)
- Контент повідомлення та відмітки часу
Ці чати були не просто про відправлення повідомлень; вони створювали безперешкодний зв'язок між ключовими учасниками системи. Спостерігати, як ці функції оживали, і бачити, як вони покращували додаток, було надзвичайно задовольняюче.
Вибір надійного бекенд-стеку
Бекенд-стек Golang, Gqlgen та MongoDB став моїм ігровим майданчиком. Кожен інструмент приніс свою криву навчання:
- Golang: Я навчився писати чистий, ефективний та підтримуваний код, прийнявши його мінімалізм та сильну типізацію.
- Gqlgen: Робота з GraphQL в Golang була новим досвідом. Це навчило мене проектувати гнучкі API, що задовольняють потреби різноманітних клієнтів.
- MongoDB: Я глибше зрозумів бази даних NoSQL, зокрема, як проектувати схеми, що поєднують гнучкість та ефективність.
Цей стек став основою моєї роботи, і оволодіння ним було ключовим для успіху проекту.
Виправлення помилок та вдосконалення системи
Після завершення основних функцій я зосередився на виправленні помилок та оптимізаціях. Цей етап навчив мене важливості уваги до деталей. Побудувати функцію — це одне, а забезпечити її бездоганну роботу у всіх сценаріях — зовсім інше.
Я ретельно перевірив систему, виявляючи крайні випадки, виправляючи помилки та вносячи покращення, щоб забезпечити готовність додатка до продакшн.
Цей процес також дав мені глибше розуміння важливості досвіду користувача. Кожна виправлена помилка та кожна оптимізація робили додаток більш плавним і надійним для кінцевих користувачів. Це стало нагадуванням про те, що навіть найменші зміни можуть мати великий вплив.
Роздуми про розвиток
Оглядаючись назад, важко повірити, як багато сталося всього за три місяці. Коли я починав, я не міг уявити, що досягну такого рівня компетентності та впевненості за такий короткий час. Я перейшов від вивчення основ Golang до створення складного реального додатка. За цей час я набув:
- Глибокого розуміння Golang, Gqlgen та MongoDB
- Досвіду в проектуванні та реалізації складних систем
- Навичок розв'язання проблем, що виникають при роботі з живим додатком
- Здатності швидко адаптуватися та вчитися в умовах швидкоплинного середовища
Погляд у майбутнє
Ця віху — лише початок. Я з нетерпінням чекаю на подальшу подорож і можливості продовжувати рости як розробник. Виклики, з якими я зіткнувся, підготували мене до ще більших проєктів, і я з нетерпінням чекаю, що принесе майбутнє.
За нові горизонти навчання, подолання нових меж і досягнення ще більших віх! Дякую всім, хто був частиною цієї подорожі — ваша підтримка та заохочення значать для мене дуже багато.
За нові досягнення! 🥂
Перекладено з: Three Months of Growth: From Learning Golang to Building a Live Application