Щоб стати програмістом, потрібно розвивати свої навички день у день, з року в рік. Програмування може приносити задоволення і користь (для розуму, духу і фінансову). У цій статті ми не наводимо методи, які дозволили б вам магічним чином перетворитися в фахівця, і послідовність кроків необов`язково повинна бути такою. Ця інформація дасть вам загальні знання про те, як можна стати програмістом в одній із сучасних сфер розробки.
кроки
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.
Вивчіть клієнтський скриптова мова програмування. Найчастіше вивчають jаvascript. Можна також зайнятися
VBScript, однак ця мова несумісний з більшістю браузерів.
11. Займіться обраним вами клієнтським скриптовою мовою програмування. Постарайтеся домогтися свого максимуму за допомогою одного цієї мови. Переходьте до наступного кроку лише тоді, коли будете добре орієнтуватися хоча б однією мовою цього типу.
12. Освойте хоча б один серверний мова програмування. Якщо вирішите працювати лише з одним типом програмного забезпечення сервера, вивчіть хоча б один з мов програмування, який використовується для написання цього програмного забезпечення. Якщо будете готові до більшого, вивчіть як мінімум по одній мові програмування на кожен тип програмного забезпечення сервера.
13. Вивчивши мову програмування серверної частини, створіть тестовий проект.
14
Метод 2 з 6:
Програмування додатків для стаціонарного комп`ютера
1.
Дізнайтеся, ніж вам доведеться займатися. Як правило, програмісти пишуть коди для додатків, які використовуються в бізнесі, тому вам слід з`ясувати, як працює бізнес, як він організований і як побудована його фінансова система, з тим щоб
заощадити час.
2.
Вивчіть різні типи архітектури комп`ютерного обладнання. Буде корисно вивчити основи побудови
цифрових схем і
комп`ютерної архітектури. Однак деякі фахівці вважають, що на початковому етапі це не потрібно, тому достатньо буде прочитати 2-3 статті на цю тему. Ви зможете повернутися до цього, коли освоїте свою першу мову програмування.
3. вивчіть мова програмування базового рівня. Не соромтеся вивчати те, що вважається дитячим, лише тому, що ви старше. Прикладом такої мови служить Scratch. Такі мови полегшать роботу з вашим першим справжнім мовою програмування. Проте, цей крок не можна вважати обов`язковим. Крім того, зайнятися цим можна і до попереднього кроку.
5. Запишись на вступний курс з процедурних мов програмування. Який би мову ви не вибрали пізніше, вам потрібні будуть знання процедурного програмування. Крім того, багато фахівців вважають, що для того щоб зрозуміти програмування в цілому, слід почати з цього.
6. Вивчіть одну з систем просунутого моделювання (наприклад, UML або ORM).
7. Почніть писати невеликі консольні або консолеподобние додатки. Можна використовувати вправи з підручників з програмування. Виберіть інструмент для написання програм на тій мові програмування, з яким ви працюєте.
8. Запишіться на курс з програмування на вибраному вами мовою просунутого рівня. Ви повинні розуміти такі концепції, щоб вміти застосовувати їх з відносною легкістю:
введення і виведення інформації клієнтами в програмі;логічний потік і потік виконання програм на процедурних мовах програмування;вибір, призначення і порівняння змінних;створення ключових конструкцій, включаючи if..then..else і select / switch..case;закільцьовування конструкцій, включаючи while..do, do..while / until, for..next;синтаксис вашої мови програмування для створення та назви процедур і функцій;типи даних і способи обробки даних;типи даних, визначені користувачем (записи, структури, одиниці), і їх застосування;якщо ваш язик підтримує функції перевантаження, ви повинні в них розбиратися;способи аналізу пам`яті в обраному вами мовою (покажчики, звуки і так далі);якщо ваш мова програмування підтримує перевантаження операторів, ви повинні знати це;якщо в вашій мові є покажчики на функції, ви повинні розбиратися в них.9. Почніть застосовувати отримані знання.
10. Пройдіть вступний курс як мінімум по одній мові програмування в інший парадигмі програмування. Слід вивчити одну мову в кожній парадигмі, і, як правило, всі хороші програмісти так і надходять, проте вам достатньо почати з одного, попрацювати з ним, потренуватися, а потім перейти до інших, коли у вас вже буде реальний досвід в програмуванні. Придивіться до однієї з наступних сфер:
парадигма логічного програмування;парадигма функціонального програмування;об`єктно-орієнтована парадигма.11. Спробуйте порівняти дві мови програмування, які ви вже освоїли. Оцініть сильні і слабкі сторони кожного з них. Зазвичай роблять це так:
Візьміть простий приклад вашої ранньої роботи на першій мові програмування і перепишіть її, використовуючи другу мову.Створіть новий проект і використовуйте там обидві мови. Можливо, деякі речі вам не вдасться зробити на одному з мов - все буде залежати від обраного вами проекту і мов.Зробіть шпаргалки або порівняйте схожі конструкції в обох мовах і їх відмінності в зведеній таблиці.Знайдіть спосіб повторити конструкції, які є в одній мові, за допомогою іншої мови.12. вивчіть концепції візуального програмування за допомогою одного з обраних вами мов. Практично у всіх мов програмування є версії або бібліотеки, які підтримують візуальне програмування та інші види консольного або консолеподобного програмування. Зробити це можна в такий спосіб:
Пройдіть вступний курс по подієво-керованого програмування. В основному візуальне програмування базується на подіях і обробці подій (за допомогою вибраної мови програмування).Спробуйте попрацювати з великою кількістю програмного забезпечення для стаціонарних комп`ютерів, щоб зрозуміти, що роблять ці програми. Більшість компаній-розробників пропонують бета-версії додатків, якими можна спробувати користуватися. Слідкуйте за розвитком призначеного для користувача інтерфейсу.Читайте статті або керівництва по роботі з графічним призначеним для користувача інтерфейсом.13. Почніть застосовувати свої знання, розробляючи прості програми. Спробуйте використовувати отримані знання для вирішення повсякденних проблем. Наприклад, пишіть програми, які будуть масово перейменовувати файли, порівнювати текстові файли візуально, копіювати назви документів в певне місце в окремий файл пам`яті або текстовий файл і так далі. Для початку нехай все буде простим.
14. Створіть віртуальний дипломний проект. Зробіть все до кінця, застосовуючи методи візуального програмування, які ви вже освоїли.
15. Поглибити свої знання візуальних схем, бібліотек і програмних пакетів, пройшовши курси для просунутих, приділяючи особливу увагу більш дрібних речей і намагаючись дізнатися якомога більше прийомів роботи зі фреймворками з інтернет-джерел.
16. Пошукайте інші програмні пакети і бібліотеки візуальних елементів для ваших мов програмування і вивчіть їх.
17. Запишіться на курси графіки (НЕ графічного дизайну). Це буде дуже корисно, якщо ви плануєте створювати елементи з красивим призначеним для користувача інтерфейсом.
18.
Стати розробником ігор (за бажанням). програмування
комп`ютерних ігор вважається програмуванням для стаціонарних комп`ютерів. Якщо ви хочете створювати гри, вам потрібно буде освоїти основи цього програмування після завершення вищеописаних кроків. Вам обов`язково потрібно буде пройти курс програмування ігор, а друга мова програмування, який вам слід вибрати, повинен бути логічним / функціональним мовою (бажано 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. Рекомендується вивчити jаvascript для роботи з обома платформами з наступних причин:
jаvascript підтримується практичними всіма скрипт-хостами всіх операційних систем (Windows Scripting Host підтримує jаvascript за замовчуванням, а у більшості дістрібутівовLinux є пакет для підтримки jаvascript).Вважається, що вивчити його простіше.jаvascript будується на синтаксисі ALGOL, а це дозволить вам познайомитися з багатьма іншими мовами програмування, і вибрати друга мова вам буде простіше (C, C++, C #, Java і J # мають в своїй основі синтаксис ALGOL).Ізучаяjаvascript, ви знайомитеся з клієнтським скриптовою програмуванням веб-сторінок, а це означає подвійну користь!7. Спочатку використовуйте тільки процедурне програмування на одній мові. Пізніше ви зможете застосовувати більш складні прийоми і парадигми, що відповідають вашому скриптова мова і тому, що він підтримує. Все скриптові мови використовують процедурне програмування в тій чи іншій мірі.
8. За допомогою вивченого вами скриптового мови почніть писати скрипти, які будуть змушувати машини спілкуватися. Дізнайтеся, що вам для цього потрібно. Буде досить простого обміну даними.
9.
Перейдіть на мову програмування для стаціонарних комп`ютерів. Бажано вибрати мову з декількома парадигмами - наприклад
Python. Вивчіть основи цієї мови. Багато хто вибирає Java з різних причин, однак на даний момент все більш і більш популярним стає мова C #. Причини, за якими краще вибирати Java і C #, полягають в наступному:
Це об`єктно-орієнтовані мови, які звільняють програмістів у великих командах від необхідності думати про тонкощі впровадження, оскільки обидві мови підтримують компоненти (готові об`єднані одиниці коду, які дозволяють виконувати певні завдання і в інших програмах).Вони підтримують подієво-кероване програмування, а також об`єктно-орієнтоване і процедурне програмування в певній мірі.Фреймворк, на основі якого надбудовується мову, є розподіленим за замовчуванням (в разі Java).Можливість використовувати готові пакети, які відповідають за мережі, тобто пакети для відкритого коду та для вбудованих у фреймворк пакетів. Завдяки цьому програмістам простіше будувати свою роботу на підставі вже існуючого коду.10
Приділяйте більше уваги ключових особливостей мови, особливо там, де мова йде про мережі. Менше уваги можна приділити призначеному для користувача інтерфейсу, включаючи такі елементи, як висновок даних, дизайн вікон та інші техніки.
11. Вивчіть основи архітектури прикладних розподілених систем. Це можна зробити самостійно за допомогою книг, інтернет-джерел або на курсах. Що б ви не вибрали, вам буде важливо розуміти основні принципи побудови прикладних розподілених систем.
12. Вивчіть розробку обслуговуються компонентів і сервісів на вибраному вами мовою.
13. Вивчіть одну або декілька з наступних технологій. Рекомендується знати хоча б трохи про них усіх. Більшість програмістів прикладних розподілених систем не обмежуються одним або двома мовами, а вчать як мінімум по одній мові на кожну операційну систему. Це пояснюється тим, що для того щоб зробити додаток розподіленим, вам потрібно буде створити за версією цієї програми як мінімум для основних операційних систем.
Загальна архітектура посередника запитів до об`єктів (CORBA)Простий протокол доступу до об`єктів (SOAP)Асинхронний jаvascript і XML (AJAX)Розподілена компонентна об`єктна модель (DCOM).NET RemotingВеб-сервіси XMLМетод 4 з 6:
Програмування бібліотек, платформ, фреймворків, ядер
1. Дізнайтеся, що таке програмування ядра. Програмісти ядер - це досвідчені програмісти, які перейшли від розробки додатків до програмування одиниць коду, які могли б використовувати інші програмісти.
2. Вивчіть мову програмування, що підтримує розробку компонентів і пакетів, які можна було б використовувати готовими, якщо ви ще цього не зробили.
3. Пройдіть просунутий курс UML і ORM. Найчастіше використовується або щось одне, або і те, і інше.
4. пройдіть курс програмування програмного забезпечення.
5. Вивчіть як мінімум способи модулярного програмування, програмування на основі компонентного, об`єктно-орієнтованого і подієво-керованого програмування і основні принципи роботи в цих системах. Чим більше парадигм і мов ви будете знати, тим простіше вам буде стати програмістом бібліотек і пакетів.
6. вивчіть різні Операційні системи і фреймворки, які працюють в цих системах.
7. Приділіть особливу увагу фреймоворкам, не залежних від платформи, а також мов програмування і технологій.
8.
Якщо мови програмування, які ви вже вивчили, підтримують стандартні версії ANSI/
ISO/
IEEE/
W3C, освойте основи. По можливості використовуйте стандартний код.
9. Спробуйте відтворити прості готові бібліотеки, особливо з відкритим кодом. Це буде дуже корисно на першому етапі. Почніть з простих пакетів (наприклад, переклад одиниць вимірювання або розрахунки середнього рівня складності). Якщо ви вчитеся в університеті, використовуйте інформацію, отриману на інших заняттях, і спробуйте застосовувати рівняння і дані в якості бібліотек.
10. Пошукайте пакети з відкритим кодом і спробуйте попрацювати з ними в своїй сфері програмування. Спочатку скачайте виконавчі і виконувані файли. Почніть працювати з ними, щоб зрозуміти, в чому полягають їхні сильні і слабкі сторони. Потім скачайте вихідний код і постарайтеся розібратися, як він був створений. Спробуйте відтворити бібліотеки або їх частини. Спочатку робіть це після того, як побачите код, а потім - до цього. Коли почнете розбиратися в цьому, спробуйте поліпшити бібліотеки.
11. Вивчіть різні підходи до розподілу і розгортання компонентів для програмістів.
Як правило, програмісти бібліотек і пакетів намагаються представити всі завдання в зворотному порядку і / або ітераційно. Спробуйте уявити завдання як сукупність дрібних завдань (послідовність простих дій) або як повторює процес, який дозволяє звести великий масштаб до маленьких, а потім нашарувати отримане один на одного.Програмісти бібліотек і пакетів часто узагальнюють. Коли перед ними є проста і зрозуміла завдання, вони намагаються представити загальну проблему і вирішити її, що автоматично вирішить усі більш дрібні завдання.Метод 5 з 6:
Системне програмування
1. Дізнайтеся, що включає в себе системне програмування. Системні програмісти працюють з наукової стороною програмування, а не з конкретними завданнями. Чи не прив`язується до певної платформі.
2. Дотримуйтесь рекомендацій в перших трьох кроках для програмістів додатків для стаціонарних комп`ютерів.
3. Пройдіть вступний курс з лінійної алгебри.
4. Пройдіть курс по розрахункових методів.
5. Пройдіть курс за логікою і / або дискретної математики.
6. Зустрітися з різними операційними системами без надбудов. Це можна зробити наступним чином:
З`ясуйте, як встановлюються системи.Навчіться встановлювати операційні системи на комп`ютер (рекомендується).Встановіть більш однієї системи. Не користуйтеся допоміжними пакетами - візьміть лише основний функціонал операційних систем.7. Пройдіть курс з архітектури комп`ютерного обладнання (або прочитайте літературу на цю тему).
8. Вивчіть особливості різних апаратних платформ.
9. Ознайомтеся з основами мови асемблера обраної вами операційної системи або апаратної платформи. Пізніше вам потрібно буде вивчити мову асемблера інших платформ і систем.
10. Вивчіть мови ANSI C і C ++, а також основні принципи процедурного програмування.
11.
Вивчіть стандартні бібліотеки на C / C ++ і почніть використовувати їх на обраної вами платформі. Особливу увагу приділіть бібліотеці стандартних шаблонів (
STL) І бібліотеці активних шаблонів (
ATL)
12. Щоб зрозуміти, як C / C ++ працює на вашій платформі, читайте інтернет-джерела, книги і курси.
13. Почніть створювати більш складний код на C і C++.
14. Вивчіть більш складні нюанси Assembly.
15. Пройдіть курс розробки операційних систем.
16. Знайдіть і прочитайте документацію по вибраній вами платформі. Вам буде простіше працювати з операційною системою на основі Unix. Вам потрібно буде дуже добре розбиратися в цій системі.
17. Почніть застосовувати отримані знання. Спочатку створюйте невеликі системні утиліти. Буде корисно зробити наступне:
Відтворіть невеликі інструменти, які вже є у вашій системі.Спробуйте з`єднати утиліти, які є в інших системах, з вашою системою.18. Вивчіть мови в тому порядку, в якому це буде найправильніше. Лише в цьому випадку має значення, який у вас перша мова програмування. Краще спочатку вивчити ANSI C, а не C #, Java або D. Потім переходите до C++.
Вимога знання мови C і тільки C пов`язано з тим, що системний програміст повинен володіти наступними знаннями:Реальна і повна компіляція вихідного коду.Файли вихідних даних об`єктів нижнього рівня.Сполучні виконавчі файли.Програмування на машинній мові нижнього рівня і програмування на асемблері. Мовою С багатьом простіше вивчати асемблер. Крім того, ця мова дозволяє поміщати мовної код асемблера в основний код в будь-який момент, і це процедурний мову (як і асемблер).Метод 6 з 6:
наукове програмування
1. Дізнайтеся, чим займається науковий програміст. Наукові програмісти - це дуже досвідчені фахівці, які розробляють не програми, а технології: шифрування, мови програмування, алгоритми з інтелектуального аналізу даних. Домогтися цього рівня знань без спеціальної освіти і завзяття практично неможливо.
2. Заробите наукові знання, рівноцінні обсягом інформації, що дається в університеті. Це можна зробити декількома способами:
Вступите до університету (зазвичай все так і роблять).Дізнайтеся, в чому полягає університетська програма в цій сфері в одному з сучасних університетів, і почніть або займатися на курсах, або вчитися самостійно. Теоретично це дозволить отримати всі необхідні знання, проте найкраще вступити до університету.3. Виберіть спеціалізацію. Чим більш вузькою вона буде, тим краще. Все залежить від ваших особистих переваг, але ми наведемо список основних сфер в науковому програмуванні:
розробка алгоритмів (пошуку, сортування, шифровки даних, розшифровки, визначення помилок в передачі даних);Розробка та оптимізація мов програмування і компіляторів;сфера штучного розуму (розпізнавання повторюваних елементів, мови, обробка природної мови, нейронні мережі);робототехніка;власне наукове програмування;суперкомп`ютери;системи CAD / CAM (комп`ютерне конструювання);віртуальна реальність;комп`ютерна графіка (комп`ютерну графіку часто плутають з графічним дизайном або дизайном графічного призначеного для користувача інтерфейсу. Комп`ютерна графіка - це сфера знань, яка дозволяє дізнатися, як створювати графіку і керувати нею в комп`ютерних системах).4. Подумайте про отримання наукового ступеня. Спробуйте стати кандидатом в доценти або доцентом.
5. Вивчіть технології і мови програмування, пов`язані з обраним напрямом.
Поради
- Який би вид програмування ви не вибрали і якого рівня ви не хотіли б досягти, подумайте про курсах або університеті. Нехай вас не лякають назви курсів. На будь-яких заняттях, які не передбачають наявність будь-яких особливих знань у студентів, дають основи програмування. Щоб переконатися в тому, що курс вам підходить, обговоріть програму з викладачем. Пам`ятайте, що курс з назвою «Комп`ютерна грамотність» може давати інформацію нема про програмуванні, а про навички використання офісних додатків.