Как в домашних условиях стать программистом: пошаговая инструкция с советами экспертов
Как стать программистом / Хабр
В данной статье подробно рассказывается, как начать карьеру программиста. Здесь будет много букв. И, возможно, вы разочаруетесь, насколько это долгий процесс. Но это 100% метод.
1 Введение
1.1 Зачем вам это надо
Будь писцом! Освободит она [эта должность] тебя от податей, защитит она тебя от работ всяких. Удалит она тебя от мотыги и… и не будешь ты носить корзину. Она отделит тебя от гребли и весла, удалит она тебя от хлопот. Не будешь ты под владыками многими и под начальниками многочисленными.
[…]
Сделайся писцом! Гладки его члены, и станут твои руки мягкими. Когда ты выходишь, ты разодет, тебя возвеличивают, тебя вопрошают придворные. Когда ищут умелого, — находят тебя. Ничего не знающие ищут ученого. Он [же] возвышается вплоть до получения им [звания] сера, восхваляемый за свое прекрасное поведение.
Папирус Апастаси II, Древний Египет
Времена проходят, а ничего не меняется. Главная причина в том, что программисты очень нужны на рынке труда. Востребованность является первопричиной всех остальных факторов. Хорошие условия труда, высокие зарплаты, лояльное начальство. Все это смотрится очень и очень привлекательно. Фактически профессия программиста единственный социальный лифт в наше время. Вам не нужны богатые родители, обширные связи со всякими «нужными людьми», престижное высшее образование и прочие атрибуты успешных людей в наше время. Всё, что вам нужно, это умение создавать компьютерные программы или web-сайты. Вы можете начать программировать, живя в самой далёкой и непрестижной провинции. И добиться фантастических успехов в жизни.
Ориентировочно, в самом плохом случае, ваша карьера может выглядеть так. Сначала полгода-год самостоятельной учёбы. Т.е. учёбы без широкой посторонней помощи. Максимум что вы сможете, что-то спросить на тематических форумах. Вам обязательно помогут. Но на 99% это будет чтение больших толстых книжек и выполнение упражнений оттуда, 3-4 часа каждый день. Потом вы сможете получать деньги за свои знания. И найти такую работу будет реально. Проработав так год, за самую обычную зарплату 300-400$. Вы получите опыт, открывающий перед вами все двери в жизни. Сможете получать от 1000$ удалённо и\или уехать туда, где вам больше нравится. Даже в другую страну. И жить там ничуть не хуже, чем местные. Я не поддерживаю дурацкий лозунг «свалить из …», но если вам очень охота сменить ПМЖ. Эта профессия самый короткий и лёгкий путь.
После того, как вы закончите свою стажировку, вы никогда не будете жить хуже. Это будет очень сложно. Даже чисто психологически профессия расслабляет. Вы не будете бояться кризисов, войн, стихийных бедствий и дурного начальства. Потому что в любой момент сможете переехать куда угодно и сменить работу на другую. Вам всегда хватит денег на «булку с маслом» и даже досрочное погашение ипотеки.
1.2 Кто может стать программистом?
Теперь немного дёгтя. Программистом может стать любой, кто может работать головой. По сути работа головой так же тяжела, как тяжёлый физический труд. Мозг при нагрузке потребляет много питательных веществ, энергии. Его надо заставлять работать усилием воли. Любителей работать головой можно встретить не чаще, чем людей которым нравятся физические нагрузки. Все мы знаем, сколько людей могут добровольно делать зарядку по утрам и ходить регулярно, годами в тренажёрный зал. Примерно столько же хотят добровольно нагружать свой мозг работой. Понадобятся воля и терпение. Если вы готовы решать сложные задачи, «неразрешимые» проблемы более года, вы сможете стать программистом.
Конечно, в данной части я должен был перечислить какое образование у вас должно быть. Какие курсы, дипломы и компетенции надо иметь. Но всё это вторично. Потому что дипломы, компетенции и курсы дело наживное. Если нет готовности грызть гранит науки, вам не светит ничего. А в противном случае сможете набрать все необходимые знания за полгода.
Вполне логично, чем лучше знаете компьютер, тем легче будет ваш путь. Вы должны владеть компьютером, как опытный пользователь. Т.е. знать, что такое файловая система, по части как там хранить свои файлы, как открывать их разными программами, как устанавливать программы и пользоваться любыми из них, если это не требует каких-то специальных знаний о том, что эти программы делают. Думаю, за полгода можно научиться пользоваться компьютером в достаточной степени. Даже если до этого, вы не видели его никогда.
Большинство желающих стать программистами, любители компьютерных игр, которым родители отключили инет для того, чтобы вернуть в реальность. Вернувшись в реальность, где надо кормить себя, а не виртуального персонажа. Устраиваются системными администраторами, самого низшего звена. Идут работать в техподдержку, потому что компьютер, единственное чем они могут пользоваться хорошо. У таких людей уже есть нужный багаж знаний.
Если же вы испытываете трудности при общении с компьютером, мой вам совет, научитесь сначала пользоваться им уверенно. Хотя бы потому, что проблемы, с которыми будете сталкиваться, изучая программирование, требуют того же подхода и навыков, что и при решении проблем простого пользователя. Поэтому неопытным пользователям надо стать опытными. Есть огромное количество бесплатной литературы, интерактивных курсов, видеоуроков и опытных пользователей вокруг, которые помогут вам. По крайней мере, задачи при изучении программирования на порядок сложнее задач простого пользователя. Хорошее владение компьютером — обязанность любого программиста!
Остальные знания, типа иностранных языков и даже математики, можно считать малозначительными на начальном этапе.
Конечно останутся люди, которые спросят: «Погодите!!! A что если я тупой (старый, инвалид и т.п.)??? Какой у меня должен быть IQ???»
На самом деле, нет 100% способа определить ваши способности к программированию по каким-то формальным признакам. Если верить одному популярному учёному — нейрофизиологу, мозг человека очень изменчив. Если вес, рост, размеры основных органом человека варьируются, условно +\-50% у основной массы взрослых людей, то размеры долей головного мозга варьируются в десятки раз. Поэтому понять, какая деятельность подойдёт вам больше всего, очень сложно. Для этого, надо сделать новый тип и без того безумно дорогого медицинского прибора. Потом нанять редких и дорогих специалистов, которые разберут показания прибора. И при этом не факт, что за ваши деньги, они просто не наделают ошибок. Как это бывает во всех сложных и дорогих проектах, на начальном этапе.
Конечно, все думают, всё можно свести к чему-то подобному вступительному экзамену в ВУЗ, где главным предметом будет математика. А вот и нет! Спешу всех расстроить. Математика снаружи похожа на программирование, но это только на первый взгляд. Помнится, 10 лет назад читал отрывок из книги, где автор опытный программист говорил, что программирование больше похоже на лингвистику. Да-да! По его мнению, профессиональные лингвисты могут быть лучшими программистами, чем профессиональные математики! Не могу согласиться на 100%. Но рациональное зерно в этом есть.
Давайте рассмотрим пример. Надо вам составить инструкцию ребёнку, чтобы он купил продукты в магазине. Типа: «Идёшь в магазин, ищешь тростниковый сахар, если его нет, покупаешь обычный. Потом покупаешь хлеб, буханку белого и чёрного. Если не будет чёрного, купи серого… » Вы удивитесь, но такого рода инструкции это чистое программирование. Причём, их вы можете написать на иностранных языках. А можете, используя синтаксис языка программирования так же, как иностранного. И другой программист сможет понять написанное.
Для тех, кто не верит, давайте рассмотрим простую логику, реализованную в сотнях программ. «Запросить количество строк, выделенных в таблице. Если количество больше нуля, сделать кнопку ‘Применить’ активной. Иначе пассивной… » Вы так же можете записать данный алгоритм на естественном родном или иностранном языке или на языке программирования.
Вы так же удивитесь, но перевод алгоритмов с естественного языка на язык программирования это самая обычная работа. Когда программисту дают задание реализовать чёткую логику, придуманную другими. И наоборот, перевод запрограммированной логики на естественный язык тоже нужен. Когда этим «другим» надо описать, как точно работает программа. Да, всё верно, С++, PHP и другие языки программирования можно воспринимать, как особенные иностранные. Математика тоже бывает нужна, но, как правило, при выполнении каких-то узкоспециальных задач, с которыми вы, возможно, ни разу не столкнётесь. Начинать можно и без математической подготовки.
Программирование — это отдельная отрасль науки. Она связана с математикой некоторым образом. Но её так же можно связать и с лингвистикой. Наверняка отдельные технологии программирования связаны с чем-то ещё. Поэтому нельзя так просто сказать, получится у вас или нет.
1.3 Три этапа на пути к профессии
Теперь, когда вы достаточно утомлены всякой околопрограммистской чепухой и немного удивительными фактами, настало время перейти непосредственно к учёбе. Ваше профессиональное становление должно происходить в три этапа:
1) Пробный период. Вы должны попробовать данный вид деятельности.
Дело в том, что освоение профессии — полгода или даже год учёбы. И вам надо, как можно раньше понять, сможете или нет. Стоит ли вам инвестировать своё время и даже деньги. Или ждёт разочарование.
В этот период необходимо освоить 2-3 технологии настоящего программирования. Но они не должны требовать много времени на освоение. Если справитесь, есть смысл тратить обещанные полгода-год на следующий этап.
2) Самостоятельная учёба.
Если прошли предыдущий этап, можно инвестировать своё время в овладение профессией.
3) Стажировка.
Ваша первая работа и первые деньги.
2 Пробный период
2.1 Что делать?!
На самом деле есть только один способ узнать сможете вы или нет. «Чтобы начать программировать, надо начать программировать. А чтобы начать программировать, надо начать программировать!»
Многие считают программирование сложным занятием, надо много чего знать для работы программистом. И это правда. Если бы это было просто, им не платили бы такие большие зарплаты. Но с другой стороны, есть много книг в свободном доступе. Причём большинство из них качественные. Профессионалы из больших компаний склонны писать огромные книги или статьи, где описывают свой бесценный опыт другим. Странные люди конечно. Вместо получения огромных денег за работу занимаются книгописательством, за которое платят меньше, а то и совсем ничего. Эти «странности» будут рассмотрены позднее. А сейчас надо чётко усвоить, секретов в данной профессии очень немного. Большинство вопросов решаются поиском в интернете. Поэтому несмотря на сложность, программирование одна из самых доступных профессий.
Во время пробного периода вам надо определиться с технологиями, на которых вы будете начинать. Они не должны быть слишком сложными и долгими в освоении. Но, с другой стороны, должны быть востребованны рынком, чтобы даже те пару недель или месяц, потраченные на них, не пропали даром.
Лично моё мнение, это должны быть:
2.1.1 HTML
Очень простой язык программирования. Если быть точнее, это даже не язык программирования, к которым все привыкли. Процедурный и объектно-ориентированный, типа С++, PHP, Ruby и т.п. На нем невозможно написать, «что делать в магазине». Это язык разметки, который вы встретите в любой web-страничке. Инструкции этого языка выглядят примерно так: «Вот у этого параграфа должен быть наклонный шрифт», «Здесь отобразить картинку picture.png», «Размер шрифта данного куска текста 12 точек. Цвет красный».
Это очень полезный язык для начинающих. Даже если вы не собираетесь в web-разработку, эти знания вам пригодятся. Ориентировочное время освоения, 2-5 дней. При этом, необязательно запоминать обширные справочные данные. Достаточно научиться пользоваться этими самыми справочниками. Среди программистов, HTML не считается чем-то серьёзным и сложным. А вот незнание основ HTML, то в чём вы можете признаться только самым близким людям. Работодатели и коллеги будут вас воспринимать, как умственно-отсталого.
По мере изучения HTML вы будете постоянно сталкиваться с отсылками к технологии CSS. Изучение не обязательно на данном этапе. Но если увлечётесь СSS, эти знания не будут лишними.
2.1.2 JavaScript
Это уже «настоящий» язык программирования. Его изучение тесно связано с HTML. Вот тут вас ждут первые настоящие сложности. Хотя по языку огромное множество учебников, видеоуроков и всевозможных сайтов, где все разжёвано до самых мелких подробностей. Это будет реальным испытанием.
Наверняка кому-то не терпится начать изучать С, Python и даже Haskell. Но даже если вы собрались стать системным программистом. Скорее всего, рано или поздно столкнётесь с HTML и JS.
Одна из причин выбора JS как первого языка программирования, его применимость в разных областях. Начиная с логики web-страничек на стороне клиента. Кончая JS-подобным языком QML, куда нас тянут за уши разработчики фреймворка Qt.
Если начинающий программист не знает простых вещей, нет большой разницы на чём начинать. Предложенные технологии не требуют больших и тяжёлых сред разработки, исполнения. По ним — много учебников и справочников на русском. Не нужно путаться с адресной арифметикой и подобной спецификой. Ваша задача, научиться делать базовые логические конструкции типа циклов, ветвлений и т.п.
Любой учебник содержит упражнения. И на начальном этапе вы должны делать эти упражнения. Чем больше, тем лучше!
Однако, есть две небольшие категории людей, которым можно заменить JS на что-то другое:
1) Те, кто имеет хороших наставников по другим технологиям программирования.
К примеру, брат\сват, работающий системным программистом С. И он готов вам помогать. В этом случае С может быть предпочтительней. Но насколько знаю, около 30% программистов, WEB-программисты. Так что с большой вероятностью JS будет правильным выбором.
2) Люди, которым какой-то другой язык нужен, прямо сейчас для работы. Системным администраторам, как правило, SQL и bash.
В случае SQL я бы не стал обольщаться. Это тоже «ненастоящий» язык. Сложность между HTML и JS. Его скорее всего, придётся учить в любом случае всем. Но со временем я бы советовал, всё равно попробовать что-то типа JS, поддерживающее процедурное и ООП парадигмы. Плюс в изучении SQL всё-таки есть. Если вы его не осилите, смысла продолжать нет.
А вот с bash всё по другому. Слышал, JS позволяет заменять bash через модуль в node.js. Так что, если надо написать скрипты с нуля, JS будет поинтереснее. Если исправлять написанное до вас, тогда другого выбора нет. Так же, как и с SQL, JS останется у вас на очереди.
2.2 Учебные пособия
Очень важный вопрос, какие учебные пособия использовать. Здесь перечислены варианты в порядке, которoм должны их проходить.
- Видеоуроки. Их стало очень много на любые темы. Youtube обязательно выдаст плейлисты по любым популярным технологиям. Даже на русском. Там всё наглядно, и начинать ваять свои первые «Hello, world!» надо именно с них. Недостаток только один. Они могут не покрывать всех глубин изучаемого языка. Но вам хватит проблем и без этого.
- Мультимедийные учебники. Скорее всего, это коллекции видеоуроков плюс ещё чего-то. Очень часто продаются за деньги.
- Книги. Самые тяжёлые для восприятия. Они как раз покрывают больше тонкостей различных технологий. Оставьте на потом. Когда исчерпаете возможности предыдущих вариантов.
Но только пожалуйста, здесь и далее. Не надо покупать никакие курсы и платить за чудо-учебники. Все «чудеса» уже давно лежат, максимум на торрентах. По моему мнению, запрещённый в России rutrracker, содержит самое лучшее собрание мультимедийных учебников и книг.
2.3 Решение технических проблем
Проявив силу воли и терпения, вы героически начали изучение предмета. И перед вами стали вставать всевозможные технические проблемы. Вы можете всё делать по инструкции. Но ваши примеры могут не работать. Хотя бы потому, что инструкции могут быть написаны для предыдущих версий программных инструментов. Самый сложный шаг может быть с первым запуском исходного кода, который вы просто переписали из учебного пособия.
Самые распространённые ошибки связаны с тем, что начинающие склонны торопиться и считать какие-то вещи не обязательными. Вы, как и любой нормальный человек, думаете в книгах о программировании есть второстепенные моменты. Вам наверняка хочется побыстрее получить результат, в виде должности стажёра. А уж там то, в окружении компетентных коллег, всё поймёте и основательно изучите. Поэтому «какой-то учебник» по JavaScript, который даже не будет вашим основным языком. Может восприниматься как марафонская дистанция, которую надо преодолеть побыстрее. На самом деле, любой учебник по программированию надо воспринимать как поле, которое надо вспахать. Все, кто пропускают мелочи, заканчивают тем, что сталкиваются с неразрешимыми проблемами. И вместо компании компетентных коллег, их ждёт полное одиночество в изучении материала заново.
Например, вы плохо запомнили какой-то второстепенный термин? А через пару дней интерпретатор кода или компилятор, выдаст вам многословный вывод об ошибке. В котором будут десятки терминов, как тех, которые встречались ранее в учебнике, как и не встречавшиеся. И ошибка, которую вы распознаете, может оказаться ключевой. После её исправления волшебным образом исчезнут все остальные. Большинство причин бросания учёбы на начальном этапе связаны как раз таки с разбиранием ошибок, выдаваемых интерпретатором или компилятором.
Вам кажется, подробное описание использования кавычек с арифметическими операциями — какой-то сумасшедший бред, которым вы не будете никогда пользоваться? Вы может быть и нет. А вот автор считает это простым. Поэтому далее в учебнике, сложение символов с кавычками и без, будет встречаться повсюду. Но даже, если вы решите, что лучше взять учебник по другому языку программирования, на который вы возлагаете большие надежды. Он тоже будет мучать вас строками типа ‘5’ + 3. Причём, с теми же «дурацкими» многословными объяснениями.
Неразрешимые проблемы, это часть жизни любого программиста. И как бы вы прилежно всё не делали, никуда от них не денетесь. Лично я, даже не смотря на 5 лет стажа, также смотрю в книги о чём-то малопонятном и сложном. И также иногда думаю: «Ваще ерунда какая-то. Как же я буду это решать?!» И абсолютно так же, как и у вас. У меня многое зависит от решения проблем, кажущихся совсем тупиковыми.
Если вы имеете проблемы, с которыми можно обратиться на форум или тематическую группу соцсети, то с моими проблемами, это бесполезно.
На самом деле, есть особый алгоритм для их решения:
1) Надо очень хорошо подумать над причинами. Анализ сообщений компилятора, среды выполнения или интерпретатора(JavaScript), связанные с ошибкой. Вы должны очень хорошо понимать, что вам пишет компьютер о проблеме. Если не понимаете, ищите в интернете по тексту или коду ошибки. Очень часто объяснения находятся, но на английском. Даже после перевода мало что можно понять. Но надо очень сильно стараться. На самом деле это не просто ситуация, где вы решаете конкретную проблему. Это ситуация, где вы получаете новый опыт. Не менее важный, чем знания из учебника. Наряду с этим, проводится анализ потенциально проблемного кода. Если вы переписали или скопировали код откуда то, надо досконально в нём разобраться.
Если за полтора-два часа вы, казалось бы, всё исследовали и поняли. Но так не нашли решение. Значит надо оставить проблему до завтра. Даже если есть ещё идеи.
2) Займитесь чем нибудь другим, что не зависит от вашей проблемы и получается. Можно даже продолжить изучать ваше текущее учебное пособие. Вы удивитесь, но со временем придут идеи, как решить вопрос. Если они не совсем ясные. Бросаться сразу на решение, не рекомендуется. Лучше записать и оставить на завтра.
3) На следующий или любой другой день. Пробуем все новые идеи, для решения проблемы. Повторяем первый этап.
4) Если всё по прежнему плохо, готовим вопрос наставнику или на форум. Вам надо чётко понять, что вы хотели сделать. И что представляет из себя ваш код. Просьбы разобраться за вас в коде, который вы даже не удосужились хорошо изучить, говорят о полном неуважении.
Как правило, этого вполне достаточно для решения любых проблем.
2.4 Работа с наставниками
Небольшой свод правил по работе с различными опытными специалистами, наставниками, менторами и т.п.
- Прежде чем спрашивать, надо попытаться найти решение самому.
- Спрашивать старайтесь только то, что не описано в книгах, документации и интернете. В противном случае, вас пошлют туда.
- Если вас куда-то послали, туда надо сходить. Иначе наставник пойдёт туда сам и найдёт решение. Это очень испортит его мнение о вас.
- Что бы наставник не стоял у вашего стола часами и не смотрел за каждым вашим шагом, надо группировать вопросы. Задавать их «оптом», множество накопившихся за один раз. А не по мере возникновения.
- Вопросы лучше задавать тогда, когда ваше движение вперед заблокировано. Если есть ещё чего делать кроме, делайте. Оно тоже может породить вопросы. Которые лучше задавать вместе.
3 Самостоятельная учёба
Вставай на твоё место! Книги уже лежат перед твоими товарищами. Возьми своё платье и позаботься о своих сандалиях. Читай прилежно книгу. Не проводи дня праздно, иначе горе твоему телу! Пиши твоей рукой, читай твоим ртом, спрашивай совета того, кто знает больше тебя.
Не проводи дни праздно, иначе побьют тебя, ибо ухо мальчика на его спине, и он слушает, когда его бьют.
Не будь человеком без разума, не имеющим воспитания! И ночью тебя учат, и днём тебя воспитывают, но ты не слушаешь никаких наставлений и делаешь то, что задумал. И львов обучают, и лошадей укрощают, — и только ты! Не знают подобного тебе во всей стране. Заметь это себе!
Мне говорят, что ты забрасываешь ученье, ты предаёшься удовольствиям, ты бродишь из улицы в улицу, где пахнет пивом. А пиво совращает людей, оно расстраивает твою душу. Ты похож на молельню без её бога, на дом без хлеба. Тебя учат петь под флейту. Ты сидишь перед девушкой и ты умащён благовонием. Твой венок из цветов висит на твоей шее.
Я свяжу твои ноги, если ты будешь бродить по улицам, и ты будешь избит гиппопотамовой плетью!
Наставления писцу. Древний Египет
После освоения основ JavaScript. Вы уже хорошо представляете себе, что такое писать код программ.
И вы готовы потратить полгода-год на овладение профессией. И что немаловажно, для вас это дело времени.
3.1 Что изучать?
Всех людей, стремящихся овладеть какой либо профессией, можно поделить на две категории: любителей и профессионалов.
Любители, люди которым нравится данное занятие. И они готовы делать его даже бесплатно. Жертвуя временем, которое можно потратить на развлечения, отдых и пр. Раз уж вы попробовали, то отлично понимаете, нравится вам программирование или нет. У любителей есть одно очень хорошее качество. Их не надо мотивировать. Они будут много, добросовестно работать и с удовольствием получать новые знания. Потом, они с таким же удовольствием будут делиться этими знаниями с коллегами и друзьями. Но самые любители из любителей пишут статьи и даже целые книги о своём опыте.
Профессионалы же готовы заниматься этим только за деньги. Либо за перспективу их получения. Профессионалов надо мотивировать. И они практически всегда останавливаются в своём развитии, как только получают хорошую работу. Даже повышение з.п. в два раза может быть недостаточной причиной для них, продолжить учёбу. На повышение квалификации годны, как правило, только любители.
Конечно, чистые профессионалы и любители, встречаются редко. Кому-то нравится работа на половину или на четверть. Кто-то, перепробовав разные технологии, находит для себя занятие по душе.
Допустим, работал себе разработчик за деньги. Довелось ему как-то съездить к заказчику, уточнить требования с непосредственными пользователями. И понял разработчик. Наезжать к бухгалтершам, гораздо интереснее, чем писать код. В результате разработчик будет ездить за всю команду. Даже в нерабочее время. Постепенно переквалифицируется в системного аналитика или менеджера проектов.
Но в основном, пробуют разные технологии. Какие-то из них увлекают, а какие-то нет. Даже одна и та же технология может сначала увлечь, а через год надоесть.
Для любого человека очень важно понимать, какая деятельность нравится больше. Потому что от этого сильно зависит жизненный комфорт. Распространено ошибочное мнение, что работа только для зарабатывания денег. Хотя это огромная и самая лучшая часть жизни. На работе можно заниматься творчеством, общаться и ещё много чего. Если вы ходите на нелюбимую работу ради денег, придётся это как-то компенсировать развлечениями, отдыхом. В результате, денег на компенсацию может даже не хватить.
Самые высокооплачиваемые специалисты — это любители с опытом. Они же получают наибольшее удовольствие от работы и жизни. Поэтому на данном этапе надо определиться, что нравится больше всего.
Технология (язык программирования, который будете изучать) обязана быть коммерчески востребованной. Из ТОП 10 популярных языков. Иначе, не сможете получать деньги за свой труд. Это значит, программистом вам не стать. Придётся отдельно зарабатывать деньги, отдельно программировать. Что, естественно, невозможно.
У вас впереди ещё стажировка. И на стажировку берут охотно только по дефицитным специальностям. Особенно удалённо. Поэтому думайте\решайте, чему хотите посвятить свою жизнь. Что будете изучать на данном этапе. Можно продолжить и JavaScript. Можно попробовать, что-нибудь другое. Никто не мешает передумать на середине пути. Вы уже испытали себя и есть определённое поле для экспериментов.
Единственное исключение я бы сделал для С++. Это сложный язык. Он, наверное, требует в два раза больше времени на освоение. Чем просто С или JS. При этом зарплата будет больше максимум на 20%. С++ это язык любителей С++.
Если вам не по нраву JS, и вы чувствуете в себе описанного выше «профессионала», наверное, лучшим выбором будет Java. Как-то раз я не смог даже запустить программу, написанную на этом языке(jar архив). Но, с другой стороны, разработчики Java в связке с Oracle(PL\SQL) из больших корпораций, возможно, самые высокооплачиваемые разработчики в IT. При том, что это технологии средней сложности. (Предполагаю, в мире Java платят уже только за умение запускать jar файлы.)
Ещё есть замечательный язык Python. Он будет очень полезен всевозможным математикам, статистикам, т.к. открывает им дверь в мир Data Science. С другой стороны, это язык web-разработки для всех остальных.
Учёба на данном этапе нацелена на повышение своей квалификации до максимума. Фактически, вы будете повышать рыночную цену своего труда. Будте уверены, всё, что потеряете из-за программирования на данном этапе, вернётся многократно.
Самостоятельная учёба имеет преимущество перед стажировкой. Можно получать более фундаментальные знания. На самом деле, большинство программистов профессионалы. Они выучили немного. Попали на работу. И эксплуатируют свои немногие знания. Большинство того, что они читают, небольшие статейки на тему, как состряпать чего-то быстро. Либо заткнуть какую-либо проблему. Им очень не хватает фундаментальных знаний. Вы удивитесь, но не всё можно
«нагуглить». Что-то надо знать и уметь изначально. Хотя бы потому, что придётся разбираться с тем, что вы «нагуглили». Код, который вы найдёте, может написать очень хороший специалист. При недостатке фундаментальных знаний вы просто не разберётесь в нём.
Вы должны выбрать для себя большую, фундаментальную книгу по какому-либо языку программирования. И изучить её до конца. Вместе со всеми учебными заданиями.
Выполнение учебных задач на данном этапе, тяжёлое, тоскливое занятие! Вам будет скучно, неинтересно, захочется всё бросить. Большинство так и делают. Мотивируйте себя, придумывайте интересные задачи, продолжайте учиться. И вы не будете этим самым большинством.
Кроме основного языка программирования типа С, Java, JS и т.п., необходимо изучить следующее:
Английский язык
Как известно, программисты такой народ, который умеет читать по английски, но не умеет говорить. Это тот язык, на котором вы будете искать решение своих проблем, общаться с заказчиками. Разговорный английский сильно расширяет круг поиска работы. Это очень хорошо сказывается на зарплате. Хотя, надо признать, времени на него можно потратить столько же, сколько и на язык программирования.
Технический английский, изучить проще. Просто переводите материалы нужные вам, в различных переводчиках. Запоминайте незнакомые слова.
SQL
В большинстве случаев эта технология вам понадобится рано или поздно. Необязательно изучать надстройки типа PL\SQL(кроме изучения Java). Но освоить создание таблиц, джойны и юнионы очень желательно. Самым полезным, пожалуй, будет изучение на примере PostgreSQL.
У SQL есть ещё один аспект. Этот язык, возможно, самое сложное, что спрашивают при приёме на работу тестировщиком. Поэтому если выучите только его, есть шанс попасть на работу очень близкую к программированию. На такой работе будет немного легче изучать само программирование. И вас очень легко переведут из тестировщиков в разработчики. Как только покажете, что способны писать хороший код.
Освоить «слепой» десятипальцевый метод печати на клавиатуре
Печатать предстоит очень много. Поэтому освойте обязательно. В сети достаточно бесплатных онлайн-тренажёров. Можете попробовать освоить его перед первым, «испытательным» этапом. Если у вас не хватит терпения на даже на это, двигаться дальше нет никакого смысла.
Системы контроля версий
Конечно же это будет Git. Обязательно изучите основы и попробуйте в деле, на своих учебных проектах. Но в последнюю очередь. Поначалу будет сложновато понять, что это такое, какие преимущества даёт.
Эти предметы хороши тем, что позволяют не терять темпа учёбы. Даже когда застряли с изучением основного языка. У вас наверняка будут описанные «неразрешимые» проблемы. Переключайтесь сюда и потихоньку ищите решение.
3.2 Общепринятые способы получения знаний
ВУЗ
Могу очень много поведать про высшее образование. Но это не имеет никакого практического значения. Если коротко. Лучше быть стажёром через год самостоятельной учёбы, чем через четыре года посещения ВУЗа. Те, кто начнёт заниматься по моим рекомендациям сейчас, через 4 года будут проводить технические тесты при приёме на работу тех, кто сейчас поступает в ВУЗы.
Платные курсы подготовки программистов
Тут всё очень непросто. Спрос рождает предложение. Но это предложение зачастую очень плохого качества. Вы можете попробовать какие-либо из них. Но, пожалуйста, не возлагайте никаких надежд. Постарайтесь пройти первые уроки бесплатно. И бегите оттуда, если ничего не понимаете на занятиях. Никакие бренды, под которыми делают эти курсы, не добавят вам понимания предмета. «Гарантия трудоустройства» там, как правило, обман.
Курсы и школы, проводимые большими компаниями для своих будущих сотрудников
Самый известный случай, пожалуй, «Школа анализа данных» Яндекса.
Тут вас будут учить реально дорогие специалисты. И они будут делать это для своих внутренних нужд. Как правило, такие курсы имеют какие-то требования к кандидатам. Яндекс требовал математическую подготовку. EPAM требовал знание основ программирования. Просто так туда не попасть. Но если есть возможность посещать эти курсы, стремиться туда стоит однозначно! Даже если вы пробудете в «рабстве» у этих компаний за какие-то 400-500$ в месяц целый год. Большой плюс таких курсов. Там не требуют никакого образования.
3.3 Стратегия обучения
Большинство учащихся рассчитывает выучить программирование, просто учась. Типа сел за учебник незнающим предмет, а закончил его учить и стал всё понимать. Весь процесс начинающим представляется линейным. Двигаясь от главы к главе, проходя учебные задания, человек набирается знаний. Других моделей люди не представляют. Потому что никогда не делали сложных и долгих проектов. А на самом деле всё не так просто. Любой программист знает, в ходе выполнения проекта неизбежно открываются новые детали, которые мешают или наоборот помогают в его реализации. Как правило, чем больше проект, тем меньше он походит на то, что задумывалось вначале.
Простой пример. Вы заказали себе костюм в ателье. Оговорили все детали. Через неделю звонит мастер с известием, оговоренная форма швов очень плохо смотрится на костюме, надо менять. Потом выясняется, надо менять часть материала. Нужного нет. Вы меняете и меняете. В конце концов получаете примерно 2/3 от того, что задумали изначально. В случае с разработкой программного обеспечения. В проекте делового костюма может получится купальник. Причем за цену костюма. Если думаете это невероятно, cпросите потом толковых менеджеров проектов. А пока вам надо усвоить одно, в проекте вашей учёбы будет много неожиданного. И вы должны уметь работать с этими неожиданностями.
Если не углубляться в дебри управления проектами, вы должны развиваться в IT не линейно, как описано вначале. А «по спирали». Выглядит это примерно так. Если вы не знаете компьютер хорошо. Не надо загадывать, что через год будете программистом С++ или PHP. Сначала изучаете компьютер. Вам открываются новые возможности и препятствия. Например, стали больше понимать что хотите делать в итоге, сайты или десктопные приложения. Потом, на этапе пробного периода, попробуете программировать для web (html, js). Вы узнаете о программировании ещё больше. После пробного периода, можно уже загадывать своё основное направление. Какой язык будете изучать. Кто то в самом начале пути может не подозревал о системном программировании. Что есть отдельное направление, где разработчики пишут невидимые обычному пользователю программы. И возможно для вас это будет интереснее чем то, о чём мечтали вначале.
В процессе обучения совершенно точно будут чтение учебников и решение задач оттуда. Но вот сама последовательность и порядок прохождения учебных пособий должны подчиняться «спиральному» циклу. Чтобы каждый этап давал хорошую основу для следующего.
Вы должны быть менеджером самому себе и планировать достижимые цели, этапы. Прямо сейчас много молодых людей мечтают, как они будут создателям топового web-сайта или операционной системы. А кто-то мечтает написать калькулятор и получть с его помощью должность стажёра. Вы, надеюсь, догадываетесь, кто через год будет успешным программистом. Очень важно, чтобы ваши проекты и задумки имели своё успешное воплощение. Лучше синица в руках, чем журавль в небе.
Кроме этого, «менеджерские» качества очень пригодятся тем, кто считает себя «тупым». В IT очень легко быть умным и очень тяжко наоборот. Умный может запросто взять учебник, прочесть и тут же сделать что-то полезное. Тупые возьмут тот же учебник прочитают и ничего не поймут. Таким надо разбивать учебный материал на части и больше тренироваться (писать код) на основе этих частей. Можно разбить материал на такие части, чтобы дошло до кого угодно. Для тех, кто умеет планировать свой учебный процесс и решать «неразрешимые проблемы»(2.3) нет непреодолимых препятствий. Вы осилите абсолютно всё, вне зависимости от интеллекта. Пусть это займёт значительно больше времени. Но вам гораздо важнее иметь целостные и протестированные знания\опыт, чем скорость их приобретения.
Конечно вам будет очень сложно понять и, самое главное, применить на практике, такую модель. Но тех, у кого получится, ждёт приятный бонус в виде перспективы стать «менеджером проектов». Если сейчас вам просто хочется получать зарплату программиста, то зарплату менеджера проектов вам захочется настолько, что не сможете спать. Минус тут только один. Всё же для начала надо стать хорошим программистом.
3.4 Когда искать работу
Очень сложно сказать, когда надо искать свою первую работу по данной специальности. Фактически, вы можете начать поиски работы сразу после первого этапа. Подозреваю, многие так и сделают. Если вам до 23 — 25-ти лет и вы живёте там, где хорошо развита отрасль разработки ПО, у вас это получится. Может вы не станете хорошим специалистом. Но на жизнь заработаете точно.
С другой стороны. Есть люди живущие там, где разработкой ПО не занимается никто. И есть люди которым далеко за 25. Такие должны дольше учиться. Чтобы из низкоквалифицированных превратиться в высококвалифицированных. Ради получения в свои ряды высококвалифицированных программистов работодатель готов на многое. Вам могут предложить помощь в релокации. Или даже удалённую работу. Возраст за 30 или 40 лет, не будет иметь большого значения. Главное, показать свой высокий наработанный уровень.
Начать искать работу, как можно раньше, имеет смысл, если вы уже работаете на работе с высокой загрузкой. Там, где не почитаешь книжки по программированию. В этом случае вам без разницы, после какой работы вечером изучать предмет. Нынешней или после работы стажёром.
У раннего поиска есть большой минус. После собеседования работодатель будет иметь о вас какое-то мнение. Которое не захочется менять со временем, если вы когда-то показали низкий уровень знаний. Через полгода, когда будете знать гораздо больше, ваше резюме, возможно, даже не будут рассматривать. Потому что мнение о вас останется прежним. Остаётся только надеяться, что про первое собеседование со временем забудут. Но это минимум полгода. Может так быть, что работодатель ведёт базу данных кандидатов. Чтобы не собеседовать их дважды. В этом случае всё будет очень печально.
3.5 «Что мне нужно знать, чтобы взяли Junior-ом?»
Новички очень часто задают этот вопрос. Тут нет однозначного ответа. На этот вопрос может ответить только конкретный работодатель в конкретный момент времени. Ответить за весь рынок труда во все времена невозможно. Ваш шанс попасть на работу «Junior-ом» или, как я выражаюсь, «стажёром», меняются во времени в зависимости от нескольких процессов и факторов.
Процесс вашей самоподготовки делает вас более привлекательным для работодателей. В это время появляются подходящие вам вакансии. Тесно связанные с изучаемым вами языком программирования. Вы шлёте своё резюме туда. И работодатель выбирает, наиболее подходящего из откликнувшихся кандидатов. Квалификация кандидатов ограничена сверху зарплатой вакансии. Возможно, вы будете лучшим за эту зарплату. А может и нет. Итак, со временем вы учитесь и дорожаете. И в какой то момент по-любому будете этим самым лучшим из всех откликнувшихся.
Ещё есть фактор возраста кандидата. Который немного снижает вашу привлекательность. Чем больше возраст, тем больше снижение. Есть фактор наличия хорошего портфолио, который повышает. Опыт, рекомендации и многое другое.
Вы можете много стоить, как программист C++, но очень немного, как программист PHP.
Самое «халявное», фактор вашей известности работодателям. Когда вы известны большему количеству работодателей. Больше шансов, что вас куда-то возьмут.
«Терпенье и труд всё перетрут!» Непрерывное самообразование — ваша гарантия получения работы!
4 Первая работа стажёром
4.1 Как искать первую работу?
4.1.1 Портфолио
Для начала написать портфолио. Это должна быть небольшая программа или скрипт для сайта, которая делает работу, похожую на полезную. Назначение должно быть понятно вашему потенциальному работодателю. Например, адресная книга. Если вы сделаете калькулятор для расчёта траекторий полёта спутников Земли, будет конечно круто. Но ваш будущий работодатель навряд ли в теме. Поэтому не сможет оценить результат. Желательно, чтобы программа как-то хранила настройки и данные пользователя. Должен быть какой-то небольшой и целостный кусок кода. Если вы, допустим, пришлёте свой патч к какому-то свободному проекту, работодателю, возможно, будет лень вникать в исходный код всего проекта. И оценивать, что вы там поменяли в этом контексте. Хорошо, если приложение будет пользоваться SQL базой данных, там где это имеет смысл.
И самое важное, конечно. Как оно будет написано. Это должен быть хорошо форматированный и структурированный код. Будте готовы, работодатель возьмёт строку из этого кода и забьёт в поисковик.
Чтобы код в портфолио был хорош, ему надо дать «отлежаться» недельку. Т.е. написать и оставить на неделю. Потом провести ревизию всего кода. После исправления ошибок заливаете в какую-нибудь временную шару и создаёте тему на форуме с просьбой посмотреть исходный код более опытных программистов. C обязательным указанием, что это ваше портфолио.
После исправления ошибок, на которые вам укажут. Возможно, это будет даже глобальная переделка вашего творчества. Заливаете код на один из хостингов исходного кода. Тему, где вам рассказывали про ваши ошибки, удаляете. Будущему работодателю об ошибках знать не обязательно.
В конечном итоге, очень важно понимать каждую строчку, которую написали. Скорее всего, вас будут таскать по нему и задавать всякие каверзные вопросы.
Поверьте, создание портфолио и code review(проверка кода) более опытными коллегами добавит +30% к вашему опыту. Так же позволяет адекватно оценить, вашу текущую квалификацию. Ваш код, конечно, не будет идеальным. Приготовьтесь, там будут находить ошибки(бесплатно!) Это ещё полбеды. Но вот когда вы не знаете почему написали код вот так, а не по другому, настоящая беда. Значит это только то, что код писали не вы! В этом случае отфутболят с пожеланием придти через полгода со своим кодом.
4.1.2 Резюме
Вообще, по резюме можно многое сказать о человеке. Например, плохоструктурированное резюме. Скорее всего напишет разработчик, не особенно заботящийся о структуре исходного кода.
Скопированный из сети раздел, например, «Профессиональные качества». Говорит о том, что кандидат склонен приврать. Отсутствие достижений, которые не вспоминают даже на собеседовании, говорит, что человек «профессионал». И ещё много чего.
Как-то раз была забавная история. Взялся раскритиковать резюме одного коллеги. Выводы были неутешительными. Говорю: «У тебя такое плохое резюме, что я бы тебя взял на работу! Специалист ты хороший. Но вот со твоим резюме хорошей работы тебе не найти. Поэтому тебя можно будет держать на маленькой зарплате. И ты никуда не денешься!»
Чтобы такого не было. Резюме тоже желательно дать почитать специалистам HR и программистам на оценку.
Естественно, в резюме не надо врать или приводить сомнительные факты. Его будут очень внимательно читать люди с большим жизненным опытом. Любые попытки скрыть что-то или приукрасить будут расцениваться крайне негативно.
Лучше иметь скромное резюме. Но быть уверенным, что ответите за любое слово в нём.
Если вы уже приобрели какой-то опыт работы и вам есть чем похвастаться. Можете добавить раздел «Портфолио», в самом конце. Подробно описать проекты, в которых участвовали. Интересные технические решения, достижения(подробно). Хоть 10 страниц. Но именно в конце.
Обязательно укажите, что готовы к релокации(переезду) и командировкам.
Также вам поможет заполненный профиль в LinkedIn, HeadHunter и других сайтах поиска работы.
4.1.3 Поиск работы
Теперь переходим к самому интересному.
Вам надо чётко усвоить, стажёры и неопытные разработчики редко кому нужны. Работодатели ищут прежде всего опытных. Но их зарплаты не всегда позволяют нанять кого надо. Поэтому ваше резюме с нулевым опытом будет рано или поздно рассматриваться. И в этом очень поможет код из вашего портфолио.
Поэтому вы должны рассылать резюме по всем вакансиям, подходящим под ваш профиль. Например, изучали JavaScript. Шлите резюме везде, где этот JavaScript требовался. Невзирая на минимальный требуемый стаж, наличие профильного высшего образования, то, что вакансия уже закрыта и многое другое. На «том конце провода» лучше знают, что делать с этим. Так же шлите во все фирмы, которые теоретически имеют или могут иметь специалистов вашего профиля. Почту обычно разбирают секретарши. Невелика беда, если они отправят ваше письмо в корзину. Мнение таких работодателей о вас значения не имеет. Даже если это самые престижные фирмы.
Сам поиск работы занимает от месяца до двух. Обычно, если вы откликаетесь на вакансию, с вами связываются через 2-3 дня. Потом, в течение недели собеседование и\или тестовое задание. И далее, в течение месяца работодатель будет думать над результатами. Прямые отказы, обычно, не присылают. Про вас просто забывают и всё. Так что приготовьтесь к множеству интервью, после которых вы забудете о них. Не надо возлагать надежды ни на какие варианты. Прошли собеседование и погружайтесь обратно в изучение программирования.
4.1.4 «Карма» программиста
Есть один очень любопытный момент при поиске работы. Предположим, вы изучали JavaScript. Добросовестно учили и изучили. Потом ищете работу программистом JavaScript. И вам внезапно предлагают стать, к примеру, системным программистом. Работодатель может сказать, ваш JavaScript хорош. Но вакансии стажёров у него только для системных программистов С. Поэтому можете пойти на стажёра С.
Хитрость тут в том, после такой первой работы. Вернуться работать с JavaScript будет проблемно. И это не какая-то там магия. Просто, как программист С будете опытным. Как программист JavaScript неопытным. Т.е. возврат к JavaScript снижает вашу зарплату. Возможно даже в два раза. Поэтому останетесь системным программистом С, на всю оставшуюся жизнь. Не думаю, что это плохой вариант. Но о таких ограничениях надо знать.
4.1.5 Собеседование
Вы удивитесь, но большинство собеседований для программистов проходят удалённо. Поэтому, даже если хотите устроиться на работу в городе, за сотни километров от вас, ничего страшного, что сейчас находитесь в другом месте. Работодатель может удалённо проверить ваши компетенции и решить, стоит ли вам ехать на очное интервью или сразу на работу в его город.
Если собеседование заочное, тут всё просто. Вам понадобиться хорошая связь, интернет и телефонная. И полтора-два часа времени, когда никто не будет мешать. Если тишина и хороший интернет у вас дома невозможен. Договоритесь с друзьями, что они дадут вам свою комнату с компьютером или квартиру на время собеседования. Видеосвязи обычно не требуется. Скорее всего понадобиться Skype и TeamViewer. Тяжёлые среды разработки, компиляторы, редакторы обычно не нужны. Простого редактора кода, типа Sublime или Notepad++ хватит. Работодатель сам напишет, что нужно иметь для собеседования.
Про очные собеседования написано и так очень много. Не вижу смысла повторяться. В любом случае получив приглашение, должны узнать о пригласившей фирме как можно больше. Посмотреть отзывы о ней, как о работодателе. И решить, хотите ли там работать. Если хотите, обязательно придумайте повод, почему именно там. Почему вы прислали туда своё резюме?! Ведь оно может не подходить под формальные требования.
В любом случае вы должны хотеть, в первую очередь, интересную работу и профессионального роста. Типа попробовали программировать, вам очень понравилось. И сейчас ищете интересную работу в этом направлении. От своей будущей занятости, в первую очередь, ждёте интересных задач. Возможность общаться с коллегами-единомышленниками. И, конечно же, шлифовать, своё профессиональное мастерство. Именно такого плана вопросы вы должны задавать вначале. Вас должно интересовать, какой опыт будет у ваших будущих коллег. Какие технологии используются в проекте, на который ищут сотрудника.
Конечно, будем откровенны. У большинства свербит главный вопрос, о зарплате. Вот это надо выяснять, в последнюю очередь. Такие вопросы поначалу обычно задают «профессионалы». Начальники же ищут любителей.
Обычно, размер зарплаты у стажёра, с некоторым багажом знаний по теме, это размер зарплаты обычного офисного хомячка в том же городе. Но если предложили меньше, мой совет, соглашаться всё равно. Допустим работаете сисадмином. Получаете 500$. Думаю, 500$ для сисадмина в средней полосе России потолок. И вот вам предлагают должность программиста (фактически стажёра) за 300$. Если для вас это «отстой». Даже не начинайте ничего изучать. Закройте эту статью. И забудьте о программировании как о будущей профессии.
Ваша первая зарплата разработчика должна быть достаточной чтобы выжить. Дело в том, что вместе с 300$ будете получать опыт и знания на 1000$. Получите опыт коллективной разработки. Вашу работу будут оценивать более опытные коллеги. Получите безграничный доступ к их опыту. Скорее всего ваше портфолио будет прирастать реальными проектами. Всё это сделает вас настоящим и востребованным специалистом. Если не будете лениться и воспользуетесь всем этим. Уже через полгода, догоните свои 500$. И это будет только начало вашей карьеры.
Конечно, может так случиться, «Опыт и знания на 1000$» не получите. В этом случае, просто ищите другую работу.
Во время собеседования вам не стоит ничего боятся. Надо вести себя естественно, но иметь рабочий настрой. Собеседования ведут обычно вежливо. Задача вашего будущего начальника понять, что вы за человек и специалист. Они будут скорее очень внимательно наблюдать за вами.
Вам никто никогда не скажет правдивого мнения о вас. Плохое мнение может настроить вас против. Что не имеет никакого смысла. Вдруг вы ещё пригодитесь. А хорошее, может быть причиной просьб о более высокой зарплате.
Собеседование, это как первое свидание с девушкой. Всё всегда вежливо, культурно и хорошо. Только вот следующее может не состоятся.
4.2 Стажировка
Задача стажировки отшлифовать полученные знания.
4.2.1 Фриланс
Начинающие программисты могут начитаться статеек из интернета, где рассказывается, как здорово быть «фрилансером». Сидеть под пальмами, брать разовые заказы и «не работать на дядю».
Чтобы понять преимущества и недостатки фриланса, надо понимать, работодатель готов вкладываться в ваше обучение, только видя долгосрочную перспективу. Иначе ему проще переплатить готовому специалисту, чем ждать когда начинающие решат сложные задачи. Поэтому фриланс не даёт опыта вглубь. Вам просто никто не даст заказы, если вы не обладаете нужными компетенциями. С другой стороны, фриланс — это первая интересная практика и первые деньги. И за деньги заказчика одновременно можете создать себе портфолио.
Не надо возлагать больших надежд. Просто попробуйте найти заказы в конце самостоятельного обучения. Будет здорово, если у вас получится. Но не надо считать, что прошли стажировку и стали настоящим программистом. Это хорошее занятие, только когда вас ещё не берут серьёзные компании. Либо вы там уже отработали 3-5 лет.
4.2.2 Компании
Как то раз слышал про один экономический закон. Чем больше объединение работников, тем больший доход это объединение получает на каждого работника. Соответственно, в больших фирмах зарплаты у работников обычно выше. Чем у отдельных «фрилансеров». По крайней мере в IT. Именно известные гиганты индустрии платят самые топовые зарплаты и скупают лучшие умы. Поэтому «дядю», собирающего специалистов в кучку и дающего работу, надо любить. Потому что вместе можно заработать гораздо больше, чем по отдельности.
А раз так. Вам необходимо научиться работать в команде. Использовать коллективные средства разработки. Коллеги будут делиться с вами опытом, помогать исправлять ошибки. Вы сами удивитесь, как много нового есть в профессии, с чем не сталкивались ранее.
Как говорилось ранее, большинство людей «профессионалы». Попав на свою первую работу, они «успокоятся». И их стратегией будет «выживание». Они будут осваивать только знания, необходимые здесь и сейчас. Допустим, надо составлять SQL запросы для кода. Они быстро посмотрят в инете, как сделать запрос под конкретную задачу. И напишут код на этой основе. Потом код попадает на «сode review» к опытному коллеге. Там выясниться, что вместо двух запросов и кучки кода, можно написать один запрос, но с «джойнами». И вот стажёр лезет в инет. Читает там кусок какого-нибудь материала о «джойнах». Переделывает код. Так каждый день. Таким образом большинство стажёров накапливает знания.
Правильно было бы после 3-4 подобных вопросов, связанных с базой данных, взять руководство по этой СУБД и изучить полностью. Этим обычно заняты только «любители». Которым становиться любопытно, что кроме «джойнов», там ещё есть.
Надо отметить, читать любые руководства на данном этапе, гораздо интереснее. Вы уже знакомы с технологией. И хорошее знание, может значительно облегчить работу. Это гораздо привлекательнее, чем просто абстрактные примеры из книг, на предыдущем этапе.
Стажировка плавно перетекает в обычную работу. Сложно выделить тот момент, когда вы можете считать себя полноценным разработчиком. Наверное когда на ваши вопросы коллегам, кончаются простые ответы. И вы понимаете, большинство проблем придётся решать самим. Обычно этот период полгода. Если хорошо потрудились на предыдущем этапе. Если же поторопились, устроились, дочитав книгу по основному языку наполовину. Значит продолжайте освоение книги и дополнительных технологий.
После стажировки вы вольны делать всё, что угодно. Фрилансить. Делать самостоятельные проекты и прочее. Но мой вам совет. Иногда почитывать связанную с вашей работой литературу. Для повышения квалификации. Если раньше вы читали, как вообще писать код. То сейчас вам можно прочитать, как это делать очень хорошо и правильно. Будьте уверены, вы всегда будете видеть новые горизонты профессиональной подготовки. Не ленитесь! Особенно, если хотите большую зарплату.
5 Заключение
Надеюсь данная статья поможет всем желающим освоить нашу замечательную профессию.
Если вам понравится данный труд. Есть идея рассказать о плюсах и минусах высшего образования в IT.
Как научиться программировать в 9 лет самостоятельно / Хабр
Многие считают, что в 9-10 лет можно программировать максимум на Scratch’е. Но это не так. В 9 лет можно и на C# Windows Forms программки пилить. Главное – желание.
С чего все началось
Все началось тогда, когда я захотел сделать полноценный компьютер в Minecraft.
Я устроил DDoS атаку на Яндекс Я искал информацию, как работает компьютер. Во время поиска, мне на глаза попался видеокурс по шарпу. И началось…
Не всё так просто в этой жизни
Посмотрел первый урок «Что такое C# и зачем он нужен».
Я подумал:
«Зачем доучивать до конца? Установлю Visual Studio, понажимаю по кнопочкам (не на клавиатуре) и готово! Я — программист!»
Но не всё так просто.
Что это? Аааа! Помогите!
Начал бить по клавиатуре… Не в Visual Studio, а в Яндексе:
«Как программировать»
«Как программировать на C#»
«Уроки по C#»
И т.д.
Понеслась!
Нашёл сайты metanit.com и professorweb.ru. Читал…
Первые результаты
Сначала я работал в консоли. Сделал консольный «блокнот», консольный калькулятор, даже «виртуальную машину» и «язык программирования» написал (не доделал).
(К сожалению, они не сохранились).
Оконные приложения
Скачал вот эту книжку. Называется «C# для школьников». В ней есть уроки создания Windows Forms приложений. Дерзал, делал.
Игры
Надоело писать скучные, никому не нужные приложения.
И у меня появилась идея! Сделать мини-игру на Windows Forms!
Называлась Adventure of Warrior.
Начал учить XNA. На 3-й день сделал игру.
Еще пробовал сделать псевдо-3d графику:
Конференции
Участвовал в конкурсах 2 раза.
Первый раз победил (с оговорками). Как я победил? Меня не пускали соревноваться с программистами из старшей школы. А я ж был третьеклассник. Пустили соревноваться с второклашками. Пока они рассказывали про поезда, как они работают, ПДД и т.д., пришёл я.
Показал игру, и всё — 1 место!
Второй раз не попал в призовые места. Хотя моя программка – так себе. Называется Alprog.RadioWave– приложение для прослушивания интернет-радио.
Переход на WPF
Спустя два года
Ура! Я умею писать на Windows Forms!
Тем временем, мне захотелось сделать что-то новенькое! Анимации, полупрозрачность элементов.
Ну почему GDI не умеет работать с видеокартой?! Он не тянет!
Ищу… Оооо! Нашёл! WPF!
MVVM? Что это??
Уже разозлился, подумал написать свой UI Фреймворк в Windows Forms на OpenGL.
Начал делать. Ой! Еще OpenGL учить надо! А как кнопку отрисовать? Текстуры в Photoshop’e делать?
Я переступил через порог «нихачу учиться! Я и так всё снаю!» и начал учить. Практика – вещь золотая в обучении.
Что сейчас?
А сейчас в 2019 году, когда мне 11 лет, я учусь на Xamarin.Forms и разрабатываю органайзер. Называется Alprog.Priority.
Первая версия называлась Alprog.XNote:
Уже на WPF
Вот основная:
Стал школьным «тыжпрограммистом». Информатику сдал экстерном. Если что, учителя ко мне обращаются (очень часто).
На уроках информатики приношу свой ноутбук и творю. Учитель информатики стал моим наставником.
Очень ему благодарен. Иногда бывает, что нет идей – хочется бросить программирование. А учитель подсказывает мне, куда двигаться дальше. И я начинаю реализовывать новые идеи.
Ещё я благодарен своим родителям – за поддержку и веру в меня.
Итоги
Как видите, если есть желание, то есть и результат. Чуть-чуть поплясать с бубном вокруг компа, и точку с запятой ставишь вовремя.
P.S. Ждите новых статей!
«Не надо „хотеть“ стать программистом». Белорусский тимлид — о тех, из кого не получится хороших разработчиков
Ведущий iOS-разработчик neoviso Игорь Шавловский разобрал по пунктам, в каких случаях шансов стать хорошим программистом не так уж много.
Несколько раз в год я даю консультации по вопросу: «Куда лучше поступить, чтобы стать программистом?» Чаще всего спрашивают мамы выпускников. Звучит это обычно так: «Говорит, что хочет стать программистом, будем сдавать ЦТ по математике, но не знаем, куда подавать документы». На вопрос, почему именно программистом, отвечают, что зарплаты высокие.
Разберём по пунктам, в каких случаях вы не станете хорошим программистом. Причём вне зависимости от вуза, который выберете.
Игорь Шавловский
Увлекается программированием большую часть жизни, в ИТ пришёл на третьем курсе университета. 8 лет занимается iOS-разработкой. Начинал с должности разработчика-джуниора и дорос до Team Lead в компании neoviso.
1. Если хотите, чтобы вас научили программированию.
Почему? Большинство из нас до сих пор живёт в прошлом веке с парадигмой советского образования и строгого следования учебному плану. Лабораторные выполняются, потому что без них не поставят зачёт, а на лекции ходят, поскольку надо писать конспект — вдруг его проверят на экзамене. Дипломный проект для многих — не научная работа, а повинность и беготня за справкой о внедрении.
Время занимательных историй. В одном из ведущих вузов Москвы студент пришёл на экзамен по высшей математике. Вытянул билет, сел за стол, на котором лежали книги. В них полностью содержался курс вышки. Он подготовился, решил задачу, сдал экзамен на высший балл и подал зачётку преподавателю. Оказалось, что он сдал экзамен за второй курс, а сам ещё на первом. Студент не знал, как выглядит его преподаватель, ни разу не видел своих одногруппников, он просто случайно ошибся аудиторией. Как вы думаете, спрашивал ли он у друзей, куда лучше поступить, чтобы стать кем-то там? Пошёл ли он в университет, чтобы писать конспекты? А что он получил от университета, если не ходил на лекции? Как насчёт лабораторий, профессоров и научных коллективов, которые работают в вузе? Не это ли университет предлагает нам в первую очередь?
Когда абитуриент ищет себе вуз, он задаётся вопросом: «Где меня будут учить?». А должен спрашивать: «Где я получу лучшие возможности учиться?».
В контексте обучения программированию полезно задавать такие вопросы:
- Где лучшие преподаватели?
- Где лучшие лаборатории?
- Где есть объединения по интересам, возможность участия в олимпиадах и коллаборациях, связи с международными институтами?
Логично искать место, где вы получите больше навыков, чем в интернете на пошаговых курсах программирования.
2. Если вам не интересно программирование.
Приходить в университет надо уже с навыками программирования, вас никто не должен учить. В вузе надо развиваться, а не пытаться научиться с нуля. Абсолютно бессмысленно рассматривать учебное заведение как стартовую площадку для программиста. Для этого достаточно открыть Блокнот, скачать компилятор, заглянуть в Google и начать писать.
Интерес, в первую очередь, должен быть не в зарплате, а в возможностях, которые получает человек, имея в своих руках такой мощный инструмент, как программирование.
Пример из жизни. В школе мне всегда было интересно рисовать графики. Я ждал, когда же мы изучим новою функцию, чтобы увидеть очередную линию, почувствовать то, как математическая формула превращается в изящный рисунок, как круг порождает тригонометрические формулы. Именно поэтому, когда я впервые держал в руках учебник программирования, сразу начал искать в нём, как нарисовать линию, ведь любой график представляет собой последовательность линий. Но этого, как оказалось, было недостаточно, для начала потребовалось понять как «писать код». Пришлось прочитать первые скучные и бесполезные 20 страниц учебника, из которых узнал, как объявлять и вводить переменные, выводить результат. Свою первую же программу я попытался написать, не подсматривая в книгу. Тогда я с треском провалился — оказалось, что забыл всё, кроме begin и end. Более того, пришлось принять на веру необходимость непонятной строчки кода uses crt, что меня возмутило. Я не хотел терять контроль над происходящим, наоборот, важно было, чтобы всё написанное мной имело только те смысл и цели, которые я закладывал.
Через 10 минут моя первая программа запустилась, сделала какие-то простейшие математические операции над введёнными данными и вывела результат. Могу смело заявить, что в тот момент я научился программировать на Pascal, у меня было всё необходимое, кроме знания стандартных библиотек. Посидев ещё пару дней, я перевёл монитор в графический режим и нарисовал график экспоненты. Так моя первая цель была достигнута.
Все остальные цели были исключительно игровыми: я писал для себя простые игры, потом усложнял, придумывал новые возможности и радовался, что всё выходило, как задумано. Я получал удовольствие от того, что могу дать компьютеру задание, которое он безошибочно выполнит, бросал себе всё более сложные вызовы и справлялся с ними. А всё потому, что у меня был интерес. Компьютер я фактически рассматривал как игрушку и не думал о том, что с его помощью можно зарабатывать. Программирование было для меня тогда лишь инструментом реализации своего интереса.
Поэтому не надо «хотеть» стать программистом, намного полезнее видеть в программировании удивительный мир бесконечных возможностей. Это поможет вам создать то, что поддержит ваши интересы. Можно начать с разработки своей домашней страницы, создания простой игры или моделирования эволюционного процесса, защиты своих данных. А можно сыграть «Кузнечика» на матричном принтере или нарисовать фрактал Мандельброта.
3. Если у вас нет аналитических навыков.
В одной из своих колонок я писал, что главным навыком любого программиста является алгоритмизация — умение (даже, возможно, искусство) строить последовательности простых команд, которые в сумме выполняют конкретную задачу.
Именно с разбиения целого на части надо начинать путь программиста. Любая сложная программа состоит из множества строк кода, каждая из которых содержит нескольких простых команд. Нет смысла начинать кодить, если эти строчки ещё не «написаны» в вашей голове.
4. Если привыкли учиться по книгам.
По каждому языку программирования существует бесчисленное множество книг, но ни одна из них не сделает вас программистом. Как правило, книги очень дотошные и скучные, дают большое количество деталей, в них стараются ничего не упустить. Это неудивительно, ведь они написаны теми, кто уже имеет программировать. Компоненты и подходы к разработке уже понятны авторам, которые рассказывают об этом сквозь призму разбирающегося человека, а не новичка.
Предлагаю людям, не знакомым с разработкой на iOS, почитать в книге, как работает UITableView, и попытаться написать код исключительно на основе этой информации. А теперь попробуйте просто открыть готовый код в интернете и понять, как он работает. Во втором случае вы научитесь работать с таблицей в разы эффективнее, потому что практические навыки приобретаются намного быстрее, чем усваивается информация из книги.
В книгах каждому компоненту может быть уделено 10 страниц текста. Но даже если вы прочитаете всё о кнопке, вы так и не сможете с ней ничего сделать, потому что реферативные знания вам не нужны, программисту нужна практика.
Начиная изучать новый язык, вам надо разобраться с синтаксисом и базовыми подходами к разработке — например, управлением памятью. Всё остальное — это практические навыки, которые появляются в процессе решения конкретных задач. Все они могут быть разделены на мелкие, а каждая мелкая задача уже решена в интернете. Так, со временем и повторением типовых приёмов, вы изучите всё то, что авторы книг безуспешно пытаются впихнуть в свои 500-страничные труды.
5. Если будете рассчитывать на экспресс-курсы.
Сегодня по всей Беларуси можно увидеть уйму рекламных плакатов о курсах и о том, как на них за считанные месяцы взрастят программиста с нуля. Мне всегда было интересно сходить на них. В первую очередь, чтобы посмотреть на людей, которые громогласно гарантируют трудоустройство.
Курсы программирования, как и вуз, не могут ничему научить, они могут лишь дать начальный толчок. При условии, что у вас есть интерес к программированию (а не к профессии программиста!). Если посетитель этих курсов не заинтересован ни в чём, кроме их окончания и получения бумажки, они бесполезны. Чтобы курсы сработали, надо самостоятельно уделять программированию хотя бы раз в 10 больше времени, чем на аудиторных занятиях. То есть на 2-часовое занятие должно приходиться, как минимум, 20 часов самостоятельного закрепления. Более того, если учитывать, что на повторение двухчасовой лекции не должно уйти больше нескольких часов, остальное время надо тратить на практику и копание в деталях.
Ставьте себе задачи, которые интересны, решайте их путём анализа, поиска возможных решений и оптимального из них — тогда вы уже за пару первых недель изучите всё, что сможете получить на курсах, и пойдёте дальше. А после выпуска действительно сможете найти работу и начать развиваться как профессионал.
А вы станете хорошим программистом?
Возможно, эта статья напугала того, кто только подумывает стать программистом. Но бояться не надо. В компьютере есть процессор, который выполняет команды, есть память, которая хранит данные, имеются устройства ввода/вывода, остальное — работа программиста, её реально освоить. Если вам интересно взять в свои руки то, что происходит внутри вашего компьютера, и создать свою собственную программу — сделайте это прямо сейчас.
Как стать программистом с нуля?
Многие люди хотят связать свою жизнь с программированием. Это профессия прогрессивная и интересная, она пользуется спросом и хорошо оплачивается. Освоить навыки программирования с нуля можно самостоятельно, но обучение может занять много времени и потребует определенных усилий.
Выбор языка и направления
Стать программистом с нуля в домашних условиях довольно сложно. Для начала придется выбрать более узкую сферу специальности, ведь программист может делать приложения, сайты и многое другое. Потом следует определиться с языком программирования. Это непросто, придется углубиться в сферу и потратить много времени на детальное изучение.
Сам процесс обучения может быть полностью самостоятельным и проходить с помощью доступной литературы и программного обеспечения, сервисов. Некоторые находят себе наставников или идут в специализированные учебные заведения для получения сертификата или диплома. Все варианты могут быть одинаково эффективными.
Рассмотрим основные направления и языки программирования.
- Веб-разработка. Здесь используются такие языки, как Python, Ruby, JavaScript и PHP.
- Разработка для мобильных устройств. Для гаджетов под управлением IOS нужно знать Objective-C, а если нужно писать для Android, то используется язык Java. В данном направлении также используется Swift.
- Разработка программ и игр для ПК. Следует знать такие языки: C++, C#, C.
- Машинное обучение и ИИ. Для работы в этом направлении используются Python, R, Scala.
С чего начать?
Выучить программирование в домашних условиях довольно сложно, однако такой выбор обязательно со временем окупится. В свободном доступе есть множество пособий и книг для освоения нового. Стоит понимать, что существует много языков программирования, и каждый создан для определенного круга задач. Есть и другая информация, которую придется изучать.
Для облегчения можно начать обучение программированию с курсов. Так, человек с практическим опытом сможет помочь определить вектор обучения. Более того, это отличный способ для сокращения временных затрат. Уроки и задания от профессионалов позволят быстро сориентироваться в большом количестве информации.
Если все же хочется осваивать коды самостоятельно, то рекомендуется работать с официальной документацией на языке оригинала.
Преимущества самостоятельного освоения профессии:
- большое количество практики, которая обязательно понадобится в ходе изучения языков и библиотек;
- возможность быстро начать зарабатывать, применяя новые навыки;
- более ответственный подход и настрой;
- минимальные финансовые траты или их полное отсутствие.
Стоит отметить, что стать профессионалом за короткий период времени не получится. Советов спрашивать не у кого, поэтому в обучении придется сталкиваться со многими сложностями. Поиск информации и ее анализ занимает больше времени, чем само обучение. Но в любом случае стоит определиться с родом деятельности в самом начале.
Часто новички начинают с освоения сложных и престижных языков. Первое время интерес сильный, но большая нагрузка приводит к его потере.
При выборе первого языка стоит ориентироваться на такие критерии:
- возможность будущего трудоустройства;
- низкий уровень вхождения;
- направление деятельности.
Уровень вхождения предполагает ту сложность языка, которая не заставит отказаться от его изучения.
Самыми доступными считаются PHP, Python, Ruby.
При этом важно четко понимать, подходит ли язык программирования для решения тех задач, что вызывают интерес. Так, для написания сайтов и игр нужно получить разные знания и навыки.
Разобраться в HTML и CSS
В самом начале пути стоит получить базовые навыки. HTML является языком гипертекстовой разметки. С его помощью создается веб-страница. Изучение довольно простое, ведь язык состоит из понятных тегов. CSS позволяет оформить ранее созданный элемент так, чтобы он был визуально красивым.
Найти подходящую литературу в свободном доступе легко, но в оригинале она на английском языке.
Многие специалисты рекомендуют не обращаться к переводам, а изучать программы в том виде, в котором они есть изначально.
Освоение HTML и CSS дает возможность работать верстальщиком. При желании стоит остановиться на этом этапе, уделить ему чуть больше времени.
Познакомиться с jQuery
Библиотека JavaScript имеет простой и понятный синтаксис. Есть довольно много литературы, которая поможет в обучении. Набор функций jQuery существует уже давно и позволяет улучшить страницу уже после использования HTML и CSS. С помощью этой библиотеки можно:
- убрать различия в отображениях документа, которые существуют между браузерами;
- абстрагировать интерфейс;
- исправить большую часть проблем, которые могут возникнуть при просмотре страницы.
Если при изучении стало интересно, то можно продолжить осваивать JavaScript, и тогда будет достаточно навыков для работы фронтенд-программистом.
Эта информация нужна всем, кто решил направиться в веб-разработку. В других случаях достаточно просто ознакомиться с библиотекой, понять принцип действия и двигаться дальше.
Освоить серверный язык программирования
Тут будущему специалисту предстоит делать выбор. Серверные языки нужны для того, чтобы описать возможные сценарии взаимодействия пользователя с приложением или сайтом. Перед обучением стоит тщательно продумать стратегию. Языков этого вида довольно много: PHP, Ruby, Java, C, Python и другие. Обычно в проекте используется тот, на котором есть больше специалистов.
Самым распространенным серверным языком программирования является PHP. Стоимость работы с его использованием невысока, ведь порог вхождения в нишу будет низким.
В случае с языками Java, Ruby, Python дела обстоят куда лучше. Знать все необязательно, нужно выбрать что-то одно и овладеть им в совершенстве. При этом самым простым для изучения считается Python.
Базовые знания
Программисту любого уровня и направления стоит знать математику. Причем ключевую роль имеет понимание логики, а не работа с числами. Считается, что это особо важно для выполнения трудоемких задач.
Каждый, кто решил начать обучение, должен знать английский язык на том уровне, чтобы понимать официальную документацию.
Большая часть образовательной литературы устаревает к тому моменту, как ее переводят на русский. Более того, программирование популярно в любой стране, и знание английского расширит горизонты начинающему специалисту.
Программисту обязательно нужно знать:
- язык разметки HTML и оформления CSS;
- JavaScript;
- системы Android, iOS, Windows для ПК и ее мобильную версию;
- алгоритмы.
Где получить опыт?
Освоить профессию с помощью одних только самостоятельных заданий невозможно, нужно заниматься реальными проектами. Постепенно знания позволят зарабатывать хорошие деньги. Свой первый код можно написать при создании собственного проекта, сайта или программы. Так поступают при изучении курсов программирования. Однако это не единственный способ.
Многие начинающие специалисты начинают фрилансить. Удаленная работа довольно удобна, ведь можно параллельно получать недостающие знания.
Для начала можно искать заказы на биржах фриланса. Придется заниматься мелкими и недорогими задачами, чтобы заработать определенный рейтинг и доверие со стороны работодателей.
Интереснее и перспективнее работать на англоязычных биржах. Оплата там больше, а задачи – разнообразнее. Такой опыт пригодится для создания портфолио. После работы в интернете можно найти компанию и строить в ней карьеру. Многие программисты так и продолжают работать удаленно ради собственного удовольствия и чувства независимости.
Довольно интересным вариантом будет поиск проекта, над которым работают такие же начинающие специалисты. Можно обратиться за помощью к знакомым программистам, которые смогут поделиться неким спектром задач. Многое зависит и от направления, которое было изначально выбрано для обучения. Так, при написании программ намного лучше сделать собственный проект.
Рекомендации
Профессионалы уверяют, что большое значение имеет первый язык, который начинает осваивать новичок. Именно эти знания станут основой для всех последующих. Первый язык позволяет понять логику написания кода, поэтому лучше, если он будет простым и понятным. Также следует как можно раньше начинать применять знания на практике.
Самым простым для изучения считается язык Python. Незамысловатый синтаксис не вызывает трудностей понимания логики, а знание этого языка позволяет сэкономить время. Более того, после освоения уже можно выполнять оплачиваемые задачи. Существующие базы библиотек сделают работу с Python максимально простой.
Следующим претендентом на изучение является Java. Язык популярный, используется при решении многих задач. Правда, осваивать его будет сложнее, чем предыдущий. Интересным вариантом будет и PHP. Особенность языка заключается в том, что есть много вариантов решения одной задачи.
Не стоит начинать с языков C, С++ и C#. Они открывают перспективы, однако отличаются высокой сложностью.
Все специалисты сходятся во мнении, что это худшее начало погружения в профессию. При этом важно, чтобы первый язык позволял решать задачи в выбранной сфере деятельности.
Как стать программистом с нуля ⋆ MAXIMUM Блог
Хотите стать успешным программистом и много зарабатывать? При этом пока не разбираетесь в математике и информатике? Тогда эта статья специально для вас. Вам нужно пройти всего 7 шагов, чтобы стать программистом с нуля.
Программист — одна из лучших, если не лучшая профессия современности. Информационные технологии окружают нас на каждом шагу: приложения, программы, сайты, сервисы. Программисты создают и поддерживают эти технологии, которые нужны сегодня всем людям. Именно поэтому «айтишники» — такие востребованные и высокооплачиваемые специалисты.
Правильно написать программу, которая проработает несколько лет — огромный труд. Подробнее о том, как стать программистом с нуля, мы рассказываем на курсах IT для школьников. Вы научитесь создавать и поддерживать сайты, обеспечивать кибербезопасность, разрабатывать игры. Выбирайте курс и записывайтесь на бесплатный открытый урок по ссылке!
Шаг 1. Определить свои цели
Для начала необходимо задать самому себе вопрос: почему вы хотите стать программистом? Одно из преимуществ этой профессии — достойные заработные платы и карьерный рост. По данным сайта «Труд-ком» в Москве программистам платят от 98 до 192 тысяч.
Есть и другие преимущества. Работа программистом — шанс реализовать свою идею создания крутого приложения, а также развить свои навыки в решении математических задач. Подумайте, чего вы хотели бы достигнуть. Это очень важно! Сейчас узнаете, почему.
Шаг 2. Выбрать язык программирования
Второй вопрос, который обязан задать себе начинающий программист: какой выбрать язык программирования? Язык напрямую связан с областью, в который вы хотите развиваться. Если вы уже выбрали ее, вот схема, которая поможет определиться с языком:
- Мобильные приложения — Java, Swift
- Компьютерные игры — C#, C++
- Сайты — JavaScript
- Программное обеспечение — C, Ruby
- Системное администрирование — Python
Шаг 3. Изучите основы языка
Программистам приходится решать десятки задач ежедневно. Поэтому для того, чтобы стать программистом с нуля, необходимо развить логические и математические навыки. Старайтесь расширять свой кругозор, решая задачи школьного курса математики и информатики. Читайте книги по синтаксису выбранного языка программирования, участвуйте в городских олимпиадах.
На данном этапе нужно изучить основы языка. Попробуйте написать простейшие программы: калькулятор, календарь или ежедневник. Потренируйтесь в решении задач на сайте «Степик», выбрав язык программирования для изучения.
Шаг 4. Получите образование
После окончания школы можно стать программистом, не поступая в вуз. Но тогда вам придется вложить много сил в изучение языка программирования.
Плюс поступления в вуз в том, что вы получите опыт работы с программными задачами, а также знакомства в сфере программирования. Во время учебы вы будете получать опыт не только на своих ошибках, но и на чужих. Это позволит быстрее стать профессионалом в IT.
В МГ, МГТУ им. Н.Э.Баумана и МФТИ есть бесплатные курсы от Mail.ru Group (Технотрек, Техносфера и Технопарк). Поступив на них, можно стать профессионалом и устроиться в компанию мечты.
На этом этапе изучить алгоритмов и структур данных. Воспользуйтесь следующим списком книг:
- «Алгоритмы. Руководство по разработке», С. Скиена
- «Алгоритмы» С. Дасгупта, Х. Пападимитриу, У. Вазирани
- «Алгоритмы. Введение в разработку и анализ», А. Левитин
Шаг 5. Создайте командный проект
Один из самых трудных шагов — создание командного проекта. На этом этапе начинающий программист узнает о системах контроля версий, получит навыки коммуникации с товарищами по команде, а также столкнется с трудностями, которые возникают при работе в IT компаниях.
Найти команду можно на хакатонах. Хакатон — это соревнование для программистов, на котором участники разрабатывают программы за отведенное время. Некоторые популярные идеи начинали свой путь с хакатонов, такие как: игра «Superhot», приложение «Ease Taxi» или сайт под названием «Zaarly». Найти хакатоны с понравившейся темой, а также зарегистрироваться на посещение мероприятия можно на сайте «Хакатоны.рф».
При создании командного проекта не нужно устраиваться на работу в крупную компанию. Вы можете работать над проектом из дома, связываясь с друзьями через Zoom или Discord. Для эффективной работы в команде вам пригодится изучение следующих книг:
- «Git для профессионального программиста.», С. Чакон, Б. Штрауб
- «В работу с головой. Паттерны успеха от IT-специалиста.» К. Ньюпорт
- «Программист – фанатик.», Ч. Фаулер
Шаг 6. Изучите паттерны
Во время создания проекта программисту необходимо углубиться в его архитектуру. Важно узнать, как сделать приложение или сайт, которые можно будет поддерживать на несколько лет. Вам понадобится изучить паттерны программирования, для этого пригодятся следующие книги:
- «Чистый код», Р. Мартин
- «Погружение в паттерны проектирования», А. Швец
- «Совершенный код», С. Макконнелл
Шаг 7. Подайте заявку на стажировку
Перед тем, как устроиться на должность программиста в компанию своей мечты, попробуйте свои силы в стажировках. Прохождение стажировки даст вам новый опыт работы над реальным проектом. Еще вы повысите свою квалификацию в IT-специальности и поймете, хотите ли вы реально этим заниматься.
В крупных компаниях, таких, как Rambler Group, Яндекс или Mail.ru Group, можно сначала попасть на должность стажера, а после стажировки устроиться на постоянную работу. Подавайте заявку и пробуйте силы в следующих стажировках:
Как стать программистом? — Как стать!
На чтение 4 мин. Просмотров 429 Опубликовано
Обновлено
Современный мир стал зависим от высоких технологий. Они двигают человечество вперед и развивают многие отрасли. При этом особое внимание уделяется программированию, которое связано непосредственно с компьютерами. Без программирования не было бы видео игр, фильмов-блокбастеров, социальных сетей, компьютерных программ и даже операционной системы, без которой компьютерное устройство практически бесполезно. Поэтому профессия программиста очень востребована и популярна. Кроме этого она хорошо оплачивается. Однако программистом быть не так легко, как может показаться на первый взгляд. Такой человек должен много учиться и быть образованным, усидчивым, целеустремленным, грамотным, коммуникабельным и так далее. Но как стать программистом и что для этого необходимо сделать?
Как стать программистом с нуля
Чтобы знать, как стать программистом с нуля, нужно иметь огромное желание. Без этого стать программистом не получится. Важно понимать, что придется потратить много времени и сил, чтобы научиться программированию. Этот процесс долгий и зачастую тернистый, но он того стоит. А профессиональное обучение пройти крайне рекомендуется, так как это поможет в будущем стать хорошим программистом.
Задаваясь вопросом, как стать программистом с нуля, надо понимать, что человек должен быть одаренным. У него могут проявляться определенные способности уже с самого детства. Если есть склонность к математическим наукам, физике и отлично развито мышление, то это обязательно поможет стать программистом.
Также будущий программист должен выбрать направление, которое ему больше всего нравится. Всего существует три основных направления программирования: системное, прикладное и веб. В последнее время быстро прогрессирует веб-программирование. Оно связано с интернет-сайтами, которые отображаются в браузере. Изначально веб-программист осваивает такие языки, как CSS (каскадные стилевые таблицы) и HTML (гипертекстовая разметка). Далее необходимо изучить два типа языка веб-программирования: серверный и клиентский. В перечень клиентских языков программирования входят JavaScript, ActionScript, AJAX, VBScript и т.д. Серверные — PHP, С#, SSI, ASP, Perl и т.д. Минимальный объем знаний веб-программиста: один язык программирования серверный и один клиентский. Чтобы понять структуру серверов и принцип их работы, нужно обратить внимание на систему управления базой данных Microsoft SQL Server, MySQL, Microsoft SQL Server Express, SQLite, PostgreSQL или Oracle.
Прикладное программирование представляет собой создание приложений для взаимодействия и контакта с пользователем. Причем это могут быть как персональные приложения, так и сетевые. Основные языки прикладного программирования — Java, C++, C, Pascal, Python, Delphi и Visual Basic.
Системное программирование часто можно перепутать с прикладным. Такое программирование является совокупностью приложений, которые отвечают за правильную и стабильную работу программного обеспечения пользователя. Другими словами системное программирование находится между аппаратным и пользовательским программным обеспечением, соединяя их. Системный программист выполняет большое количество разнообразных функций и рутинной работы. При его работе применяются низкоуровневые языки программирования. Одним из самых простых и универсальных языков является Ассемблер.
Как стать программистом в домашних условиях
В последнее время все большее количество программистов стало обучаться дома. Но как стать программистом в домашних условиях? Оказывается, сделать это не так уж и сложно. Достаточно раздобыть тематические книги или интерактивные приложения, которые наглядно продемонстрируют весь процесс обучения. Много полезной и нужной информации можно найти и в интернете, причем даже в свободном доступе. Также существует возможность нанять частного преподавателя, который более детально сможет объяснить многие важные моменты.
В некоторых случаях друзья или знакомые помогут решить вопрос как стать программистом в домашних условиях. Ведь программист имеет уникальную возможность обучаться и работать как дома, так и в офисе. А главным преимуществом обучения в домашних условиях является тот факт, что значительно экономится время, а также зачастую и деньги. Такой способ также позволяет составить распорядок дня самым удобным для себя образом.
Как стать программистом 1С
Сейчас многие люди хотят стать программистом 1С. Их привлекают в первую очередь информационные технологии и бизнес-процессы. К тому же программист 1С крайне востребованная профессия. Однако, как стать программистом 1С? Нужно иметь желание и запастись терпением. Затем нужно приобрести программу 1С. рекомендуется прочитать специализированные книги, а также пройти курсы, связанные с 1С. И, конечно же, необходимо постоянно практиковаться. Кроме базовых знаний программирования потребуется изучить управленческий и бухгалтерский учет. Только тогда можно действительно стать программистом 1С.
Как стать программистом-самоучкой?
Большинство людей хотят изучать программирование, но чаще всего сталкиваются с множеством препятствий. У меня нет. Я работаю полный рабочий день. У меня нет денег, чтобы платить за колледж. Я не могу пойти на учебный курс по программированию.
Есть много способов изучить программирование, но не все из них доступны для большинства людей.
Из простых решений, которые вы могли бы использовать, — стать программистом-самоучкой.Став самоучкой, вы можете учиться бесплатно, в удобном для вас темпе и дома.
Но… Как стать программистом-самоучкой? Посмотрите это видео и узнайте!
Стенограммы видео
Джон Сонмез:
Эй, как дела? Джон Сонмез здесь с сайта simpleprogrammer.com. Сегодня я собираюсь поговорить о том, как стать разработчиком-самоучкой. Как стать программистом — как стать разработчиком-самоучкой или стать разработчиком программного обеспечения, научившись программировать, как вы хотите это сформулировать.У меня нет конкретного вопроса, но меня часто спрашивают об этом, и я собираюсь снять и это видео, потому что некоторые из вас часто возражают, что я продвигаю учебные лагеря по программированию. У меня есть книга The Complete Software Developer’s Career Guide, и в ней я предлагаю вам три пути. Я говорю колледж, самоучка и учебный лагерь, и я дал вам плюсы и минусы каждого из них, верно? Я немного предвзято отношусь к учебному лагерю? Да, но это не значит, что самоучка — не лучший вариант.Просто единственная причина, по которой я рекомендую учебный лагерь, а не самоучку, заключается в том, что он дает вам немного структуры и как бы убирает шум. Я хочу рассказать вам, хотите ли вы стать разработчиком программного обеспечения-самоучки, как вы можете это сделать, потому что в основном это то, что я сделал, и это определенно возможно, особенно сегодня.
Вот в чем дело. Начнем с самого начала, как это сделать. Самое первое, что вы хотите сделать, — это выяснить, чего именно вы хотите достичь, потому что многое — это ошибка, верно? Я тренирую многих разработчиков.Кстати, если вам нужен мой коучинг, вы можете проверить его на simpleprogrammer.com/coaching. Это дорого, но мне это не нужно. Мне не нужен личный тренер. Я мог бы просто сказать вам это, если вы это пытаетесь сделать, хорошо?
Многие разработчики, которых я обучаю, одна из самых больших ошибок, которые они совершают, — это то, что они пытаются изучить так много разных вещей, и их подходы разбросаны. Я много говорю об этом, но это действительно очень важно. Если вы собираетесь учиться-самоучке, главное — сосредоточенность и дисциплина.Вот почему это не срабатывает для многих людей, особенно сегодня, потому что там много отвлекающих факторов, много шумов, таких как белка вон там.
Чтобы сделать это, вы должны начать с очень и очень четкой цели. Вы можете узнать так много разных вещей, так много технологий. Я хочу, чтобы вы просто работали в обратном направлении, и я хочу, чтобы вы пошли и выбрали описание должности, которая вам нравится. Может быть, вы проведете какое-то исследование и получите некоторое общее представление о том, в какой области, какие технологии вы хотели бы использовать.Как только вы это выясните, вы идете искать работу, смотрите описания должностей и видите, что у них общего. Вы видите, какие технологии и языки любят вместо того, чтобы получить эту работу — потому что, если вы хотите стать разработчиком программного обеспечения, это очень аморфный термин. Что значит стать разработчиком программного обеспечения? Когда ты приехал? Если вы скажете: «Я хотел бы получить такую работу», это лучший вопрос. Если вы скажете: «Я хотел бы получить эту конкретную работу.Что мне нужно, чтобы получить именно эту работу? » Итак, у нас есть… теперь вы даже можете позвонить менеджеру по найму, вы можете просто сказать: «Эй, что нужно, чтобы получить эту работу?» или вы можете позвонить кому-нибудь в компании, или вы можете написать им письмо или спросить их и сказать: «Привет. Вы знаете, я не подаю заявку на эту работу прямо сейчас, я не готов, но я просто хочу знать, как если бы я пытался получить эту работу, что мне нужно было бы знать точно, например, я прочитал описание должности . У меня есть вопросы по описанию должности.Что мне нужно точно знать? Мол, если бы я знал это, это и это, было бы это похоже на то, что вы ищете? » Вы понимаете, о чем я говорю? Возможно, вы даже сможете позвонить им по телефону Skype и попросить их предоставить вам некоторую информацию. Теперь тебе есть куда пойти. Теперь у вас есть цель.
Другой способ сделать это — сказать, например, что вы хотите создать приложение. Что ж, если вы думаете, хорошо, я хочу иметь возможность создать приложение для Android, и я хочу, чтобы оно могло делать это, и вы представляете себе или видите приложение, которое уже есть в магазине приложений, и говорите: «Я хочу иметь возможность создать это », это цель.Теперь вы можете работать в обратном направлении. Теперь вы работаете в обратном направлении и у вас есть набор навыков. Вы точно знаете, чему вам нужно научиться, и теперь можете составить план, как это узнать.
Вот что главное. Я знаю, что это не бесплатно и, возможно, это не то, что вы хотите услышать. Вы хотите изучить эти различные технологии и изучить все, но это то, как вы это делаете. Вот как вы становитесь разработчиком программного обеспечения-самоучкой, и именно с этого вы начинаете. Это еще не конец. Я дам вам пару ресурсов.Один из них, мои любимые ресурсы, Pluralsight. Вы можете проверить это здесь. Я автор сайта. Я провел для них 55 курсов и преподавал массу тем. Вы можете найти множество курсов. Я имею в виду, что примерно 30 баксов в месяц, я думаю, это то, что стоит сейчас. Вы можете получить доступ к тысячам курсов. Просто зарегистрируйтесь для этого, чтобы получить необходимые ресурсы.
Очевидно, книги. В моей книге The Complete Software Developer’s Career Guide рассказывается обо всем этом, о том, как начать работу в качестве разработчика программного обеспечения, получить свою первую работу, обо всем этом.Если вы хотите стать разработчиком программного обеспечения-самоучки, вы, вероятно, тоже захотите это получить. Есть масса учебных пособий по YouTube и бесплатных материалов. Один ресурс, который рекомендуют многие люди, — это freeCodeCamp, которого много — он в основном самоучка. Это не совсем кодовый лагерь, потому что вы сами учитесь. Вы получите немного больше рекомендаций.
Ресурсов полно. Мне действительно не нужно рекомендовать ресурсы. Вместо этого, как я уже сказал, ключевым моментом является просто сосредоточиться на достижении этой цели, а затем я скажу вам, как только вы это сделаете, и когда у вас появятся необходимые навыки, вы начнете подавать заявки на эту работу, и вы, наконец, получите эту работу, это не выполнено.Теперь идите, когда заполните остальную часть материала. Вот где я начинаю изучать некоторые вещи, связанные с информатикой и алгоритмами, тогда я хотел бы немного расширить свой набор навыков. Вы хотите иметь то, что они называют Т-образным знанием, там, где есть у вас — это как T. У вас действительно глубокие знания в одной области, но у вас есть широкая база. Во-первых, получите глубокие знания в одной области, чтобы получить работу. Вы многому научитесь, просто имея работу и работая в отрасли, а затем вы расширяете эту базу и, возможно, сможете выбрать больше специальностей, которыми собираетесь заниматься.
Стать разработчиком программного обеспечения-самоучки — не самое легкое дело в мире, в основном из-за шума. У нас так много информации. Вам просто нужно уметь разбирать информацию, и лучший способ сделать это — просто иметь цель. Если у вас есть цель, вы сможете прицелиться в нее, и вы узнаете. Это все еще будет сложно. Вам все равно придется учиться. Вам все равно придется посвятить время, но это будет приближать вас к цели, потому что вы будете знать, в каком направлении вам следует двигаться.
Как я уже сказал, я мог бы дать вам всевозможные советы о том, как это сделать, но если вы просто сделаете это одно, вы все поймете. Если у вас есть реальная цель, и у вас действительно есть цель, и, как я уже сказал, вы пытаетесь стать разработчиком, чтобы получить эту работу или создать это приложение, тогда вы будете знать, куда идти, или если вам нужна помощь на этом пути, если вы хотите инвестировать в коучинг, я мог бы научить вас помощи на этом пути. Для меня было бы более ценно просто посоветовать вам выбрать чертову цель, потому что это — большинство людей не сосредотачиваются и не выбирают цель, а сначала пытаются ее.Если у вас возникли проблемы, если вы хотите стать разработчиком-самоучкой, выберите цель и посмотрите, сможете ли вы ее понять.
Большинство людей смогут разобраться в этом самостоятельно. Это может занять у вас год. Некоторым людям требуется шесть месяцев, чтобы получить работу, если честно, как будто у меня есть много историй успеха на моем канале, когда люди это делали. Я также знаю людей, которые четыре года учились и еще не совсем готовы, потому что они продолжают менять технологии и у них нет цели.Они просто думают, что когда-нибудь они почувствуют себя разработчиком программного обеспечения и начнут подавать заявки на работу. Это не произойдет. Не идите по этой дороге. Это тупик.
Хорошо. Это все, что у меня есть для вас сегодня. Убедитесь, что вы нажали кнопку «Подписаться» ниже и нажали на колокольчик, чтобы не пропустить ни одного видео. Я поговорю с тобой в следующий раз. Береги себя.
Как стать программистом
Когда я говорю «программирование», многие люди, вероятно, представляют себе знаменитую сцену из « Матрица », где строки кода с неразличимыми символами, кажется, просто появляются и исчезают из ниоткуда.Давайте посмотрим правде в глаза, в каком высокотехнологичном фильме нет неряшливого человека из двадцати с чем-то, который набирает строки кода, чтобы взломать основной кадр или отключить электросеть за секунды? Позвольте мне первым сказать вам, что программирование — это не магия и не какая-то врожденная сверхспособность. Этот навык, как и любой другой, требует времени и практики. Более того, это действительно весело и требует большого воображения.
Вы, наверное, думаете: «Весело? Воображение? Это последнее, о чем я думаю, когда дело касается программирования! »
Ну, не сбивайте, пока не попробуете.Лично для меня программирование похоже на головоломку. За исключением того, что в отличие от большинства головоломок, когда вы закончите эту, вы получите продукт, который может облегчить вам жизнь, продукт, которым вы можете поделиться с другими, продукт, на котором вы даже можете заработать деньги! Просто спросите этого молодого малоизвестного программиста по имени Марк Цукерберг.
Вот почему сегодня я собираюсь познакомить вас с миром программирования и дать вам несколько ресурсов, которые помогут вам начать работу.
Мифы о программировании
Но сначала давайте развеем некоторые неправильные представления о программировании.
Миф № 1 — Чтобы писать код, нужно быть компьютерным экспертом. Это серьезное препятствие для многих людей. Они думают, что только потому, что они не являются компьютерными экспертами, у них нет навыков, необходимых для начала, и они не могут научиться программировать что-либо самостоятельно. Не правда!
Миф № 2 — Для написания кода нужен дорогой компьютер или дорогое программное обеспечение. Опять же абсолютно неправда!
Каждый может программировать, приложив немного усилий!
Основы программирования
Итак, с чего мы начнем? Я рекомендую начать с языков веб-программирования, таких как HTML и Javascript.Я рекомендую их потому, что все можно сделать с помощью простого текстового файла и интернет-браузера. Никакого программного обеспечения (кроме вашего браузера) не требуется, и его очень легко запустить.
Итак, ваш следующий вопрос: с чего начать обучение? В Интернете полно ресурсов, но лучший вариант, который я нашел, — это Code Academy. Посетите их веб-сайт, чтобы получить массу бесплатных (да, БЕСПЛАТНЫХ!) Уроков. Это отличное место для начала, поскольку оно укрепит вашу уверенность и покажет, насколько сильными могут быть ваши новообретенные навыки программирования!
Как только вы выучите один язык программирования, становится намного проще изучать различные варианты и типы языков.Эти языки можно использовать для создания компьютерных приложений, приложений и даже робототехники.
Когда вы только начинаете, очень важно заниматься небольшими проектами и не откусить больше, чем вы можете проглотить. Я делал это много раз, когда начинал программировать и просто был ошеломлен. Когда вы начинаете говорить: «Я собираюсь создать следующую Angry Birds», гораздо более вероятно, что вы будете поражены и сдадитесь, чем добьетесь успеха и заработаете миллиарды. Поэтому вместо того, чтобы пытаться создать следующее отличное приложение, начните с малого и создайте свой собственный информационный бюллетень по электронной почте.Затем, как только у вас это получится, постепенно увеличивайте масштаб.
Также важно по возможности немного поработать каждый день. Когда я работаю над проектом, я обычно посвящаю ему не менее 10-15 минут в день, чтобы оставаться в курсе и не ржаветь. Это помогает сохранить ваши навыки и ум в процессе. Посетите подкаст Get-It-Done Guy, чтобы получить больше советов по организации.
Хотите построить собственного робота?
Использование Code Academy поможет вам начать изучение основ веб-программирования, но что, если вы хотите создать робота, который может взаимодействовать в реальном мире? Это не научная фантастика и не несбыточная мечта.Это можно сделать прямо сейчас! Arduino — это платформа робототехники с открытым исходным кодом, которая довольно дешева (около 50 долларов для начала). Он также прост в использовании и имеет безграничные возможности. Просто проверьте их веб-сайт и некоторые проекты, которые сделали люди.
Более того, Arduino имеет огромное сообщество пользователей, от экспертов по программированию до начинающих любителей, которые просто любят возиться. Они являются прекрасным ресурсом для людей, которые только начинают заниматься робототехникой.
Самый простой способ научиться программировать — это иметь программу или задачу, которую вы хотели бы решить.Это делает обучение и работу для достижения этой цели более интересными и применимыми. И кто знает, если вы напишете полезную для вас программу, возможно, другие люди захотят ее купить по той же причине, по которой вы ее создали. А потом, как знать …
Вот 3 быстрых и грязных совета, которые помогут вам начать свой путь к тому, чтобы стать опытным программистом:
Начните с основ и развивайте в своем собственном темпе.
Не откусывай больше, чем можешь проглотить.
Работайте над этим понемногу каждый день, чтобы поддерживать свои навыки.
В этом эпизоде я едва коснулся поверхности программирования, поэтому, если вы хотите узнать больше на эту тему, не стесняйтесь присылать мне письмо по адресу [email protected]. Или перейдите на страницу Tech Talker в Facebook и разместите там свои вопросы.
До следующего раза, я технический специалист, делаю технологии простыми!
Девушка с компьютером Изображение предоставлено Shutterstock
Как стать программистом
Программисты несут ответственность за написание и тестирование кода, чтобы убедиться, что компьютерные приложения и другие программы работают правильно.Так что, если работа за кулисами компьютеров вам подходит, вам стоит подумать об этой карьере.
Как правило, программисты поступают в школу, чтобы получить степень бакалавра, прежде чем продолжить карьеру. Но было несколько человек, у которых была только степень младшего специалиста. Практически все программисты знают несколько языков программирования. Работа не обременяет вас, так как вы в основном будете работать в офисе. Но вы могли бы немного улучшить свой мозг.
Когда дело доходит до программиста, это больше, чем кажется на первый взгляд.Например, знаете ли вы, что они зарабатывают в среднем 33,55 доллара в час? Это 69 778 долларов в год!
Ожидается, что в период с 2018 по 2028 год карьера вырастет на -7% и создаст -17 900 рабочих мест в США.
Многие программисты обладают определенными навыками для выполнения своих обязанностей. Просматривая резюме, мы смогли сузить круг наиболее общих навыков для человека на этой должности. Мы обнаружили, что во многих резюме указаны аналитические способности, творческие способности и коммуникативные навыки.
Когда дело доходит до наиболее важных навыков, необходимых для программиста, мы обнаружили, что во многих резюме указано, что 8,3% программистов включают java, в то время как 7,9% резюме включают javascript, а 6,6% резюме включают процедуры. Подобные твердые навыки полезны, когда дело касается выполнения основных должностных обязанностей.
Когда дело доходит до поиска работы, многие ищут ключевой термин или фразу. Вместо этого может быть более полезным поиск по отраслям, поскольку вам может не хватать вакансий, о которых вы никогда не думали, в отраслях, которые, как вы даже не думали, предлагают должности, связанные с должностью программиста.Но с какой отрасли начать? Большинство программистов фактически находят работу в технологической и производственной отраслях.
Если вы заинтересованы в том, чтобы стать программистом, в первую очередь следует подумать о том, сколько образования вам нужно. Мы определили, что 53,5% программистов имеют степень бакалавра. Что касается уровня высшего образования, мы обнаружили, что 23,5% программистов имеют степень магистра. Несмотря на то, что у большинства программистов есть высшее образование, можно стать программистом только со степенью средней школы или GED.
Выбор подходящей специальности всегда является важным шагом при изучении того, как стать программистом.