Із чого розпочати шлях до кар’єри програміста

Ваша дитина цікавиться комп’ютерними науками і мріє стати програмістом? Хочете допомогти їй розвиватися в цьому напрямку і шукаєте слушних порад? Троє молодих та успішних IT-спеціалістів розповіли нам, із чого вони починали.

Андрій Ткачук, 24 роки

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

У школі я поглиблено вивчав точні науки. Це було хорошим стартом, але не думаю, що це обов’язково для всіх. Працюю в дослідницькій сфері, й отримані в університеті навички програмування дуже допомагають. Навчався в КПІ ім. Ігоря Сікорського за спеціальністю «Програмна інженерія». Трошки допомагає математика, яка була на перших курсах.

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

Для старту в ІТ є робоча схема, перевірена мною. Раджу безкоштовну навчальну платформу — Prometheus. Там є курси з програмування вхідного рівня. Вони підійдуть для учнів середньої і старшої школи. Паралельно варто докладати значних зусиль для вивчення англійської мови. Щоб згодом перейти на іноземні ресурси із серйознішим рівнем. Наприклад Udacity, Coursera, edX. Усі ці курси — безкоштовні. А от платні не раджу, вони зазвичай гірші за якістю навчання. Уся потрібна інформація є у вільному доступі в інтернеті.

Після кількох таких курсів дуже росте рівень англійської мови і технічних знань. У такій синергії вони дають хороший результат.

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

Якщо виходить гарно розв’язувати логічні задачі, раджу спробувати олімпіадне програмування. Це не так складно, як здається. Наприклад на сайтах HackerRank або topcoder є задачі з елементами реального програмування. Дуже багато олімпіадних програмістів, яких я знаю, зараз працюють у Штатах або Канаді.

Мені подобається мій вид діяльності тим, що навички, якими я володію зараз, поєднуються, і я розумію, що це гарне застосування мого потенціалу. Моя спеціалізація — штучний інтелект — це нова електрика (new electricity). Він реформує інші сфери і створює щось нове. Прихід штучного інтелекту — це третя індустріальна революція після електроенергії та комп’ютерів. І тому класно, коли знаєш технологію і можеш за допомогою неї щось значуще робити. Я відчуваю себе людиною, яка є дотичною до тих, хто дійсно творить майбутнє. На певному рівні я рухаю прогрес.

Олександр Юрчук, 24 роки

Embedded Developer, Network Engineer, розробник програмного забезпечення для мережевих пристроїв.

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

На роботі мені часто доводиться застосовувати університетські знання, особливо з курсу «Комп’ютерні мережі». Навчався в КНУ ім. Тараса Шевченка за спеціальністю «Програмна інженерія». Тим не менш, було багато дисциплін, які дуже застаріли або виявилися непрактичними. А фізико-математичний ліцей дав фундамент розуміння точних наук. Коли любиш свою справу, вчитися самостійно дуже легко. Отримавши мінімальні базові знання, мозок сам почне чимось цікавитися. А далі просто гуглиш це. Так я писав свої перші ігри і програми автоматизації роботи з комп’ютером.

Потім уже, коли виникає потреба в глибших знаннях, знаходиш книжки, статті. Стартовою точкою для пошуку інформації може бути Вікіпедія. Для мене хорошим способом розвитку навиків є проходження тестів. З мов програмування є на Quizful. Таким чином просто визначаєш, яких знань бракує.

Звісно, найефективнішим навчання було вже на роботі. Там усі задачі є цілком реальними. Взагалі є така проста й ефективна методика у програмістів — ABC — аlways be coding, тобто кодуй невпинно. Якщо її дотримуватися, мозок сам адаптується під умови і питання «що вчити?» і «де це взяти?» взагалі не виникають.

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

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

Ще одна порада — перевіряти все на практиці, більше працювати з чужим кодом, відчути все власними руками. Коли програмуєш щось сам, будь-яку технологію значно краще розумієш, ніж за теоретичними відомостями про неї. Ну і, звісно ж, якомога раніше почати працювати. Фріланс, стажування чи досвід роботи у відкритих проектах (open-source) — практика дуже швидко дасть розуміння того, навіщо це все, а також допоможе визначитися з напрямком розвитку.

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

А починати найкраще з мови Python. На мою думку, вона є найпростішою для вивчення, бо дає змогу мінімальними зусиллями вирішувати досить широкий спектр задач і не відволікає новачка на тонкощі. Після цього можна вивчити JavaScript, SQL, Java, Shell(bash), C. Також варто знайомитися з різними операційними системами: Windows, Linux, macOS.

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

Олександра Смілянська, 23 роки

Project manager, координатор проекту з обробки медичних даних. До цього 4 роки займалася розробкою на Java.

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

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

Вищу освіту я здобувала за спеціальністю «Програмна інженерія» в КНУ ім. Тараса Шевченка. Університетська програма не повністю покривала потреби того, що мені потрібно. Але дала загальні поняття. Від них я відштовхувалась і далі розвивалася самостійно.

Читала книжки, які є так званими бібліями у сфері програмування. Наприклад, Introduction to Algorithms, The Pragmatic Programmer (D.Thomas & A.Gant), Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four), Peopleware: Productive Projects and Teams (T. Demarko).

Їх насправді може читати кожен, незалежно від спеціалізації. Також є хороша книга Joel on Software. Там дуже загальні теми. Я раджу вибірку: яку мову програмування слід вивчати першою; що необхідно знати про UTF-8; навіщо програмісту розуміти алгоритми і структури даних.

Ще я собі завела Twitter для того, щоб слідкувати за технічними новинами. Підписалась на опініон лідерів в ІТ, вони часто репостять статті різних сайтів. Наприклад, Evgeny Borisov, Andrii Rodionov, Jarek Ratajski. Тобто це не блог однієї людини, а інформація з різних джерел — за інтересами можна щось для себе вибирати.

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

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

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

Поділитися цією статтею