Принимайте участие в зарплатном опросе! Уже собрано почти 8 000 анкет.

Програмування без негативу: як виконувати поточну роботу й зберігати спокій

Чи давно ви почувалися зле від програмування? Ну, знаєте, щось не працює в Internet Explorer, код надто поганий, ви десь не попали в естімейт, не передбачили ризики чи не змогли зрозуміти, як щось працює, а самі двічі senior тощо. Мабуть, нещодавно.

Як часто це відбувається

Процес розробки ПО складається з повторюваних активностей в сталих умовах, тому недобрі відчуття, якщо вони виникають, теж повторюються. Умовно, ви розбиралися, як працює той «поганий» код, у минулому, робите це зараз і робитимете це надалі, якщо не зміните job function. Так само з Internet Explorer, естімейтами, ризиками й іншими аспектами програмування.

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

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

Як поліпшити ситуацію

Зазвичай, ідеться про рефакторинги, написання документації, установлення процесів чи прийняття стратегічних рішень, на кшталт відмовитися від підтримки того Internet Explorer узагалі. Це все добрі способи розв’язання проблем, що виникають у галузі, та, як ви можете помітити зі свого досвіду, вони навряд чи позбавлять тих негативних відчуттів, що їм передують. Навпаки, шлях новації означає суттєве збільшення навантажень і стресу, тож ліпше на цьому рівні не стане.

Вочевидь, розв’язувати проблему потрібно ще на її початку, коли отримали завдання та з’явилося перше розуміння, що приємною ця подорож точно не буде. Усе, що я пропоную робити далі, це відкласти негайні дії та нечемні слова й дати раду почуттям. Назвемо це медитацією. Це має бути окрема активність у вашому особистому процесі виконування завдань. Активність, що потребує часу, знань, досвіду, інструментів і відповідного ставлення — дисципліни.

Схематично цей процес можна представити так:

Або так:

Як і решта складників процесу, медитація має мету й вимірюваний результат.

Проаналізуйте будь-яку негативну ситуацію, пов’язану з індивідуальною діяльністю. Ви маєте незавидне А, і вам це не подобається. Чому? Бо десь є ліпше Б, у якому ви хотіли б опинитися.

Наведу кілька прикладів:

  • Код незрозумілий (А), а мав би бути зрозумілим (Б).
  • Завдання займає багато часу (А), а мало б уже завершитися (Б).
  • Оцінка виконання роботи мала б бути точною (А), а робота зайняла суттєво більше часу (Б).

Поставте собі запитання: чи є у вас підстави на ці очікування? Я маю на увазі факти, чому так повинно бути, а не ваші побажання.

  • Чи має бути такий складний код зрозумілим?
  • Чи повинно таке складне завдання займати менше часу?
  • Чи могла бути точною оцінка без складнощів, про які ви дізналися під час виконання?

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

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

Розрахунок відчуттів

Очікування й відповідні негативні відчуття можливо попередити заздалегідь. Для кращого розуміння, як це зробити, переведемо залежність відчуттів від ситуації й очікувань у таку формулу:

Ситуація — це те, на що ви впливати, загалом, не можете.

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

Залишається змінна очікування. Те, на що ви безпосередньо маєте вплив, бо це ваші особисті очікування. Зменште їх, і все стане набагато простіше.

Не очікуйте, що:

  • Код має бути обов’язково зрозумілим.
  • Ви виконуватимете завдання моментально.
  • Оцінки будуть виключно точні.

Дуже важливо розуміти, що зменшення очікувань не означає зменшення завдань чи потреб. Ви однаково можете:

  • Писати зрозуміліший код.
  • Виконувати завдання за об’єктивний час, а то й швидше.
  • Оцінювати роботу точніше, використовуючи аналіз й інші практики.

Це те, на що ви також маєте можливість впливати вже під час виконування завдань. Але ми все ще говоримо про сприйняття. Цю різницю важливо усвідомлювати й утримуватися від виконання, допоки емоції, якщо вони з’явилися, не опиняться під вашим контролем.

Патерни узгодження

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

Добрим рішенням цієї проблеми, крім звернення на неї уваги й запровадження культури збереження спокою, був би загальноприйнятий перелік патернів боротьби зі стресовими ситуаціями, як-от всім відомі GoF або Head First Design Patterns. Я на таку поважну місію не претендую, але все ж спробую навести кілька прикладів зі свого досвіду. Сподіваюся, це допоможе комусь із читачів швидше знаходити рішення, а можливо, стане поштовхом для написання змістовніших робіт на цю тему.

Отже, що вас зазвичай дратує?

Нецензурно поганий код

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

  1. Поганий код, якщо він є в проекті, це факт.
  2. Робота з ним займає більше часу, що теж є фактом.
  3. Завдання, яке вам потрібно виконати, потребує роботи в таких умовах.

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

Погано виконана кимось робота

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

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

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

Незрозуміло, як виконати завдання

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

  1. Завдання для вас нове, це факт.
  2. Завдання складне й потребує докладання зусиль і часу, що теж є фактом.

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

Не вкладаюся в час

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

  • Завдання потребує більше часу, це факт.

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

Задовбався

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

Залежно від ситуації це є окремий прояв попередньо згаданих 1) не вкладаюся в час, 2) нецензурно поганого коду або 3) погано виконаної кимось роботи. Крім зазначених фактів і логіки, котрими можна користуватися для поліпшення настрою, слід зрозуміти, що ви просто стомилися. Відповідно, вам треба відпочити.

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

Потрібно виконувати завдання не так, як ви хочете

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

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

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

Потрібно виконувати не те, що ви хочете

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

Розглянемо ситуацію:

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

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

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

З чого почати?

Пригадайте ситуацію, де ви в процесі програмування відчували негатив. Спробуйте розібратися, які у вас були очікування та яким був насправді стан речей. Чи були у вас підстави нервувати? Чи стала б у нагоді медитація тієї миті, як ви відчули щось неприємне? Якщо так, то наступного разу спробуйте скористатися цим інструментом. Сподіваюся, він стане в пригоді.

Також вам може бути цікава моя попередня стаття про труднощі взаємодії програмістів з колегами «Коли буде готово: як не зруйнувати взаємини в команді».

Бажаю гарного настрою та успіхів!

LinkedIn

33 комментария

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Ота картинка з конями: це «Коні не винні» чи «They Shoot Horses, Don’t They?» ? :)

Коні то еталонний спокій.

Кобыла пахала больше всех, но не стала директором колхоза

Ви даремно асоціюєте роботу програміста з понаднормовим оранням землі, та навряд ви мене почуєте.

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

Согласен, спасибо за отзыв!

Якщо коротше, то

Ваш Керівник не вміє контролювати ризики, та не готовий інвестувати в Ваш Розвиток.
Не потрібно хвилюватись — вашою цілью має бути «Працювати поменьше, та заробляти побільше».

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

Тому не потрібно себе зайвий раз обдурювати: тут немає потреби в розробці конкурентноспроможних продуктів; люди працюють десятки років, не тому що вони вирішують важливі проблеми та змінюють світ на краще, — вони просто виживають, їм більше нікуди податись, та вони більше нікому не потрібні...

Загалом, Самодурство — просто чудова рекомендація.

Отличная статья, и очень актуальная. Спасибо!

Дякую за відгук!

Замечательная статья, большое спасибо!

Дякую за відгук!

статтю не читай
@
в тред відповідай

Не так давно читав статтю «чи так погано працювати з мудаками?» де автор розмислював на таку тему — якщо навколо тебе мудаки, то це створює середовище дискомфорту, в якому ти зможеш добре прокачувати свої навички комунікації/менеджменту і тд. Типу будь-хто може ізі працювати в команді адекватних професіоналів, а ти спробуй зварити кашу з джунами! Або спробуй впоратися з мудаком-замовником! Або з мудаком-менеджером! І так далі. Типу такий собі челендж.

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

Так от, в деякий момент мені це просто надоїло і я звалив в стартап де за базар відповідав тільки перед СТО. А він — чоткий і адекватний мужик. І шо я вам скажу — це як з підвалу на сонце вийти було. Я манав ті медитації шоб заспокоїтись. Краще змінити місце роботи на таке, де середовище буде створювати мінімум перешкод для твого професійного зростання, мінімально завантажувати мозок непродуктивними речами та сприяти здоровому існуванню. Коротше кажучи, там, де немає токсичних мудаків і не треба медитувати шоб переварити гавнокод в пулреквесті від кулєги або відходити від вечірніх дзвінків довбанутих на всю голову сейлзів.

Піду про це пост в тєлегу напишу. Хороша тема.

Если вокруг одни мудаки, а ты хороший значит есть вероятность, что мудак именно ты)))

Квалифицированные психологи с Вами бы не согласились.

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

Після першого не медитують теж. А якщо проблеми постійні — імовірно, щось пішло не так, і треба щось міняти. Або себе (навіщо?) або стан речей.

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

Якщо

працювати доводиться

то вже

щось пішло не так
Чи ви вважаєте те що вам десь потрібно більше часу або відпочити від роботи проблемою компанії?

Ні, я вважає компанію, в якій «доводиться», а не «хочу», своєю проблемою, яку треба вирішувати.

друже, де ж таку роботу взяти щоб без цього всього?

А ти поскачи років п’ять по різних конторах — і щось, може, знайдеться.

Дуже класна статья!
Особливо якщо вже є досвід вирішення проблем описаних в патернах...
Що приємно — те що рішення доволі прості, очевидні а значить і прийнятні!

Там усюди тактичні рішення, котрі діятимуть 1-2 дні, доки наступний день не накидає своїх проблем.
Треба мислити стратегічно — міняти контору.

Буває що після зміни контори ті ж самі проблеми повторюються і тоді виявляється що нада шукати інші рішення...

Але матимеш:
+ кілька місяців відпочинку від рутини
+ підвищення зарплатні
+ досвід з новими технологіями
+ свободу від необхідності спілкування з начальством, що дістало
А якщо лишатись — ті ж проблеми кожен день, депресняк та професійна деградація.

ну якщо вдасця знайти роботу на якій будуть всі ці переваги — то да, є сенс!)
але якщо зміна роботи не розглядається як рішення — то не так багато варіантів остається щоб вирішити описані проблеми... імхо...

якщо не тебе звільнили, а сам шукаєш — то очевидно, що вдасться)

якщо зміна роботи не розглядається як рішення

то треба промедитувати, чому саме вона не розглядається, змінити своє ставлення до розглядання, і починати розглядати.

Треба мислити стратегічно — міняти контору.

Якось дрібно. Міняти тоді вже країну і професію одночасно.

Дякую за відгук!

Блочки с медитацией очень на бензопилу смахивают)

Это намек на поиграть в Doom.

хехе, сразу видно мизантропа :)

Проаналізуйте будь-яку негативну ситуацію, пов’язану з індивідуальною діяльністю. Ви маєте незавидне А, і вам це не подобається. Чому? Бо десь є ліпше Б, у якому ви хотіли б опинитися.

Очевидне рішення: запустити Джина.

Подписаться на комментарии