08.12.2022

Сергій Немчинський: Скільки часу потрібно навчатись на програміста-джуна?

Сергій Немчинський
16 хвилин перегляду
<strong>Сергій Немчинський: Скільки часу потрібно навчатись на програміста-джуна?</strong>

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

 

Скільки потрібно вчитися, щоб стати джуном? Я можу сказати лише якісь приблизні часові рамки, але це вам допоможе зрозуміти, вплутуватися вам у цю авантюру чи ні. Напевно, ви знаєте фразу, що для того, щоб стати майстром у будь-якій справі, потрібно на неї витратити 10 000 годин. Для того щоб стати джуном вам не потрібно 10 000 годин, а скільки саме – спробуємо розібратись.

 

Рівні Junior

 

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

 

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

 

“Strong junior без досвіду” – це наші випускники. Вони знають, як робити справжню роботу, але за фактом ще її жодного разу не робили.

 

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

 

3 етапи у навчанні програмування до рівня джуна

 

ЕТАП 1. Вибір напряму. Я раджу, перш ніж занурюватися в якийсь конкретний напрямок, спробувати ще пару інших. Якщо ви побачите, що там зовсім нічого не йде – це не ваше. Але найчастіше буває, що цікаво й одне, й інше. При цьому ви вже можете обирати осмислено. Я раджу вибирати з таких варіантів: щось із бекенда (Java, C#, Python, Php), щось із фронтенду (JavaScript), можна спробувати щось нижче за рівнем (СС++ або rust). Якщо спробуєте мову і точно зрозумієте, що не ваше – кидайте. Якщо ну дуже сподобається – можна інше і не дивитися.

 

ЕТАП 2. Навчання самостійно чи курсах. Тобто, спочатку ви вибрали напрям, потім починаєте його вчити.

 

ЕТАП 3. Навчання на реальному завданні. Або ви влаштовуєтеся на роботу/стаєте фрілансером або навчаєтесь у нас на проєкті. Тобто, щоб привести вас до рівня справжнього джуна, вам потрібне справжнє завдання (зі справжнім замовником, термінами, естімейтами, оточенням тощо).

 

Скільки ви вчитиметеся на реальному проєкті, щоб стати strong junior – дуже сильно залежить від вас і вашої роботи.

 

Скільки часу потрібно на навчання?

 

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

  • Якщо є бекграунд з ІТ

 

Якщо ви з ІТ сфери і були QA, DevOps, Data Scientist або з будь-якої іншої спеціальності, наближеної до програмування, навчання займе у вас мінімум часу. Все, що буде потрібно – вивчити синтаксис відповідної мови; вивчити code style мови (це теж досить банальні речі); ознайомитися з фреймворками та бібліотеками мови. Ці фахівці і так знатимуть алгоритмізацію (перетворення завдання на алгоритм). У цьому випадку людині знадобиться в середньому 6 місяців, іноді менше.

 

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

  • Якщо бекграунду немає

 

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

 

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

 

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

 

Я рекомендую витрачати щоразу не менше 2-3 годин. Можливо, у вас не виходитиме приділяти навчанню кожен день, але важливо, щоб це було не рідше 2-3 разів на тиждень, інакше, знову ж таки, ви все забудете. В ідеалі, звичайно, щодня. У будь-якому випадку на навчання у вас піде щонайменше півроку. Як на мене, реальні терміни – від 9 до 15 місяців. Відчутну кількість часу (від 3 до 6 місяців) ви просто освоюватимете, що це взагалі за професія, як до неї підходити, як робити алгоритмізацію. З іншого боку – люди різні, деяким це все може легко даватися навіть без будь-якого бекграунду. Але навіть у цьому випадку не варто розраховувати менш як на 6 місяців навчання.

 

Завжди ваш Сергій Немчинський.