Як поєднувати full-time та фриланс. Досвід і поради розробника | DevsDay.ru

IT-блоги Як поєднувати full-time та фриланс. Досвід і поради розробника

dou.ua 30 октября 2020 г. Святослав Старокожев


Привіт, мене звати Святослав, я займаюся програмуванням, цифровою обробкою сигналів і математичним моделюванням. За той недовгий час, що я пропрацював у компанії, мені неодноразово доводилося втискати велетенські неоптимальні програми в маленький процесор, виконувати бенчмарки й не тільки. Крім того, я — фрилансер.

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

Чому я обрав фриланс

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

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

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

Першим моїм підробітком стала контекстна реклама. Як зараз пам’ятаю, як з викладачем ми налаштовували Google Adwords та Google Analytics для одного інтернет-магазину, що займався сантехнікою.

До речі, цей викладач завдяки фрилансу купив собі і автомобіль, і квартиру. Разом з кількома товаришами він займався контекстною рекламою.

Здавалося, що шлях доволі успішний. Однак були «але», зокрема:

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

Тому я змінив свій напрям діяльності на DSP та математичне моделювання і, як показав час, усе зробив правильно.

Шлях до роботи мрії

Як уже згадував, я займаюся цифровою обробкою сигналів (DSP). І більша частина моїх завдань — це оптимізація алгоритмів для спеціалізованих процесорів, що можуть обробляти ці алгоритми надзвичайно ефективно. Assemler, MAC operations, Vector operations, FFT, DCT, FIR, IIR, Calling conventions, Circular Buffers — це все, з чим мені доводиться мати справу кожного дня.

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

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

Було кілька шляхів, як це вирішити:

  • піти та просити підвищення зарплати чи підвищення на посаді;
  • знайти більш оплачувану роботу;
  • взяти додаткову роботу.

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

Знайти більшу оплачувану роботу — це вже реальніше, але довго. Зазвичай пошук триває кілька місяців або більше, особливо зваживши на те, що я DSP Engineer, а це не дуже популярно в Україні. Отже, залишився третій варіант.

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

Чи витратити купу часу на завдання і не виконати його тому, що некомпетентний або недостатньо досвідчений. Ти можеш некоректно оцінити роботу і попросити занадто багато чи мало грошей. Де краще — це риторичне питання, є свої «за» і «проти» на кожній стороні барикад.

Одне із перших моїх завдань на Frilancehunt було з MATLAB: звичайна курсова робота для аноніма-іноземця. Отже, я реалізував методи пошуку мінімуму та максимуму у функціях. Вивів графіки та знайдені точки. Замовнику не сподобалось, як я вивів ці точки, бо потрібно було не жирними крапками, а зірочками :)

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

Приклад невдалого оцінювання проєкту та поради початківцям

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

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

Коли я глянув на завдання вперше, витратив на його осмислення близько 15 хвилин. Я оцінив роботу у $100 та час у 7 днів. Це була перша помилка. Далі я подивився приклади рішень інверсного маятника на практиці в інтернеті. Серед іншого можна шукати наукові статті на Researchgate.

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

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

Висновки із цього прикрого випадку:

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

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

Як зрозуміти, чого хоче клієнт

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

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

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

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

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

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

Де я шукав роботу

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

FL.ru. Знайти роботу на фрилансі легше Web-програмістам, дизайнерам, перекладачам і рекламникам. Математичні алгоритми чи диференціальні рівняння, на жаль, тут не популярні.

Weblancer.net. Не знайшов на платформі релевантних моїм навичкам завдань.

Globalfreelance.ua. Потрібно виконати тестове завдання (я тричі зробив його невдало), є незрозумілий анонімний аукціон: тобто невідомо, скільки запропонував твій опонент за завдання, нема змоги моніторити ціни коректно.

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

Я використовую два варіанти:

  1. Frilancehunt та інші фриланс-сайти: є сейф (буфер), куди кладуть гроші за замовлення. Клієнт розуміє, скільки коштує робота, і викладає цю суму, що гарантує виконавцю оплату. Далі спеціаліст виконує завдання, після завершення викликає посередника — адміністратора чату. Той переконується, що все гаразд, і дає згоду на пересилання грошей на внутрішній рахунок програміста. Недолік такого посередництва — комісія від замовлення, вона залежить від сайту та обсягу роботи.
  2. Сарафанне радіо: проєкт розбивається на кілька етапів, за кожний з них призначено винагороду. Таким чином захищений і спеціаліст, і замовник, немає спокуси не заплатити за завдання і не виконати його.

Скільки реально заробити

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

Наприклад, я зробив одному клієнту одновимірний фільтр Калмана за $50, йому сподобалось і він замовив весь проєкт за $1000.

Ставлення роботодавця до фрилансу

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

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

Його величність тайм-менеджмент

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

При режимі 12/12 хоч-не-хоч мусиш привчити себе до дисципліни. Кожна година стає цінною, адже тобі потрібно встигнути зробити дві роботи, а не одну.

Я для себе розробив такий графік:

7:00–8:00 прокинувся, фізичні вправи.

8:00–9:00 готую, їм.

9:00–10:00 дзвінки та координація дій на день із замовниками на фрилансі.

10:00–11:00 координація дій на роботі на день.

11:00–19:00 працюю.

Після 19:00, якщо не встигаю, то продовжую працювати до 20:00. Далі потрібно перемикатись на фриланс-завдання. До 22:00 займаюся ними. Відтак відпочинок та підготовка до сну.

«Гаразд, чіткий графік, дисципліна та бажання йти до мети дадуть мені змогу це все виконати», — думав я. Але не все так просто. Графік іноді «плаває», не завжди вдається зв’язатися із замовником у вказаний час. Якщо вже таке трапляється, то веду перемовини у робочий час. Парадоксально, але я навіть трохи вдячний карантину: тепер перемовини проходять вдома. Був випадок, коли на один і той самий час було два дзвінки, причому дуже важливих. Сидів на обох.

Проблеми, які розв’язував на фрилансі

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

Отже, головні проблеми, які довелось вирішити, не беручи до уваги технічну частину:

  • Правильне оцінювання часу, що відводиться на завдання. Траплялося, що через неправильне оцінювання доводилося відмовлятися від завдання або проводити безсонні ночі біля комп’ютера.
  • Розуміння того, що від тебе хоче замовник. Це ціла наука, іноді сам замовник до кінця не розуміє, чого хоче. Доводиться показувати раніше виконані проєкти чи наводити приклади, щоб технічне завдання було сформовано не так абстрактно.
  • Переосмислення технічного завдання та виконання його не так, як хотів замовник із самого початку. Таке теж буває, але з цим потрібно бути обережним, щоб не переробляти назад.
  • Фраза «клієнт завжди правий» працює не на 100%. Буває, що сам клієнт не знає на 100%, чого хоче, і його уявляння щодо реалізації не завжди збігається з реальними можливостями. Спробую перефразувати: не потрібно дуже міняти технічне завдання та лізти в процес розробки. Це не дасть бажаного ефекту та буде тільки сповільнювати.

Кому варто спробувати фрилансити

Для тих, хто хоче:

  • довести собі, що вартий грошей, які отримує на роботі;
  • шукати пригод і хитрих замовників, що можуть кинути на гроші та час;
  • отримати досвід не тільки на постійному місці роботи;
  • дослідити ринок послуг і пропозицій. Я розглядаю фриланс і як перехідну зону до підприємницької діяльності. Ти Software Engineer/Project Manager/Team Lead/CEO в одному флаконі.

Поради

Коли працюєш по 12 годин на день, необхідно мати фізичну активність протягом дня. Чудово освіжає пробіжка на ніч, кров насичується киснем, а це позитивно впливає на мислення. Раджу також відтискання та вправи для спини. В YouTube є купа туторіалів, достатньо 30–40 хвилин фізичних вправ щодня, щоб чудово почуватися біля монітора.

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

Відпочивайте! Зробили завдання — подихайте свіжим повітрям, звільніть розум на хвильку від роботи і знову вперед.

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

Висновки

На звичайній роботі набагато спокійніше, немає завжди увімкненого турборежиму, коли шукаєш додаткове замовлення, щоб закинути грошей за квартиру чи ще на щось важливе. Круто, коли працюєш з 10-ї до 18-ї та в тебе все ок. Та бувають ситуації, коли потрібно робити щось понаднормове і таким чином підвищувати свій рівень життя. Важкий шлях до розуміння себе, своїх сильних і слабких сторін. Фриланс — це можливість перевірити, у чому ти кращий, у чому — гірший, чи правда те, що думаєш про себе.

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

Источник: dou.ua


Читайте также


«Твої навички нікому не потрібні, якщо не можеш їх продати». Розробник - про особливості роботи на фрилансі

Разработка dou.ua 10 августа 2020 г. 10:00
Сергій Дименко — PHP і Python-розробник, який вже чотири роки працює суто на фрилансі. Каже, що сьогодні йому достатньо мати 20 робочих годин на тиждень (проти стандартних 40-43), щоб жити й подорожувати. Про те, чому змінив стабільну офісну роботу...... читать далее

Релиз Proxmox VE 6.3, дистрибутива для организации работы виртуальных серверов

DevOps OpenNET 28 ноября 2020 г. 23:58
Опубликован релиз Proxmox Virtual Environment 6.3, специализированного Linux-дистрибутива на базе Debian GNU/Linux, нацеленного на развертывание и обслуживание виртуальных серверов с использованием LXC и KVM, и способного выступить в роли замены таки...... читать далее

DevOps OpenNET 28 ноября 2020 г. 20:41

Хуан Ромеро Пардинес (Juan Romero Pardines), основатель Void Linux, который в апреле со скандалом покинул проект и изменил лицензию на своё ответвление пакетного менеджера XBPS, отменил прежние ограничения и вернул коду в своём репозитории изначальну...... читать далее

Дизайн UX Planet 28 ноября 2020 г. 20:14

https://vsbytes.com/best-led-tv/Bidirectional scrolling allows a user to scroll both vertically and horizontally when using an interface. We see this technique used in many content-heavy apps and websites. It works best when an interface needs to be...... читать далее

ux-design ux user-experience usability bidirectional

Дизайн UX Planet 28 ноября 2020 г. 18:54

GenX and WhatsApp — A UX Research Case StudyA brief UX research on understanding how the older generation use WhatsApp in their everyday lifeDisclaimer: This research was conducted before 4 Oct 2020. Any updates of the WhatsApp app after this date ar...... читать далее

usability research ux-research user-research ux-design

Разработка techrocks.ru 28 ноября 2020 г. 17:38

С помощью этого руководства я хочу помочь всем новичкам сосредоточиться на важных аспектах разработки и таким образом получить многообещающее начало успешной карьеры. Запись 13 привычек, которые нужно отставить, если хотите стать успешным разработчик...... читать далее

Обучение primary

Разработка python-scripts.com 28 ноября 2020 г. 16:28

Добро пожаловать на второй урок курса о декораторах в Python. В первой... Запись Декораторы: Изменение поведения функции — Часть 2 впервые появилась Python 3.... читать далее

Декораторы

Популярные темы

ux (318) новости (302) design (278) новость (198) web dev (181) javascript (179) devops (176) ux-design (176) ubuntu (175) security (172) python (151) headline (144) seo (126) tutorial (120) ui (113) статьи (106) user-experience (99) testing roundup (85) programming (83) software testing (82) игровые проекты (77) java (76) api5 (76) product-design (75) дизайн (75) дайджесты вакансий от new.hr (73) design-thinking (70) google (68) primary (67) laravel (65) ui-design (64) working in tech (63) прочее (60) технологии (60) windows 10 (59) hardware (54) uncategorized (53) español (51) бизнес (50) мероприятия (50) движки и конструкторы игр (49) css (48) обучение (48) турбо-страницы (47) technology (47) работа (46) web design and applications (45) covid-19 (45) docker (44) android (44) case-study (44) навыки алисы (43) debian (42) publication (41) инструкции (40) cloud (39) angular (39) inspiration (38) machine learning (38) home page stories (38) chrome (38) wp (38) networking (37) ux-research (37) art (37) тестирование (36) kali linux (36) полезное (36) aspnet (36) web (36) vue.js (36) кейсы (35) обзоры (35) events (35) .net (35) arch linux (34) powershell (34) google ads (34) data (34) tutorials (33) навыки (33) wordpress (33) dotnet (32) linux mint (31) kubernetes (31) события (31) api (31) windows (31) marketing (31) apple (31) алиса (31) автоматизация (31) job hunting (30) bash programming (30) интервью с экспертами (30) creativity (29) ios (29) user-research (28) без рубрики (28) разработчики (28)