Послання майбутньому програмісту

Отже, ви вирішили стати програмістом.

Можливо вам цікаво створювати щось нове.

Можливо, вас приваблюють великі зарплати.

Можливо, ви просто хочете змінити сферу діяльності.

Не суть.

Важливо ви вирішили стати програмістом.

Що ж тепер робити?

Послання майбутньому програмісту

І тут є кілька підходів.

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

Що тут важливо знати?

  • Необхідно правильно вибрати ВНЗ. Дивіться навчальні програми, рейтинги. Непоганий показник – олімпіадники від університету. Якщо збірні університету хоча б періодично займають місця в десятці на відносно великих олімпіадах із програмування, то кодинг в універі не буде рудиментом (незважаючи на те, що особисто вам олімпіади можуть бути взагалі не цікавими). Ну і загалом здоровий глузд рулює: навряд чи в Братській філії Байкальського державного університету з вас зроблять потужного фулл-стека.
    Приклади добрих вузів: МГУ/СПбГУ (очевидно), Бауманка (Москва), ІТМО (Пітер), НГУ (Новосибірськ). Незважаючи на всю їхню іменитість, у них цілком реально потрапити на бюджет, якщо не мітити на топові кафедри.
  • Чи не універом єдиним. Незважаючи на те, що вас комплексно навчатимуть будь-яким штукам, цього недостатньо. Через бюрократію програма навчання майже завжди відставатиме від сучасних трендів. У кращому разі – на рік-другий. У гіршому – років на 5-10. Різницю доведеться надолужувати вам самим. Ну і очевидне: якщо ви вивчатимете матеріал нарівні з іншими студентами, то кожен з них буде вашим рівноправним конкурентом. Якщо ж ви факультативно вийдете вперед — виглядатимете на ринку набагато краще.
  • Шукайте роботу якомога раніше. Я почав працювати на другому курсі. До закінчення універу я був уже цілком собі middle developer, а не скромний джун без досвіду. Думаю, очевидно, що після завершення вишу заробляти 100к приємніше, ніж 30к. Як цього досягти? По-перше, див. пункти А та Б. По-друге, ходити на мітапи, фестивалі, конференції, ярмарки вакансій. Моніторити ринок і намагатися влаштуватись джуном/стажером на півставки в будь-яку фірму, куди хоча б приблизно підходиш. Не бійтеся платних конференцій: там часто дають дуже приємні знижки студентам.

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

Якщо ж не дотримуватися ... Що ж, скоринку можна отримати і пливучи за течією, списуючи і готуючись до іспиту за ніч. Але самі як думаєте, наскільки конкурентоспроможними ви будете тоді? Зрозуміло, я не говорю, що треба все закривати на п'ятірки. Просто потрібно здобувати знання. Використовуйте здоровий глузд. Вивчайте те, що цікаво та корисно, а на оцінки – пофіг.

Послання майбутньому програмісту

Головне - не те, що у вас намагаються запхати. Головне — те, що цікаво та актуально

-

Далі, другий спосіб: курси навчання програмування. Інтернет прямо кишить пропозиціями зробити з вас джуніора всього за 3 місяці занять. Прям ось із портфоліо, і навіть роботу допоможуть знайти. Усього за 10к на місяць, ага.
Можливо, для когось це і спрацює, але суто ІМХО: це повна херня. Не витрачайте час та гроші. І ось чому:

Людина, далека від IT, не зможе в'їхати в специфіку професії за 3 місяці. Ото взагалі ніяк. Забагато інформації потрібно засвоїти, занадто багато всього зрозуміти, і більше того — набити руку.

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

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

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

Послання майбутньому програмісту

Ліворуч: чого вас навчать. Справа: що від вас вимагатимуть на роботі

-

Третій шлях - Шлях, який обирається більшістю. Самостійне навчання.

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

Ось ви вирішили стати програмістом. З чого почати?

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

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

Відразу ж напишу першу пораду, щоб не забути: навчайте англійську. Англійська потрібна. Без англійської нікуди. Ніяк. Без англійської не можна стати нормальним програмістом. That's it.

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

Приклад roadmap для backend програміста (не для будь-якого, звичайно, це просто один з можливих варіантів):

  1. Основи html/css.
  2. Python. Основи.
  3. Мережеве програмування. Взаємодія python та web.
  4. Фреймворки для розробки. Django, flask. (Ремарка: якраз для розуміння, що це за «django» та «flask» потрібно подивитися вакансії і почитати, що там потрібно)
  5. Поглиблене вивчення python.
  6. Основи Js.

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

Далі: знайдіть матеріали, за якими ви вчитиметеся. Основні можливі варіанти:

  • Онлайн-курси. Не ті курси, що «джун за 3 дні», а які вчать однієї конкретної речі. Найчастіше подібні курси безкоштовні. Приклади сайтів із нормальними курсами: stepik, coursera.
  • Онлайн-підручники. Є безкоштовні, умовно безкоштовні, платні. Де платити, а де ні, розберетеся самі. Приклади: htmlacademy, learn.javascript.ru, книга django.
  • Книги Їх багато, дуже багато. Якщо не можете вибрати три поради: намагайтеся брати нові книги, т.к. інформація дуже швидко старіє; у видавництва O'Reilly досить високий рівень якості та нормальна подача; якщо є можливість, читайте англійською.
  • Мітапи/конференції/лекції. Не так корисно у плані інформаційної насиченості, але вкрай корисно щодо можливості поспілкуватися з колегами по цеху, поставити актуальні питання, завести знайомства. Можливо навіть знайти вакансію.
  • Гугл. Багато хто недооцінює, але вміння просто знаходити відповіді на якісь питання дуже важливе. Не соромтеся гуглити незрозумілі речі. Цим займаються навіть запеклі сеньйори. Вміння швидко знаходити про щось інформацію фактично рівноцінно тому, що ви знаєте.

Окей, із джерелами інформації визначилися. Як із ними працювати?

  1. Читайте/слухайте уважно. Не читайте втомленим. Вникайте в сенс, не проскакуйте моменти, які здаються очевидними. Найчастіше перехід від очевидного до незрозумілого відбувається досить швидко. Не соромтеся повертатися та перечитувати.
  2. Конспектуйте інформацію. По-перше, у своїх конспектах вам легше буде розібратися, коли інформації стане багато. По-друге, так інформація краще засвоюється.
  3. Робіть усі завдання, які вам пропонує джерело. Хоча ні, не так. Робіть ВСІ завдання, які пропонує джерело. Навіть ті, що здаються простими. Особливо ті, що здаються надто складними. Якщо застрягли — просіть допомоги на переповнення стеку, хоча б через google translate. Завдання написані не так, вони потрібні для коректного засвоєння матеріалу.
  4. Вигадуйте завдання самі та робіть їх теж. Практики, в ідеалі, мають бути більше, ніж теорії. Чим щільніше ви закріпите матеріал, тим більша ймовірність, що за місяць ви його не забудете.
  5. Опціонально: у міру прочитання складайте собі квізи. Записуйте в окреме джерело каверзні питання, а через тиждень чи місяць читайте і намагайтеся відповісти. Не виходить: штудуйте заново.

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

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

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

Послання майбутньому програмісту

картинка чесно стирена звідси

І тут потрібно зупинитися на кожному з кроків докладніше:

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

Пік Дурниці: «Ура, ви завершили першу пару курсів! Все виходить!" На цьому етапі ейфорія від перших успіхів затьмарює очі. Здається, що успіх вже близько, незважаючи на те, що ви поки що на початку шляху. І прагнучи цього успіху можна не помітити, як почнеться стрімке падіння в яму. І ім'я цієї ями:

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

Схил Просвітлення: На цьому етапі чітко вимальовуються грані свого знання та свого незнання Незнання більше не лякає, з'являється розуміння, як його подолати. Маневрувати у просторі без рішень стане простіше. Це вже фінальна пряма. Вже усвідомлюючи, чого вам не вистачає як фахівцю, ви доучите та закріпите необхідне і зі спокійною душею вступите на

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

Шляхи програміста.

Удачі вам в цьому!

Література для факультативного читання:
Про становлення програміста та ефект Даннінга-Крюгера: ти до.
Hardcore-способ стати програмістом за 9 місяців (підходить далеко не всім): ти до.
Список проектів, які можна реалізувати самостійно під час навчання: ти до.
Просто трохи додаткової мотивації: ти до.

Джерело: habr.com

Додати коментар або відгук