Як стати програмістом

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

Кроки

  1. Запишіться на вступний курс по одній (або по всіх) з наступних дисциплін:
    • Логіка;
    • Дискретна математика;
    • Мова програмування (вивчіть різні парадигми програмування, почавши з паралельного і об'єктно-орієнтованого програмування, а потім переходите до функціонального і логічного. Початківцям краще підходить Ruby/Python/Pascal, а після деякої практики вже можна переходити до C++/C / Java).
    ПОРАДА ФАХІВЦЯ

    Gene Linetsky, MS

    засновник стартапів і головний інженер
    Джин Лінецкі — засновник стартапів і інженер-програміст з області затоки Сан-Франциско. Пропрацював в індустрії технологій більше 30 років. В даний час є головним інженером в Poynt, технологічній компанії, що виробляє платіжні смарт-термінали для бізнесу.
    Gene Linetsky, MS
    засновник стартапів і головний інженер

    Щоб навчитися програмувати, необов'язково отримувати спеціальну освіту. у той час, як курси навчання навичкам програмування можуть бути корисні, Джин Лінецкі — засновник стартапів і інженер-програміст — каже: "допомагає освіту або більше шкодить? Спірне питання. Як би там не було, важливо ставитися до самого процесу програмування як до навчання, адже під час нього ми і вчимося на власних помилках».

  2. Вивчіть базові концепції, включаючи таблиці, запити та процедури. можна придивитися до будь-якого з наступних продуктів:
    • MS Access;
    • DB V;
    • Fox Pro;
    • Paradox;
    • MySQL також підійде, оскільки це безкоштовна поширена система, і бази даних пов'язані з SQL-запитами.
  3. Вирішіть, яким програмуванням ви хочете займатися. є кілька типів програмування:
    • веб-програмування ;
    • Програмування додатків для комп'ютерів:
      • Програмування операційних систем (фахівець займається розробкою однієї операційної системи або набору систем);
      • Програмування, не прив'язане до конкретної платформи.
    • Програмування прикладних розподілених систем;
    • Програмування бібліотек, платформ, фреймворків, ядер;
    • Системне програмування:
      • Програмування ядер;
      • Програмування драйверів;
      • Програмування компіляторів.
    • наукове програмування .
  4. Вивчіть технології та мови програмування, пов'язані з тією сферою, яка Вам подобається. у наступних розділах цієї статті піде мова про конкретні завдання в різних сферах програмування.

Метод1З 6:
Веб-програмування

  1. Знайте, що включає в себе веб-програмування. Веб-додатки-це компоненти програмного забезпечення, які надбудовуються над архітектурою Інтернету. Це означає, що доступ до додатків здійснюється за допомогою веб-браузера (наприклад, Firefox або Internet Explorer). Ця надбудова необов'язково вимагає активного з'єднання з Інтернетом. Це лише означає, що веб-додатки будуються на підставі стандартних веб-технологій, включаючи наступні:
  2. ПерегляньтеРізні сайти, щоб зрозуміти, як вони побудовані. (клацніть правою кнопкою миші на будь-якій області, потім "переглянути джерело" або натисніть F12.) Зверніть увагу на різноманітність інформації та оформлення і не женіться за кількістю. Слід відвідати хоча б по одному з кожного виду сайтів:
    • Корпоративний сайт( сайти торгових корпорацій, некомерційних, державних організацій);
    • Сайти, що відповідають за індексацію в мережі (пошукові сайти, сайти з пошуком за мета-даними, особливі пошукові системи, директорії);
    • Сайти для інтелектуального аналізу даних;
    • Особисті сайти;
    • Інформаційні та енциклопедичні сайти (Вікі-сайти, списки даних, технічної інформації, керівництва користувача із зазначенням директорій, блоги та щоденники, новини та сайти новинних агентств, Жовті сторінки і так далі);
    • Соціальні сайти (соціальні мережі, сайти для створення закладок і заміток);
    • Колаборативні сайти (до цієї категорії відносяться всі сторінки, згадані вище, включаючи Вікі-сайти і блоги).
  3. Ознайомтеся хоча б з одним методом або технікоюМозкового штурму і додатком, яке було створено на основі цього методу. наприклад, мозковий штурм діаграм і MS Visio.
  4. Дізнайтеся, за якою схемою будуються веб-сайти. сюди відноситься створення особливих веб-діаграм, карт сайту і навігації.
  5. Запишіться на експрес-курс графічного дизайну. постарайтеся навчитися користуватися хоча б однією програмою для створення і обробки зображень (це необов'язкова вимога, проте ці навички вам будуть корисні).
  6. Ознайомтеся з основами інтернет-інфраструктури. Вам потрібно буде мати хоча б базові знання про:
    • Основних протоколах веб-сервісів (HTTP, FTP, SMTP і POP3 або IMAP4);
    • Програмах для веб-серверів (бажано для платформи, з якою ви будете працювати найчастіше);
    • Веб-браузерах;
    • Серверах електронної пошти та клієнтському програмному забезпеченні.
  7. Вивчіть основи HTML і CSS. для цих цілей можна використовувати програмний пакет «What You See Is What You Get (WYSIWYG)».
  8. Вивчіть XML і технології, пов'язані з XML (наприклад XSL і XPath). робити це не обов'язково, однак ці знання будуть корисні.
  9. Почніть створювати прості статичні сайти і робіть це до тих пір, поки не освоїте основиHTML .
  10. Вивчіть клієнтську скриптову мову програмування. найчастіше вивчають JavaScript. Можна також зайнятися VBScript , однак ця мова несумісна з більшістю браузерів.
  11. Займіться обраним вами клієнтським скриптовим мовою програмування. постарайтеся досягти свого максимуму за допомогою однієї цієї мови. Переходьте до наступного кроку лише тоді, коли будете добре орієнтуватися хоча б одній мові цього типу.
  12. Освойте хоча б один серверний мову програмування. якщо вирішите працювати лише з одним типом програмного забезпечення сервера, вивчіть хоча б одну з мов програмування, яка використовується для написання цього програмного забезпечення. Якщо будете готові до більшого, вивчіть як мінімум по одній мові програмування на кожен тип програмного забезпечення сервера.
  13. Вивчивши мову програмування серверної частини, створіть тестовий проект.
  14. Створіть свій особистий сайтІ почніть експериментувати з ним.

Метод2З 6:
Програмування додатків для стаціонарного комп'ютера

  1. Дізнайтеся, чим вам доведеться займатися. як правило, програмісти пишуть коди для додатків, які використовуються в бізнесі, тому вам слід з'ясувати, як працює бізнес, як він організований і як побудована його фінансова система, з тим щоб заощадити час .
  2. Вивчіть різні типи архітектури комп'ютерного обладнання. буде корисно вивчити основи побудови цифрових схем і комп'ютерної архітектури . Однак деякі фахівці вважають, що на початковому етапі це не потрібно, тому досить буде прочитати 2-3 статті на цю тему. Ви зможете повернутися до цього, коли освоїте свою першу мову програмування.
  3. ВивчітьМова програмування базового рівня. не соромтеся вивчати те, що вважається дитячим, лише тому, що ви старше. Прикладом такої мови служить Scratch. Такі мови полегшать роботу з вашим першим справжнім мовою програмування. Проте, цей крок не можна вважати обов'язковим. Крім того, зайнятися цим можна і до попереднього кроку.
  4. Запишись на вступний курс заПроцедурним мовам програмування . яку б мову ви не вибрали пізніше, вам потрібні будуть знання процедурного програмування. Крім того, багато фахівців вважають, що для того щоб зрозуміти програмування в цілому, слід почати з цього.
  5. Вивчіть одну з систем просунутого моделювання (наприклад, UML або ORM).
  6. Почніть писати невеликі консольні або консольні програми. можна використовувати вправи з підручників з програмування. Виберіть інструмент для написання програм на тій мові програмування, з яким ви працюєте.
  7. Запишіться на курс з програмування на обраній Вами мові просунутого рівня. ви повинні розуміти наступні концепції, щоб вміти застосовувати їх з відносною легкістю:
    • Введення і виведення інформації клієнтами в програмі;
    • Логічний потік і потік виконання програм на процедурних мовах програмування;
    • Вибір, призначення та порівняння змінних;
    • Створення ключових конструкцій, включаючи if..then..else і select/switch..case ;
    • Закільцьовування конструкцій, включаючи while..do , do..while/until , for..next ;
    • Синтаксис вашої мови програмування для створення і назви процедур і функцій;
    • Типи даних і способи обробки даних;
    • Типи даних, що визначаються користувачем (записи, структури, одиниці), і їх застосування;
    • Якщо ваша мова підтримує функції перевантаження , ви повинні в них розбиратися;
    • Способи аналізу пам'яті в обраній Вами мові (покажчики, звуки і так далі);
    • Якщо ваша мова програмування підтримує перевантаження операторів , ви повинні знати це;
    • Якщо у вашій мові є покажчики на функції, ви повинні розбиратися в них.
  8. Почніть застосовувати отримані знання.
  9. Пройдіть вступний курс як мінімум по одній мові програмування в іншій парадигмі програмування. слід вивчити одну мову в кожній парадигмі, і, як правило, всі хороші програмісти так і чинять, проте вам достатньо почати з одного, попрацювати з ним, потренуватися, а потім перейти до інших, коли у вас вже буде реальний досвід в програмуванні. Придивіться до однієї з наступних сфер:
    • Парадигма логічного програмування;
    • Парадигма функціонального програмування;
    • Об'єктно-орієнтована парадигма.
  10. Спробуйте порівняти дві мови програмування, які ви вже освоїли. оцініть сильні і слабкі сторони кожного з них. Зазвичай роблять це так:
    • Візьміть простий приклад вашої ранньої роботи на першій мові програмування і перепишіть її, використовуючи другу мову.
    • Створіть новий проект і використовуйте там обидві мови. Можливо, деякі речі вам не вдасться зробити на одній з мов-все буде залежати від обраного вами проекту і мов.
    • Зробіть шпаргалки або Порівняйте схожі конструкції в обох мовах і їх відмінності в зведеній таблиці.
    • Знайдіть спосіб повторити конструкції, які є в одній мові, за допомогою іншої мови.
  11. Вивчіть концепціїВізуального програмування за допомогою однієї з вибраних вами мов. практично у всіх мов програмування є версії або бібліотеки, які підтримують візуальне програмування та інші види консольного або консолеподобного програмування. Зробити це можна наступним чином:
    • Пройдіть вступний курс по подієво-керованому програмуванню. В основному візуальне програмування базується на подіях і обробці подій (за допомогою обраної мови програмування).
    • Спробуйте попрацювати з великою кількістю програмного забезпечення для стаціонарних комп'ютерів, щоб зрозуміти, що роблять ці програми. Більшість компаній-розробників пропонують бета-версії додатків, якими можна спробувати користуватися. Слідкуйте за розвитком користувальницького інтерфейсу.
    • Читайте статті або керівництва по роботі з графічним призначеним для користувача інтерфейсом.
  12. Почніть застосовувати свої знання, розробляючи прості програми. спробуйте використовувати отримані знання для вирішення повсякденних проблем. Наприклад, пишіть програми, які будуть масово перейменовувати файли, порівнювати текстові файли візуально, копіювати назви документів в певне місце в окремий файл пам'яті або текстовий файл і так далі. Для початку нехай все буде простим.
  13. Створіть віртуальний дипломний проект. зробіть все до кінця, застосовуючи методи візуального програмування, які ви вже освоїли.
  14. Поглибіть свої знання візуальних схем, бібліотек і програмних пакетів, пройшовши курси для просунутих, приділяючи особливу увагу більш дрібним речам і намагаючись дізнатися якомога більше прийомів роботи з фреймворками з інтернет-джерел.
  15. Пошукайте інші програмні пакети і бібліотеки візуальних елементів для ваших мов програмування і вивчіть їх.
  16. Запишіться на курси графіки (не графічного дизайну). це буде дуже корисно, якщо ви плануєте створювати елементи з красивим призначеним для користувача інтерфейсом.
  17. Станьте розробником ігор (за бажанням). Програмування комп'ютерних ігор вважається програмуванням для стаціонарних комп'ютерів. Якщо ви хочете створювати ігри, вам потрібно буде освоїти основи цього програмування після завершення вищеописаних кроків. Вам обов'язково потрібно буде пройти курс програмування ігор, а друга мова програмування, який вам слід вибрати, повинен бути логічним/функціональним мовою (бажано Prolog або Lisp).

Метод3З 6:
Програмування прикладних розподілених систем

  1. Почніть займатися програмуванням прикладних розподілених систем. це програмування вважається одним з найскладніших і вимагає самих різних знань в сфері комп'ютерів та інформаційних технологій.
  2. Пройдіть експрес-курс поТелефонії і відповідного обладнання. робити це не обов'язково, однак завдяки такому курсу ви будете краще розуміти мережеву топологію.
  3. Ознайомтеся з архітектурою мережевого обладнання та пристроїв, включаючи хаби, світчі та маршрутизатори.
  4. Вивчіть мережеві протоколи і все пов'язане з ними. Вам потрібно буде добре розуміти модель OSI (Open Systems Interconnection — міжнародна програма стандартизації обміну даними між системами різних виробників), Ethernet, IP, TCP, UDP і HTTP. Лише після цього ви зможете почати працювати.
  5. Вивчіть мову XML і навчіть користуватися ним.
  6. Почніть вивчати мову розподіленого програмування. якщо мова йде про програмування під Windows, підійде будь-яку мову, який підтримує Windows Scripting Host. При програмуванні під Linux використовуються Bash і Perl. Рекомендується вивчити JavaScript для роботи з обома платформами з наступних причин:
    • JavaScript підтримується практичними всіма скрипт-хостами всіх операційних систем (Windows Scripting Host підтримує JavaScript за замовчуванням, а у більшості дистрибутивів Linux є пакет для підтримки JavaScript).
    • Вважається, що вивчити його простіше.
    • JavaScript будується на синтаксисі ALGOL, а це дозволить вам познайомитися з багатьма іншими мовами програмування, і вибрати другу мову вам буде простіше ( C , C++ , C, Java і J мають в своїй основі синтаксис ALGOL).
    • Вивчаючи JavaScript, ви знайомитеся з клієнтським скриптовим програмуванням веб-сторінок, а це означає подвійну користь!
  7. Спочатку використовуйте лише процедурне програмування на одній мові. пізніше ви зможете застосовувати більш складні прийоми і парадигми, відповідні вашому скриптовому мови і тому, що він підтримує. Всі скриптові мови використовують процедурне програмування в тій чи іншій мірі.
  8. За допомогою вивченого вами скриптового мови почніть писати скрипти, які будуть змушувати машини спілкуватися. Дізнайтеся, що Вам для цього потрібно. Буде досить простого обміну даними.
  9. Перейдіть на мову програмування для стаціонарних комп'ютерів. бажано вибрати мову з декількома парадигмами-наприклад Python . Вивчіть основи цієї мови. Багато хто вибирає Java з найрізноманітніших причин, проте зараз все більш і більш популярним стає мова C. причини, за якими краще вибирати Java і C, полягають в наступному:
    • Це об'єктно-орієнтовані мови, які звільняють програмістів у великих командах від необхідності думати про тонкощі впровадження, оскільки обидві мови підтримують компоненти (готові об'єднані одиниці коду, які дозволяють виконувати певні завдання і в інших програмах).
    • Вони підтримують подієво-кероване програмування, а також об'єктно-орієнтоване і процедурне програмування в певній мірі.
    • Фреймворк, на основі якого надбудовується мова, є розподіленим за замовчуванням (у випадку Java).
    • Можливість використовувати готові пакети, які відповідають за мережі, тобто пакети для відкритого коду і для вбудованих у фреймворк пакетів. Завдяки цьому програмістам простіше будувати свою роботу на підставі вже існуючого коду.
  10. Приділяйте більше увагиКлючові особливості мови, особливо там, де мова йде про мережі. менше уваги можна приділити інтерфейсу користувача, включаючи такі елементи, як виведення даних, дизайн вікон та інші техніки.
  11. Вивчіть основи архітектури прикладних розподілених систем. це можна зробити самостійно за допомогою книг, інтернет-джерел або на курсах. Що б ви не вибрали, вам буде важливо розуміти основні принципи побудови прикладних розподілених систем.
  12. Вивчіть розробку обслуговуваних компонентів іСервісів на обраній Вами мові.
  13. <

Ще почитати: