Інструкція для тих, хто хоче стати програмістом з нуля

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

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

З чого почати

Є кілька варіантів розвитку подій, в результаті яких людина стає програмістом. Перший - батьки-програмісти, які всьому навчили своїх дітей. Таким дітям навіть не потрібно йти в університет. Другий варіант - модна професія програміста. Після школи потрібно було вибрати, куди піти вчитися, і вибрали модний напрямок IT, начебто сподобалося. І останній варіант - хобі, яке переросло в роботу.

Якщо з вами нічого з перерахованого вище не сталося, значить, у вас є вибір з чотирьох варіантів:

  • Самоосвіта. Цей варіант можна використовувати як самостійно, так і в парі з іншими методами. В інтернеті повно сайтів. книг і програм. які допомагають вивчати різні мови програмування і технології. Але це найважчий шлях для початківців.
  • Університет. Якщо ви закінчуєте школу і хочете бути програмістом, тоді йдіть в університет. Якщо не за знаннями, тоді за скоринкою. Вона може послужити бонусом при влаштуванні на роботу. Хоча і якісь знання ви теж отримаєте. Але не забувайте займатися і самонавчанням. До вибору вузу варто підійти дуже відповідально. Уважно вивчіть програми навчання і вибирайте найкращі технічні вузи.
  • Ментор. Буде дуже непогано, якщо ви знайдете людину, яка погодиться допомогти вам і направить вас в правильному напрямку. Він підкаже відповідні книги і ресурси, перевірить ваш код, дасть корисні поради. До речі, ми вже писали про корисному ресурсі. де ви зможете знайти ментора. Наставника можна шукати серед знайомих програмістів, на IT-тусовках і конференціях, на онлайн-форумах і так далі.
  • Спеціалізовані практичні курси. Спробуйте пошукати в своєму місті курси, де вас навчать якомусь мові програмування або технології. Я був приємно здивований кількістю таких курсів в Києві, в тому числі безкоштовних і з подальшим працевлаштуванням.

Яку мову, технологію і напрямок вибрати

Коли ви станете програмістом, через рік-другий будете вільні вибирати будь-яку мову, який вам подобається. Але при виборі першої мови програмування новачок повинен враховувати наступні критерії:

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

Як отримати початковий досвід

Без досвіду ви не отримаєте роботу. Без роботи ви не отримаєте досвід. Замкнуте коло реальному житті. Але нічого страшного, ми з нього вийдемо.

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

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

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

Ще одним непоганим варіантом для отримання реального досвіду є open source. Таким проектам завжди потрібні нові люди, нехай навіть і новачки. Ви можете пошукати в проекті баги або подивитися в баг-трекері і запропонувати методи їх вирішення. Знайти такі проекти легко на GitHub або інших сервісах для хостингу коду. Не соромтеся задавати питання, які там.

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

Останній спосіб - власні проекти, різні хакатони або робота в коворкінг. Свої проекти складно починати самому, краще пошукати знайомих або друзів.

Чому варто вибрати Python

Давайте трохи докладніше поговоримо про вибір першої мови програмування. Перша мова має бути простим і популярним на ринку. Такою мовою є Python. Я дуже раджу вибрати саме його в якості першої мови програмування.

Код програми на Python Новомосковскбелен. Вам навіть не потрібно бути програмістом, щоб в загальних рисах зрозуміти, що відбувається в програмі. Через нескладного синтаксису Python вам знадобиться менше часу для написання програми, ніж, наприклад, на Java. Величезна база бібліотек, яка заощадить вам купу сил, нервів і часу. Python є високорівневим мовою. А значить, вам не потрібно особливо думати про осередки пам'яті і про те, що там розмістити. Python - це мова широкого призначення. І він такий простий, що навіть діти можуть його вивчити.

Справедливості заради варто згадати і про інших мовах програмування. Java може стати непоганим вибором для новачка. Ця мова популярніша, ніж Python, але і трохи складніше. Зате інструменти для розробки набагато краще опрацьовані. Варто лише порівняти Eclipse і IDLE. Після Java вам буде простіше перейти до роботи з низькорівневими мовами програмування.

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

Чи важливий англійську мову

Що потрібно знати, крім мови програмування

Всім потрібно вивчити алгоритми. Спробуйте пройти курс на Coursera або знайти підходящу для себе книгу по алгоритмам. Крім цього, потрібно знати одну з баз даних, патерни програмування, структури даних. Варто також познайомитися з репозиторіями коду. Хоча б з одним. Обов'язкове знання систем версионного контролю. Вибирайте Git, він найпопулярніший. Вам потрібно знати інструменти, з якими ви працюєте, операційну систему і середовище розробки. І головний навик програміста - вміти гуглити. Без цього ви не проживете.

останні кроки

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

Відносно IDLE - багато підручників радять використовувати його, але хлопці з JetBrains пропонують відмінну IDE - PyCharm Educational Edition, приємний інтерфейс, ненав'язливо привчає початківця кодера до середах начебто VisualStudio. Успіхів всім, хто вивчає Python, непоганий початок для вивчення програмування і не треба слухати людей, які намагаються пересадити на true-C і інші мови. Мова значення не має, це всього лише інструмент. Але що мені подобається в Python - завдяки синтаксису багато вчителів на популярних Coursera і edX встигають у своєму курсі присвячувати більше часу алгоритмам, захоплюючим завданням і практичного застосування, що дозволяє не втрачати інтересу до програмування через складність освоєння синтаксису. Від себе хочу додати курс Programming for Everybody на Coursera, курс веде харизматичний Charles Severance, який в легкій формі познайомить не тільки з Python, але і з основними паттернами програмування. Завдяки йому я свого часу нарешті зміг освоїти такі базові поняття, як "цикл", "функції", "масив даних", і згодом, стикаючись з ними, вже міг згадати практичний приклад. Що найкраще допомагає навчанню? Самостійний пошук завдань, які можна спростити за допомогою програмування. Саме це налаштовує на те, щоб бути програмістом - професіоналом, який знаходить алгоритм вирішення цієї задачі, в іншому випадку ухил піде в сторону кодера - теж важливого навику, але не настільки затребуваним, як програміст, який дає напрямок кодеру, а той знаходить відповідний під алгоритм код (поправте, будь ласка, якщо помиляюся). Особистий досвід - написав консольную програму для одного, який готувався до іспиту з англійської, і допомогла йому самостійно займатися, вибираючи випадкове питання. Поки думав, як вирішити для нього це завдання - все, що подавалося окремими шматочками поєдналося в одне і допомогло застосувати на практиці майже весь теоретичний матеріал. Сподіваюся, що навчаються надихне цей метод, і може, ви допоможете друзям автоматизувати їх працю;) Хто може підказати хороший, розжовані матеріал по алгоритмам на Python? Буду вдячний :)

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

Я все думаю, звідки в світі стільки говнокодеров. А ось виявляється звідки, один ідіот написав, інші підхопили. Чіткий код в пітона. А в рейках або 1С він мабуть взагалі не Новомосковскемий. Поради повинні приблизно так звучати: 1. Перше з чого потрібно почати, це ознайомлення з областю. Подивитися вакансії, подивитися замовлення, подивитися існуючі технології і які завдання при їх допомоги можна вирішувати. Які плюси і мінуси мають і т.д. Зрозуміти, що є мови різних рівнів, є різні фреймворки і т.д. 2. Друге, це вивчення базових алгоритмів, логіки, азів вищої математики, що б в голові все лежало по поличках. 3. Вивчити концепції структурного програмування, почитати як правильно, як неправильно і чому воно так. 4. Вибрати довільну технологію, хоч паскаль і реалізувати базові логічні алгоритми на ній. 5. Придумати собі кілька завдань, які вам особисто хотілося б зробити або ті, які допоможуть вам в житті і почати їх реалізовувати в порядку зростання складності. 6. Запам'ятати раз і на завжди, що мова програмування не важливий! Знаючи алгоритми і основи ви зможете освоїти будь-яку мову за допомогою Хелп, форумів і т.д. Фактично, вам потрібно вивчити тільки синтаксис. 7. Рухатися від високорівневих до низькорівневих мов. Наприклад, вирішили ви зробити какой-нить простенький веб сервіс. Берете Ruby on Rails (фреймворк на Ruby) і робите. Коли звикнете в рамках фреймворка можна переходити до самого Ruby. Або у випадку з Phyton ланцюжок виглядає приблизно так: Django - Phyton. У випадку з Java. Play - Java. Іншими словами, до тих пір поки вам вистачає можливостей фреймворка далі можна не лізти 7. Почати пошук проектів, при цьому не переоцінювати свої сили. Або відразу говорити, що ви початківець, але готові зробити не дуже дорого. За одне навчитеся. Ну і далі за списком освоювати нові технології.

Мені здається, що багато хто просто не розуміють до кінця проблеми початківців програмістів. Вони не думають над питаннями типу "У мене є майже впорядкований масив і чим же мені його впорядкувати - QSort або BubleSort" або "Повинна бути можливість призначити обробник моєї кастомной кнопці. Який патерн з банди чотирьох тут краще підійде?". Більшості початківців програмістів складно зрозуміти де саме ставити крапку з комою, чому x = x + 3 - це нормальний код і т.п. Мінуси, як і плюси можна знайти у будь-якого сучасного мови. JS - дуже цікавий мову, зважаючи на свою качиної типізації він багато прощає. Немає чогось в об'єкті - просто додайте це туди. Забули крапку з комою? Не біда, інтерпретатор сам її додасть. Та й програмувати Ви зможете всюди, де є браузер. Однак він може і підкласти свиню в самому несподіваному місці, а його налагодження стає справжнім пеклом. PHP - досить популярна мова з великим community, але в ньому дуже багато внутрішньої нелогічності і суперечливості. На цю тему дуже багато статей в інтернеті. Та й писати Ви зможете тільки серверні скрипти. C ++ - я просто промовчу. Якщо Ви не знаєте що таке "Access violation" або "Memory leak" - живіть і далі в своєму щасливому маленькому світі! Серйозно, не треба. C # - досить модний і популярний. Дуже зручний мову для розробки. Однак, незважаючи на наявність Mono, я б все таки відніс його до мов, заточеним під Windows. Java - дуже популярна мова. Величезне співтовариство, безліч компонент. Однак його середовища розробки все-таки програють Visual Studio. Python - приблизно ті ж зауваження, що і про Java + складності з переходом з 2.7 на 3, через які більшість бібліотек так і залишилося на версії 2.7. Так на чому ж вчитися? Якщо Вас не лякає програмування в основному для Windows - то C #, на мій погляд, самий правильний вибір. Community версія Visual Studio заощадить Вам купу часу - легка налагодження, розумні підказки команд (IntelliScence), величезна кількість компонент і легкий спосіб їх доставки - nuget - в загальному, дійсно того варто.

Хлопці, привіт! Допоможіть початківцю чайнику :) Закінчила універ у напрямку САПР, надходила з наївними думками, що стану програмістом, замість цього вчили з корисного тільки Visual С ++, але в ньому розвиватися не хочу. А все інше дуже мега поверхнево. Після універу працювала тестером в сфері веб. Хочу податися туди, тільки набридло перевіряти чужі помилки, хочу робити свої. HTML, CSS в якихось дуже загальних рисах вивчила завдяки різним ресурсам, зараз самостійно вивчаю JS. Дуже багато інформації, вся з різних ресурсів (а різні люди бачать і відносяться до мов по-різному і підносять відповідно) - виходить каша в голові. Хотілося б отримати якусь цілісну картинку. Загалом, для себе вибрала PHP, JS, HTML + CSS, MySQL. Порадьте, плз, як краще структурувати навчання, з чого починати і як рухатися далі? Хто яким книжкам, ресурси використовував, які варті того, щоб їх вивчити? Який софт юзаєте при роботі і чим керувалися при виборі? Завчасно дякую за відповідь! P.S. Якщо якісь питання звучать безглуздо і смішно, не судіть строго: чайник - є чайник :)

Володимир, я енергетик за освітою! Програмування хобі. І вже 20 років я працюю в ІТ галузі (мені 40) з моменту як повернувся з армії, починав навіть без ІТ освіти, ну і отримав я його так би мовити між делом.В даний момент керівник відділу внутрішньої автоматизації в ІТ холдингу в одному з найбільшому в Москві. Тобто я обслуговую не продавці, ІТшніков. А це самі вимогливий клієнт. До чого я це, ну по-перше, це самоосвіта призвело до таких висот, і до того що університет нічого не дасть, програма університетів запізнюється років на 5 мінімум. ІТ галузь і програмування нічим не отличаеться від інших спеціальностей. Одиниці до 17 років впевнені ніж вони хочуть займатися в житті. І на ІТ шників йдуть все, особливо надивившись на Джобсів, Цукерберг та іже з ними. Звідси очевидна відповідь, займатися потрібно тим до чого душа лежить. А якщо (згідно статті) людина продалжал працювати незрозуміло де, і сам не став програмістом, то йому нічого не допоможе. Я не кажу про винятки 1 на кілька мільйонів, у кого алгоритмічний склад розуму був без діла, і людина просто не знав що це у нього в голові і як це застосує.

Схожі статті