Перші кроки у програмуванні: поради початківцям

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

Чому я про це пишу? Бо успішно пройшов десятки співбесід, працював в Україні, США, Нідерландах та допоміг багатьом студентам влаштуватися на роботу програмістами. Якщо вам буде цікаво, можу поділитися досвідом роботи та життя за кордоном в наступних статтях.

Image Source

Перевірка знань

Почнемо з бази, щоб переконатися, чи немає у вас прогалин в елементарних речах. Спробуйте розв’язати 150 простих задач на leetcode.com/problemset/algorithms чи на аналогічному сайті. Цього буде достатньо.

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

Наступний етап — об’єктно-орієнтований дизайн. Вміння застосовувати підходи ООП є обов’язковим, без цього не обійтися. Програмісту потрібно знати, причому з власної практики, як розбити програму на модулі, як уникнути хаосу, як рефакторити спагетті-код, як написати зручний API. Чи маєте ви відчуття «правильного» коду? Чи вмієте вести розробку по методології TDD? Якщо так, йдемо далі. Якщо ні, то варто пройтися по шаблонах проектування та прочитати класику GoF. Дуже рекомендую «Clean Code» Роберта Мартіна.

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

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

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

Далі — проекти

Необхідно, щоб на інтерв’ю вам було чим похвалитися перед роботодавцем. Бажано продемонструвати декілька виконаних вами проектів із використанням актуальних/популярних фреймворків. І це повинно виглядати круто, щоб ви змогли вразити інтерв’юера. Авжеж, написання проекту займе певний час — розраховуйте місяці на три. Для цього краще знайти команду таких, як ви, або хоча б одного напарника. Ви будете один одного мотивувати, це важливо.

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

Ментор

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

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

Співбесіда

На цьому етапі треба бути готовим відповідати на рекрутерські/менеджерські питання. Лідером тут є Amazon. Вони самі розробляють багато методик/тестів для перевірки персональних якостей. Просто вбийте в пошук Behavioural Questions та Attitude Questions. Якщо ви почуєте такі питання вперше і спробуєте імпровізувати, шанси на успіх будуть досить низькі. Ментор на цьому етапі вам би теж не завадив. Причому той, що успішно пройшов десятки подібних співбесід.

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

Між іншим, кількість спроб у кандидатів на посаду джуніора сильно обмежена, адже роботодавці на вас іще не «полюють». Тому не варто марнувати жодної зі спроб.

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

Похожие статьи:
Мы уже упоминали в новостях о смартфоне HTC One X9, официальный анонс которого еще предстоит, а теперь более точные сведения о нем...
Вы — преподаватель IT-курсов и боитесь вопросов от аудитории? Выступаете перед публикой, но не знаете, как правильно с ней...
В выпуске: как в Netflix управляют правами доступа по SSH, немного о визуализации метрик, аналитика билдов Travis CI, а также —...
ProductCamp Lviv is user-driven, collaborative unconference for sharing experiences in Product Management Marketing and Execution. The goal is to setup network for the Ukrainian product management community,...
Компания LEXAND представила новую линейку полноразмерных мобильных телефонов, отличающихся, со слов производителя,...
Яндекс.Метрика