Стать программистом - это кумулятивный процесс, который день за днем и год за годом накапливает ваши навыки, и программирование может быть увлекательным и полезным (умственно, духовно и финансово). Это руководство не обещает дать волшебно простой способ стать программистом, и порядок шагов не является священным, но вы получите общий план того, как стать программистом в одной из современных областей программирования.
Шаги
Шаг 1. Пройдите вводный курс по одной (или всем) из следующих дисциплин:
- Логика
- Дискретная математика
- Язык программирования (примите участие в различных парадигмах программирования, начиная от последовательного / процедурного до объектно-ориентированного, после функционального и логического программирования. Предпочтительно Ruby / Python / Pascal для начинающих и после некоторого хорошего понимания углубитесь в C ++ / C # / Java)
СОВЕТ ЭКСПЕРТА
Gene Linetsky, MS
Startup Founder & Engineering Director Gene Linetsky is a startup founder and software engineer in the San Francisco Bay Area. He has worked in the tech industry for over 30 years and is currently the Director of Engineering at Poynt, a technology company building smart Point-of-Sale terminals for businesses.
Джин Линецки, MS
основатель стартапа и технический директор
Не думайте, что вам нужно получить диплом программиста.
Хотя курсы по языку программирования могут быть полезны, Джин Линецки, инженер-программист и основатель стартапа, говорит:"
Шаг 2. Изучите концепции базы данных, такие как таблицы, представления / запросы и процедуры
Для этого вы можете использовать любой простой пакет базы данных, например:
- MS доступ
- DB V
- Fox Pro
- Парадокс
- MySQL - хорошая база данных для изучения, потому что она бесплатна, широко используется, а к базам данных обычно обращаются с помощью SQL-запросов.
Шаг 3. Решите, каким программистом вы хотите стать
Программисты обычно попадают в одну из следующих категорий:
- Веб-программист
-
Программист настольных приложений
- Программист, ориентированный на операционную систему (ОС) (привязанный к одной операционной системе или набору операционных систем)
- Независимый от платформы программист
- Программист распределенных приложений
- Библиотека / платформа / фреймворк / основной программист
-
Системный программист
- Программист ядра
- Программист драйверов
- Программист компилятора
- Ученый-программист
Шаг 4. Изучите технологии и языки программирования, связанные с выбранной вами областью программирования
В следующих разделах представлены задачи для разных типов программирования.
Метод 1 из 6. Веб-программирование
Шаг 1. Знайте, что влечет за собой веб-программирование
Веб-приложения - это программные компоненты, разработанные для работы поверх архитектуры Интернета. Это означает, что доступ к приложениям осуществляется через программное обеспечение веб-браузера, такое как Firefox или Internet Explorer. Построение на основе архитектуры Интернета не обязательно требует активного подключения к Интернету. Это означает, что веб-приложения создаются на основе стандартных веб-технологий, таких как:
- HTTP
- FTP
- POP3
- SMTP
- TCP
- IP протоколы
- HTML
- XML
- Холодный синтез
- ASP
- JSP
- PHP
- ASP. NET
Шаг 2. Просмотрите множество разнообразных веб-сайтов, чтобы узнать, как они обычно выглядят
(Щелкните правой кнопкой мыши, затем щелкните «Просмотр источника» или нажмите F12.) Ищите разнообразие в типе / содержании веб-сайта, а не в количестве посещенных веб-сайтов. Как правило, вам необходимо посетить хотя бы один из следующих типов веб-сайтов:
- Сайты корпоративного присутствия (коммерческие корпорации, некоммерческие организации / организации, государственные организации)
- Системы веб-индексирования (поисковые системы, метапоисковые сайты, специализированные поисковые системы, каталоги)
- Сайты интеллектуального анализа данных
- Персональные сайты
- Информационные / энциклопедические страницы (вики-страницы, таблицы данных, технические спецификации и руководства со списком каталогов, блоги и журналы, сайты новостных агентств, желтые страницы и т. Д.)
- Социальные сайты (социальные порталы, сайты закладок, сайты для заметок)
- Сайты для совместной работы (включая другие категории, упомянутые выше, такие как вики и блоги)
Шаг 3. Изучите хотя бы одну технику / метод мозгового штурма и программное обеспечение, которое используется для реализации этого метода
Например: диаграммы мозгового штурма и MS Visio.
Шаг 4. Ознакомьтесь со структурой сайта
Это создание концептуальных веб-диаграмм, карт сайта и навигационных структур.
Шаг 5. Пройдите ускоренный курс по графическому дизайну
Постарайтесь изучить хотя бы один программный пакет для редактирования / обработки графики (необязательно, но настоятельно рекомендуется)
Шаг 6. Изучите основы интернет-инфраструктуры
Это включает в себя получение базового представления о:
- Базовые протоколы веб-сервисов (HTTP, FTP, SMTP и POP3 или IMAP4)
- Программное обеспечение веб-сервера (желательно для платформы, над которой вы будете работать в основном)
- Программное обеспечение для просмотра веб-страниц.
- Почтовый сервер и клиентское программное обеспечение
Шаг 7. Изучите языки HTML и CSS
Вы также можете получить программный пакет «Что видишь, то и получаешь (WYSIWYG)» для редактирования HTML.
Шаг 8. Изучите XML и связанные с ним технологии, такие как XSL и XPath (необязательно, но рекомендуется)
Шаг 9. Создавайте простые статические веб-сайты, пока не освоите HTML
Шаг 10. Изучите язык сценариев на стороне клиента
Большинство пользователей изучают JavaScript. Некоторые изучают VBScript, но он несовместим с большинством браузеров.
Шаг 11. Ознакомьтесь с изученным вами языком сценариев на стороне клиента
Постарайтесь раскрыть свой потенциал, используя только этот язык. Переходите к следующему шагу только после того, как вы хотя бы познакомитесь со своим клиентским языком сценариев.
Шаг 12. Изучите хотя бы один серверный язык программирования
Если вы решите ограничиться одним серверным программным обеспечением, изучите один из языков программирования, поддерживаемых этим программным обеспечением. Если нет, изучите хотя бы один язык программирования для каждого серверного программного обеспечения.
Шаг 13. Создать пилотный проект для себя после того, как вы закончите изучение серверного языка программирования.
Шаг 14. Создайте свой собственный веб-сайт и начните экспериментировать в Интернете на своей странице
Метод 2 из 6: Программирование настольных приложений
Шаг 1. Знайте, что вы делаете с программированием настольных приложений
Большинство настольных программистов пишут код для бизнес-решений, поэтому представление о предприятиях, их организационной и финансовой структуре значительно сэкономит время.
Шаг 2. Узнайте о различных архитектурах компьютерного оборудования
Полезен вводный курс по проектированию цифровых схем и еще один курс по компьютерной архитектуре; тем не менее, некоторые считают его продвинутым в качестве отправной точки, поэтому может быть достаточно прочитать две или три обучающих статьи (например, эту и эту). Затем вы можете вернуться к этому шагу позже, после того, как выучите свой первый язык программирования.
Шаг 3. Изучите язык программирования начального уровня (детский)
Не стесняйтесь выучить такой язык только потому, что вы старше, чем вас называют «ребенком». Примером этих языков программирования может быть Scratch. Эти языки программирования могут значительно облегчить боль при изучении вашего первого языка программирования. Однако этот шаг не является обязательным. Это также можно сделать перед предыдущим шагом.
Шаг 4. Ознакомьтесь с процедурными, объектно-ориентированный, а также парадигмы функционального программирования.
Шаг 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), Ethernet, IP, TCP, UDP и HTTP, прежде чем вы начнете программировать распределенные приложения.
Шаг 5. Изучите язык XML и познакомьтесь с ним
Шаг 6. Начните с изучения языка сценариев оболочки
Для программирования на базе Windows это будет любой сценарий, работающий с Windows Scripting Host. Для программирования на базе Linux будет достаточно сценариев Bash и Perl. Для этого настоятельно рекомендуется использовать JavaScript на обеих платформах по следующим причинам:
- Он поддерживается практически любым хостом сценариев в любой операционной системе (Windows Scripting Host поддерживает JavaScript по умолчанию, в большинстве дистрибутивов Linux есть пакет для поддержки консоли сценариев JavaScript).
- Многие разработчики считают, что его легче освоить.
- Он имеет синтаксис, производный от ALGOL, который знакомит вас с гораздо большим количеством других языков программирования, когда вам нужно выбрать второй язык программирования (C, C ++, C #, Java и J # имеют синтаксис, производный от ALGOL).
- Изучая JavaScript, вы знакомитесь со сценариями на стороне клиента для веб-страниц, что является дополнительным побочным эффектом!
Шаг 7. Сначала примените только процедурное программирование, используя выбранный вами язык сценариев
Позже вы сможете использовать более продвинутые методы и парадигмы программирования в соответствии с вашим языком сценариев и тем, что он поддерживает. Все языки сценариев на определенном уровне имеют некоторые аспекты процедурного программирования.
Шаг 8. Используйте язык сценариев, который вы выучили, для написания сценариев, которые осуществляют обмен данными между машинами
Узнайте, что для этого необходимо. Достаточно простых коммуникаций.
Шаг 9. Сделайте переход на настольный язык сценариев / программирования
Желательно, чтобы язык был мультипарадигмальным, например Python. Сделайте простое введение в этот второй язык. Большинство программистов считают Java предпочтительным языком по многим причинам. Однако C # быстро набирает обороты в этой области. Java и C # предпочтительны по следующим причинам:
- Это объектно-ориентированные языки программирования, которые ограждают программистов в больших командах от деталей реализации, поскольку они оба поддерживают компоненты (предварительно скомпилированные блоки кода, которые выполняют определенную задачу и могут использоваться в других программах).
- Они поддерживают программирование, управляемое событиями, а также объектно-ориентированное и процедурное программирование на определенном уровне.
- Фреймворк, на котором построен язык, распределен по своей природе (в случае Java).
- Доступность множества готовых пакетов, которые имеют дело с сетями, как в виде пакетов с открытым исходным кодом, так и встроенных пакетов фреймворка; это позволяет программистам опираться на работу других.
Шаг 10. Сосредоточьтесь на основных функциях языка, особенно на тех, которые поддерживают работу в сети
Меньше внимания уделяйте элементам пользовательского интерфейса, таким как вывод, дизайн и методы окон, а также элементы пользовательского интерфейса.
Шаг 11. Пройдите курс по проектированию и архитектуре распределенных приложений
Это можно сделать с помощью книг, онлайн-руководств или академических курсов. Однако понимание архитектуры распределенных приложений и ее концепций необходимо.
Шаг 12. Узнайте о создании обслуживаемых компонентов и сервисов с использованием выбранного вами языка программирования
Шаг 13. Изучите одну или несколько из следующих технологий
Рекомендуется хотя бы познакомиться со всеми из них. Большинство программистов распределенных приложений не останавливаются на одном или двух языках программирования, но изучают по крайней мере один язык программирования для каждой операционной системы. Это потому, что если вы хотите, чтобы ваше приложение было «распределенным», вы должны предоставить его версию, по крайней мере, для каждой основной операционной системы.
- Общая архитектура брокера объектных запросов (CORBA)
- Протокол простого доступа к объектам (SOAP)
- Асинхронный JavaScript и XML (AJAX)
- Распределенная объектная модель компонентов (DCOM)
- Удаленное взаимодействие. NET
- 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-вкусе вашей конкретной платформы
Шаг 13. Попрактикуйтесь в создании расширенного кода на C и C ++
Шаг 14. Изучите более продвинутую сборку
Шаг 15. Пройдите курс по проектированию операционных систем
Шаг 16. Найдите и прочтите документацию по выбранной вами платформе
Это будет проще, если вы выберете операционную систему на основе Unix. Очень хорошо понять систему, с которой вы будете работать позже.
Шаг 17. Практикуйте полученные знания
Сначала создайте небольшие системные утилиты. Обычно полезно:
- Попытка воссоздать небольшие инструменты, которые уже есть в вашей системе.
- Пытаюсь портировать утилиты, имеющиеся в других операционных системах, на вашу.
Шаг 18. Учите языки в наиболее удобном для вас порядке
Это единственное место, где имеет значение первый язык программирования. Сначала изучите ANSI C, а не C ++, не C #, не Java и не D. Затем изучите C ++.
-
Ограничение первого языка только C и C связано с тем, что системное программирование требует, чтобы программист был знаком со следующими концепциями:
- Реальная и полная компиляция исходного кода.
- Файлы вывода объектов низкого уровня.
- Связывание двоичных файлов.
- Низкоуровневое программирование на машинном языке / ассемблере. Некоторые говорят, что язык C - это замаскированная / более легкая в освоении сборка. Он также поддерживает вставку кода на языке ассемблера в код, когда захотите, и является только процедурным (например, сборка).
Метод 6 из 6: программирование
Шаг 1. Знайте, что делает ученый-программист
Ученые-программисты - очень продвинутые программисты, которые вместо разработки приложений работают над разработкой вычислительных технологий, таких как шифрование, языки программирования и алгоритмы интеллектуального анализа данных. Этот уровень редко достигается без академической учебы и самоотверженности.
Шаг 2. Накопите научные знания, эквивалентные четырехлетней степени в области информатики
Это можно сделать:
- Получение действительной академической степени (что обычно и бывает).
- Получение схемы курсов для получения такой степени в одном из современных университетов и прохождение курсов либо самостоятельно, либо отдельными курсами. Теоретически этого можно достичь, но рекомендуемый путь - первый.
Шаг 3. Определитесь с областью специальности
Чем конкретнее, тем лучше. Это зависит от ваших предпочтений. Однако вот список некоторых из основных тем в области компьютерного программирования:
- Разработка алгоритма (некоторые примеры - поиск, сортировка, шифрование, дешифрование и обнаружение ошибок в коммуникациях)
- Языки программирования / проектирование компиляторов / оптимизация
- Области искусственного интеллекта (распознавание образов, распознавание речи, обработка естественного языка, нейронные сети)
- Робототехника
- Научное программирование
- Супер вычисления
- Компьютерное проектирование / моделирование (CAD / CAM)
- Виртуальная реальность
- Компьютерная графика (компьютерную графику обычно ошибочно путают с графическим дизайном или дизайном графического пользовательского интерфейса. Компьютерная графика - это область изучения того, как представлять и манипулировать графикой в компьютерных системах.)
Шаг 4. Рассмотрите возможность получения более высокой академической степени
Возможно, вы захотите получить степень магистра или доктора.