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

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

1. Кодуй щодня!

Коли я починав самостійно вивчати свою першу мову програмування (Python), я одразу перейшов до коду. Ще під час прочитання першої книги я зайнявся цікавим для себе завданням – написав програму симулятор піаніно, щоб не витягувати кожного дня із важкої валізи величезний акордеон. Батьки віддали в школу з 3х років на клас акордеона. Я любив підбирати на слух мелодії і записувати в програму Guitar Pro вже коли навчався гри на гітарі. На слух  без інструмента не вмів писати новти, а щоб не витягувати важкий інструмент, запрограмував симулятор Pyano на ігровому двигуні PyGame, який дозволяв швиденько, використовуючи клавіатуру, підбирати потрібну мелодію.

Це була моя перша програма. З того моменту я постійно програмував. Практично щодня. Коли на роботі були нудні завдання, я придумував власні задачки і вдома по вечорах ковбасив. Пізніше почав фрілансити у другу зміну. Далі було кілька проектів з друзями.

І так само роблять більшість моїх знайомих програмістів. Вони програмують навіть на вихідних. Бо це в кайф! Це не загроші, це не обов’язково для клієнта. Це впершу чергу для задоволення.

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

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

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

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

2. Не переставай вивчати нове

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

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

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

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

Для чого вам це?

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

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

Ми, програмісти, у великій кількості випадків – інтроверти. А навіть ті, хто екстраверти (я до речі, екстраверт), в більшості своїй – логіки, а не етики. Що означає, що в розмові з іншими ми сухі, опираємось на факти, і не дуже цікавимось реакцією інших на наші слова. Головне – логіка і факти. Що, відповідно, призводить до конфліктів. Мистецтво спілкування – це та річ, якої доволі часто бракує технічним спеціалістам.

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

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

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

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

3. Проактивність краще, ніж активність

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

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

Самому пропонувати зміни це завжди краще, ніж чекати поки прийде менеджер і почне заставляти усіх переходити, наприклад, на покращений репозиторій коду.

Другий аспекти проактивності – це брати на себе додаткову відповідальність. Потрібно допомогти над складною задечею? – Я. Потрібно терміново закрити проблему під час неробочого часу? – Я. Потрібно розрулити нудну рутинну проблему? – Я.

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

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

З таким підходом хороший програміст завжди допомагає його босу (чи менеджеру) виглядати добре. Як кажуть англійці “make your boss look good”. Що не може не відобразитись позитивно на кар’єрі хорошого програміста 😉

4. Слідкуй за своїм часом

На моїй колишній роботі в мене був колега, який щодня затримувався на робочому місці. Бувало навіть до 10-11 години вечора. З першого погляду він мав би бути улюбленцем менеджера, адже проводить найбільше часу працюючи над проектом. Але, зазвичай, менеджер проекту мало не виганяв його додому і просив не затримуватись…

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

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

Sri Lanka

Правильне управління своїм часом дозволяє менше часу проводити за комп’ютером і більше подорожувати. Пляж на Шрі-Ланці.

Більшість класних програмістів не лише швидко пишуть якісний код, але й ефективно керують власним часом. Що це означає? Як мінімум три речі:

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

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

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

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

5. Пам’ятай першопричину свого завдання/проекту

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

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

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

Наприклад, чи варто одразу писати 100%-ний якісний продакшин код із тестами, документацією і тратити в 2-3 рази більше часу, ніж для швидкого “брудного” прототипу? Чи реалізувати функціонал, що дозволить з легкістю модифікувати дані на сайті клієнту, а чи спочатку достатньо, щоб програміст постійно був залучений при цьому? Чи розробляти повну версію функціоналу та ще й думати про те, що може трапитись в майбутньому, а чи зробити примітивне одноразове рішення?

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

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

Хороший програміст знає, що щасливий клієнт означає успішний програміст.

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

***

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

Якщо із даного списку вам чогось бракує на даний момент, тоді беріться, адаптуйте, шукайте свої підходи і робіть черговий стрибок у своїй IT кар’єрі! Програмістів багато, хороших значно менше.

А які у вас звички, що допомагають вам ставати кращим у вашій професії?