Найти тему
IT stranger

Программирование с чего начать. (личный опыт)

Оглавление

Предисловие. (вода)

Перед многими выпускниками или просто заинтересованными людьми, которые решили связать свою жизнь с программированием, часто возникают вопросы: "Куда лучше поступать?", "Чему именно обучаться?", "Как после обучения быть востребованным для работодателей?"

Я надеюсь, что моя статья поможет людям принять правильные решения. Если у вас будут замечания, то очень прошу писать их в комментариях.

Стоит сказать, что статья вышла довольно объемной. Поэтому я ее постарался структурировать, а именно разделил на категории и подкатегории. Так же, в некоторых категориях, я поднимал темы, которые возможно будут сложны для понимания новичкам. Если у вас возникнут вопросы по статье, то я постараюсь на них ответить в комментариях или в следующих статьях.

А стоит ли? (еще немного воды)

-2

Я не раз замечал, когда люди начинали учиться на программиста только ради легких денег. Однако, программирование будет таковым, только если вам действительно нравится программировать. Само по себе программирование, это очень сложный, требующий постоянной концентрации и умственной нагрузки процесс. Со временем, многие новички понимают, что программирование приходится им не по душе. Хорошо, если они это осознают рано, а не после оконченной учебы и потраченного зря времени. Если вы хотите стать программистом ради денег, то это вполне возможно, но лично я не рекомендую так делать. Есть множество способов заработать больше и проще, причем в той же IT сфере.

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

Буквально небольшой пример того, что программисты не единственная высокооплачиваемая профессия.
Буквально небольшой пример того, что программисты не единственная высокооплачиваемая профессия.

Ссылка на источник изображения.

Как определить программирование ваше или нет?

-4

Как бы это банально не звучало - начать самостоятельное обучение программированию. Только попробовав можно понять подходит вам профессия программиста или нет.

Так с чего начать? (огромная вереница важной информации)

-5

Первое, что нужно для себя определить, это какая тематика вам интересна. Что вы хотите создавать, сайты, делать игры, заниматься робототехникой, делать desktop приложения, что вам интересно? Учить программирование ради программирования глупо. Учиться программировать нужно для реализации идей и задач.

Определиться с направлением очень важно, потому что оно напрямую влияет на то, какие языки программирования (далее ЯП), среды разработки (далее IDE) и их специфику вам предстоит изучать.

-6

Лично я могу выделить несколько направлений в программировании.

• Разработка пользовательских приложений.

-7

Сюда можно отнести Desktop, Mobile приложения и часть серверов

В направлениях я буду выделять подкатегории.

Для этого направления можно выделить следующие подкатегории:

-Создание Desktop приложений.

softeq
softeq

Как по мне, это идеальное решение для новичков. Удобные IDE, быстрая сборка и запуск написанных программ.

Здесь я советую начать свой пусть с ЯП C#, IDE Visual Studio или ЯП Java, IDE Intellij Idea, для разработки под ОС Windows или ЯП Swift, IDE Xcode для разработки под MacOS. Сейчас это одни из самых востребованных инструментов для разработки Desktop приложений. Так же, можно отметить Delphi с Rad Studio от Embracadero (потомок Borland'а), но по личному опыту сейчас Delphi не сильно популярен. Да и большинство современных продуктов от компании Embracadero платные и стоят они очень дорого. Еще можно упомянуть о ЯП С++, однако лично мое мнение он не самый актуальный ЯП для этой подкатегории. Его чаще используют для решения специфических задач.

На самом деле есть множество IDE и ЯП для написания программ под desktop, поэтому выбрать то, что вам придется по душе будет довольно легко. Я лишь описал самые популярные решения.

Более полный список ЯП, которые используются в desktop разработке.

-9

Ссылка на источник. Да. На данном сайте находится информация за 2018 год. Однако, в плане функционала ЯП, за 2 года мало что поменялось, а их популярность имеет погрешность не более 1-3 позиций, потому что кардинальных революций в индустрии за 2 года не было.

-Разработка мобильных приложений.

-10

В целом, она имеет много общего с разработкой Desktop приложений, однако в ней присутствует много собственной специфики. Как и с desktop разработкой у нее есть много ЯП и IDE, но для новичков могу посоветовать следующее:

Для разработки на ОС Android два самых популярных решения, это ЯП C# с IDE Xamarine (интегрировано в Visual Studio ) и ЯП Java с IDE Android Studio.

Если вы хотите разрабатывать приложение под iOS, то вам так же подойдёт Xamarine для ОС Windows. Если у вас MacOC, то могу посоветовать начать изучать ЯП Swift с IDE Xcode.

К слову, желательно иметь устройство с ОС под которую вы будете вести разработку, чтобы тестировать приложения сразу на устройстве, без использования виртуальных машин, которые занимают много ресурсов ПК. Так же, желательно иметь мощный ПК, иначе компилироваться проекты будут довольно долго.

Более полный список ЯП, использующихся в разработке мобильных приложений.

-11

• Web разработка.

-12

Создание сайтов и web сервисов, как по мне, немного тяжелее в освоении для новичков из-за того, что в web разработке обычно взаимосвязаны сразу несколько ЯП с разным назначением. Плюс, для создания сайтов и web проектов нужно уметь работать на базовом уровне с хостингами или локальными веб серверами. Понимать, как работают домены и уметь работать с базами данных, которые я опишу далее в статье.

Касаемо того какие ЯП я бы посоветовал изучать новичкам, то это стандартная связка: PHP, JavaScript (желательно), HTML, CSS.

 Самый распространенный stack ЯП в веб разработке.
Самый распространенный stack ЯП в веб разработке.

Конечно, можно вместо PHP начать изучать Python и его расширение Django или C# с его платформой ASP.NET, но как по мне для новичков они сложнее в освоении. Тем более, большинство CMS (готовых движков сайтов) написаны именно на PHP. Однако, это мое личное мнение, поэтому новичкам настоятельно рекомендую попробовать и Python, и ASP.NET, чтобы понять какой ЯП вам больше по душе.

На самом деле, данная тема вызовет не один спор, потому что PHP многие недолюбливают и не рекомендуют новичкам начинать с него свое обучение, сетуя что на нем довольно сложно писать качественный код и новички могут обзавестись множеством дурных привычек в программировании. Однако, так можно сказать про любые технологии, потому что везде есть своя специфика. Лично я считаю, что всегда нужно начинать изучение с актуальных и востребованных ЯП, а касаемо специфики и привычек, то вам очень активно поведает комьюнити, что можно делать, а что нельзя.

Касаемо web разработки нужно также сделать пояснение, чтобы вы поняли зачем сразу изучать столько ЯП.

Web разработка условно делится на 3 типа Front-End, Back-End и Full-Stack.

-14

- К Front-End относится все, что выполняется на стороне клиента. К нему относится JavaScript и языки разметки HTML, CSS. Их используют, по большей части, чтобы создавать оформление, анимации и обработки клиентских скриптов.

- К Back-End относится все, что выполняется на сервере. К нему относится PHP, Python, C# с технологией ASP.NET. Пользователь, в отличии от Front-End ЯП, не имеет доступ к исходному коду. Их используют для описания логики и бизнес процессов сайтов или проектов.

- Full-Stack это по факту, одновременная разработка на Front-End и Back-End языках.

Необязательно быть Full-Stack программистом. Можно ориентироваться только на Front-End или Back-End, но желательно хотя бы поверхностно знать, как работают все web технологии. Зная основы всей web разработки, вы будете лучше понимать других программистов и смысл поставленных перед вами задач.

Касаемо IDE. На самом деле программировать на вышеперечисленных ЯП можно хоть в блокноте. Однако, существует большое количество IDE для веб ЯП и плагинов для текстовых редакторов по типу Atom или Visual Code.

Небольшая сноска касаемо JavaScript. На самом деле это очень гибкий и обширный ЯП, на котором можно программировать что угодно, от красивой анимированой кнопочки, до драйверов ОС. Так же, JavaScript может быть вполне Back-End ЯП. Например, платформа node.js создана для обработки данных на стороне сервера, а не клиента.

Еще сноска касаемо инструментария и плагинов для веб ЯП. Дело в том, что многие из них могут выступать чуть ли не отдельной платформой или видоизменять ЯП до неузнаваемости. Чаще всего они вам пригодятся в разработке, поэтому их тоже придется изучать. Например, для CSS существует фреймворк Bootstrap, который привносит большое кол-во шаблонов и функционала для дизайна, а модуль SASS делает из CSS полноценный ЯП. Для PHP существует фреймворк Laravel, созданный для работы с MVC партерном. Ну а для JavaScript есть огромное кол-во плагинов и инструментария, которые его сильно видоизменяют, например упомянутый ранее node.js. Так же, на основе JavaScript, создают новые ЯП, например относительно новый TypeScript. Все это тоже нужно держать в голове при изучении web технологий, потому что многое из этого инструментария, при должном навыке сильно упростит вам жизнь.

Как и раньше я выложу более полный список ЯП использующихся в web разработке.

-15

• Базы данных.

-16

Это направление очень сильно взаимосвязано со всеми другими направлениями. Базы данных (далее БД) активно используются при разработке многих проектов. Например, те же сайты без них вообще редко когда могут обойтись. В целом, БД используются повсеместно. Рано или поздно, вам придётся начать изучать БД и системы управления базами данных (далее СУБД), будучи программистом в другой сфере, чтобы обеспечивать привязку с БД ваших проектов. По идее, любой уважающий себя программист должен уметь работать с БД и понимать их основы. Однако, в этой сфере, как и везде, есть свои профессионалы.

Еще можно добавить, что программирование БД нужно далеко не только программистам. Знание БД и СУБД приветствуется в смежных специальностях, например в системном администрировании. Однако, зачастую все чаще с БД и СУБД приходится работать людям вообще никак не связанных с IT сферой. Чаще всего они выступают в роли операторов БД.

У БД так же есть своя очень обширная классификация. Однако, я выделю 2 направления, которые как по мне сейчас самые актуальные.

- Реляционные БД.

-17

Это классический вид БД, который больше всего распространен. Чаше всего новички начинают изучать БД именно с него и это вполне верное решение. Если очень кратко описать суть, то данные хранятся в таблицах, где каждый столбец имеет свое уникальное имя, а данные помещаются в строки. Таблицы можно связывать при помощи ключевых полей.

-18

Можно выделить следующие основные ЯП для работы с БД - это SQL c СУБД MS SQL (в основном используется для desktop проектов), MySQL c СУБД PhpMyAdmin (в основном используется для web проектов), SQLite (чаще всего используется в разработке мобильных приложений)

-19

Так же, нужно упомянуть довольно популярную Oracle Database. Она является объектно-реляционной БД и позволяет реализовывать принципы объектно-ориентированного программирования (далее ООП). Oracle используют во многих проектах и решениях, поэтому ознакомится с ним, будет не лишним.

Еще можно сказать несколько слов про СУБД Access. Очень часто, новички начинают свое знакомство с БД именно с него. Это обусловлено тем, что Access входит в пакет Microsoft Office и позволяет довольно быстро познакомится с принципом работы реляционных баз данных. Плюс, небольшие решения и проекты на Access можно вполне встретить в продакшене, потому что бывают случаи, когда проще, быстрее, эффективнее и рациональнее создать БД на Access, скажем для одного локального рабочего места, ежели поднимать для него отдельный сервер и использовать сложную для освоения рядовых пользователей СУБД. Однако, если вы поняли для себя, что вам безумно нравится работать с базами данных, то рекомендую долго на нем не задерживаться и начать изучать куда более сложные БД и СУБД.

- No SQL.

-20

Уже название говорит о особенности данного направления. No SQL БД имеют не классическое реляционное строение. Их используют для задач, для которых реляционные БД плохо подходят. Ярким примером использования No SQL является популярная СУБД MongoDB. Чаще всего она используется в связке с JavaScript, однако у нее есть официальные драйверы для многих популярных ЯП.

Я упомянул No SQL только с одной целью, предупредить новичков, что начинать изучение с БД такого типа, как по мне плохая идея, потому что для понимания их принципа работы нужно обладать уже базовыми навыками программирования и понимать, например принципы ООП. Лучше начните с классических реляционных БД, так вы быстрее достигните успехов и поймете, зачем вообще нужны No SQL БД. К слову, о различиях реляционных БД и No SQL БД можно более подробно почитать в этой статье.

-21

В дополнении, хотел рассказать о некоторых интересных моментах связанных с базами данных. Например, в последнее время все чаще встречается термины Big Data и Data Science. Причем, они встречаются не только в заголовках курсов программирования, а даже в учебный программах ВУЗ-ов.

Собственно говоря, почему Big Data и Data Science стали так популярны? Ответ довольно прост. Дело в том, что с каждым годом базы данных, компаний, организаций, исследовательских учреждений и т.д. разрастаются в геометрической прогрессии. Следовательно, нужны специалисты, которые очень хорошо умеют работать с огромными объемами данных. Собственно отсюда и появилось название Big Data, что в дословном переводе - «большие данные». К слову, чаще всего для организации хранения Big Data, т.е. больших объемов данных и работы с ними используют, как раз No SQL БД. Поэтому, сразу изучать Big Data новичкам лично я не рекомендую.

Еще один известный термин - Data Science. Это скорее целая it наука, которая посвящена изучению данных. Big Data и Data Science сильно взаимосвязаны между собой, потому что обычно анализируются и изучаются большие хранилища данных. Поскольку это целая наука, то чтобы ей заниматься требуется довольно много знаний, причем не только в программировании, но и в других сферах. Например, очень желательно хорошо знать математику (да, да, та самая, которая вам после школы никогда не пригодится), понимать основы статистики и аналитики. Поэтому новичкам, я точно не рекомендую лезть в Data Science. Нет, я не говорю, что надо быть гением с 30-ти летним стажем, чтобы в этой науке разобраться, но для начала, если вы хотите изучать БД, создайте десяток другой реляционных БД и изучите их альтернативы. В прочем о том, как выстроить свое обучение я тоже подробно расскажу далее в статье.

• Программирование микроконтроллеров.

-22

Сюда можно отнести и системное программирование. Думаю ни для кого не секрет, что в последнее время микроконтроллеры стали куда более доступнее обычным людям, чем раньше. Большую роль в этом, сыграл Китай и Ali Express, где можно купить тот же Arduino за 100-200 рублей. Однако, само направление набирает обороты еще и благодаря развитию робототехники.

Если коротко, то программирование микроконтроллеров, это по факту написание\модифицирование прошивок и ОС для системных плат или микросхем с микроконтроллерами. У меня не особо большой опыт в этой сфере, но могу сказать, что зачастую вам придется не только программировать, но и много паять. Если вам интересно данное направление, то рекомендую вам сразу параллельно изучать (если вы не знаете) все что связано с электричеством. Электрические цепи, математику, булеву логику и конечно же много практиковаться в пайке. У вас часто будут такие ситуации, когда для того, чтобы запрограммировать микроконтроллер, надо будет сначала разработать и создать микросхему к которой его припаять с другими ее компонентами.

-24

Сейчас благодаря тому, что микроконтроллеры стали в разы доступнее, порог входа в направление не такой высокий. Новичкам я бы посоветовал закупить на али экспресс микроконтроллеры Arduino, Raspberry Pi, STM32 и другие, по которым в интернете много информации. Многие микроконтроллеры можно купить уже в сборке с микросхемой. Так же, многие из них имеют модули, которые можно докупить и присоединить через провода с pin разъемами (подобно как вы подсоединяете fpanel в вашем ПК). Я уже молчу, что в продаже есть целые обучающие наборы и так называемые div наборы, т.е. те что поставляются в разобранном виде и вам придется их собрать самому, что поможет вам получить навык в пайке. Причем, всё необходимое продается по вполне доступным ценам. Однако, если у вас нет финансовых или иных возможностей (всякое бывает), то всегда есть эмуляторы микроконтроллеров. Используя их вы тоже сможете вполне освоить это направление.

-25
Небольшая сноска о том, что многие микросхемы, платы просто так к компьютеру через USB не подключить. Их взаимодействие с ПК происходит через программаторы. Поэтому, всегда читайте документацию, перед тем, как начать работать с микроконтроллером.

Если что это шутка.
Если что это шутка.

Касаемо IDE и ЯП. В программировании микроконтроллеров сильно распространены низкоуровневые ЯП или приближенные к ним, например С, С++, семейство языков Assembler и многие другие. Однако порой микроконтроллеры программируют на ЯП высокого уровня, например на Java или Python. Касаемо того, какой ЯП выбрать - это зависит от того, какой микроконтроллер вы выбрали, потому что производители, под свои микроконтроллеры зачастую пишут свои IDE. Поэтому выбор ЯП зависит напрямую от микроконтроллера. Из универсальных IDE я могу выделить Keil, Qt, однако они не панацея от вопроса с выбором постоянной IDE. Поэтому, перед тем как приступить к программированию микроконтроллера, внимательно прочитайте по нему документацию.

Поскольку я не особо компетентен в данном направлении ославлю здесь хорошую статью с советами новичкам. Плюс я оставлю более полный список IDE для программирования микроконтроллеров.

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

-27

Из этого списка очень хорошо видно, что многие ЯП имеют синтаксис и инструментарий схожий с машинными инструкциями.

• Игры и GameDev.

-28

О да. Это именно то направление, которое побудило очень многих людей увлечься программированием. Многие мечтали о том, чтобы создать свою игру и спешу вас в чем-то обрадовать, а в чем-то огорчить.

3D движок с технологией ray casting в Excel
3D движок с технологией ray casting в Excel

Начнем с того, что я специально поместил это направление в самый конец категорий, потому что игры можно писать буквально на чем угодно. GameDev коррелирует абсолютно со всеми направлениями. Игры можно писать на микроконтроллерах, на основе баз данных, да что там, сейчас набирает фановый тренд создания игр в Excel. GameDev – это, самое креативное направление в программировании, однако и одно из самых сложных. В GameDev взаимосвязано множество IT и не только направлений. Например, дизайн, создание музыки, рисование, создание 3D моделей, аминирование и т.д. Если же рассматривать GameDev именно с точки зрения программирования, то программисты в нем играют ключевую роль. Программист должен очень хорошо продумать структуру игры, а так же ее оптимизацию, иначе потом с проектом может возникнуть много проблем. GameDev имеет свою огромную специфику, вплоть до того, что для разных жанров игр подход может быть совершенно разный. Чтобы, не превращать описание этого направления в отдельную статью, я не буду описывать здесь всю специфику. Пожалуй, напишу отдельную статью на эту тему. А сейчас лучше расскажу про частые проблемы, с которыми сталкиваются новички.

-30

Когда новичок хочет делать игры, он зачастую не понимает с чего начать. Часто многие начинающие GameDev программисты делают ошибку, начиная изучать вместо игровых движков другие технологии или IDE, думая что сначала они освоят программирование в более простом направлении и вернутся к GameDev позже. Однако, это очень плохая затея, потому что каждый игровой движок имеет свою специфику, инструментарий и API. В целом, написание игр имеет множество особенностей. Если вы освоите сначала другое направление и вернетесь к своей мечте GameDev программиста, то быстро осознаете, что все придется осваивать чуть-ли не с нуля. Поэтому, если вы определились с выбором, то изучайте изначально движки и особенности создания игр. Ежели так вышло, что у вас нет возможности на данный момент изучать GameDev, потому что уже изучаете другое направление, то не расстраивайтесь. Как я писал раньше, игры можно писать на чем угодно. Причем, если вы будете создавать игры без использования игровых движков, то лучше поймете специфику и особенности создания игр, потому что вы столкнетесь с необходимостью реализации функционала с которым работа в движках сильно упрощена.

Еще одно заблуждение новичков, что создавать игры сразу не получиться. Мол, нужно много времени, чтобы освоить программирование до такого уровня, когда можно создать свою первую игру. Как я писал ранее, способов реализации игр много. Даже если вы только недавно начали программировать, то уже спокойно сможете создать свою первую игру. Да она не будет ААА класса, но и вы пока новичок. Например, если вы не работали с GUI, но умеете выводить текст консоль, то уже сможете создавать текстовые игры. Можно волне удачно создать текстовую RPG. Причем, если вы потом переформатируете ее в бота соц. сети, то ваша игра может стать популярной в узких кругах. Все что потребуется для написания своей текстовой RPG (без бота), это банальные знания работы с условиями, циклами и массивами. Правда еще желательно познакомится с функциями и структурами, которые облегчат вам жизнь, однако без них можно обойтись. В дальнейшем, набравшись опыта и вернувшись к своему старому маленькому проекту, можно будет провести его рефакторинг, посмотрев на свой прогресс обучения.

Небольшая механика пошагового боя написанного мной вначале изучения Python.
Небольшая механика пошагового боя написанного мной вначале изучения Python.

С чего начать свое обучение? Лично я советую начинать с игровых движков. Причем не соваться в сложные движки, по типу Unreal Engine или Cry Engine, а начать с более простых, например Unity, Godot, Defold. Какие ЯП учить? Это зависит от движка. Например, в Unity это ЯП C# , в Defold ЯП Lua, а в Godot, его собственный ЯП GDScript, чем-то похожий на ЯП Python. Так же, еще можно упомянуть довольно простой в освоении движок Game Maker. Он использует ЯП C++. На самом деле есть огромное кол-во движков для создания игр и я думаю вы в любом случае сможете найти то, что вам подойдет, однако я бы вам советовал начинать с тех, что более популярны. Обычно по популярным движкам больше обучающей информации и они больше востребованы среди комьюнити и работодателей.

-33

Небольшая сноска, касаемо Unity. В целом, он новичкам может показаться сложным, хотя он в плане освоения намного проще Unreal Engine или Cry Engine, однако если вам импонирует ЯП C# то лучше начинать обучение с него.

Заключение.

-34

Я больше чем уверен, что эта категория вызовет много споров и разногласий, потому что я многие описал поверхностно, а что-то вообще не упомянул. Однако, у меня не было цели описать все подробно, иначе пришлось бы писать несколько статей в одной, чему читатели явно были бы не рады. Я хотел коротко описать новичкам какие направления в программировании бывают и привести примеры популярных ЯП с маленьким порогом входа, чтобы они могли сразу после прочтения статьи, скачать IDE, найти огромное кол-во уроков и приступить к изучению программирования. Кому программировать понравится, в дальнейшем сами разберутся во всех тонкостях, выбранного ими направления.

Что востребовано на рынке?

-35

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

Есть множество статистик, которые показывают популярность ЯП исходя из разных параметров. Начиная от того, как часто тот или иной ЯП ищут в поисковиках, например индекс TIOBE, до статистик от систем контроля версий (например GitHub) и HR сервисов. Лично я советую прислушиваться к последним. Точнее даже не смотреть всякие статистики, а банально после того, как вы определились с направлением, зайти на любой сервис по поиску работы, фриланса и посмотреть какие ЯП востребованы в вакансиях.

А кто вообще определяет, какой язык сейчас востребован, а какой нет и почему в вакансиях требуются те или иные ЯП? На самом деле востребованность ЯП задают сами же программисты. Я сейчас постараюсь обрисовать всю картину на концептуальных примерах. Дело в том, что когда вы устраивайтесь работать в молодую организацию или туда, где не сильно используют IT технологии, вы будете первопроходцем, основателем IT среды. Грубо говоря то, что вы выберите для решения рабочих задач. Например, вашей организации потребовалась CRM система и вы написали ее, скажем на С++. В итоге, организация имеет систему, которую нужно постоянно расширять, а это значит, что для организации теперь востребован человек умеющий писать код на С++. Потом для вашей организации нужен, сайт. Вы сделали его на Python и вот теперь, уже организации требуется программист на Python. Когда вы будете увольняться, то при поиске замены в вакансии укажут, что требуется умение программировать на C++ и Python. Или они наймут сразу 2-ух специалистов, которые будут заниматься только своим ЯП. Так формируются требования в вакансиях и собственно популярность тех или иных ЯП. По идее можно вывести цитату: «Востребованы те языки программирования, на которых вы программируете свои проекты».

Куда поступать? (очень много важной информации)

-36

Это пожалуй, самый важный вопрос перед выпускниками. Я затрону поступления в ВУЗ-ы, колледжы, школы программирования, самообучение, менторство и устройства на первую работу.

ВУЗ.

-37

Начну с самого популярного, а именно с поступления в ВУЗ. Я не буду говорить банальные вещи, что вышка сейчас у каждого дворника, нигде не котируется или наоборот, что без вышки у нас человек - не человек. Все эти мнения по своему правильны, но нас интересует вопрос, что нам может дать ВУЗ и куда поступать, чтобы не просиживать штаны 4 года, а если поступили в плохой ВУЗ, то как исправить положение.

Начнем с главного вопроса, а нужен ли ВУЗ программисту? На самом деле ответ на вопрос очень простой: все зависит от ВУЗ-а. Если вы поступили в хороший ВУЗ, где имеется отличная IT кафедра, то польза от него вам безусловно будет. Если же вы поступили, в ВУЗ, где учебные программы сильно отстают от инноваций, а учеба забита ненужными предметами, то вы только зря потеряете время.

На самом деле подбор ВУЗ-а, довольно сложное занятие. Многие выпускники часто не имеют права выбора и идут туда, где хватает баллов ЕГЭ, по принципу лишь бы взяли. Такой подход в корне не верен и позже объясню почему.

-38

Так какие особенности существуют в подборе ВУЗ-а? На самом деле их очень много, причем чтобы осознавать куда поступать, надо понимать некоторые организационные моменты обучения.

Начнем с того, что ВУЗ-ам, наверное сложнее всех, из учебных заведений подстраивать свои учебные программы под востребованные профессии на рынке труда. Главная проблема в создании актуальных учебных программ - это банальная бюрократия. Дело в том, что есть установленный список уровней квалификация для специальностей и должностей.

-39

Ссылка на приказ

Если посмотреть на расположение по уровням квалификации, то ВУЗ готовит специалистов, принадлежащих с 6 по 9 уровням квалификации. Проблема в том, что чем выше уровень квалификации, тем больше требований к разработке учебных программ, а поскольку ВУЗ-ы готовят выскоуровневых специалистов, то требований к учебным программам в разы больше, чем скажем к СПО или ДПО (среднее специальное и дополнительное образование). Поэтому ВУЗ-ам сложнее всех угнаться за актуальными направлениями на рынке труда.

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

Собственно возникает вопрос, а где ее найти? Узнать их можно только в ВУЗ-ах, потому что каждый ВУЗ делает свою учебную программу для каждой специальности. Конечно, есть сайты, которые пытаются собрать и стандартизировать большинство учебных программ, например этот, однако все равно лучше уточнять именно в ВУЗ-е, куда вы хотите поступать.

Думаю не стоит объяснять, что какими предметами наполнена учебная программа будет напрямую влиять на эффективность вашего обучения. Правда сами предметы могут мало что сказать. Желательно узнать, что конкретно вам будут преподавать. Если ВУЗ обучает современным технологиям и ЯП, то вы определенно получите от него пользу, а если вас будут обучать какому-нибудь паскалю, то какой смысл вам тогда идти в такой ВУЗ?

Как узнать больше конкретики? Есть много способов. ВУЗ-ы часто перед началом сезона заявок от абитуриентов проводят дни открытых дверей, куда вы можете сами придти. Вы можете позвонить в ВУЗ и задать ваши вопросы. Можно познакомиться с недавними выпускниками ВУЗ-а и спросить у них мнение и отзыв. Многие ВУЗ-ы выкладывают всю актуальную информацию у себя на сайтах. И думаю это далеко не все способы.

-40

Еще хотелось бы отметить момент касаемо специальности. Когда вас определят в группу, вы будете учиться на определенную специальность, которая будет иметь свой стандартизированный код. На нее тоже стоит обращать внимание, потому что если вы, например хотите получить диплом инженера-программиста (самая частая специальность для программистов с ВО), но в итоге вас обучают по специальности, например специалист по информационной безопасности, то не ждите, что вам будут при обучении делать уклон на программирование. Нет. Будет уклон на информационную безопасность. К слову, потом это может немного повлиять на ваш поиск работы. Дело в том, что во многих компаниях собеседованиями и резюме занимаются hr менеджеры (по русски кадровики) и они еще как могут обращать внимание на то, что у вас написано в дипломе. Каких-то серьезных проблем с устройством на работу это у вас не вызовет, но в некоторых компаниях может оказать влияние. Правда зачем вам нужны такие компании, однако это уже другой вопрос. Так же, более серьёзные проблемы могут возникнуть при переезде в другу страну. Дело в том, что ваша специальность заграницей определяется именно по вашему диплому (если нет официального опыта работы). Часто, если стране не хватает тех или иных специалистов, то им могут давать разные привилегии и упрощения при переезде, ежели другим эмигрантам. Поэтому, если вы планируете уехать из своей страны после учебы, то тоже обратите внимание на получаемую вами специальность.

-41

Что касаемо магистратуры и PHD. Если честно, то это на ваше усмотрение. Дело в том, что для программиста очень важна практика и чем быстрее вы устроитесь на работу, тем лучше. Будучи бакалавром у вас уже, в плане образования, не будет проблем с устройством на работу. (разумеется если вы хороший специалист). Поэтому, в большинстве случаев магистратура и PHD, это лишняя трата времени, которое вы могли потратить на работу и реальный опыт. Однако, далеко не всегда так. Опять же, если вы собираетесь уезжать из страны, то во многих странах требуются специалисты именно с магистратурой или PHD. Обычные бакалавры котируются все реже. Зачастую магистратура и PHD - это способ растянуть время и избежать армии. В целом, это вполне актуально, потому что армия для программиста, конечно может при очень маловероятных обстоятельствах пойти на пользу, но скорее всего она принесет только больше вреда. Это тоже довольно обширная тема и про нее можно написать отдельную статью. Да и в целом если у вас есть возможность и желание без отрыва от практики или работы получить магистратуру и PHD, то почему нет? Тем более, всегда их можно поучить на заочном обучении, не отрываясь от работы. (с армией кстати не работает, потому что заочная форма не дает освобождение от нее)

-42

Касаемо работы. На самом деле поиск и работа программиста это тоже тема для отдельной статьи, поэтому я затрону ее поверхностно. Как я писал раньше, для программиста важны практика и опыт. Так вот, никакое обучение не даст вам их так же, как работа. Поэтому, устраивайтесь работать программистом, по возможности еще будучи студентом. Поверьте это не тот случай, когда совмещение работы и учебы будет идти во вред. Тут он будет приносить только пользу. Где ее найти? Есть множество вариантов. От банальных бесплатных или платных стажировок, где вас будут обучать и потом рано или поздно платить деньги, до junior вакансий, куда часто берут студентов. Так же, никто не отменял фриланс. Еще можно писать собственный софт и монетизировать его. Способов много и думаю каждый найдет, свой способ заработка.

-43

Если уже поступил в плохой ВУЗ, то что делать? Если вы поняли, что ошиблись с выбором ВУЗ-а, то ни в коем случае не просиживайте штаны с мыслью о том, что вот получу корочку и все наладится. Нет. Корочка сама по себе редко когда играет роль и имеет вес. В большинстве случаев она лишь поможет, в будущем вам дороже себя продать работодателю. Ключевую роль будут играть ваше мастерство и опыт. Если вы пошли в ВУЗ где вас не обучают важным знаниям и не дают должных практики и опыта, то это большая проблема, которую вы должны решить. Я не могу сказать какое-то универсальное решение. У каждого оно индивидуальное. Однако, могу дать несколько вариантов решения и советов. Попробуйте перейти в другой ВУЗ. Подобную операцию обычно провернуть тяжело или невозможно (например в городе просто нет альтернатив), тут все зависит от ВУЗ-ов. Если нет такой возможности или ВУЗ устраивает в других аспектах, то я бы вам посоветовал меньше уделять аремени учебной программе ВУЗ-а и плотно заняться самообучением. Возможно, даже найти хорошую школу программирования, но об этом чуть позже. Как только вы почувствуете, что освоили основы и готовы к работе, начните ее незамедлительно искать. (или любой другой заработок через программирование) Собственно говоря это то, что будет полезно любому студенту программисту. В общем, делайте все, чтобы как можно чаще заниматься программированием.

-44

В заключении темы ВУЗ-ов могу дополнить, что по хорошему ВУЗ-ы нужны для подготовки высокоуровневых специалистов и ученых, а не рабочих. Дело в том, что программисты - это все же больше рабочая специальность, потому что она требует довольно много практики, а не теории, хотя последняя тоже важна. Однако, если вы живете в СНГ, то всю печальную историю с нашим ВО, вы думаю прекрасно знаете. Если говорить про реальность, то лично я считаю, что для СНГ программистов по факту ВО нужно не всегда. Даже по той причине, что ВУЗ-ы далеко не всегда могут дать актуальные знания и практику. Так же если посмотреть на проф. стандарт программиста (код 06.001), то можно заметить, что для него актуальны уровни квалификации с 3 по 6. Из них только 6 уровень имеет наличие ВО.

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

Если сделать вывод из всего мной написанного, то идти в ВУЗ имеет смысл, только если он вам даст реальную пользу и обучит актуальным для будущей работы навыкам. Идти в ВУЗ ради корочки, просиживая штаны точно не стоит и потом вам аукнется большими проблемами. Если же у вас нет альтернатив или возможности пойти в нормальный ВУЗ, например сдали плохо ЕГЭ, или не хватает денег для обучения, возможно просто нет такого в вашем городе, то я рекомендую вам задуматься, о обучении в учреждениях СПО и ДПО. ВО можно получить позже в том же заочном режиме, когда наберетесь опыта, устроитесь на работу и накопите денег или решите иные жизненные проблемы. Причем, если вы закончите колледж и пойдете в ВУЗ, то вы начнете обучение не с первого, а порой не со второго курса. При чем всегда есть заочное обучение. Поверьте, если у вас будет стоять выбор между, колледжем, где вас обучат востребованным технологиям и ВУЗ-ом, который вас толком ничему полезному не обучит, но даст корочку, для программиста лучше выбрать первое. Если вы думаете, что после колледжа вас никуда не возьмут и нельзя устроится на нормальную работу, то я просто оставлю скриншот резюме этого парня. К слову, я знал лично много программистов, которые закончили только колледж и добились больших успехов.

-45

Так же я хочу оставить несколько интересных ссылок, которые вам могут помочь.

Справочник востребованных на профессий. Это официальный список на портале Гос услуг РФ, востребованных и актуальных профессий на рынке труда. Рекомендую перед обучением его немного изучить. Там все профессии вперемешку, но найти IT специальности не составит труда.

Список проф. стандартов. Все что связано с IT сферой находится в категории "06 Связь, информационные и коммуникационные технологии"

Колледж.

-46

Поскольку разговор о ВУЗ-ах плавно перешел к СПО, то думаю уместно следующим шагом рассказать о нем.

У колледжей, как и у ВУЗ-ов, есть много стереотипов мол: "да это ПТУ", "зачем эта шарага нужна?", "туда попадают только тупые" и т.д. Опять же я не буду тут разглагольствовать на эти темы и расскажу конкретно в чем плюсы и минусы обучения для программиста.

-47

На самом деле колледжи имеют много общего с ВУЗ-ми. На вопросы, "Как подобрать колледж?", "Как не просиживать штаны?", "Что делать если уже поступили в плохой колледж ? ", можно ответить очень схоже с тем, что я писал про ВУЗ-ы. Однако, у колледжей есть и свои отличия. Самое главное отличие, дающие колледжам преимущество - значительно меньше бюрократии при создании новых учебных программ, потому что колледжи готовят специалистов, имеющих уровень квалификации ниже, чем у специалистов ВУЗ-ов. Отсутствие большой бюрократии позволяет колледжам быстрее обновлять и создавать учебные программы, что в свою очередь позволяет давать своим студентам актуальные знания по современным технологиям и выпускать специалистов востребованных на рынке труда.

Любопытный факт, в уровнях квалификации под СПО выделено всего 3 пункта. В то время как на ВО выделено четыре. Еще два пункта выделено на ДПО и первый уровень вообще не требует образования. Выходит, что почти половина уровней с образованием относится к ВО. На самом деле, это очень плохая тенденция и при нормальной системе образования все должно быть иначе. ВУЗ-ы не должны готовить рабочих, они должны готовить ученых и сильно узких специалистов в определенных сферах. Однако в СНГ мы имеем что имеем.

Колледж можно закончить на год-два раньше, чем ВУЗ. Если вы пойдете в колледж после 9-ого класса (в каждых странах с классами по разному, но суть в том, что вы захотите получать полное образование не дополнительно в школе, а в колледже). Для программиста это несомненно плюс, потому что можно быстрее устроится на работу и получать необходимую практику и опыт.

Собственно, на этом преимущества колледжей заканчиваются, но не отличия и особенности.

Студентам колледжей, так же дают отсрочку от армии. К слову, раньше ее давали только тем, кто шел после 9-ого класса. С недавнего времени, ее дают всем студентам и что самое важное на все время обучения, а не только до исполнения 20 лет. Однако, если вы читаете эту статью не в 2020 году, то лучше стоит уточнить, потому что военкоматы любят менять законы чуть-ли не с каждым призывом. Опять же, тема для отдельной статьи, потому что очень много нюансов.

Если вы имея диплом колледжа, захотите поступить в ВУЗ, то у вас будут привилегии. Вам не нужно снова сдавать ЕГЭ и скорее всего вы начнете обучение не с первого курса. Однако, предоставление этих привилегий зависит сугубо от ВУЗ-ов и есть ли у них программа по приему абитуриентов с СПО.

Первый курс всех колледжей абсолютно всегда обучает вас сжатой программе 10-11 класса. Если вы идете в колледж после 11 класса, то начинаете обучение сразу со второго курса. К слову, если вы поступили после 11 класса, то вы все равно сэкономите один год.

Поступление в колледжи может проводится по разным критериям, а не только по ЕГЭ, ОГЭ. Вас могут принять на основе аттестата или вступительных экзаменов. Для тех, кто безнадежно завалил экзамены в школе, это неплохой вариант.

Я все же немного затрону вопрос контингента. На самом деле для программистов в этом плане разницы большой нет, потому что обычно в программисты идут довольно неплохие и умные люди, поэтому не стоит боятся, что в колледже вас будет окружать быдло.

Если подвести итоги, то для программистов колледж тоже является неплохим выбором для обучения. Во всяком случае точно не является ошибкой. К слову, по окончанию обучения вы скорее всего получите специальность техник-программист, которая вполне себе устроит HR менеджеров. В общем, колледжи не так плохи, как многие о них думают.

Школы программирования.

-48

Уже по традиции начну с частых заблуждений, что "все это обман", "все есть бесплатно в интернете" и т.д. Опять же, по традиции обо всем по порядку.

До этого речь шла, в основном о более классических образовательных учреждениях. Школы программирования, согласитесь таковыми сложно назвать. Многие люди выбирают их, потому что по их мнению в колледжах и ВУЗ-ах они будут просиживать штаны без пользы, а пойдя в школу программирования, через год-два уже будут работать на высокооплачиваемой должности. На самом деле в их предположениях есть часть правды, но все не так однозначно.

Опять же, чтобы вы лучше разобрались в теме, нужно объяснить некоторые аспекты данного сектора образования. Дело в том, что школы программирования с точки зрения государства делятся на два типа. Это те, что имеют аккредитацию и фактически являются ДПО и те, что ее не имеют. Школы программирования, которые имеют аккредитацию, могут по окончанию обучения выдать вам сертификат, свидетельство или диплом специалиста установленного образца, который вполне себе будет иметь вес и подтверждать, что вы все же не самоучка. Школы программирования не имеющие аккредитацию, понятное дело, не могут выдать вам официальный документ об окончании обучения. Чаще всего они дают сертификаты на своем бланке или пишут рекомендации. Если вы сейчас думаете, что все понятно и просто надо выбрать школу программирования с аккредитацией и вот она работа через год, то не все так просто. На самом деле и те и те школы программирования заняли свою нишу, плюс все они могут вас обмануть. Сейчас я объясню почему.

-49

Давайте сначала разберемся с аккредитованным школами программирования. В принципе, их можно приравнять к учреждениям ДПО. Следовательно, если смотреть с точки зрения законодательства, то они так же, как и ВУЗ-ы с колледжами готовят специалистов определенного уровня квалификации и если посмотреть на список уровней, то требования к ДПО очень низки. Думаю вы уже поняли к чему я клоню. К тому, что у учреждений ДПО возникает меньше всего бюрократии при создании учебных программ, что дает им возможность обучать специалистов максимально востребованным технологиям и давать актуальный опыт. Это несомненно огромное преимущество перед учреждениями ВО и СПО.

Однако, это еще не все. Школы программирования у которых вообще нет никакой аккредитации собственно никак не ограничены с точки зрения законодательства. Такие школы могут создавать ни с кем не согласованные учебные программы, что дает полную свободу к подходам обучения и выборе технологий.

У вас скорее всего уже возник вопрос. Так зачем нужны не аккредитованные школы программирования, если они все равно не дадут сертификат\диплом\свидетельство установленного образца? И я вам отвечу, для того чтобы обучать своих клиентов новейшим технологиям, которые порой вообще никак не прописаны в законодательстве. Приведу насущный пример. Сейчас активно развивается такое направление как AR (дополненная реальность) и даже сейчас учреждений обучающих работе с ней не так много. Я уже молчу про аккредитованные учебные учреждения. А несколько лет назад школ программирования, которые имели курсы по AR технологиям, было единицы и разумеется никакой аккредитации они не имели, потому что для законодательства таких технологий в принципе еще не существовало. Однако, они пользовались большой популярностью, потому что AR очень перспективна. Думаю не стоит объяснять, что школы программирования без аккредитаций почти всегда нацелены на обучению инновационных технологий, впереди планеты всей. Собственно поэтому они и полезны.

-50

Теперь пришло время поговорить о темной стороне школ программирования. Пока я рассказывал про преимущества, у многих читателей уже скорее всего сложилось мнение, что помимо быстрого обучения, в школах программирования из вас еще сделают специалиста по инновационным технологиям. Как бы не так. Да, все что я описал имеет место быть, но главное преимущество школ программирования является и их главным недостатком. Да, к формированию учебных программ в разы меньше требований и бюрократии, а порой их и вовсе нет. Но при этом исходя из законодательства, эти программы имеют самые низкие уровни квалификации. В случае же со школами программирования без аккредитации, законодательством их учебные программы и документы вообще не признаются. Поэтому, хоть ваши сертификаты, дипломы и т.д., выданные в школах программирования будут иметь определенный вес для HR, однако не особо большой (если у вас нет образования выше среднего полного). В то время, как документы выданные без аккредитации, для HR никакой роли играть не будут, поэтому их вам скорее выдают, что называется на память.

-51

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

Школы программирования, могут обещать вам что угодно. Любые красивые слова и обещания о всяких инновациях, устройстве сеньором в крупную компанию уже через год, отправить через пол года на стажировку в большой проект и т.д. Как вы понимаете, реальное наполнение учебных программ может вообще не соответствовать обещаниям. Очень часто случается грустная история, когда человек тратит большие деньги и много времени на обучение в школе программирования, где ему в ходе всего курса давали записи вебинаров, с приложенными задачками уровня школьных олимпиад, а в конце обучения устраивали стажером в фирму-партнера по договоренности, оплачивая эту стажировку с части денег, которые отдал сам человек за курс. После чего на стажировке, его не подпускали к реальным задачам, потому что, научиться программированию и решению задач по вебинарам невозможно. В итоге, человек потратил деньги и время зря, особо не добившись результатов. Чтобы не оказаться в такой ситуации нужно очень тщательно подбирать школу программирования.

В школах программирования, порой встречаются не особо высококвалифицированные преподаватели. Они могут на своих вебинарах или практикумах обучать клиентов довольно плохим и вредным вещам. Это не так критично новичкам, потому что обучить основам программирования, лично я считаю может любой программист имеющий опыт в разработке. Однако, сильно критично уже знающим людям, которые решили пойти на курсы для поднятия своего профессионального уровня.

-52

Как же выбрать школу программирования, чтобы не оказаться у разбитого корыта? На самом деле не так сложно, как может показаться. Самое банальное, что можно сделать - это почитать отзывы, посмотреть обзоры (желательно от сторонних программистов), посмотреть бесплатные курсы той школы, которая вам приглянулась. У них нет бесплатных курсов? Обычно это не беда, потому что есть много пиратских ресурсов в интернете, где частично сливают курсы в общий доступ.

Если вы думаете, что можно просто так скачать курсы и зачем тогда платить за обучение? Да можно, но обучение по записям это скорее самообучение. По факту, вы просто нашли гайды в интернете, только более структурированные и зачастую устаревшие. Кстати, последнее для новичков редко играет роль, потому что научиться основам программирования можно спокойно, хоть по курсам пятилетней давности. Просто вы не будете знать актуальную специфику, которую все равно потом придется наверстывать. Поэтому, если есть возможность лучше по мимо самообучения заниматься с преподавателями или ментором.

-53

Теперь о важных моментах, на которые стоит обратить внимание при подборе школ программирования.

Начну с самого главного очень важно, чтобы в течении всего курса с вами занимались преподаватели и желательно, чтобы не через email раз в неделю с унылыми комментариями вашего кода, а как можно чаще и больше. Если курс обучения программированию состоит только из записей вебинаров и каких-то задачек в конце, то новичкам он крайне не рекомендуется. Я уже на примере рассказал, чем это для вас может кончится.

Школа программирования должна вас буквально натаскивать на написание и рефакторинг кода. Если преподаватели почти не проводят ревью вашего кода, то какой смысл такого обучения? Преподаватели должны вас разворачивать с плохим кодом, пока вы не напишите решение задач оптимально и качественно. Если во время практики преподаватели докапываются до каждой мелочи и грамотно объясняют почему вы реализовали решение задачи плохо, то вы попали в хорошую школу программирования, где скорее всего (если вы сами не прекратите уделять внимание обучению) из вас сделают хорошего junior программиста.

Желательно обратить внимание на формат обучения. Если школа программирования очная, то лично мое мнение это лучше, чем если вы будете сидеть дома, проходя обучение удаленно. Да, я в курсе, что есть условный скайп, remote desktop или чатик вебинара, но очно все же быстрее и проще общаться и перенимать опыт. Понятно, что не всегда получиться обучаться очно, однако обращайте внимание на то, чтобы вы как можно больше могли общаться с преподавателями и с вами было как можно больше практических занятий.

-54

Как я писал ранее, школы программирования часто любят делать пестрые заголовки с обещанием обучить вас сложным инновационным технологиям с нуля, обещая, что после их освоения вы устроитесь на работу с хорошей зп. Например, я ранее упоминал, что сейчас активно продвигают курсы по Data Science и Big Data. Мол, вы сможете стать специалистом по этим направлениям условно за год, с нуля. На самом деле это довольно сложные направления, требующие знаний в разных областях помимо программирования. Чтобы научиться работать с Big Data, сначала нужно понимание того, как в целом работают БД, иметь хоть небольшой опыт в их создании и проектировании. Только тогда вы будете, по-настоящему понимать, материал курса. Обычно под подобными громкими заголовками, в самих курсах содержится море теоретической информации, которую вы забудете через месяц, после окончания бучения, потому что у вас не будет понимая темы без минимального опыта и знания основ. Я не говорю, что не бывает хороших курсов. Еще как бывают. Если в учебной программе курса все структурировано и вас ведут постепенно с самых основ, давая теорию, так чтобы вы ее тут же опробовали на практике, то вы попали в хорошую школу программирования, которая даст вам опыт и знания. Если же на вас сразу вываливают огромную кучу теории, в которой вы ничего не понимаете, то такой курс - это пустая трата денег и времени.

Если придерживаться этих критериев, то скорее всего вы выберите школу программирования, где не потратите зря время и приобретите опыт. Скорее всего, я еще не назвал много аспектов и особенностей. Только, на мой взгляд, самые важные. Если вы хотите дополнить меня в комментариях я буду только рад.

-55

После того как мы разобрались с особенностями школ программирования не плохо было бы пояснить, так кому они нужны. Ответ будет для разных людей индивидуальным. Если, вы выпускник школы (обычной), то я бы вам не советовал выбирать школу программирования, как основное учебное заведение. Лучше пойти в ВУЗ или колледж. Если, вы уже имеете ВО или СПО, но при этом по специальности, которая вам не нравится, то школы программирования вполне помогут вам сменить профессию. К слову, если вы только что закончили колледж, но вам не нравится полученная вами специальность, то стоит по возможности задуматься о поступлении в хороший ВУЗ. Так же, школа программирования - это хороший выход из ситуации, если вы попали в плохой ВУЗ или колледж, который не можете сменить. Скорее всего, вы сможете легко совмещать школу программирования с основной учебой. Порой, хорошая школа программирования быстрее обучит и поможет вам устроится на работу будучи студентом, чем если бы вы этим занимались самостоятельно. Так же, школы программирования - это хорошее решение, когда вы уже программист и хотите освоить новое направление или больше углубится в изначально выбранное.

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

• Менторство.

-56

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

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

Качество вашего обучения, очевидно полностью зависит от ментора и его опыта. Чтобы не класть все яйца в одну корзину, вы можете нанять нескольких специалистов одновременно.

Как найти хорошего ментора? Тут все индивидуально. Даже, если ментор окажется хорошим специалистом, всегда есть шанс, что вы с ним не сработаетесь, поскольку в менторстве преобладает личное общение. Вполне возможно, вам может плохо подходить такой способ обучения. Еще менторство, порой можно встретить в школах программирования, но только на хороших курсах.

-57

Кому и когда нужно менторство? Менторство может подойти всем. Людям с опытом, оно поможет разобраться с новыми технологиями быстрее и глубже, чем при самостоятельном изучении. Новичкам, ментор не даст заплутать в дебри. Будет следить, чтобы обучение продвигалось равномерно и эффективно. Ментор быстрее расскажет вам о основной специфике и важных моментах, чем если бы вы сами их вычитывали из документации или узнавали путем проб и ошибок. Это очень важно, например в web разработке, где новые технологии появляются каждый год и даже опытному программисту сложно не запутаться, работая с множеством постоянно развивающихся технологий.

Новичкам менторство тоже будет полезно, однако если у вас нет образования, то лучше использовать менторство, как дополнение к основной учебе. Если вы имеете образование и думаете сменить свою профессию, то менторство это хороший способ узнать, а подходит ли она вам. Хороший ментор быстро введет вас в курс дела и даст информацию, которая поможет вам определится с решением быть программистом. Так же, менторство обойдется вам дешевле, чем школы программирования.

Если подвести итог, то менторство, это хороший способ перенять опыт и знания у действующего специалиста.

Самообучение.

-58

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

Как вы уже поняли от самообучения вы никуда не денетесь, потому что банально никто за вас обучаться программированию не будет. Вы должны сами проявлять инициативу и в первую очередь обучаться самостоятельно. Все другие способы обучения, описанные выше по факту являются вспомогательными. Менторство и школы программирования нужны, для того, чтобы структурировать и ускорить ваше самообучение, а колледжи и ВУЗ-ы по мимо структурирования вашего обучения, порой нужны работодателям. Если говорить про работу, то она вам будет давать много опыта и задач, которые будут вынуждать вас к самообучению.

Однако, не стоит боятся самообучения в программировании. Обучаясь новым технологиям чаще всего вы будете сильно упрощать себе работу или открывать для себя новые возможности.

Заключение.

-59

Думаю, в заключении будет уместно ответить на самый главный вопрос: а нужно ли программисту образование? Определенно да. Дело в том, что оно не только поможет вам структурировать обучение, но и позволит влиться в комьюнити программистов, что тоже очень важно, потому что вы обзаведетесь связями и найдете единомышленников. Плюс, общение с другими программистами, очень положительно будет отряжаться на вашем обучении и опыте. Так же, образование в учебных заведениях даст вам еще и жизненный опыт.

Как организовать свое обучение?

-60

Довольно важная и сложно решаемая проблема. Допустим, с тем что изучать и где обучаться вы определились, но сразу возникает ряд банальных вопросов: "А с чего начать?", "Какие могут возникнуть трудности?", "Как мотивировать себя?" и т.д.

На многие эти вопросы найти ответы не так сложно. На часть из них могут ответить Road Map (дорожные карты). Обычно в них описан полный путь программиста от простого к сложному, для каждого ЯП или технологии. Используя дорожные карты, можно выстроить план обучения, понять с чего начать и в дальнейшем посмотреть проблемные места в освоении.

Пример Road Map для C# WEB программистов.
Пример Road Map для C# WEB программистов.

Стадии становления программистом.

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

-62

1. Начало обучения.

Думаю, на этом пункте не стоит долго задерживаться. Да, у многих всегда возникают вопросы: "А с чего начать?", "Как лучше и эффективней обучаться?" На самом деле будете, вы изучать свой первый ЯП самостоятельно, по урокам из интернета или пойдете в учебные учреждения без разницы, принцип изучения основ всегда один. Вы будете многое все равно осваивать методом тыка, либо повторяя и запоминая, то что написано в гайдах или вебинарах. Как я уже раньше писал, чтобы начать обучаться программированию, нужно начать программировать. Да, вначале ваши программки будут простыми, но всегда обучение надо начинать с малого и двигаться к большему. Тем-более не всегда простая программа - плохая программа. Новички вполне могут создавать софт, который будет полезен людям. Да, я скорее всего вам уже надоел. но это тоже тема для отдельной статьи. Еще один очень важный момент, о котором я писал ранее - не начинайте изучение программированию со сложных и малоизвестных ЯП и технологий. Обычно информации в интернете по ним мало, на рынке труда они не востребованы и были созданы для решения узкоспециализированных задач. Если вы начнете свое обучение с них, то вам может показаться программирование очень сложным и скучным.

2. Начальные навыки.

-63

На кривой этот этап является одним из пиков в обучении программированию. Сейчас я объясню почему, но до этого нужно сказать, что можно считать начальным навыком. Лично я считаю им, когда программист пересекает черту, переступив которую может создавать небольшие, но полноценные приложения. Многое зависит от выбранного вами направления, но можно вывести универсальные умения, которые можно назвать начальными. Лично я выделю следующие: переменные, условия, циклы, массивы, функции, структуры.

Еще желательно знать классы, но с ними нужно быть осторожным. Вначале пути лучше использовать классы, как более гибкую и функциональную замену структурам, потому что они являются основной и неотъемлемой частью ООП. Дело в том, что когда речь доходит до ООП, то новичкам очень сложно понять его принципы, я уже молчу о их применении на практике.

Если говорить о универсальных возможностях ЯП, это работа со строками и ее операциями, работа с файлами и умение создавать хотя бы простой GUI. Сейчас с последним проблем нет, потому что конструкторов пользовательских интерфейсов очень много. Чаще всего они встроены в IDE и создаются без написания кода. Однако, порой для создания GUI потребуется знать языки разметки, как HTML для web, или XAML для WPF (C# ). Однако, для них тоже есть конструкторы. Для того же HTML их огромное множество.

В целом, этих знаний будет достаточно, чтобы создавать свои первые приложения.

Почему эта стадия пиковая, а дальше идет спад? Потому что, обучаясь основам вы будете так или иначе вовлечены в процесс программирования, что будет давать вам мотивацию для обучения. Однако, освоив начальные навыки и приступив к созданию приложений, ваша мотивация может заметно начать падать. Столкнувшись с реальными задачами, вы очень быстро осознаете, что программирование намного сложнее, чем казалось вначале обучения и это нормально. Так же вы поймете, что из себя представляет эта профессия, прочувствуете ее плюсы, минусы и точно поймете хотите вы заниматься программированием дальше или нет. Думаю будет логично перейти к следующей стадии.

Очень важно не оставаться бесконечным новичком. Есть люди, которые остаются новичками в течении нескольких лет и этого вы должны бояться. Поэтому, как только вы научитесь основам программирования, то сразу применяйте свои знания на практике.

3. Принятие профессии.

Немного философская, но при этом очень важная стадия в обучении. Выполняя те или иные задания, вы столкнетесь с множеством проблем, решению которых вас не обучали и вы должны будете искать или придумывать их решения самостоятельно. В этом и заключается большая часть работы программиста. Вы очень быстро осознаете, что уметь писать код недостаточно и смысл программирования заключается в проектировании, продумывании структуры приложений и решении проблем. Будучи новичком, у вас не будет больших знаний, для решения тех или иных проблем. Многое вы не будете знать и тем более применять в коде. Однако, пройдя предыдущий этап, вы будете примерено представлять, чем является работа программиста. Эта стадия обучения является переломным. Когда человек обучился основам, попробовав себя в решении реальных проблем, зачастую решает для себя дальше развиваться, как программист или все бросить. Нет, я не буду сейчас говорить, что "программист - это призвание для избранных". Нет. Каждый может научиться программировать, но не каждый захочет этому посвятить свою жизнь. Если вы поймете, что программирование не ваше, то эта стадия будет для вас конечной. Если вы получаете удовольствие от программирования, вас не обременяет данное занятие, то ваш путь продолжится. Поэтому, далее кривая ползет вверх. Это промежуточная стадия, которая может возникнуть, как во время второй, так и во время четвертой стадий, не воспринимайте ее, как четкий ориентир, что вы точно после окончания курса встанете перед сложным выбором. Обычно он происходит быстро и неосознанно. Если вам не нравится программирование, то вы банально его забросите. Если оно вам нравится, то вы будете углубляться в него все больше и больше.

4. Первые проекты.

-64

В описании предыдущих стадий я часто говорил слова "программы" или "приложения". Я это делал специально, чтобы показать их простоту. Вы можете долго создавать и монетизировать только их. Однако, рано или поздно вы придете к написанию или поддержке больших приложений. Скорее всего, вы будете заниматься разработкой в команде, что даст вам огромное кол-во драгоценного опыта. Это довольно важный этап в карьере любого программиста. Умение работать в команде очень важно. Да, вы можете вполне быть успешным программистом одиночкой. Создавать приложения и проекты качественно и иметь опыт с разными ЯП и технологиями. Однако, каким бы хорошим специалистом вы не были, команда справится с поставленными задачами намного быстрее и эффективнее, чем вы в одиночку. Кстати, ни что не мешает вам одновременно, быть в команде и заниматься своими личными проектами. Разве что только свободное время и ваши силы. В целом, на этой стадии вы уже точно перестанете быть новичком и станете минимум middle программистом. Опять же, каких-то четких ориентиров нет. Все зависит от ЯП и вашего опыта.

5. Проблемы.

-65

Думаю, стоит пояснить какие проблемы я имею ввиду. Это не банальные проблемы, по типу ошибок в коде при отладке. Я говорю о проблемах, связанных с организацией работы программистов и структуры проекта. Выполняя свои первые проекты, вам будет очень тяжело многое осознать. Скорее всего, к этому времени вы уже будете знать ООП и реализацию части паттернов, но все равно будете часто допускать ошибки в проектировании проекта (или его части), из-за чего потом будут возникать проблемы. Это нормальное явление с которым часто сталкиваются программисты по всему миру. Почему я поставил эту стадию на пики спада кривой? Потому что очень много программистов могут долгое время стагнировать на этой стадии. Многие программисты уже обучившись определенным технологиям не хотят изучать и применять новые. У них развивается своеобразный консерватизм. Ни для кого не секрет, что есть большая часть программистов, любящих разводить холивары на темы какой ЯП или IDE лучше, нужны ли паттерны, а порой споры ведутся о целых направлениях. Так, например разработчики мобильных приложений, считают, что веб - мертв, веб программисты в свою очередь считают, что мертва desktop разработка, а программисты микроконтроллеров, считают что все другие программисты несерьезны и т.д. Да что там, загляните в комментарии (если они есть) под этой статьей и вы увидите, как люди разводят споры на все эти темы. Мы все не раз слышали простую истину: ЯП и технологии - это лишь инструменты для решения задач и споры о том, какой из них лучше для решения всех проблем довольно странные.

На самом деле IT консерватизм очень опасен. В следствии него специалист стагнирует, а порой и деградирует в профессиональном плане. Он появляется на стадии, когда программист уже имеет опыт в разработке и привык к определенному инструментарию. Однако, его область знаний или инструментарий со временем устаревает. Тогда программист начинает их защищать, тем самым вместо обучения новому, он оправдывает себя и свою значимость перед собой и обществом. Это нормальная психологическая реакция человека. Однако, вопрос лишь в том, как быстро он осознает, что пришло время двигаться дальше и изучать новые технологии. В наше время IT развивается семимильными шагами и всегда нужно быть готовым к тому, что инструментарий, который вы используете может в любое время устареть. Чаще всего, это происходит по причине появления на рынке более лучших аналогов. IT на данный момент, является одной из самых новаторских сфер, которая точно плохо подойдет людям склонным к консерватизму. Именно поэтому, вы всю свою карьеру будете постоянно самообучаться новым технологиям. Поэтому, данная стадия тоже во многом переломная. Многим не нравится темп IT сферы и они из нее уходят на этой стадии. Многие останавливаются в проф. развитии и стагнируют на протяжении всей оставшейся карьеры. Однако, большинство на этой стадии осознает, что программирование заключается не в набирании кода по заученным паттернам или законам ООП, а в мышлении и логике программирования. Именно тогда приходит полное осознание, что ЯП и технологии это лишь инструментарий, а по настоящему важно быстро, качественно и комфортно решать рабочие задачи.

6. Применение новых технологий.

-66

Эта стадия является результатом прохождения предыдущей. Вы начнете использовать ЯП и технологии, как инструмент, а основными задачами, для вас станет не набор кода, а грамотное проектирование. Учитывая, что у вас есть определенный опыт, вам будет проще осваивать на ходу новые технологии. Стоит сказать тут тоже нет четкого ориентира после которого, вы начнете все осознавать, применяя новые технологии. Нет. Вы можете осознать это и с самого начала обучения, тем самым пропустив предыдущий этап.

7. Становление специалистом узкого профиля.

Рано или поздно вы поймете, что быть универсальным программистом очень сложно. Я уже молчу о равномерном преуспевании во всем. Да, принципы программирования везде примерно одинаковые, но специфика и подходы к программированию в направлениях и их подкатегориях сильно различаются. Вы скоро осознаете, что нужно углубляться в одно направление. Думаю, к тому времени вы уже будете отчетливо понимать чем вам нравится заниматься.

О кривой в целом.

Она очень примерная. Зачастую, ее этапы будут наслаиваться друг на друга или проходить одновременно, однако я попытался выделить ключевые моменты и структурировать их.

Небольшие советы.

-67
  • Лично я советую новичкам придерживаться Road Map по вашему ЯП или технологии, чтобы продвигаться от простого к сложному.
  • Искать гайды и курсы, которые вы понимаете прямо сейчас. Нет смысла слушать лекции, если вы не понимаете автора.
  • Не изучайте, то что в данный момент не можете применять на практике. Например, не стоит изучать Laravel толком не зная основ PHP.
  • Всегда будьте мотивированы. Мотивация очень важный фактор в вашем обучении. Чтобы она у вас была всегда ищите или ставьте перед собой задачи, которые вам интересно выполнять.
  • Как можно быстрее начните создавать собственные проекты. Лично я начал свой путь программиста, когда меня на первом курсе колледжа попросили создать сайт. Я тогда знал только основы С++, а в web только HTML. Разумеется тогда я купил хостинг, домен и просто установил, настроил CMS (что уже было для полного новичка хорошим опытом). Потом я поддерживал этот сайт, в ходе чего научился CSS, BootStrap, основам PHP, JavaScript и получил очень много полезного опыта, который помог мне в будущем обучении. Поэтому, любой ваш самостоятельный проект, даже если вы столкнетесь с множеством проблем или не закончите его, будет очень важным опытом для вас.
  • Не прислушивайтесь ко всем подряд. Сейчас в сфере IT множество советчиков, которые конечно же все сеньоры с огромным стажем. Правда, зачастую они только разводят холивары и дают вредные советы. Например, много кто из них любят новичкам советовать читать вначале обучения специфическую литературу и изучать ненужные новичку части теории.
  • Если вас просят создать приложение, но вы неуверенны в том, что справитесь - скажите об этом потенциальному заказчику. Возьмите небольшое время на попытку и если вы поймете, что в состоянии сделать проект, то занимайтесь проектом, если вы понимаете, что не осилите проект, то откажитесь от работы над ним. Так вы не будете давать пустых обещаний и заказчик будет точно знать, сможете ли вы выполнить нужный ему проект.
  • Заведите привычку выкладывать все свои проекты в систему контроля версий, например в GitHub. Даже если вы делаете простую учебную программу, выложите ее как приватный репозиторий. При устройстве на работу вам это сильно поможет. Плюс все ваши проекты будут в облаке, что очень удобно.
  • При обучении в ВУЗ-е или колледже, вы будете проходить практики на предприятиях. Во время этих практик вы должны устроиться на стажировку на место работы, где будете именно программировать. Если у вас уже есть работа, то можно проходить практику на ней.

Пока я остановлюсь на этих советах. Давать советы новичкам можно очень долго, поэтому пожалуй хватит. Надеюсь они вам помогут.

Чему вас могут не научить?

-68

Где бы вы не обучались, работодатели требуют определённые навыки, которым зачастую не обучают в учебных заведениях, из-за сложностей создания актуальных учебных программ. 

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

Например, я могу точно сказать, что мало где обучают работе с системой контроля версий (Git и ему подобные). Казалось бы, требование к знанию того же Git давно является стандартным для любых junior программистов. Однако, в учебных программах, обучение системе контроля версий можно не встретить. Причем, от новичков не требуется глубоких познаний. Вполне хватит трех команд: Commit, Push, Pull. Никто вам не выдаст сразу много прав, но основные принципы работы с Git вы знать обязаны.

-69

Небольшая, но хорошая статья на тему git, правда на английском.

Если говорить про обучение в колледжах и ВУЗ-ах, то часто в учебных программах, посвящается много времени ООП, что логично, а так же его трём основным принципам: наследованию, полиморфизма и инкапсуляции. Этим темам будет посвящёно много лекций, однако вряд ли вас будут обучать паттернам программирования, которые в дальнейшем могут облегчить вам жизнь. Да и как работают основные принципы ООП на практике тоже далеко не всегда покажут.

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

Git и паттерны - частое требования в вакансиях, которым вас могут не обучить. Однако, в каждом направлении есть еще и свои требования, которым тоже могут не обучать. Например, если вы решили стать программистом микроконтроллеров, то подразумевается, что вы должны уметь разбираться в электронных цепях и паять. Если, вы стали back-end PHP программистом, то вы должны уметь работать с фреймворками. Вас вполне могут этому не обучить.

Поэтому, самообучение будет для актуально всегда. Особенно когда вы будете студентом. Если у вас в голове есть мысль, что пойдя в учебное заведение вас там всему обучат и сделают специалистом с актуальными знаниями, то нет. Выбросите эту мысль из головы. Хорошим специалистом вы станете только благодаря себе и самообучение будет основным способом для достижения вашей цели. Самообучение всегда должно идти параллельно с основным обучением или работой. Поэтому, не ограничиваетесь учебными программами и изучайте востребованные на рынке труда технологии уже сейчас.

Немного про поиск работы и монетизацию.

-70

Раз я затрагивал тему трудоустройства на работу и монетизации своих первых проектов, то нужно рассказать о возможных проблемах, связанных с этими темами.

Я рассмотрю 3 основных варианта монетизации своего кода - это устройство на работу стажером/junior программистом, фрилансе и самостоятельной монетизации своих проектов. Вполне можно сочетать все сразу, необязательно заниматься только, чем-то одним.

Обычное трудоустройство.

-71

Стадия поиска первой работы всегда волнительна и сложна у большинства соискателей (не только в сфере IT). Во многих странах СНГ присутствует безработица и большая конкуренция за рабочие места. IT сфера тоже не исключение, однако в ней все не так плохо. Хорошие программисты в дефиците во всем мире (СНГ не исключение), поэтому у вас хорошие шансы устроится на работу.

Работать программистом можно как официально, так и не очень. Все зависит от вас и ваших проблем. Например, если у вас нет военного билета или отсрочки, то скорее всего будет сложно устроиться официально из-за ВУ или если у вас проблемы с гражданством, то могут возникнуть большие сложности. Однако, если вам не устроиться официально, то в последнее время всем чаще практикуется становление сотрудника частным предпринимателем (он же ИП, ФОП и т.д.) или самозанятым. Вы оформляетесь не по ТК, а по контракту предоставления услуг. Однако, сразу стоит предупредить, что вы будете платить больше налогов и у вас не будет соц. пакета. Еще есть вариант трудоустройства по гражданскому договору. Для его заключения требуется только паспорт. Однако, он чаще всего заключается на определенный промежуток времени или на предоставление услуг, но кадровики знают, как улаживать такие вопросы. Поэтому, вы рано или поздно найдёте работу, даже если у вас есть какие-то проблемы.

-72

Где ее искать? На бирже труда или сайтах вакансий, как например Head Hunter. На биржу труда вставать необязательно. Она дает определённые преимущества, но имеет и недостатки. Из преимуществ: небольшое пособие по безработице и право нескольких собеседований, без возможности отказа работодателем, не объясняя причины в специальной отписке. Еще, биржа предоставляет бесплатные курсы повышения квалификации или проф. переподготовки. Однако, нужно помнить, что биржа вам не даст работу, она лишь поможет ее найти. Почему-то многие думают, что она обязана вас трудоустроить. Ничего подобного, времена СССР давно прошли. Она только помогает, а эффективность поиска работы зависит только от вас.

Так же стоит упомянуть порядок устройства на работу. Чаще всего, кроме собеседования, будущих программистов просят выполнить тестовое задание (пройти тест, написать небольшую программку и т.д.). Они нужны, чтобы работодатель понимал ваш уровень знания. Вам они нужны, для примерного понимания, что вам ожидать от будущей работы. Плюс, тестовыми заданиями вы можете заполнять свое портфолио и GitHub. Так же нужно грамотно составить свое резюме. Желательно сделать сайт визитку, особенно если вы веб программист. Как составить свое резюме - это тоже тема для отдельной статьи. На самом деле, поиск работы, как это странно бы не звучало, тоже требует опыта. Поэтому советую, как можно больше ходить по собеседованиям и выполнять тестовые задания. Рано или поздно вы поймёте много тонкостей поведения на собеседовании, что нужно говорить и как себя вести. 

-73

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

Фриланс.

-74

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

В интернете существует множество фриланс бирж со своими правилами, особенностями и возможностями. Если вы знаете английский язык - поздравляю, вам открыты заграничные фриланс биржи, где разумеется награда за выполнение заданий значительно выше, чем на отечественном фрилансе.

Как понять, что вы готовы к фриланс заданиям? Если при устройстве на работу всегда можно посмотреть какие навыки от вас требуются, то на фрилансе такого почти нет. На фрилансе часто делают заказы люди далекие от IT сферы и выбор пути выполнения заданий зависит только от вас. Однако, чтобы понимать, какими навыками вы должны обладать и не завалить свои первые задания, посмотрите примеры выполнения работ других фрилансеров. В интернете есть множество видео/стримов, как фрилансеры выполняют свои заказы. На многих биржах фриланса есть возможность просмотреть подробное портфолио фрилансеров. Вы можете ровняться на них. В конце-концов, можно самому заказать задание, которое хотели бы выполнить сами и посмотреть как его выполнит опытный фрилансер.

При выполнении первых заказов, я советую вам сильно сбивать цену, потому что у вас не будет изначально хороших отзывов и репутации. Так будет больше шансов, что на выполнение задания выберут именно вас. Плюс, если вы сделаете его не совсем качественно, то принесете меньше проблем работодателю.

-75

На фрилансе можно встретить очень много обманщиков. Способов махинаций и мошенничества, хватит не то что на отдельную статью, а на отдельную базу данных. Но в целом, из них можно выделить несколько популярных. Например, когда вам обещают золотые горы, потом подменяют задание и в итоге не платят деньги ссылаясь, что им больше ваш заказ не нужен. Могут просить выслать ваш код поэтапно и в один момент "соскочить", забрав основной кусок вашего проекта. Могут клянчить деньги за предоставление заданий. Начать выдумывать штрафы за выполнение работ не по ТЗ. Банально не платить за выполненную работу. Как и в случае с тестовыми заданиями отдавайте исходники, только в этом случае, когда получите деньги. Поскольку, часто на фрилансах нужны не исходники, а сам проект, то можете придумать свою защиту, например систему серийных ключей или создавать демо версии и не отдавать целиком проект, пока не получите деньги от заказчика. Всю сумму запрашивать за не полный проект не стоит, потому что среди фрилансеров - обманщиков тоже очень много. Со временем, к вам придет опыт и вы уже будете знать схемы обмана. Думаю, фриланс стоит попробовать всем новичкам, для получения полезного опыта.

Разработка собственных проектов.

-76

В какой-то степени, этот способ монетизации можно назвать стартапом, однако, все же стартап - это более глобальный проект, который обычно создают опытные программисты со своей командой. Новички же, зачастую создают простые, но полезные проекты.

Как создать приложение которое можно монетизировать? Все зависит только от вашей фантазии и понимания того, что востребовано у пользователей. Сделайте какую-нибудь полезную функцию, пусть и небольшую, но которая облегчит жизнь или даст новые возможности другим людям. Можно создавать инди-игры. Сейчас времена когда даже небольшой платформер с интересной идеей может стать сильно популярным. Можно создавать плагины для CMS сайтов. Сейчас плагины пользуются огромной популярностью и сильно востребованы. Способов и идей - огромное количество, все зависит от вашей смекалки и креатива.

Как монетизировать свои программы. Монетизация в IT - это огромное поле для возможностей. Можно как делать открытые проекты на донатной основе, так и создавать проекты с коммерческими продажами, через серийные ключи и т.д. Можно использовать интернет площадки, продающие электронную продукцию или создать свой небольшой интернет-магазин, с подключенной платежной системой. Все зависит от ваших проектов. Если вы делаете игры, то скорее всего будете выкладывать их в steam, play market и т.д. Если вы создаёте плагины для сайта, то вполне возможно вам будет удобней написать для них свой небольшой интернет-магазин. Как узнать, какой способ наиболее эффективней подходит вам? Экспериментировать! В интернете много информации о монетизации, плюс всегда можно подсмотреть способ у других. Думаю вы найдете способ монетизации подходящий вам довольно быстро.

Послесловие.

-77

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

Так стоит ли идти в IT сферу?

-78

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

Я не буду сейчас говорить, что программирование это призвание. В IT сферу можно вполне влиться только ради заработка денег. Лично мое мнение для заработка хорошо подходит web разработка. Вопрос в другом. Будет ли вам комфортно зарабатывать деньги в IT сфере, потому что программирование - это ни разу не легкие деньги. Опять же, чтобы узнать нужно выбрать интересующее вас направление, обучиться основам (на самом деле это не так сложно) и попробовать создать свою первое маленькое приложение. Это не займет у вас много времени.

В любом случае, в IT есть много смежных с программированием специальностей и если вам не понравится программирование, то сменить IT специальность будет не так сложно.

Какие у меня планы на канал.

-79

Скорее всего следующие статьи будут по объему значительно меньше, но при этом я постараюсь их сделать так же информативными. Эту статью я писал в течении пары месяцев, разумеется не все время, а только на досуге. Тем для статей про IT у меня много, однако я не могу сейчас четко сказать какая будет следующей. Так же, я не хотел ограничивать себя только одной тематикой, поэтому назвал канал "No Theme". Тут будут статьи на разные темы. В целом, такие планы. Надеюсь вам все понравится. :)