Програмування — це не просто професія, це спосіб життя, який вимагає часу, завзяття та бажання вчитися. Ця стаття є розповіддю про мій шлях: як я став програмістом, через які труднощі пройшов і що допомогло мені досягти успіху. Якщо ви тільки думаєте про програмування, тут ви знайдете відповіді на запитання: навіщо вчитися програмування, як почати і для кого це підходить. Почнемо з найважливішого питання: навіщо вчитися програмування? Відповідей тут багато, але основні з них звучать так: це престижна та високооплачувана професія, яка дає свободу. Ви можете працювати віддалено, втілювати свої ідеї в реальність, а також чути від оточуючих захоплене: "Ого, ти програміст!" Коли я був підлітком, не міг уявити, що програмування стане моєю професією. У моїй сім'ї всі так чи інакше були пов'язані з математикою: мати, тітка, брат. Мені з 10 років уже говорили: «Ти у нас підеш вчитися на програміста». Але я не розумів «Що це?»; "Як це?"; «Чому Я.», веди у моїй сім'ї ніхто так і не став працювати у цій сфері. Тоді я думав: "Математики - це розумні діди в окулярах в університетах, програмісти - щось про волохатих типів в окулярах". Тепер з позиції досвіду я можу сказати: програмування — це можливість. Це шанс створювати, заробляти, працювати з будь-якої точки світу та вигадувати свої проекти. Ну і не менш важливе – спілкуватися з успішними людьми, і не лише зі світу IT. Протягом багатьох років я часто чую такі питання: «Чи важко стати програмістом?», «Де цьому можна навчитися?», «А ти можеш мене навчити?».Ці запитання завжди викликали в мене посмішку. 😊 Програмування - це не та професія, де вам один раз показали на практиці або дали почитати методичку, після чого ви готові до роботи. Все набагато складніше. Це довгий процес, що вимагає уваги до безлічі деталей. Технології постійно розвиваються, і щоб залишатися затребуваним, потрібно регулярно вчитися новому, бути у тренді та цінуватись на ринку праці. Але якщо ви налаштовані серйозно, ось кілька моїх порад: Якщо ви успішно впораєтеся з цими кроками та не здаєтеся, у вас є всі шанси продовжити навчання та згодом стати Junior Developer. Успіхів на цьому шляху! 🚀 Мій перший крок у програмуванні стався на уроках інформатики у школі. Ми вивчали мову Basic. Це був далекий від звичного інтерфейсу чорний екран, куди потрібно було вводити команди. Я гадки не мав, що відбувається. Вчитель перевіряв завдання, однокласники нічого не розуміли. Тоді я не усвідомлював, що ці дивні рядки коду мій перший досвід програмування. У старших класах мене відправили вчитися до іншого міста, де була одна з найкращих шкіл області з акцентом на математику. Мене прийняли після тестів, і я опинився у новому місці, без родини та друзів. Уроки інформатики тут були ще складнішими. Я провалював контрольні одну за одною, отримуючи тільки двійки. Вчитель підійшов до мене з пропозицією: залишатись на додаткових заняттях.
На додаткових заняттях вчитель пояснив мені базові принципи: програмування це розмова з комп'ютером. Ми задаємо йому команди, використовуємо дані, будуємо в голові послідовність дій. Якою була моя реакція? Я запитав себе - І це все?! Це так просто?! Вступивши до університету, я не думав, що стану експертом, навчання охоплювало надто широке коло тем: десятки мов програмування, різні напрямки. Але факт — це чорт забирай мені було цікаво! Я не спав ночами, читаючи підручники, писав код, намагаючись виконати практичні завдання.Та не просто намагаючись, я мав спортивний інтерес — зробити це якісно і виділитися на тлі решти студентів. Університет дав мені базу та навички самостійного пошуку рішень. Тут хочу відзначити - я ніколи не був відмінником, моєю метою не було отримувати хороші оцінки (У 1 семестрі у мене було 3! двійки з математики). Я просто любив писати код, і це було моїм «драйвером». На 4-му курсі я почав шукати роботу. Перші два місця виявилися провальними: мені давали завдання, сфера розробки мені була абсолютно невідомою, колеги не допомагали. Я пішов, розуміючи, що це не мій шлях. Третя спроба була успішною. На той момент я тільки-но придбав телефон HTC на Android OS. На той момент це було щось – телефони з Touch дисплеями лише почали з'являтися на ринку. Оффтоп — на нього я заробив підробляючи влітку вантажником: Я знайшов вакансію Android-розробника, виконав тестове завдання та отримав схвалення. Так розпочалася моя кар'єра, яка триває вже 12 років. Моя історія — приклад того, як наполегливість і прагнення вчитися допомагають досягти успіху. Головне — любити цей процес, приділяти цьому весь свій час та фокус. Дякую, що дочитали до кінця! 🚀 Створення смарт-годин, розробка програм, написання коду, автоматизація процесів на виробництві — у будь-якій галузі бізнесу сьогодні не обійтися без програміста. При цьому увійти до професії може кожен, хто вміє користуватися комп'ютером хоча б на базовому рівні та готовий навчатися.Розповідаємо, з чого почати, якщо у вас немає досвіду програмування. Існує понад 250 мов програмування, кожна з них вирішує свої завдання. Щоб вибрати, з якої мови розпочати навчання, рекомендуємо спиратися на декілька критеріїв. Популярність мови. Чим популярніша мова, тим більше курсів та навчальних матеріалів по ній ви знайдете у відкритому доступі. Сервіс GitHub опублікував звіт Octoverse, у якому назвав популярні мови у 2022 році. До десятки увійшли: Область застосування. Різні мови застосовують у різних галузях програмування. Наприклад, JavaScript — клієнтська мова, якою, як правило, створюють інтерфейси, тобто всю візуальну частину сайту: кнопки, іконки, форми, плашки. Все, що у сайту «під капотом», наприклад, інтеграцію інтернет-магазину з платіжним шлюзом для оплати замовлення, пишуть серверними мовами — Python, Ruby, PHP, C++, Java, SQL. Для розробки мобільних додатків використовують Swift, Flutter та Kotlin, а для створення ігор – C# та С++. Якщо ви вже уявляєте, в якій галузі програмування хотіли б спробувати себе, вибирайте мову, яка там знадобиться. Кількість вакансій Чим більше пропозицій для фахівців із знанням тієї чи іншої мови, тим більше шансів знайти роботу після навчання. За даними Zarplan, за кількістю вакансій на ринку лідирують SQL, Python, JavaScript, Java, C++. Ще можна звернутися до кар'єрних консультантів чи готових продуктів, які допоможуть вам визначитися. Наприклад, в Яндекс Практикумі є безкоштовний курс профорієнтації «Яку професію в програмуванні вибрати». З нього ви дізнаєтеся, які у цій сфері бувають напрямки та які навички для них потрібні. Є три способи освоїти програмування. Навчання на онлайн-курсах. Базові знання можна отримати на освітніх платформах, як-от Практикум або Stepik. Вони хороші тим, що можна займатися дистанційно з будь-якої точки світу - у вільний від основної роботи або навчання час. Ви можете підібрати зручний для вас розклад та формат занять. Крім того, не доведеться шукати навчальні матеріали самостійно: на курсах дадуть список корисної літератури. Щоб зрозуміти, чи підходить вам таке навчання, спробуйте спочатку пройти один з безкоштовних курсів, які пропонує сервіс. Навчання на офлайн-курсах. Очні курси з програмування можна знайти на базі технічних вузів, наприклад, МДТУ ім.Баумана. Також безкоштовні програми навчання регулярно запускають великі компанії. Як правило, вони навчають людей із можливістю подальшого працевлаштування. Наприклад, в Академії Яндекса є сезонні школи з програмами для розробників-початківців. Навчання безкоштовне, для участі необхідно пройти конкурсний відбір. Крім вивчення теорії, студенти працюють над проектами під керівництвом менторів з Яндекса. Самоосвіта на основі підручників та відеокурсів. Вчитися самостійно можна за книгами, статтями, відеоуроками та документацією до мов. Список безкоштовних ресурсів ви знайдете наприкінці статті. Щоб навчання було ефективним, складіть список необхідних знань та навичок для вивчення. Для роботи програмістом недостатньо вивчити одну мову. Наприклад, фронтенд-розробнику окрім JavaScript потрібно знати HTML-верстку та таблиці стилів CSS. А ще вам у будь-якому випадку знадобиться знання англійської мови. Програма курсу. Вона має бути у відкритому доступі, зрозуміло та доступно розписана за тематичними блоками, з таймінгом – скільки годин займає блок.Якщо ви вже склали дорожню карту, то зможете прикинути, чи вам підходить програма, чи все необхідне там зачіпають. Викладачі. Хороший викладач – працюючий програміст. Тільки такий вчитель зможе дати знання, які застосовуються на практиці. Вивчіть на сайті школи, хто саме веде курс, який має досвід роботи у сфері IT. Орієнтуйтесь на фахівців із провідних IT-компаній. Відгуки. Читайте відгуки про курси школи на тематичних форумах та сайтах, наприклад, на «Хабрі». Якщо дивіться на сайті самої школи, зверніть увагу, чи є посилання на реальні контакти або соцмережі учнів, оскільки відгуки можуть бути недостовірними. Найкраще йти вчитися за перевіреною рекомендацією. Спробуйте знайти знайомих, які вже десь навчалися програмування чи працюють у IT. Портфоліо. Дізнайтеся, чи на курсах буде робота над реальними проектами. Так ви зможете вже під час навчання отримати перший досвід роботи та сформувати портфоліо. Інакше працевлаштуватись буде дуже складно. Умови навчання Перед навчанням уточніть, чи є можливість академічної відпустки, якщо курс триває понад півроку. За цей час можуть виникнути різні обставини: велика завантаженість на основній роботі, лікарняний переїзд. Якщо участь у курсі платна, уточніть, чи повертають гроші за непройдену частину програми: раптом ви почнете вчитися та зрозумієте, що вам це не підходить. Ділимося списком ресурсів, які допоможуть самостійно навчитися програмування. Ютуб-канал Академії Яндекса — канал із навчальними відеозаписами з програмування від експертів Яндекса. Є уроки з мобільної розробки, бекенду, інтерфейсів, Data Science. LearnCode.academy — канал із роликами про веб-розробку.Основний фокус на вивченні JavaScript та суміжних інструментів. "Гоша Дудар" - на каналі можна знайти як загальні уроки з основ розробки, так і навчальні ролики, присвячені різним мовам, наприклад C++, Java. А ще авторка каналу вчить створювати ігри. #SimpleCode — канал про те, як програмувати C++ і C#. ProgrammingKnowledge — канал для програмістів-початківців. Можна знайти багато покрокових посібників з різних мов. Хендбуки Академії Яндекса – інтерактивні онлайн-підручники від експертів Яндекса та партнерів. Крім вивчення теорії на платформі можна вирішувати завдання, стежити за своїм прогресом та обговорювати питання з ком'юніті. Підійдуть як для фахівців-початківців, так і для тих, хто давно в індустрії і хоче освіжити знання з окремих тем. Підручник із JavaScript — докладний гайд з мови JavaScript. Із самого початку і до сучасних концепцій. Medium - платформа, де зібрано багато статей про програмування. Публікуються вони у блогах, які ведуть практикуючі розробники. В основному англійською мовою. «Хабр» — найбільший майданчик про IT та програмування в Рунеті. Можна знайти корисні статті, гайди, добірки навчальних матеріалів. CyberForum - один із найпопулярніших форумів розробників у Рунеті. Можна поставити питання щодо навчання, знайти допомогу у вирішенні складного завдання та просто поспілкуватися з комьюніті. Є розділи для новачків. StackOverflow - російськомовний сайт у форматі "питання - відповідь". Розробники допомагають один одному з різними завданнями. «Хабр Q&A» — майданчик із запитаннями та відповідями від найбільшого ресурсу для IT-фахівців. Програмування це процес створення програм (програмного забезпечення).Для цього програмісти пишуть вихідний код однією з мов програмування. Існує понад 300 мов програмування, але для успішної кар'єри можна вибирати з десяти найпопулярніших. Ще правильніше спочатку визначитися з областю, в якій ви збираєтеся працювати, і тільки потім приступати до вибору мови. Однією з найкращих мов для початківців є Python. Ця популярна мова загального призначення хороша лаконічністю та простотою синтаксису, її активно використовують у IT-компаніях Росії та світу. Іншими популярними мовами вважаються Java та C. Вони складніші, особливо для новачків, але володіння ними забезпечує найкраще розуміння того, що ви робите і що відбувається з вашою програмою. Разом з мовою Pascal мова зазвичай вивчається у вузі на профільних факультетах. Використання інших мов програмування залежить від мети діяльності. Наприклад, як серверні мови популярні php, Java, ruby. З клієнтських мов найперспективніший Java Script. Для розробки складних високонавантажених проектів потрібна C++. Цією ж мовою пишуться ігри. Ще одна перспективна сфера – розробка програм для мобільних пристроїв. Тут застосовують Java, Objective-C, Swift. Будь-який досвідчений програміст знає кілька мов, проте код на роботі він пише лише однією з них. Яку мову програмування вчити прямо зараз: 9 найбільш затребуваних Так. Будь-якому програмісту необхідно знати англійську мову та математику. Вся важлива документація та якісні курси опубліковані англійською. Знання математики потрібно настільки категорично.Але впевнене володіння математикою забезпечує чітке розуміння створюваного коду, усвідомленість кожного кроку і дозволяє вдавати в голову ефективність алгоритмів. Євген Кучерявий, автор блогу онлайн-університету SkillBox, розповів, чим займаються веб-розробники та які мови їм неодмінно потрібно знати. Такий розробник за визначенням стоїть на передньому краї і відповідає за візуальну складову сайту: те, яким його бачить відвідувач. Frontend-розробники стежать за тим, щоб усі графічні елементи справно працювали, контент відображався на всіх пристроях, шрифти не повзли, а картинки не завантажувалися занадто довго. 1. Навчання HTML Насамперед frontend-розробник, що починає, повинен освоїти HTML — мову гіпертекстової розмітки. Це базовий інструмент, який дозволяє винести на сторінку всі основні елементи, будь то фотографії, таблиці чи текст. 2. Навчання CSS Зовні написана на HTML інтернет-сторінка нагадуватиме найпростіший текстовий документ. Щоб "оживити" його, використовується каскадна таблиця стилів або CSS. Вона змінює не структуру сторінки, а її зовнішній вигляд: шрифти, розташування елементів, тіні та кольору. Іншими словами, якщо HTML використовується для опису логічної структури сторінки, мова CSS відповідає за графічні елементи та прописується в окремому файлі. 3. Навчання JavaScript Нарешті, щоб елементи веб-сайту могли переміщатися та реагувати на дії користувача, розробник прописує код JavaScript. Він помітно складніше перших двох, але результат вартий того: від скриптів залежить поява спливаючих вікон або перетягування елементів на сторінці (наприклад, сортування фото в соцмережі).На відміну від CSS, JavaScript вбудовується в структуру HTML, оскільки впливає не на зовнішній вигляд елементів, а на їх поведінку на сторінці. Вчорашня техніка вже завтра: чи можуть застаріти мови програмування Красива оболонка сайту не має сенсу без начинки: відеоролики, гіперпосилання та картинки мають бути пов'язані з сервером, базою даних, іншими інтернет-сайтами. Програмно-апаратну роботу сервісу беруть він backend-разработчики. Вони відповідають за інформаційну безпеку (захист від хакерів) і стежать за навантаженням на сервер (щоб сторінка не «висла» через наплив відвідувачів). 1. Навчання PHP Базовий інструмент backend-розробника – мова програмування PHP. Він потрібний, щоб зв'язати видиму користувачеві сторінку із сервером, де зберігаються будь-які дані. Наприклад, щоб не викладати на веб-сайт по одній фотографії за допомогою HTML, можна запустити скрипт, який автоматично підвантажує туди умовну галерею на сервері. Мова PHP настільки спрощує роботу зі створення сайту, що вивчати його SkillBox рекомендує і frontend-розробникам. 2. Навчання SQL Абревіатура SQL розшифровується як "структурована мова запитів". На відміну від PHP, який потрібний для зв'язку сайту з сервером, мови SQL дозволяють керувати вже самими базами даних. Зараз існує безліч подібних мов, найпоширеніші з яких - це MySQL, MSSQL, PostgreSQL та інші. Розробники «повного циклу» досконало володіють мовами, необхідними як frontend-, так backend-программирования. Вони є універсальними фахівцями, хоча, зрозуміло, глибина їх зануреності в якусь конкретно область веб-розробки поступається обізнаності вузьких фахівців. Якщо є можливість вступити до вузу, то краще обрати один із провідних: МДУ, МІФІ, ВШЕ, СПБГУ, МФТІ, МДТУ ім. Баумана, МАІ, ІТМО і т.д. Йдеться, звісно, про профільні факультети. Випускники цих університетів лідирують у рейтингу порталу Superjob, складеного за критерієм рівня стартових зарплат програмістів. Можна. Початкові навички програмування допоможуть набути таких популярних платформ, як Яндекс.Практикум, Сodecademy, Skillbox, GeekBrains, HTML Academy.Після проходження подібних курсів людині стає легше зрозуміти, у бік якого напрямку рухатися у професійному розвитку. Безкоштовні курси нерідко відкривають і спонсорують великі російські компанії: Mail.Ru Group, "Яндекс", "Лабораторія Касперського", Ощадбанк, Тінькофф банк, "2ГІС", "Роснано", "Сколково" та HeadHunter. Багато провідних світових вузів відкривають курси в онлайн. Наприклад, курси MIT можна знайти на платформі Coursera. Освоєння програмування на 80% передбачає самостійну роботу. Майже всі потрібні матеріали є в інтернеті. Найголовніше: мотивація. Найкраще підходити до вивчення комплексно, наприклад, поєднуючи онлайн-курси, офіційну документацію до мов, лекції, статті, книги. При цьому не слід поширюватися кількома мовами відразу, краще почати з найпростіших. Можна вивчати, граючи: деякі навчальні сайти самі є іграми, наприклад Code Combat і CodinGame. На GitHub можна знайти величезну колекцію безкоштовних книг із програмування. Також доступний корпус електронних книг, що охоплює 24 мови програмування. У спільноті програмістів також багато людей, які готові допомогти наступному поколінню програмістів. Hack.pledge – сайт, який допоможе знайти наставника. Крім того, можна підписатися на тематичні канали в Telegram, наприклад: канал для новачків у Python, спільнота веб- та Java Script-розробників, канал розробників Ruby та Ruby on Rails та інші. У програмуванні актуальний принцип «практика важливіша за теорію». Освоїти великий обсяг інформації з мов відразу не вийде, тому набагато краще присвячувати більше часу відточенню отриманих умінь. Найкраще підходити до вивчення комплексно, наприклад, поєднуючи онлайн-курси, офіційну документацію до мов, лекції, статті, книги. На GitHub можна знайти величезну колекцію безкоштовних книг із програмування. Також доступний корпус електронних книг, що охоплює 24 мови програмування. Це спосіб, що дозволяє систематизувати інформацію з лекцій та самовчителів. Його можна описати такими ступенями: Цей метод здається простим і трохи схожим на процеси, що здійснюються автокодувальником у машинному навчанні. Його суть полягає у засвоєнні уявних образів: в основі – ідея ментальних репрезентацій та імітації. До речі, його можна застосовувати не лише під час навчання програмування. Вважається, що високі інженерні чи дослідницькі посади без вищої освіти недосяжні. Також диплом необхідний для тих фахівців, які захочуть працювати за кордоном. При цьому багато російських HR-фахівців говорять, що при прийомі на роботу дивляться, в основному, не на рядок «освіта» в резюме програміста, а на реальний досвід роботи. Крім того, перед співбесідою чи під час неї претенденту, швидше за все, запропонують виконати тестове завдання. Анна Смирнова, менеджер з працевлаштування на програмі «Веб-розробник» у «Яндекс.Практикумі», радить чітко визначити свої наміри та мету, зважити всі ризики та зрозуміти, скільки у вас є часу на пошук роботи та які зусилля ви готові зробити. Приклад чітко сформульованої мети працевлаштуватися за чотири місяці на позицію молодшого розробника у продуктову компанію з повноцінною командою розробки та закріпленим наставником. Далі слід продумати стратегію пошуку. Стандартний підхід — вивчення вакансій на сайтах пошуку роботи, в LinkedIn і телеграм-каналах. Але є й інший варіант – нетворкінг. А саме, відвідування мітапів, профільних конференцій та курсів, що допоможе вам завести нові знайомства та шукати можливості вже через них. Цей шлях більш тернистий на початку, але дає більший ефект, тому що ви використовуєте «теплі» контакти. Потім потрібно підготувати резюме, портфоліо та супровідні листи. Саме вони справляють перше враження про кандидата. У резюме рекрутер дивиться на амбіції людини: чого вона хоче прийти і як це робить. Анна Смирнова радить зібрати весь досвід, який відноситься до веб-розробки: участь у хакатонах, відвідування мітапів, некомерційні та фріланс-проекти, які навчають курси. Попередню роботу в іншій сфері теж потрібно вказати, але зробити це слід ємно і через точки дотику до нової професії. Ще один важливий пункт – заповнення навичок. Наприклад, на HeadHunter вони працюють як теги, за якими рекрутери шукають кандидатів. Тому краще описати максимальну кількість технологій, які ви вивчали або з якими доводилося працювати, а не лише базові JavaScript, HTML та CSS. Портфоліо випускників курсів схожі один на одного, тому що під час навчання студенти виконують одні й ті самі завдання під наглядом викладачів та наставників. Ви можете довірити роботу над реальним проектом. Приклади самостійних проектів розробника-початківця:Що таке програмування? З чого розпочати? І кому це підходить
Розділ 1. Навіщо вчитися програмування?
Розділ 2. Як розпочати навчання?
Глава 3. Мій перший досвід: програмування, але неусвідомлено
Якось до нас прийшла нова учениця, і вона сама щось робила, стукала по клавіатурі і отримувала оцінку 5 — ми вважали її зубрилою і взагалі дивною :-)Розділ 4. Нова школа – нові виклики
Спочатку я був налаштований скептично, але невдовзі зрозумів, що без допомоги справа не зрушиться.
Після цього уроку мої оцінки не опускалися нижче 4-ки, та й 4 вже була фейлом.Глава 5. Університет: розширення горизонтів
Розділ 6. Перша робота: складний старт
Висновок
Програмування може стати вашими дверима у нове життя. Почніть з малого, знайдіть однодумців, і одного разу ви також зможете сказати: "Привіт, я програміст!".З чого розпочати вивчення програмування з нуля
Як вибрати мову для вивчення
З чого розпочати навчання
На що звертати увагу при виборі курсів
Корисні ресурси для самоосвіти
Що подивитись
Що почитати
Де поспілкуватися
Програмування з нуля: з чого почати та як вивчити
Чи потрібно програмісту знати математику та англійську?
Яку мову програмування вчити робити сайти?
А які ще бувають програмісти?
Куди піти навчатись на програміста?
Чи можна навчитися програмування на онлайн-тренінгах та курсах?
Як освоїти програмування самостійно?
Де знайти самовчитель із програмування?
Що таке метод Франкліна і як він може допомогти у навчанні програмування?
Чи потрібен диплом та досвід роботи після навчання веб-програмування з нуля?
З чого програмісту розпочати пошук роботи?
Як скласти резюме, якщо немає досвіду?
Де брати проекти для портфоліо?