Університет, самоосвіта, фріланс: ефективність шляхів розробника.
Отже, ти захотів стати розробником — кваліфікованим фахівцем, майстром своєї справи. Родичі авторитетно кажуть, що потрібно закінчувати виш, друг із запалом розповідає про заробіток на біржах фрілансу по $100 за годину, на очі потрапляє вакансія на посаду програміста, де потрібен студент, в соціальній мережі погляд чіпляється за рекламний банер онлайн-курсів, після яких гарантовано станеш мало не senior-developer`ом, браузер відкритий на блозі академії Binary Studio... Чи знайома тобі, читачу, ця невизначеність? Якщо ти прямо зараз знаходишся в такій ситуації, то, сподіваюся, що тобі буде корисна ця оглядова стаття про різні шляхи становлення розробника, яка базується на моєму суб'єктивному досвіді.
Життя надало мені достатньо перешкод можливостей, щоб мій шлях йшов через практично всі доступні способи отримання знань і навичок. Десь я сам сходив з дистанції та йшов в обхід, десь ставали на шляху труднощі, проти яких я був, на жаль, безсилий. Я далеко не завжди діяв розумно, відповідально, часто не вистачало досвіду, знань, сміливості, наполегливості, щоб оцінити, чи варто продовжувати йти тим чи іншим шляхом, або ж це просто марна трата часу.
Університет
Мій досвід
Ще не так давно вищі навчальні заклади були хіба не єдиним місцем, де наші батьки могли отримати якісну професійну освіту. Для тих, хто хотів стати фахівцем, алгоритм був досить лінійним — закінчити школу на відмінно, отримати червоний диплом, а робота хороша теж знайдеться. У сучасному світі алгоритм став набагато заплутанішим, більш розгалуженим, залежним від багатьох змінних (може, навіть вже варто його відрефакторити?). Університет тепер — не єдине джерело знань, більш того, за такими сферами, як IT, він часто не встигає.
Коли я навчався на першому курсі, мій університет був у рейтингу топ-5 ВНЗ України, тобто, висока ймовірність того, що й багато інших навчальних закладів на той момент не були позбавлені таких недоліків. Закінчивши пару курсів на відмінно, пройшовши виробничу практику, взявши участь в олімпіадах з програмування (цікавий факт: на одній з них я і почув вперше про Binary Studio), я був засмучений недоліками університетської освіти. Родичі наполягали на важливості отримання диплома, але доля вирішила внести свої корективи, і після низки неприємних подій і необхідності подумати про заробіток я безнадійно відстав від програми навчання і наразі/поки що, так і не отримав заповітний диплом.
Вимоги до студента
Головна якість, яка потрібна студенту, щоб стати за допомогою університету кваліфікованим розробником, на мою думку — удача. А якщо серйозно, то дійсно багато залежить від того, якого рівня вищий навчальний заклад, наскільки багато викладачів, які дійсно зацікавлені в своєму предметі і мають реальний досвід застосування своїх знань на практиці. Навички самоорганізації, відповідальність, наполегливість і витривалість обов'язкові для того, щоб паралельно з програмою вишу отримувати актуальні знання, намагатися бути в курсі подій, поєднувати навчання з іншим шляхом оволодіння спеціальністю.
Плюси і мінуси
Відразу про мінуси, з якими я зіткнувся:
- Застарілі програми, які роблять акцент часто навіть не на базові речі, а на нині тупикові гілки у розвитку галузі.
- Викладачі, які не бажають стежити за розвитком їхньої спеціальності. Багато хто просто читає одні й ті самі лекції протягом десятків років, без оновлень і виправлень.
- Торжество бюрократії і непотрібних формальностей.
- Більшість студентів позбавлені мотивації та інтересу. Ніби вибір, на яку спеціальність вступати, робив за них хтось інший.
При всьому цьому не можу нічого не сказати про плюси, які безумовно є у вищої освіти. Ні, я не буду сюди записувати заїжджені фрази: вчить вчитися, вчить фундаменту і основам. Я вважаю це очевидною неправдою, тому що цьому можна навчитися тільки самостійно, а в завдання університету навіть не входить дати базові навички актуального пошуку інформації (офіційна специфікація на сайті компанії неправильна, тобі треба відшукати мою методичку за 1970 рік і повністю її переписати), тайм—менеджменту, конспектування.
Отже, про плюси вищої освіти:
- Вона різнобічна та системна. Намагається дати ґрунтовний підхід до предметів, що вивчаються.
- Іноді у виші є викладачі, які дуже люблять свою справу і багато про неї знають. Знайомство з такою людиною може дуже допомогти у житті.
- Безпосередньо диплом. Деякі роботодавці вважають його обов'язковою вимогою у вакансіях; доказом, якщо не знань, то старанності, дисципліни, витривалості.
Фріланс / віддалена робота
Мій досвід
У той час, як мені довелося задуматися про можливий заробіток, я вирішив, що непоганою ідеєю буде спробувати використовувати для цього те, що я вже вмію за своєю спеціальністю. Один мій добрий друг дуже хвалив фріланс, казав про можливий хороший прибуток , що це просто золота жила при достатній старанності. Я негайно взявся вивчати те, що він мені радив, пропонував допомогу з його замовленнями, шукав сам. Одразу ж стали на шляху відчутні перешкоди — я зрозумів тоді важливість наявності портфоліо, вміння заявити про себе, розуміння (часом абсурдних) вимог замовника, вміння швидко вчитися незнайомим тобі речам.
Тоді мене більше приваблювала розробка додатків для мобільних пристроїв, що дійсно було затребуваним. Але замовлення, доступні початківцям, знайти було нелегко, а переконати замовника, що ти швидший та нахабніший більш кваліфікований, аніж десяток таких самих junior`ів, — ще складніше.
Вимоги до студента
Тут головною вимогою стануть розвинені soft skills — вміння домовитися з клієнтом і зрозуміти його, скласти портфоліо, швидко приймати рішення. Також важливі швидкість роботи і навчання, самоорганізація та самодисципліна. На перших етапах — стане в нагоді терпіння і трохи удачі.
Плюси і мінуси
Очевидні плюси:
- Це досвід роботи, за допомогою якого можна застосувати свої знання і заробити гроші. Більш того, це може стати постійним способом заробітку в майбутньому, якщо не припиняти розвиватися в цьому напрямку.
- Знайомство з актуальним станом IT — стає очевидним, що зараз модно, що затребуване замовниками, а що є вузькою нішею або виходить з моди.
- Можливість створити портфоліо, отримати відповідні знання.
- Для цього не треба нічого, крім комп'ютера — немає жорсткої прив'язки до місця і графіку роботи, місця проживання.
Але і в цього підходу є суттєві недоліки:
- Потрібна сильна самоорганізація. Необхідно знайомитися з новими віяннями в сфері IT, залишатися конкурентоспроможним, контролювати час і сили.
- Гостра необхідність розбиратися в речах, які не стосуються спеціалізації. Це і спілкування з замовником, вивчення фінансових і юридичних тонкощів роботи, розуміння основ дизайну, вміння рекламувати свої здатності, показувати себе з кращого боку.
- Висока ймовірність сильно уповільнити свій розвиток як професіонала. Робота на швидкість, прогалини в базових знаннях, проекти з жахливим кодом, написаним іншими фрілансерами, не дозволять вирости якості навичок.
- Відсутність можливості розвинути навички командної роботи і використовувати відповідні інструменти.
Постійна робота в офісі
Мій досвід
Ще один поворот на шляху мого програмістського розвитку стався завдяки одному вдалому збігу. Я почув про безкоштовні курси, які пропонувалися моїм одногрупникам, тематика яких була не дуже цікава мені, але досить затребувана, в тому числі й на біржах фрілансу. Недовго думаючи, я вирішив відвідати перше заняття, яке полягало у випробувальному тесті. Я успішно склав його, і після цього мені запропонували вакансію web-розробника. Курси ніяк не були пов'язані з web, та й у мене було зовсім мало досвіду в ньому, тому я був украй здивований, але погодився. Стек технологій був досить старим, не використовувалися ніякі допоміжні інструменти (навіть git), хтонічний код легасі проектів старанно зберігав секрети своєї логіки. Але це був реальний досвід розробки в команді, непоганий спосіб опанувати прямо на практиці web-програмування, з яким я був знайомий поверхово.
Вимоги до студента
Основна вимога — відповідальність. Це робота з довгостроковими реальними проектами, що вимагає розвитку здатності приймати рішення, розуміти їх наслідки.
Не надто й часто можна знайти хорошу роботу, яка не потребує досвіду. Тому висока ймовірність того, що перша робота буде явно не роботою мрії, особливо якщо ніякої нормальної можливості для підвищення кваліфікації співробітників компанія не пропонує. Навички будуть розвиватися завдяки роботі з колегами над довгостроковими проектами — це безумовно важливий досвід. Однак такий розвиток буде відбуватися дуже повільно.
Плюси і мінуси
Плюси:
- Стабільний заробіток.
- Реальний досвід командної роботи над довгостроковими проектами.
- Рядок в портфоліо (а добре, якщо не один, а повноцінний опис того над чим працював, які проблеми вирішив, що зміг запропонувати і застосувати).
Це реальна робота, після якої можна сміливо називатися програмістом (нехай і junior`ом). Однак в ній є один значний мінус:
- У більшості випадків перша робота не триватиме довго через те, що буде сповнена недоліків, таких як застарілий стек технологій або відсутність перспектив для розвитку та, відповідно, збільшення зарплати.
Самоосвіта / платні курси
Мій досвід
Між описаними вище періодами у мене були невеликі проміжки часу, коли я мав можливість займатися повноцінною самоосвітою. Хіба не прекрасно, коли у тебе повно часу, який можна повністю присвятити саморозвитку? Я читав книги, пройшов курс Laravel на Udemy, створював репозиторії на гітхабі з усілякою всячиною, що спадала на думку. Однак без реальної практики цінність цих, нехай навіть фундаментальних, знань швидко наближається до нуля. На мій погляд, самоосвіта необхідна розробнику, але тільки обов'язково у поєднанні з реальною практикою.
Вимоги до студента
Витривалість, терпіння, самодисципліна — основи самоосвіти. Очевидно, що жоден, навіть найдорожчий, навіть від найгеніальнішого викладача, курс не зможе помістити в голову знання без мотивації та праці. Дуже важливе також уміння відокремлювати важливі моментів від другорядних, прикладних — від суто академічних.
Плюси і мінуси
Плюси:
- Можливість отримати глибокі фундаментальні знання з теми, що цікавить.
- Тільки самоосвіта по-справжньому вчить вчитися.
- Самостійний вибір джерел знань, тем, що вивчаються, матеріалів для закріплення знань.
Мінуси:
- Відсутність наставника. Дуже складно орієнтуватися в IT без чиєїсь підказки, не змарнувати час на непотрібні курси, книги з неактуальними та непридатними знаннями.
- Без самодисципліни і достатньої мотивації — рівносильно прокрастинації. Самоосвіта лише стане виправданням для своєї совісті: «Я щось роблю, поглянь, як вчуся!»
Binary Studio Academy
Мій досвід
Коли я працював в офісі, один мій колега активно намагався розібратися самостійно і поділитися з іншими якимись невідомими нам стандартами написання коду, кращими практиками, основами unit-тестування та іншими дуже світлими і правильними речами. Одного разу він згадав про Binary Studio Academy, що здалося мені чимось знайомим (див. розділ «Університет»). Через рік я вирішив спробувати. Курси виявилися досить серйозним випробуванням. Щоб пройти їх, треба було вивчити дуже багато, закрити серйозні прогалини в знаннях, встигати здавати завдання до дедлайнів, виправляти десятки зауважень до пулл-реквестів, взаємодіяти з іншими аплікантами. Але я пройшов їх до кінця і зараз маю можливість розповісти в своїй статті і про цей спосіб отримання знань.
Вимоги до студента
Ініціативність, швидкість навчання, мотивація та витривалість — ось базовий набір виживання студента Академії. Що більше розвинені ці якості, то легше буде пройти цей літній інтенсив.
Наявність вільного часу — також важливий фактор, але про це трохи нижче.
Плюси і мінуси
Плюси:
- Актуальні знання. Академія щороку оновлюється — змінюються завдання, тематика лекцій, система оцінювання. Все розвивається максимально гнучко і швидко.
- Досвід розробки проекту в команді максимально наближений до реальних умов.
- Серйозний виклик самому собі, можливість перевірити свої сили та знання.
- Непогане портфоліо — доведеться ознайомитися з різноманітними актуальними інструментами і технологіями, наповнити свій github-профіль кодом, який буде не соромно показати.
Мінуси:
Є один суттєвий мінус, через який навіть хтось не зможе пройти цей курс
- Вимагає вкрай багато сил і часу. В першу чергу, часу.
З цим мінусом допомагає впоратися мотивація, без неї не вийде ніяк. Особливо важко буде суміщати навчання з роботою / навчанням.
Поєднання декількох способів
Чесно кажучи, мені не вдалося поєднувати до кінця навчання в Binary Studio Academy, 8-годинний робочий графік в офісі та роботу над проектом. Я знаю людей, у яких це виходило, це безперечно можливо. Але моїх навичок на це не вистачило, та й в планах все одно було змінити роботу, так що я роздумував не надто довго, заздалегідь підготувавшись до такого випадку.
Я знаю більше людей, яким вдалося пройти Академію водночас з навчанням в університеті — це дозволяє отримати переваги від обох способів, повністю компенсувавши всі недоліки.
Який би ви шлях не обрали, самоосвіта — практично обов'язкове доповнення до будь-якого з них, тому поєднувати з нею не тільки можна, але навіть потрібно.
А ось поєднання роботи та вузу не було для мене ефективним, тому що нічим не компенсується проблема пошуку актуальних знань.
Поєднання декількох шляхів розвитку — не завжди гарна ідея, тому що значно підвищує вимоги до особистих якостей і не завжди покриває всі недоліки обох способів. Але я знаю, що іноді по-іншому просто ніяк не виходить, це треба прийняти, бути готовим до складнощів, а головне — знайти для себе вихід з цього становища в найближчому майбутньому та йти до нього.
Підсумки
Стати розробником можна будь-яким з цих способів, я впевнений, що є шляхи, які я не згадав у статті, просто тому що в мене не було досвіду їх проходження. Удосконалення навичок в сфері IT, що так стрімко розвивається, не може бути скінченним процесом. Для цього я зараз поєдную роботу над проектом в Binary Studio (яка надає відмінні способи підвищення кваліфікації як Academy PRO, OKR) з самоосвітою.
Срібної кулі не існує, а вибір твого шляху розвитку має ґрунтуватися на двох факторах:
- твої особисті якості: швидкість навчання, мотивація, наполегливість, дисципліна, гнучкість мислення і вміння користуватися удачею. Буде чудово, якщо ти зможеш розпізнати, мати хоробрість ризикнути і встигнути скористатися вдалим збігом обставин.
- зовнішні обмеження, які не залежать від тебе: рівень вищих навчальних закладів твого регіону, наявність адекватних вакансій на позицію junior`а, матеріальне становище
Невеличкий бонус
Тексту багато, тому я підготував невеличкий калькулятор талантів (я полюбляю RPG і надихався ось цією системою), щоб підсумувати і візуалізувати відповідь на питання "Це все добре, авторе, але який же мені шлях ти запропонуєш обрати?". Відразу хочу попередити: не варто ставитися до цього скрипту занадто серйозно — в нього не можна в точності вмістити всі роздуми, що написані вище, та й саме життя набагато складніше.
oembed: https://codepen.io/mtseluiko/pen/ZZjdbo
Post scriptum
Ще раз нагадую: вся ця стаття — це лише мій суб'єктивний досвід та аналіз. Я не претендую на істинність, тому запрошую подискутувати і висловити свою думку в коментарях.
Бажаю успіхів у навчанні, незалежно від того, який спосіб ви оберете!