Фото з моєї останньої подорожі по Альпах в Албанії
Десять років тому я переїхав до Манчестера, щоб розпочати кар'єру програміста. Щоб відзначити цей важливий момент і зробити рефлексію над своєю дорогою до цього місця, я сів з смачною чашкою бариста-кави і сформулював свої думки про найважливіші уроки, які я здобув протягом цього часу.
Результатом стала десятка уроків, які найбільше мені допомогли.
Незалежно від того, чи тільки починаєте ви свою кар'єру чи є вже досвідченим інженером, я вважаю, що ви можете знайти ці уроки корисними для побудови ефективної, значущої та стійкої кар'єри в якості програміста.
Уточнення: Деякі з них можуть відрізнятися від типових кар'єрних порад, які ви зазвичай чуєте. Беріть те, що вам подобається, і залишайте решту.
А тепер трохи контексту...
Під час моєї рефлексії я переглянув свої робочі записи за останні десять років. Я склав список своїх найбільших досягнень і найбільших помилок. Також я створив карту кар'єри, щоб візуалізувати різні посади, які я мав у 14 різних команд до цього часу.
Я працюю консультантом в одній компанії, Thoughtworks, протягом останніх десяти років. Однією з постійних рис моєї роботи є часті зміни проектів, бізнес-доменів, технологічних стеків і команд.
Моя карта кар'єри (завдяки Елені Верні за шаблон Miro)
З одного боку, я вважаю, що часті зміни ролей і проектів, участь у різних командах і робота в різних доменах допомогли мені швидше зрозуміти розробку програмного забезпечення. Це також дозволило мені досвідчити патерни та анти-патерни в багатьох функціональних областях, таких як фронтенд, бекенд, інфраструктура та дані.
З іншого боку, перехід між командами і ролями, такими як інженер даних або інженер інфраструктури, вимагає сильного навчального мислення, терплячості і дисципліни. Вам потрібно вчитися новим інструментам, практикам і концепціям швидко і адаптуватися до відповідальностей нової ролі і областей впливу.
В цілому, я вважаю, що робота консультантом допомогла мені розвивати здатність швидко освоювати нові мови програмування, практики та способи роботи.
Достатньо контексту. Дозвольте поділитися з вами найважливішими уроками, які я вивчив.
1. Оптимізуйте для Навчання Над Гроші
Не всі досвіди однакові. Не має значення, скільки років досвіду у вас є. Важливо, що ви робили всі ці роки і з ким.
Ви можете розглядати роботу як комбінацію декількох аспектів: гроші, навчання, люди, місія... На який з цих аспектів ви зараз оптимізуєте?
Я вважаю, що оптимізація для навчання над грошима на початку кар'єри виграє в довгостроковій перспективі. Накопичені знання під час перших років будуть нараховуватися і дозволять вам отримувати високооплачувані і більш впливові роботи у майбутньому. Звичайно, це слід робити тільки тоді, коли вам не потрібні гроші на погашення боргів або підтримку родини.
Грайте в довгострокові ігри з довгостроковими людьми. Усі винагороди в житті, чи то в багатстві, взаємині або знанні, походять від складного відсотка.
— Навал Равікант
На початку вашого шляху навчання та зростання як інженера в робочий час важливіше за гроші. Розглядайте перебування в правильному середовищі навчання як пріоритет для ваших перших пар робіт.
Найкращим кар'єрним рішенням, яке я зробив, було покинути зону комфорту, переїхати за кордон і розпочати свій професійний шлях в чудовому робочому середовищі. Робота з міжнародною, різноманітною і пристрасною командою людей, які піклуються про своє ремесло, прискорила мій розвиток більше, ніж будь-що інше.
Завдяки дистанційній роботі ви можете приєднатися до одного з таких середовищ, не виходячи з дому.
Бути в чудовому навчальному середовищі протягом робочих годин — це лише перший крок. Не забудьте виділити час на щоденне вивчання і тренування. Година щоденного вивчання і практики поза роботою буде швидко нараховуватися в довгостроковій перспективі.
2. Інвестуйте в Принципи та Практики
Інвестуйте свій час в вивчення принципів та практик ефективної інженерії програмного забезпечення з самого початку. Конкретні інструменти та технології приходять і йдуть, але принципи та практики залишаються довше.
Вивчайте вічні аспекти своєї справи. Це знання ніколи не втратить своєї цінності.
— Дерек Сіверс
Витрачення часу на розуміння ідей ефективного автоматизованого тестування чи коли використовувати асинхронні проти синхронних інтеграцій між сервісами принесе вам більше вигод у довгостроковій перспективі, ніж витратити той самий час на вивчення внутрішніх працювати фреймворка Vue/React/SpringBoot або запам'ятовування синтаксису мови.
Ментальна модель принципів, практик і інструментів
Мені пощастило працювати з колегами, які підкреслювали важливість розуміння принципів та практик нашої справи. Оволодіння ефективними практиками інженерії програмного забезпечення, такими як чистий код, рефакторинг, автоматизоване тестування, CI/CD і розробка через тести дозволить вам отримати головний старт і зробить ваш код задоволенням для роботи.
3. Будьте Інженером, З яким Кожен Хоче Працювати
Ступінь того, наскільки інші люди хочуть працювати з вами, є прямим показником вашого успіху в кар'єрі як інженера. Будьте тим інженером, з яким хочуть працювати всі.
— Джон Оллспо, колишній технічний директор Etsy
Зробити ваш код задоволенням для роботи важливо, але це лише частина цього.
Не станьте інженером, з яким ніхто не хоче працювати.
Ефективне співпрацювання ключове для створення великого програмного забезпечення. Вивчіть, як добре співпрацювати з іншими, допомагайте колегам, які застрягли, активно слухайте ідеї інших людей і будьте тим видом людини, з якою кожен хоче бути в команді.
4. Диверсифікуйте своє життя
Ви не можете дійсно бути першокласним у своїй роботі, якщо ваша робота — це все, чим ви є.
— Анна Квіндлен
Щоб мати довгу і задовільну кар'єру в технологіях, відповідно досягайте свого стилю життя за звичками та обрядами, які диверсифікують ваше життя і дають вам правильний баланс між роботою та особистим життям.
Працюючи з 9 до 5 і інвестуючи додаткову годину щоденного вивчення і вдосконалення своєї професії, ви не повинні забувати про правильну догляд за іншими аспектами свого життя, такими як ваше здоров'я, фінанси та взаємини.
Щоб залишатися в балансі і уникати вигорання, ви можете встановити певні правила і циклічно вкладати більше часу у свою кар'єру, а іноді просто відпочивати і робити своє 9 до 5.
Ось деякі правила, які я встановив для себе, щоб досягти цього балансу:
- Я захищаю свої вихідні. В ці два дні я не займаюся роботою.
- Я видалив будь-які роботові речі зі свого смартфона.
- Я намагаюся зменшити час перед екраном комп'ютера після роботи.
- Я обрав хобі, які виводять мене на свіжому повітрі, такі як подорожі, MTB і сноубординг.
Не ставте всю свою щастя і ціль на одне місце. Зовсім нормально покладатися на один стовпець чи інший у різні періоди свого життя, але вам добре би переконатися, що є кілька інших, які тримають дах, якщо перший розсипається.
— Девід Генселмер, творець Rails.
Звичайно, будуть періоди, коли ми порушуємо ці правила і витрачаємо більше часу на робочі проекти або самостійне навчання. Це абсолютно нормально, поки ви усвідомлюєте і готові йти на такий компроміс за те, що ви отримуєте взамін. Пам'ятайте, це балансування.
**5.
Розглядайте зворотний зв'язок як золото**
У всіх нас є потреба в людях, які дадуть нам зворотний зв'язок. Саме так ми поліпшуємося.
— Білл Ґейтс
Постійно запитуйте і збирайте зворотний зв'язок. Зворотний зв'язок, головним чином конструктивний, допоможе вам виявити ваші сліпі плями і швидше пізнати себе.
Зворотний зв'язок підніме ваш ріст більше, ніж будь-що інше.
Мені пощастило почати свою кар'єру в компанії з добре встановленою культурою зворотного зв'язку. Зворотний зв'язок дозволяв мені виявляти тенденції, рефлексувати та записувати дії, які я хочу здійснити для того, щоб стати кращим професіоналом.
Я ставлюся до зворотного зв'язку як до золота. Я організовую і консолідую отриманий зворотний зв'язок разом із діями, які я планую вжити для його реалізації. Я встановив щомісячне нагадування для перегляду цих дій і перевірки прогресу.
Якщо ви не запитуєте зворотний зв'язок, почніть зараз! Ось корисні поради для початку.
6. Починайте з Широкого Перш
Щоб бути успішним професіоналом сьогодні, я вважаю, що спочатку слід розширювати горизонти (оволодіти тими 20%, що дозволять вам виконувати 80% завдань) і глибше вдаватися тільки тоді, коли є велика потреба, велика можливість або сильний інтерес у подальшому розвитку ваших навичок в певній області.
— Тьяго Гізі, директор з інженерії в Nubank
Не зупиняйтеся лише на основах вашої роботи. Вивчайте управління продуктом, ідеї agile та lean, бізнес-домен проблеми, яку ви намагаєтеся вирішити, і як працювати з людьми та керувати командою. Будьте тим інженером, який питає, що вони будують.
Мої найкращі навчальні досвіди прийшли від того, що я вийшов із зони комфорту і підштовхував себе носити інші шапки. Чим краще ви розумієте інші ролі в команді, тим краще ви зможете співпрацювати з ними та сприяти побудові високоефективної команди.
**Завжди є можливості досліджувати і перетинати межі вашої поточної ролі.
Ви можете взятися за добровільне проведення дослідницького тестування нової функції, співпрацювати з оперативною командою для впровадження спостережності в ваш сервіс або працювати разом з менеджером продукту, щоб зрозуміти, чому користувачам не сподобалася остання функція, яку ваша команда випустила.
Це може бути трохи нестандартним заявленням, але я вважаю, що найкращі інженери, з якими я працював, були універсалистами. Вони розуміли процес розробки програмного забезпечення з початку до кінця, продукт і бізнесову проблему, яку вони намагалися вирішити. Вони не боялися висловлювати пропозиції щодо покращень в тих областях, за які не були відповідальні.
Бути універсальним спеціалістом дозволяє мені швидше робити вплив при вступі в новий проект або приєднанні до існуючого. Розширення і вивчення того, як бути універсальним, є супер-вмінням.
7. Поводьтеся Лідером Без Звання
Вам не потрібно бути технічним керівником або менеджером інженерії, щоб розвивати свій лідерський потенціал і робити вплив.
Не бійтеся брати на себе ведення обговорення щодо вибору нового інструменту. Не ухиляйтеся від викликання того дизайну, на який команда так пишається. Не уникають вказівки на проблеми, які потрібно вирішити. Не чекайте на звання, щоб взяти на себе лідерство.
Коли ви опиняєтеся в ситуації, коли всі дивляться один на одного, настав час для вас, щоб взяти лідерство на себе. Ви є лідером, коли вирішуєте стати таким. Немає жодних ініціацій або звань. Просто рішення.
Протягом років я бачив багато молодших колег, які почали вести без звання. Через кілька років більшість з них займали керівні посади і успішно визначали напрямок для своїх команд або навіть керували декількома командами. Вони не чекали, поки хтось дасть їм "звання", вони вже з самого початку використовували свій лідерський потенціал.
8.
Міркуйте про області впливу
Дуже досвідчений інженер одного разу порадив мені постійно міркувати про свою поточну область впливу, а також про те, якою має бути моя наступна область впливу по мірі мого розвитку. Модель ментальних областей впливу справді залишилася зі мною і керувала моїми зусиллями збільшення впливу як інженера програмного забезпечення.
Якщо ви тільки починаєте, ваша перша область впливу може бути модуль, над яким ви працюєте, наприклад, група класів, які потрібно змінити для впровадження функції. Як тільки ви починаєте відчувати себе комфортно, область розширюється, і ви здатні впливати на дизайн і прийняття рішень для компоненту всередині системи, наприклад, веб-додаток або мікросервіс.
Області впливу
Постійно збираючи більше знань і досвіду, ви починаєте впливати на дизайн всієї системи для конкретного домену, наприклад, на всі служби, за які відповідає ваша команда. Після цього ви починаєте розуміти і впливати на систему систем, не тільки на служби, за які відповідає ваша команда, але й на все інше, що підтримує роботу вашої компанії.
Ви переходите з однієї області в іншу, майструючи попередню область і здобуваючи знання і навички, необхідні для початку впливу на наступну.
Ця ідея також може бути застосована до вашого лідерського шляху. Ви починаєте з ведення і організації себе. Потім ви починаєте навчати і наставляти інших колег, а потім переходите до лідера команди, кількох команд або цілої організації.
Розумійте, якою є ваша поточна область впливу і що вам потрібно для переходу до наступної.
9. Настроюйте свої інструменти
Дайте мені шість годин, щоб срубати дерево, і я витрачу чотири перші на заточення сокири.
— Авраам Лінкольн
Оглядаючись назад, **я вдячний, що витратив час на початку на оволодіння інструментами, які нам доводиться використовувати щодня.
Я не говорю про останній фреймворк JavaScript чи конкретну функціональну бібліотеку для моєї обраної мови програмування. Я говорю про ті інструменти, які ми використовуємо постійно: інтегроване середовище розробки (IDE), систему контролю версій, засіб налагодження (debugger), термінал...
Витрачайте час на запам'ятовування скорочень, вивчення двадцяти відсотків команд, які використовуються в вісімдесят відсотків випадків, або знання, як налаштувати конфігурацію IDE для покращення ефективності вашого робочого процесу.
Видача інвестицій у заточування сокири висока. Проте не бійтеся змінювати та розвивати свій робочий процес. Звичайно, варто час від часу спробувати нові інструменти. Технології рухаються швидко. З'являються нові інструменти, які можуть повністю змінити спосіб, яким ми працюємо. Наприклад, розробка програмного забезпечення з використанням штучного інтелекту, такого як Github Copilot, змінить наше співробітництво. Так, мені треба було згадати про GenAI...
10. Покажіть свою роботу
Станьте документатором того, що ви робите.
— Остін Кліон
Відразу у своєму шляху розвивайте звичку документувати, систематизувати і показувати свою роботу.
Моїм найбільшим жалем є те, що я не почав зафіксовувати і ділитися тим, що я вчився раніше. Повертайтеся! Не станьте інженером, який лише споживає інформацію. Напишіть коментар чи вдячність у тому підручнику, що допоміг вам розблокувати ситуацію, опублікуйте той статтю, про яку ви думали протягом року, і зареєструйтесь на ту презентацію, на яку вам так страшно виступати...
Записуйте свої ідеї та висновки і діліться ними з людьми, що дозволяє отримувати швидкий зворотний зв'язок і краще розуміння теми. Крім того, завжди є когось, кому можуть бути корисні ваші поточні виклики і ідеї.
Якщо це з вами резонує, ви можете розглянути створення своєї власної професійної бази знань і почати поділитися тим, що Тьяго Форте називає "проміжними пакетами".
Я розпочав будувати свою власну базу знань кілька років тому і тільки можу побажати, щоб я почав це раніше.
Висновки
Зробив друга в Албанських Альпах
За останнє десятиліття я вивчив багато речей, але ці десять уроків зробили найбільший вплив на мій шлях. Сподіваюсь, вони будуть корисні для будівництва міцної, стійкої та задовільної кар'єри в якості інженера програмного забезпечення.
А тепер про вас? Які поради ви дали б новому програмісту, який починає свій шлях у технологічній індустрії? Які найважливіші уроки ви вивчили? Будь ласка, поділіться ними з нами в розділі коментарів.
Завжди радий знайомитися з новими людьми. Якщо ви хочете зв'язатися зі мною, можете знайти мене на Linkedin, Github, Instagram, Substack, або на моєму особистому веб-сайті.
Дякую всім людям, з якими мені пощастило працювати протягом останніх 10 років. Вони навчили мене безцінним урокам того, як стати кращим інженером програмного забезпечення і кращою людиною.
Дякую моєму другові Мірче за час, відведений на огляд ранніх версій цього статті.
Усі зображення, якщо не вказано інше, належать автору.
Перекладено з: 10 unconventional lessons from 10 years working as a software engineer