Програміст без диплома що може і чого не може дати «домашнє навчання» в it

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







Хтось розбирається в усьому самостійно, благо в інтернеті зустрічається безліч корисної літератури і безкоштовних курсів (такі курси ведуть і викладачі ИТМО - частина з них ми публікували в наших попередніх матеріалах: тут і тут). Інший варіант - піти в університет і отримати диплом в області інформаційних технологій.

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

Жоден процес навчання не дається легко, в тому числі і вивчення мов програмування та інформаційних технологій в цілому. Комп'ютерні науки, як і технології, постійно розвиваються. З огляду на це, розробникам ПО доводиться постійно стежити за останніми оновленнями систем і фреймворків. При цьому в процесі навчання доводиться утримувати в голові безліч нюансів, які потрібно грамотно поєднувати в єдину картину.

Домашнє навчання: до чого треба бути готовим

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

Читати більше книг по темі, ніж студенти-програмісти

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

Активно шукати колег і побратимів для обміну знаннями

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

Самостійно продумувати практичну роботу: і серйозну, і ігрову

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

Новачкам (різного віку) утримати увагу допоможе також самонавчання в ігровому форматі. Добрими представниками свого жанру є CodinGame і Code Combat. в яких гравець управляє персонажами, прописуючи рядки коду з командами. Кілька інших цікавих ресурсів можна знайти за посиланням.

Що може дати навчання в університеті

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

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







Інформація подається більш структуровано

У вузах студентам з перших днів починають давати фундаментальні знання в обраній галузі і «прищеплюють» розуміння структури дисципліни (наприклад, майбутнім програмістам в Університеті ИТМО викладають дисципліну «Парадигми програмування»). Такий підхід практикують у багатьох світових університетах, в тому числі в американському MIT.

Далеко не кожен новачок в програмуванні здатний самостійно вибудувати програму навчання подібним чином - в результаті деякі важливі розділи упускаються через те, що виявляються занадто нудними або (на даному етапі навчання) непридатними на практиці. Чітка і структурована подача матеріалу, в тому числі і не орієнтованого на практику, може здатися недостатньо цікавою, але вона дає «кумулятивний ефект» - фундаментальні знання в комплексі допомагають згодом швидше освоювати нові практичні дисципліни.

Можна швидше налагодити контакт з практикуючими фахівцями

Далі, коли базис засвоєний, зі студентами починають роботу викладачі, запрошені з різних компаній. Вони ведуть практичні заняття, розбираючи проблеми, з якими стикаються в своїй професійній щоденній діяльності. Зокрема, Університет ИТМО співпрацює з такими компаніями як Mail.ru, Яндекс, JetBrains, VisualSVN і іншими. Починаючи з певного етапу навчання, студенти можуть проходити практику в цих компаніях, де виконують реальні «бойові завдання».

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

Доступні складні колективні моделі навчання

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

Прикладом подібного підходу може бути методика вивчення фізики, використовувана Еріком Мазуром. Вона називається «викладання учнями» (Peer Instruction) і передбачає залучення студентів до активної діяльності з вивчення концепцій і теорій з подальшим поясненням їх своїм одноліткам.

Практика і теорія ефективно доповнюють один одного

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

Звичайно, багато в цьому випадку залежить від того, хто веде курс, однак у професіоналів досить переваг - при необхідності, вони можуть змінити частину практичної роботи на прохання студента (щоб той міг реалізувати цікавий саме йому проект), не загубивши важливих деталей. До речі, оцінити можливості такого навчання з викладачем може зараз будь-який бажаючий - прикладом такої орієнтованої на практичну роботу навчальної програми є курс Університету ИТМО «Програмування та розробка веб-додатків», який доступний онлайн.

Звичайно, з розвитком відкритого онлайн-освіти, подібні курси і проекти все частіше стають доступні всім бажаючим. Але поки число MOOC відносно невелике, і вони покривають не всі дисципліни, доступні в вузах, повністю перейти на MOOC-навчання навряд чи вийде - швидше це можливість освіжити якісь знання або придбати нові навички «поверх» наявного фундаментальної освіти.

Що в підсумку

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

Студентам вузів з сильною ІТ-складової простіше: їм доведеться пожертвувати свободою вчитися «коли зручно і де зручно», але натомість вони набувають більше структурованих фундаментальних знань, можуть заручитися підтримкою професіоналів і з університетської лави перейти в штат великої ІТ-компанії.

Є певні завдання, при вирішенні яких університетські знання є досить до речі. «Пару раз за свою кар'єру я стикався з проблемами, які не зміг би дозволити без отриманих в університеті знань, - розповідає програміст Натан Марц (Nathan Marz). - Одна з таких ситуацій - складання алгоритмів для роботи розподілених систем. Мені було потрібно прописати формальний доказ, щоб підтвердити їх працездатність ». Самі алгоритми. про які говорить Натан, лягли в основу системи Storm.

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

При цьому, незважаючи на те, що сучасні уявлення про утворення змінюються, багато роботодавців і фахівці (в тому числі в ІТ-сфері) все ще дивляться на диплом - в тій чи іншій мірі. Наприклад, Марк Цукерберг нещодавно вирішив все-таки отримати ступінь. А в IT-компаніях (зокрема, в Google) простіше потрапити на співбесіду з дипломом про вищу освіту в області комп'ютерних наук. Однак на самому співбесіді все ж доведеться показувати свої знання нарівні з іншими претендентами - тут поблажок не буде.







Схожі статті