Как научиться компьютерному программированию
Итак, вы хотите стать программистом? Хотите писать программное обеспечение? Вот как вы можете начать заниматься этим удивительным хобби / профессией прямо сейчас, за бесценок. Впервые я написал эту статью еще в 2008 году, и с тех пор многое изменилось, поэтому я решил начать все сначала.
Советы по началу работы
Если бы мне пришлось сузить две вещи, которые в конечном итоге определят ваш успех, то это так:
1. Не лезьте в это из-за денег. Все мы знаем, что работа в области программного обеспечения хорошо оплачивается. Я не говорю, что вы не должны пытаться получить максимально возможную оплату после того, как вы развили свои навыки, но если это основная причина, по которой вы хотите этим заниматься, не беспокойтесь. Существует два подхода к программированию:
- Я хочу научиться писать программное обеспечение для сборки (пустое) или решать (пустое) и, возможно, когда-нибудь мне заплатят за это.
- Я хочу зарабатывать больше денег, став разработчиком программного обеспечения.
Первый - действительно единственный путь. Будьте честны с собой по этому поводу. Чтобы быть разработчиком, требуется большая приверженность, выходящая за рамки того, что вы себе представляете. Есть много квалифицированных профессий, в которых вы достигаете «мастерства» и остаетесь трудоспособным в течение десятилетий, даже до конца своей жизни. Программное обеспечение не входит в их число. Ваши базовые знания о развитии растут и длятся десятилетиями, но применимые навыки имеют гораздо меньший срок годности, и вы должны изучать и совершенствовать свое ремесло в свободное время. Это требует самоотверженности и страсти, которые деньги просто не дадут.
Те, кто занимается этим исключительно из-за денег, как правило, недовольны, не успевают за тенденциями или новыми технологиями и в конечном итоге выгорают. Им также приходится постоянно соревноваться с теми, кто по-настоящему увлечен.
2. Учитесь в текстовом редакторе.
Будь то HTML или ассемблер, написание простого текста - единственный способ изучить и понять, что происходит с программой. Вы должны вырваться из среды разработки и начать взламывать.
Когда вы изучаете программирование через IDE (интегрированную среду разработки), существует слишком много ярлыков и автозаполнений, которые маскируют то, что происходит на самом деле. Вы можете строить вещи быстро, но вы действительно не знаете, что с этим происходит.
Напишите его от руки, наблюдайте, как он ломается, и чините его, когда он сломается. Это стоит потраченного времени.
Я даже рекомендую это для обучения C#/ASP. Хотя Visual Studio, возможно, является лучшей интегрированной средой разработки из когда-либо созданных, она не помогает новичкам. Я изучил C# с помощью Notepad++ и csc.exe. Теперь, когда у меня есть опыт, я использую Visual Studio каждый день, но, как новичок, это помешало бы моему обучению.
Сначала используйте текстовый редактор! Затем изучите интегрированную среду разработки. Ты поблагодаришь меня позже.
Что вы хотите построить?
Это первый выбор, который вы должны сделать при подходе к разработке. Вам не нужно вечно придерживаться этого выбора, но вы должны с чего-то начать. Вот некоторые из категорий разработки программного обеспечения, и вы должны начать с того, какая из них вас больше всего волнует:
- Веб-разработка
- Настольная разработка
- Мобильная разработка
- Разработка серверов
Их можно разбить еще дальше, и всегда есть нишевые категории, такие как программирование BIOS, обработка данных и другие специализации. Но это те области, которые я собираюсь затронуть в этой серии.
Часть 1: Веб-разработка
Хорошо, пора принять другое решение! Есть несколько основных маршрутов, по которым вы можете пойти. Вам нужно будет решить, какой стек вы будете использовать (по крайней мере, на первых порах)
- Стек Linux
- Microsoft Stack
У обоих есть свои преимущества и недостатки, о которых я расскажу здесь.
Затем вы должны решить, на каких веб-разработках вы хотите сосредоточиться, по крайней мере, на первых порах.
- Frontend веб-разработка - страницы, дизайн, графические интерфейсы, то, что вы видите
- Backend Web Development - базы данных, API, закулисные вещи.
Нет причин, по которым вы не можете изучить Frontend и Backend в стеках Linux и Microsoft, и на самом деле вы должны. Но для этого потребуется значительное количество времени, поэтому лучше всего выбрать одну область и сначала сосредоточиться на ней.
Серверная (серверная) веб-разработка
Стек Linux
Стек Linux — это набор технологий, обычно используемых на платформе операционной системы Linux. Хотя все эти технологии будут работать и в Windows, они, как правило, лучше поддерживаются на хостинге Linux и имеют гораздо лучшие инструменты и отладку в средах Linux.
Заметка:
Вам не нужно запускать Linux на компьютере разработчика, чтобы написать для него программное обеспечение, но это помогает. Попробуйте!
Преимущества использования Linux Stack
Все бесплатно - Помимо оплаты хостинга (что вам, возможно, даже не придется делать), эти инструменты бесплатны. Многие инструменты, которые вы используете для разработки на них, также будут бесплатными. Это здорово, когда вы только начинаете программировать.
Сообщество разработчиков Linux- Linux — это ОС, которую выбирают многие разработчики, и они увлечены разработкой и помощью другим. Для тех, кто только начинает, вы найдете массу активности в этом мире и много помощи в Интернете.
Это с открытым исходным кодом- Большинство проектов, которые вы найдете в Linux, имеют открытый исходный код, что означает, что вы можете покопаться в коде и действительно увидеть, как он работает. Вы можете вносить в него изменения, исправлять проблемы и свободно делиться исходным кодом в Интернете. Эта философия кардинально изменила программирование и сделала программное обеспечение намного лучше.
Это весело- Несмотря на то, что я зарабатываю на жизнь разработчиком Microsoft .Net, я все еще постоянно использую Linux. Я пишу это в Arch Linux на своем ноутбуке. Это потому, что в глубине души я постоянно мастерю, и я люблю все менять и настраивать. Я также люблю оптимизировать свое окружение для достижения максимальных результатов. Вы можете выжать гораздо больше производительности из своего оборудования с Linux.
Недостатки стека Linux
Многие крупные компании используют Microsoft Stack - Microsoft .Net Framework — это надежная, зрелая и стабильная платформа для разработки. Он также хорошо сочетается с другими продуктами Microsoft, поэтому широко используется в деловом мире. Если вы работаете в одной из этих компаний или хотите работать на них, если они в первую очередь Microsoft, ваши навыки работы с Linux не очень пригодятся. Но пока не сдавайтесь, есть много крупных компаний, использующих Linux или их сочетание.
Фрагментация- Недостатком того, что каждый занимается своим делом, является то, что он становится фрагментированным. Некоторые технологии хорошо сочетаются друг с другом, а некоторые нет. То, что может быть стандартным способом использования программного обеспечения, может сильно отличаться от других.
Заброшенные проекты - В этой сфере есть много заброшенных проектов, потому что люди будут группироваться вместе, чтобы работать над чем-то, и им будет скучно, будет какая-то внутренняя борьба или будет отсутствие интереса со стороны сообщества. Когда это происходит, программное обеспечение мертво. Если что-то полезное и хорошее, кто-то может это подхватить или раскошелиться, но нет никаких гарантий. Помните, что эти люди работают бесплатно!
Отсутствие документации - Это то, что, кажется, улучшается с каждым днем. Но есть некоторые проекты, которым не хватает хорошей документации, и это борьба, чтобы заставить все работать. Опять же, эти люди делают это бесплатно, и вы ничего не платили, поэтому вы не можете рассчитывать на поддержку. Однако вы можете помочь, поделившись всем, что узнаете об этом.
Иногда что-то просто не работает - Вы найдете программные пакеты, которые не работают или в них отсутствуют ключевые функции. Поскольку нет коммерческой поддержки, может быть меньше мотивации для ее исправления. Если вы крайний случай и у вас есть особые потребности, может не хватить спроса на кого-либо, чтобы позаботиться. Это возможность для вас, когда вы станете лучшим разработчиком, так как вы можете внести свой вклад, чтобы исправить что-то или добавить функции.
Это включает в себя слишком много платформ, чтобы перечислить их все, но это в основном
- .PHP
- Питон
- Рубин
Это преобладающие веб-языки в сети, и все они по-своему потрясающие. Все эти языки относительно просты в изучении и имеют для этого большие ресурсы. Они также предлагают отличные платформы, когда вы готовы создавать крупномасштабные приложения.
#### Где изучать PHP: ! [Как научиться компьютерному программированию] (/images/how-to-learn-computer-programming/how-to-php-tutorials.jpg)
- PHP.Net
- Учебные пособия Tizag по PHP
- Тутс+ Учебники по PHP
- Учебные пособия по PHP от Pluralsight
- Учебные пособия по PHP CodeAcademy
#### Где изучать Python:
- Руководство по Python для начинающих
- Изучайте Python на собственном горьком опыте
- Учебные пособия по Python CodeAcademy
- Курсы Python Pluralsight
- Python с нуля
#### Где изучать Ruby:
- Ruby за 20 минут
- Рубиновый монах
- Курсы Pluralsight Ruby
- Ruby для новичков
- Изучайте Ruby на собственном горьком опыте
Это лишь некоторые из используемых языков, но наиболее распространенные. Выберите тот, с которым вы чувствуете себя комфортно, и найдите что-то, что можно построить с его помощью! Чем больше вы строите, тем больше вы узнаете на этом пути и столкнетесь с проблемами, которые помогут вам узнать еще больше.
Microsoft Stack
Microsoft Stack — это организованная экосистема, вращающаяся вокруг продуктов Майкрософт. Но это не так плохо, как я объясню. Это настоящая экосистема в том смысле, что все предназначено для совместной работы, и по большей части так оно и есть. Он состоит из:
- Платформа .Net Framework
- C#
- VB.Net
- Машинописный текст
- ASP.Net (комбинация этих технологий
Примечание: Несмотря на то, что ASP.Net теперь включает в себя другие языки, такие как все вышеперечисленные языки (PHP, Python, Ruby), по большей части прямо сейчас, большая часть веб-разработки Microsoft по-прежнему вращается вокруг технологий и языков, перечисленных выше.
Преимущества Microsoft Stack
За ним стоит крупная, успешная компания - Мы все знаем, кто такая Microsoft, и любите ли вы их или ненавидите, они довольно успешны. Это означает, что у них есть много ресурсов и талантов, чтобы бросить на это. В последние годы был сделан огромный толчок к привлечению большего количества разработчиков в эту область, и улучшения поразительны.
Это экосистема - многие разработчики спорят, хорошо это или нет, но эта среда очень взаимосвязана, и все предназначено для того, чтобы хорошо играть вместе. Существуют установленные стандарты и лучшие практики, а также устоявшийся способ делать то, что вы не найдете в более фрагментированной среде.
Большой бизнес это любит - Поддержка со стороны Microsoft, твердые стандарты и надежная структура привлекают крупный бизнес в экосистему .Net. Многим компаниям нравится тот факт, что вы можете положиться на эту технологию и помощь находится на расстоянии телефонного звонка. Им также нравится тот факт, что репутация Microsoft несет ответственность при выпуске продукта, поэтому в большинстве случаев она очень тщательно тестирует вещи, прежде чем они будут выпущены в дикую природу.
Это очень солидно - В мире Linux есть более быстрые и масштабируемые платформы по цене, и сама разработка может быть быстрее, но приложения .Net надежны при правильной сборке. Такие вещи, как строгая типизация, отличные инструменты отладки и профилирования, придирчивые компиляторы и обширная база знаний, способствуют созданию качественного программного обеспечения, на которое люди могут положиться. Вы можете создавать такое же надежное программное обеспечение в Linux, но разработка .Net по умолчанию подталкивает вас к созданию отличного кода. Вы должны приложить больше усилий, чтобы создать небрежное программное обеспечение на этой платформе.
Инструменты - Инструменты смехотворно хороши для разработки .Net. На мой взгляд, интегрированная среда разработки Visual Studio не имеет себе равных в среде разработки. Инструменты отладки и профилирования помогут вам выжать максимум из производительности и безопасности. А любители могут получить экспресс-версии этих инструментов бесплатно.
Недостатки Microsoft Stack
За ним стоит крупная, успешная компания - У экосистемы, построенной вокруг компании, есть недостатки, и некоторые из них здесь проявляются. Часто проекты, которые не принимаются достаточно для генерации чисел, умирают быстрой смертью. Некоторые вещи делаются в интересах компании, и не каждый программист с этим согласен. Некоторые думают, что Microsoft — это зло, и она не так популярна среди молодых, хипперских программистов.
Это может быть дорого - Управление магазином Microsoft имеет много преимуществ, но стоит недешево. Это может отговорить многие небольшие компании и стартапы от его использования. Но этот недостаток исправляется с помощью малоизвестной программы: студенты могут получить программное обеспечение бесплатно через DreamSpark, а стартапы могут использовать BizSparkдля бесплатного получения программного обеспечения.
Веб-хостинг не так распространен - Вы не можете бросить камень без того, чтобы он не попал на веб-хостинг на базе Linux, но хорошие хосты ASP гораздо сложнее найти. Если они размещают ASP, он либо дороже, либо устарел и им пренебрегают.
Это тяжелее - Вы можете взять быструю книгу по PHP и создать веб-сайт за пару дней. Это отлично подходит для вашего личного блога или сайта рецептов. В ASP есть чему поучиться, и он намного более привередлив. Мало того, что есть много совокупных вещей, которые нужно изучить, но окружающая среда гораздо более строгая, поэтому вам нужно хорошо ее изучить. Кроме того, вы должны включить гораздо больше мышления, связанного с компьютерными науками, в то, что вы создаете. Это не совсем плохо, но может быть пугающим для новичков.
Значит, вы все еще хотите это сделать? Продолжай читать!
Как выучить ASP.Net
ASP.Net — это сочетание языков и технологий Майкрософт, связанных с Интернетом. Забавно, что веб-сайт ASP.Net является фантастическим ресурсом для изучения основ. Но вот еще несколько мест, куда вы можете пойти, чтобы узнать больше.
C# является преобладающим языком для серверного программирования .Net, и я настоятельно рекомендую его изучить. VB.Net легче освоить, но он не так хорошо подходит для масштабирования и объектно-ориентированного программирования, как C#. F# — это функциональный язык Microsoft, который все еще находится на начальной стадии, но в некоторых случаях может быть отличным решением. TypeScript — это язык Microsoft для масштабируемого корпоративного JavaScript.
#### Где изучать C#: - **[Станция C#](http://csharp-station.com/)** - **[Жемчуг DotNet](http://www.dotnetperls.com/)** - **[Курсы C# в Pluralsight](http://bit.ly/PluralsightCSharp)** - **[30 дней на изучение C# в NetTuts](https://tutsplus.com/course/30 дней на изучение c-sharp/)** - **[C# в TutorialsPoint](http://www.tutorialspoint.com/csharp/index.htm)** - **[Учебники по C# на сайте MSDN](http://msdn.microsoft.com/en-us/library/aa288436(v=vs.71).aspx)**
#### Где изучать F#:
- Попробуйте F# здесь
- Создание первого приложения F#
- Учебники по F# Foundation
- Учебники по F# от Pluralsight
#### Где учиться TypeScript:
#### Где учиться VB.Net (Если нужно)
- Учебные пособия по VB.Net на сайте DotNetPearls
- VB.Net Учебные пособия в Tutorials Point
- Visual Basic на сайте MSDN
Если вы хотите начать разработку стека Microsoft по дешевке, ознакомьтесь с [Visual Studio](http://www.visualstudio.com) и получите экспресс-выпуск бесплатно. Вы также можете зарегистрироваться в [Windows Azure](https://www.windowsazure.com) и получить 10 бесплатных веб-сайтов.
Веб-разработка Frontend (клиентская сторона)
Любой, кто говорит, что фронтенд-разработка не является настоящим программированием, давно этого не делал. В наши дни JavaScript и HTML5 стали более надежными и сложными, чем когда-либо, обеспечивая надежную функциональность для того, что раньше было простыми веб-страницами. На самом деле, фронтенд-разработка — это самая быстрорастущая арена и, вероятно, лучшее место для продвижения в будущем.
Вот что вам нужно знать:
#### Где изучать HTML 5 - **[Курс HTML 5 в CodeAcademy](http://www.codecademy.com/courses/web-intermediate-en-R6bnc/0/1)** - **[Курсы HTML 5 в Pluralsight](http://bit.ly/PluralsightHTML)** - **[HTML 5 и CSS 3 в Tuts+](http://code.tutsplus.com/tutorials/html-5-and-css-3-the-techniques-you'soon-be-using--net-5708)** - **[Учебники на HTML5 Rocks](http://www.html5rocks.com/en/tutorials/)** - **[HTML 5 Canvas Tutorials](http://www.html5canvastutorials.com/)**
##### Где изучать CSS 3
#### Где изучать JavaScript
- Дуглас Крокфорд (Douglas Crockford) на JavaScript
- Отличный учебник по JavaScript в MDN
- Красноречивый JavaScript
- Учебные пособия по JavaScript NetTuts+
- Изучайте JavaScript в CodeAcademy
- Учебные пособия по JavaScript для Pluralsight
Это лишь малая часть того, что включает в себя фронтенд-разработку. Каждый день делаются успехи, и разрабатывается множество фреймворков, чтобы сделать фронтенд-разработку для веб-сайтов и мобильных устройств более мощной, чем когда-либо.
Общее программирование и разработка
Для общих знаний в области программирования и разработки следующие сайты отлично подходят для получения хорошей основы в разработке программного обеспечения.
- Множественный взгляд
- Школа кода
- Академия кода
- Coursera
- Udacity
- Команда «Домик на дереве»
- Открытые курсы Массачусетского технологического института
- Тутс +
- Code.org
- Mozilla Developer Network
- Кодовый проигрыватель
- Академия Хана
Сводка
Я надеюсь, что это дало вам достаточно информации для начала работы в области компьютерного программирования. Я занимаюсь этим с подросткового возраста, и сейчас мне за это платят, и мне все еще кажется, что я просто получаю удовольствие. Это очень полезная и сложная область.
Вы можете спросить: с какой стати вы делаете это и создаете себе конкуренцию? Меня несколько раз спрашивали об этом блоге в целом, и ответ прост: нас не хватает. Количество рабочих мест разработчиков растет быстрее, чем количество людей, которые могут их заполнить. Я рассматриваю это как возможность для людей улучшить свою жизнь, особенно в развивающихся странах, поэтому, если кто-то заинтересован в том, чтобы стать разработчиком, я более чем рад помочь ему.
Дайте мне знать, что вы думаете в комментариях, или свяжитесь со мной.
Комментарии
Отправить комментарий