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

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

Кроки

  1. 1

    Пройдіть вступний курс з однієї або всім наступних дисциплін:
    • Логіка
    • Дискретна математика

  2. 2

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

  3. 3

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

  4. 4

    Вивчіть технології та мови програмування, що відносяться до обраної вами сфері діяльності. Нижче ми розповімо, що саме і для чого саме варто вивчити.

Метод 1 з 6: Веб-розробка

  1. 1

    Знайте, що входить у поняття веб-розробки. Веб-додатки - це програми, створені для роботи у верхній галузі архітектури інтернету. Інакше кажучи, ці програми запускаються з браузера, причому для цього зовсім не обов`язково сама наявність доступу в мережу. В основі веб-додатків лежать такі технології, як:
    • HTTP
    • FTP
    • POP3
    • SMTP
    • TCP
    • IP протоколи
    • HTML
    • XML
    • Coldfusion
    • ASP
    • JSP
    • PHP
    • ASP.NET

  2. 2

    Вивчіть якомога більше різних сайтів, щоб зрозуміти, як вони працюють (правий клік -> View Source або F12). Важливо не якість сайтів, а їх тип і вміст. В цілому, вам потрібно відвідати як мінімум один з:
    • Корпоративний сайт (сайти комерційних, некомерційних, державних та інших утворень)
    • Веб-каталог (пошуковики, метапоісковікі, каталоги)
    • Сайт для дата-Майнінг
    • Особистий сайт
    • Сайт-енциклопедія (вікі, інформаційні портали)
    • Соціальна мережа (соціальні портали, сайти для створення заміток)
    • Сайти, створювані спільно (вікі-сайти, блоги)

  3. 3

    Опануйте мінімум одним методом брейнсторминга і програмою для проведення брейнсторминга. Наприклад: брейнсторм-діаграми і MS Visio.

  4. 4

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




  5. 5

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

  6. 6

    Вивчіть основи інтернет-інфраструктури. Інакше кажучи, ви повинні мати певне уявлення про те, що таке:
    • Основні веб-протоколи (HTTP, FTP, SMTP, POP3, IMAP4)
    • Програми для веб-сервера (бажано зупинитися на вивченні якоїсь однієї платформи)
    • Браузери
    • Поштові сервери та клієнтські програми

  7. 7

    Вивчіть HTML і CSS. Для редагування HTML можна користуватися редакторами типу WYSIWYG (що бачиш - то й отримаєш).

  8. 8

    Вивчіть XML і пов`язані з ним технології - XSL і XPath (бажано).

  9. 9

    Коли будете знати HTML більш-менш впевнено, створіть простий статичний сайт.

  10. 10

    Вивчіть клієнтський мову сценаріїв. Скажімо, JS або VBScript, Perl або DHTML.

  11. 11

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

  12. 12

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

  13. 13

    Створіть свій пілотний проект. Зрозуміло, лише після того, як розберетеся з серверними мовами.

  14. 14

    Зробіть свій сайт. Почніть експериментувати з отриманими знаннями.

Метод 2 з 6: Десктоп-розробка

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

    Дізнайтеся більше про процедурні, об`єкт-орієнтовані та функціональні мови програмування.

  5. 5

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

  6. 6

    Вивчіть мінімум одну просунуту техніку моделювання (UML або OML).

  7. 7

    Почніть писати невеликі консольні додатки. Стануть в нагоді вправи з підручників програмування. Для цього, щоправда, буде потрібно редактор коду, відповідний для обраного вами мови.

  8. 8

    Вивчіть обраний вами мову програмування більш ретельно. Ви повинні не просто розуміти всі перелічені нижче концепти, але і без особливих зусиль застосовувати їх на практиці:
    • Введення і виведення даних.
    • Послідовність виконання програм у процедурних мовах.
    • Оголошення, закріплення і порівняння змінних.
    • Оператори розгалуження.
    • Цикли.
    • Синтаксис мови, створення процедур і функцій.
    • Типи даних і управління ними.
    • Користувача типи даних і управління ними.
    • Перевантаження функції, якщо обраний мову програмування це підтримує.
    • Управління пам`яттю.
    • Перевантаження операторів, якщо обраний мову програмування це підтримує.
    • Покажчики функції, якщо обраний мову програмування це підтримує.

  9. 9

    Застосуйте на практиці вивчені вами просунуті техніки програмування.
    • Об`єктно-орієнтована парадигма.

  10. 10

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

  11. 11

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

  12. 12

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


    • Читайте статті та керівництва по темі GUI.

  13. 13

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

  14. 14

    Створіть віртуальний випускний проект. Обов`язково завершіть його і застосуйте в ньому все те, чим встигли навчитися.

  15. 15

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

  16. 16

    Освоюйте нові бібліотеки і фреймворки для обраного вами мови програмування.

  17. 17

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

  18. 18

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

Метод 3 з 6: Прикладні розподілені системи

  1. 1

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

  2. 2

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

  3. 3

    Дізнайтеся більше про мережеву апаратну архітектуру і пристрої типу хабів, світчів і роутерів.

  4. 4

    Пройдіть курс з мережних протоколах. Вам потрібно добре розуміти модель OSI, Ethernet, IP, TCP, UDP і HTTP, перш ніж можна буде перейти безпосередньо до розробки.

  5. 5

    Вивчіть XML. Добре вивчіть!

  6. 6

    Розберіться з мовою інтерпретатора командного рядка. Для програмування під Windows це буде будь скриптова мова, що працює з Windows Scripting Host. Для програмування під Linux, в свою чергу, це Bash і Perl. javascript, в свою чергу, вкрай рекомендується для обох платформ, так як:
    • Він підтримується практично скрізь.
    • Його легко вивчити.
    • Його синтаксис схожий з такими мовами, як C, C ++, C # і Java.
    • javascript часто використовується у веб-розробці!

  7. 7

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

  8. 8

    За допомогою досліджуваного вами скриптового мови напишіть скрипти, які здійснюють спільне між комп`ютерами. Вивчіть все, що для цього потрібно. Досить навіть простий комунікації.

  9. 9

    Перейдіть на десктопний мову. Бажано, на Python, в якому поєднуються одразу кілька парадигм. Вивчіть його особливості, згодиться. Але багато програмісти вибирають Java, хоча і C # набирає популярність. Java і C # добре з наступних причин:
    • Це ООП-мови, що полегшує роботу у великих командах програмістів.
    • У них є підтримка подієво-керованого програмування, а також, певною мірою, ГО і процедурного програмування.
    • Фреймворк, на якому побудований Java, сам по собі прикладної та розподілений.
    • Існує багато бібліотек і фреймворків для цих мов, що істотно полегшує роботу.

  10. 10

    Зосередьтеся на тих базових особливості мови, які стосуються підтримки мереж. На GUI можна звертати менше уваги, ми дозволяємо.

  11. 11

    Пройдіть курс розробки розподілених систем і додатків. Книги, онлайн-курси та академічну освіту вам на допомогу. Необхідно розуміти основні принципи архітектури розподілених додатків.

  12. 12

    Дізнайтеся більше про те, як створювати додатки на вибраному вами мовою програмування.

  13. 13

    Вивчіть одну з наступних технологій. Бажано, щоб ви мали як мінімум загальне уявлення про них. Багато програмістів, що займаються розробкою розподілених систем, не зупиняються на 1-2 мовах, що й зрозуміло - чим більше вони знають, тим універсальніше і поширеніший їх додаток.
    • Common Object Request Broker Architecture (CORBA)
    • Simple Object Access Protocol (SOAP)
    • Asynchronous javascript and XML (AJAX)
    • Distributed Component Object Model (DCOM)
    • .NET Remoting
    • XML Web Services

Метод 4 з 6: Програмування та бібліотеки / платформи / фреймворки / ядра

  1. 1

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

  2. 2

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

  3. 3

    Пройдіть більш глибокий курс по UML і OML. Більшість розробників бібліотек користується ними.

  4. 4

    Пройдіть курс по технології програмування.

  5. 5

    Вивчіть модульні, компонентні, об`єктно-орієнтовані і подієво-керовані концепти і парадигми програмування. Чим більше ви знаєте, тим краще пишіть бібліотеки - все просто!

  6. 6

    Дізнайтеся більше про операційні системи та підтримувані ними фреймворки.

  7. 7

    Зосередьтеся на мультиплатформових Фреймворк, технологіях і мовами програмування.

  8. 8

    Якщо у вибраному вами мовою програмування є стандартні версії ANSI / ISO / IEEE / W3C, вивчіть їх. Намагайтеся по можливості дотримуватися стандартів.

  9. 9

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

  10. 10

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

  11. 11

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

Метод 5 з 6: Системне програмування

  1. 1

    Дізнатися, що входить в системне програмування. Системні програмісти працюють з програмуванням як з наукою, а не як з окремими завданнями. Не прив`язуватися до якоїсь конкретної платформі.

  2. 2

    Виконайте три перші етапи, описаних в пункті про десктоп-розробку.

  3. 3

    Пройдіть вступний курс в лінійну алгебру.

  4. 4

    Пройдіть курс математичного аналізу.

  5. 5

    Пройдіть курс логіки та / або дискретної математики.

  6. 6

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

  7. 7

    Пройдіть курс апаратної архітектури ПК.

  8. 8

    Детальніше вивчіть різні апаратні платформи.

  9. 9

    Пройдіть вступний курс асемблера для апаратної платформи / операційної системи на вибір. Пізніше ви вивчите мову асемблера для інших платформ і систем.

  10. 10

    Вивчіть мови ANSI C і C ++, а також концепції процедурного програмування.

  11. 11

    Вивчіть стандартні бібліотеки C / C ++ для обраної платформи. Особливу увагу приділіть STL і ATL.

  12. 12

    Шукайте онлайн-ресурси, книги і курси, щоб глибше зануритися в особливості взаємодії обраної платформи і C.

  13. 13

    Пишіть просунуті програми на C і С ++.

  14. 14

    Глибше вивчайте ассмеблер.

  15. 15

    Пройдіть курс розробки операційних систем.

  16. 16

    Знайдіть і ознайомтеся з документацією по вибраній вами платформі. У разі Unix-систем це завдання буде простіше. Якнайкраще зрозумійте, як саме працює та чи інша платформа.

  17. 17

    Відпрацьовуйте отримані навички. Для початку створіть невелику системну утиліту. Наприклад:
    • Спробуйте відтворити невеликі утиліти, які вже є у вашій системі.
    • Спробуйте перенести утиліти однієї операційної системи на вашу.

  18. 18

    Вивчайте мови правильним чином. Тут це важливо. Спершу вивчіть ANSI C. Чи не С ++, не С #, що не JAVA і не D. Після ANSI C вчіть C ++.
    • Обмежувати себе мовою С треба, так як системне програмування вимагає, щоб програміст був добре знайомий з:
      • справжньою і повної компіляцією вихідного коду;
      • низькорівневим висновком в файл;
      • лінкуватися бінарники;
      • низькорівневим програмуванням на асемблері. А за допомогою С вивчити асемблер, як запевняють деякі, простіше.

Метод 6 з 6: Комп`ютерні науки

  1. 1

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

  2. 2

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

  3. 3

    Визначтеся зі спеціальністю. І чим конкретніше і точніше - тим краще. Тут вже - до чого душа лежить. Нижче - список основних напрямків:
    • Розробка алгоритмів (пошук, шифрування, дешифрування і т.д.)
    • Розробка мов програмування
    • Штучний інтелект (нейронні мережі, обробка природної мови, розпізнавання шаблонів, розпізнавання мови)
    • Робототехніка
    • Наукове програмування
    • Суперобчислення
    • Системи CAD / CAM
    • Віртуальна реальність
    • Комп`ютерна графіка (Не дизайн, а саме управління графікою в комп`ютерних системах)

  4. 4

    Отримайте науковий ступінь. Чим вище - тим краще.

  5. 5

    Вивчайте технології, пов`язані з вибраними вами напрямком.

Поради

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