Как стать системным программистом
Перейти к содержимому

Как стать системным программистом

  • автор:

Как стать программистом

Времена проходят, а ничего не меняется. Главная причина в том, что программисты очень нужны на рынке труда. Востребованность является первопричиной всех остальных факторов. Хорошие условия труда, высокие зарплаты, лояльное начальство. Все это смотрится очень и очень привлекательно. Фактически профессия программиста единственный социальный лифт в наше время. Вам не нужны богатые родители, обширные связи со всякими «нужными людьми», престижное высшее образование и прочие атрибуты успешных людей в наше время. Всё, что вам нужно, это умение создавать компьютерные программы или 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м должны их проходить.

  1. Видеоуроки. Их стало очень много на любые темы. Youtube обязательно выдаст плейлисты по любым популярным технологиям. Даже на русском. Там всё наглядно, и начинать ваять свои первые «Hello, world!» надо именно с них. Недостаток только один. Они могут не покрывать всех глубин изучаемого языка. Но вам хватит проблем и без этого.
  2. Мультимедийные учебники. Скорее всего, это коллекции видеоуроков плюс ещё чего-то. Очень часто продаются за деньги.
  3. Книги. Самые тяжёлые для восприятия. Они как раз покрывают больше тонкостей различных технологий. Оставьте на потом. Когда исчерпаете возможности предыдущих вариантов.

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 подобных вопросов, связанных с базой данных, взять руководство по этой СУБД и изучить полностью. Этим обычно заняты только «любители». Которым становиться любопытно, что кроме «джойнов», там ещё есть.

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

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

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

Как стать разработчиком с нуля

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

1. Кто такой программист

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

1.1 Чем занимается программист

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

1.2 Можно ли стать айтишником с нуля

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

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

2. Почему вы хотите начать программировать

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

Если же вы питаете неподдельный интерес к процессу, смело ступайте на стезю разработки.

3. Что нужно знать, чтобы стать программистом

Чтобы стать успешным и востребованным программистом, нужно обзавестись рядом hard skills и soft skills. Первые отвечают за технические умения и знания, вторые — за качества, которые помогают эффективно работать и находить общий язык с командой.

3.1 Hard skills

У каждой профессии свой набор хард скиллов. У программиста это общие технические знания (математика, информатика, алгоритмизация) и набор навыков, свойственный конкретному стеку.

3.1.1 Основы информатики

В такой сложнотехнической профессии понадобятся даже самые азы, а именно:

  • какие типы данных бывают и чем они отличаются друг от друга;
  • понимание систем счисления — двоичной и шестнадцатеричной; ;
  • понимание принципов выполнения операций ЭВМ.
3.1.2 Математика

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

3.1.3 Алгоритмы

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

3.1.4 Принципы ООП

Объекто-ориентированное программирование — это подход в разработке, при котором за основу берутся абстрактные объекты, а не функции или процедуры. Данный подход используется в большинстве современных языков программирования, поэтому крайне важно понимать основные принципы ООП:

  • абстракция;
  • наследование;
  • инкапсуляция;
  • полиморфизм.

3.2 Soft skills

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

3.2.1 Знание английского

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

3.2.2 Умение работать в команде

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

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

Для эффективной командной работы следует понимать и использовать гибкие методологии разработки. Почитайте об Agile, Scrum и Kanban — пригодится.

3.2.3 Стрессоустойчивость

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

Кроме того, вам нужно спокойно принимать пожелания и вносить правки, если требуется, не срываясь на проджект-менеджера и тем более заказчика. Хорошим подспорьем станут книги «Как разговаривать с кем угодно, когда угодно и где угодно» и «HBR Guide. Эмоциональный интеллект».

3.2.4 Постоянное саморазвитие

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

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

3.2.5 Тайм-менеджмент

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

При планировании рабочего дня учитывайте дедлайны, используйте тайм-трекер и таблицу Эйзенхауэра:

Тайм-менеджмент: таблица Эйзенхауэра

4. Какое направление в программировании выбрать в 2023 году

Прежде чем думать, как стать айтишником с нуля самостоятельно, стоит определиться с направлением. По данным Stack Overflow Developer Survey 2020, популярность IT-специальностей такова:

Stack Overflow Developer Survey

В опросе приняло участие 65 000 разработчиков из разных стран.

Но что насчёт России? Согласно данным «Университета 20.35» за 2020 год, в топ-10 востребованных удалённых ИТ-профессий России вошли:

  1. Java-разработчик
  2. Аналитик данных
  3. Разработчик на языке C#
  4. PHP-разработчик
  5. Специалист службы поддержки
  6. Продуктовый аналитик
  7. Разработчик 1С
  8. Kotlin-разработчик
  9. Системный администратор
  10. Системный аналитик

А вот зарплаты айтишников по специализациям за второе полугодие 2020:

Зарплаты айтишников по специализациям

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

5. Десктопная разработка

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

Хотите заниматься этим на серьёзном уровне? Здесь всё просто: если планируете разрабатывать под Windows — учите язык C#, под Linux — C++ или C, под macOS — Swift.

5.1 Программы для Windows

Стоит отметить, что для создания десктопных приложений можно использовать почти любой язык: Java, Python и даже Delphi. Мы же затронем самые оптимальные и популярные языки.

5.1.1 C# / C++

Для серьёзного высокопроизводительного приложения подойдут «плюсы». Но если жёстких требований к производительности нет, лучше обратиться к GUI-платформе Windows Presentation Foundation в составе .NET Framework. Писать на C# проще, и развивается это язык динамичнее того же C++.

Как стать программистом C#: Windows Presentation Foundation

Также есть вариант объединить мощность C++ и удобство .NET. Например, пользовательский интерфейс на C#, а подключение «плюсовых» библиотек через C++/CLI.

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

5.2 Для Linux

5.2.1 C

Linux — это семейство Unix-подобных операционных систем, и так сложилось, что ядро Linux написано на языке C. Да, Си считается устаревшим, поэтому многие программисты предпочитают ему Python, Java, Perl, иногда Ruby. Но драйверы, модули ядра и большая часть системного ПО всё же написаны на языке программирования Си, и для Linux-программ он приоритетен.

Если вас интересует, как стать разработчиком на языке C, загляните в материалы по изучению Си.

5.2.2 C++

По сути, это усовершенствованный С. Браузеры, графические окружения, утилиты GNU и прочее программное обеспечение под Linux написаны на C++. А ещё на «плюсах» написан Qt — графический фреймворк, который используется во многих кроссплатформенных программах и является бесплатным для разработки свободного ПО.

5.3 Для macOS

5.3.1 Swift

Swift — родной язык для Apple-приложений, так что он оптимален для разработки под macOS. Выбрать можно и Objective-C, но последний проигрывает в скорости работы.

  • прост в изучении;
  • легко читается;
  • поддерживает современные синтаксические конструкции;
  • есть опционалы, которые «спасают» от null.

6. Data Science

Языки программирования Python и R — общепринятый стандарт для Data Science, так как они оба отлично подходят для работы со статистикой.

6.1 Python

Как стать Python программистом с нуля самостоятельно? На самом деле, не так уж сложно: у языка Пайтон простой синтаксис, много библиотек, развёрнутая и понятная документация. Но есть и минусы, такие как отсутствие удобных средств ORM и не самая высокая скорость работы.

Для Data Scientist у Python есть немало библиотек и фреймворков:

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

Но у языка R есть свои инструменты для Data Science:

  1. Esquisse и Ggplot2 — библиотеки для создания графиков.
  2. Dplyr — аналог Pandas для R.
  3. Shiny — пакет для интерактивных веб-приложений с визуализацией исследований.

И это не говоря о randomForest, Caret и других библиотеках с методами машинного обучения.

7. Как стать разработчиком на Андроид

В 2019 году компания Google объявила Kotlin предпочтительным языком программирования для создания Android-приложений. Это спровоцировало новую волну споров по выбору языка.

Ответ таков: чтобы стать Android-разработчиком, нужны оба языка, но при этом ознакомиться с их отличительными характеристиками не помешает.

7.1 Java

  • много библиотек и готовых решений;
  • большое комьюнити;
  • разные сферы применения, если вдруг надоест Android-разработка;
  • документация Kotlin предполагает, что вы знаете Java.

7.2 Kotlin

  • лаконичный синтаксис;
  • актуальная IDE, тесно связанная с языком разработки (Android Studio и Kotlin созданы JetBrains);
  • предсказуемое развитие;
  • перспективы.

8. План развития iOS разработчика

А как же тогда стать разработчиком iOS? Здесь всё гораздо проще, так как основной язык всего один.

8.1 Swift

Этот язык программирования разработан Apple и многое заимствовал из Objective-C, а также C++.

  • компактный язык программирования;
  • производительность приближена к C++;
  • тестирование кода в реальном времени со Swift Playgrounds;
  • постепенно распространяется на другие платформы.

9. Как стать разработчиком игр

Что нужно знать программисту, чтобы войти в геймдев? Сперва необходимо определиться, как устроены игры. Хороший вариант для начинающих — готовые движки, такие как Unity и Unreal Engine (но последний сложнее и серьёзнее).

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

9.1 Игры на iOS или macOS

Поговорим о программировании игр на Swift. Для начала необходимо установить «яблочную» IDE Xcode: в ней поддерживается разработка как на iOS, так и на macOS. Среда бесплатная и функциональная. В ней создайте новый проект с шаблоном Single View Application или Game. Тут уж к чему душа лежит:

  1. Single View Application предназначен для приложения с одним экраном. Шаблон включает в себя компонент View Controller для настройки вида с конструктором Interface Builder.
  2. Это специальный игровой шаблон. В нём предусмотрены фреймворки для двумерной визуализации, 3D-графики без OpenGL и низкоуровневый API, с которым можно писать действительно высокопроизводительные игры.

9.2 Браузерные игры

Вообще, создать браузерную игру можно и на HTML/CSS/JavaScript, но мы затронем PHP.

9.2.1 PHP

PHP актуален для разработки браузерных игр, хоть и не заточен под них специально. Такие компании, как Funzio, Gameforge, Goodgame Studios и другие продолжают использовать этот язык в своих играх.

Есть исчерпывающий видеокурс по созданию браузерной игры на PHP — от настройки окружения до регистрации и авторизации:

9.2.2 JavaScript

После ухода тяжеловесной технологии Flash из браузеров у JavaScript-разработчиков появилось много возможностей. Сейчас есть сильная альтернатива — элемент Canvas в HTML5 для создания двухмерных изображений через JavaScript-команды.

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

Как только освоите азы, попробуйте написать что-то сложнее. В этом видеоуроке как раз используются чистый JavaScript и HTML5 Canvas:

9.3 Игры на Unity

Это популярная платформа для разработки игр. Очень дружелюбна к новичкам: можно бесплатно загрузить и обучаться с помощью курсов, словарей и других материалов, которые предоставляет компания и участники сообщества. Платформа поддерживает создание 2D- и 3D-игр.

Игры на Unity пишут с использованием языков C# и JavaScript. Почитайте, как создать простую 2D-игру на Unity.

9.4 Современные большие и требовательные игры

Речь о тяжеловесных многопользовательских играх с сильной нагрузкой на сервер. Такая задача под силу языкам C и C++.

9.4.1 C++

Что нужно знать начинающему программисту о C++? Это самый популярный язык программирования для геймдева: быстрый, мощный, с большим набором полезных инструментов. C++ — практически неограниченные возможности в среде масштабных проектов, в том числе в создании 3D-игр со сложной графикой и анимацией.

Не даром ведущие разработчики многопользовательских игр, такие как Blizzard Entertainment, работают с C++. На нём написаны World of Warcraft, Diablo, StarCraft, Counter-Strike и другие популярные игры. В основе Xbox и PlayStation также лежит C++.

9.4.2 С

Да, язык не такой популярный, как «плюсы», но по-прежнему хорошо справляется с большими нагрузками — альтернатив на низком уровне нет. Когда дело доходит до компиляции, сложно представить, какой бы язык мог конкурировать с Си.

10. Как стать Python разработчиком

Чтобы стать питонистом, нужно начинать с азов, таких как принципы ООП и синтаксис языка. А понимание того, как стать программистом Python, придёт с определением сферы деятельности. Основных направления для Пайтон-разработчиков два:

  1. Data Science
  2. Веб-разработка

Поскольку первое направление мы уже разобрали, сосредоточимся на веб-разработке. Что же что нужно знать Python веб-разработчику? Обратите внимание на фреймворки Django и Flask. Для эффективной работы с бэкендом достаточно одного из них, но в идеале следует понимать оба.

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

11. План развития Java-программиста

А как можно стать Java разработчиком, если никогда не был программистом? Базис для всех языков плюс-минус одинаков: синтаксис, переменные, условия, циклы, ООП. Для решения специфических задач нужно освоить инструмент сборки и управления проектом Maven. Будет полезен и набор open source сервисов Netflix Stack.

Дальше всё зависит от выбранного направления в Java:

  • веб-разработка;
  • Android разработка;
  • программирование для десктопов;
  • Big Data.

Все материалы по этим направлениям, инструменты и путь развития вы найдёте в дорожной карте Java-программиста.

12. Бэкенд разработка — с чего начать?

Как стать бэкенд разработчиком? Нужно понимать, как устроены операционные системы, уметь работать с терминалом, знать стандарты POSIX и концепции построения сети, управлять вводом и выводом (I/O), процессами, а также памятью.

Как освоить бэкенд-разработку в 2022 году: дорожная карта

12.1 Обучение PHP

Как вы могли догадаться, стать бэкенд-разработчиком без знания языка невозможно.

PHP принято считать стандартом бэкенд-разработки, так как на нём написано множество веб-проектов, включая Facebook, Viber, Yahoo, YouTube, Wikipedia и даже движок WordPress, на котором вы сейчас читаете эту статью.

Другие преимущества PHP:

  • простая установка и настройка;
  • кроссплатформенность;
  • выполнение программы до достижения ошибки в коде;
  • большое комьюнити.

12.2 Обучение Node.js

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

12.3 Обучение Java

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

Для новичка Java сложнее, чем условный Python или PHP, да и код выйдет более громоздким. Однако это мощный инструмент в создании больших веб-проектов вроде eBay или LinkedIn, которые как раз и написаны на Java.

12.4 Обучение Django

Задаётесь вопросом, как стать веб разработчиком, зная Python? Используйте для этого Django — полнофункциональный веб-фреймворк, который предоставляет достаточно готовых решений для серверной части.

12.5 Основы SQL

Это язык запросов для работы с базами данных. Вы вряд ли вы найдёте по нему гайд в разделах «Как стать программистом», ведь SQL нужно не учить, а понимать.

Держите материалы, которые позволят разобраться в основах SQL:

13. Как стать фронтенд разработчиком

Итак, frontend программирование — с чего начать? Вам нужно освоить HTML, CSS и JavaScript — три кита, на которых стоит фронтенд-разработка.

13.1 Обучение HTML

Разметка — это каркас сайта. Чтобы работать с фронтендом, следует хорошо понимать анатомию HTML-разметки, знать основные атрибуты и теги, обеспечивать доступность и освоить SEO хотя бы на базовом уровне.

Для лучшего понимания рекомендуем ознакомиться с видеокурсом «HTML5 для начинающих».

13.2 Обучение CSS

Далее идут каскадные таблицы стилей. В разрезе CSS вам нужно освоить:

  • компоновку;
  • центрирование и выравнивание;
  • видимость элементов.

Это базис. Следующим этапом можно переходить к медиа-запросам, которые позволят учитывать технические параметры разных устройств. В создании адаптивного отзывчивого дизайна помогут CSS Grid и Flexbox.

13.3 Обучение JavaScript

Ну и как стать эффективным фронтенд разработчиком без знания JavaScript? Именно он отвечает за функциональность сайта и возможность с ним взаимодействовать: заполнение и отправка форм, нажатие кнопок, прослушивание событий и многое другое.

Не спешите осваивать фреймворки — сперва чистый JavaScript. Это язык со слабой типизацией, а значит операция вроде 2 + “2” вместо ошибки выдаст результат 22. Так что есть с чем разбираться и без фреймворков.

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

14. Full Stack разработка

Эдакий гибрид frontend- и backend-разработки. Данное направление набирает популярность. Сейчас сложно найти чистых фронтендеров или бэкендеров: для взаимодействия этим специалистам нужно знать, за что отвечают их коллеги по вебу.

Фуллстек-разработчик не будет одинаково хорош в разработке серверной и клиентской части. Но как стать чистым Full Stack разработчиком, и чем вообще занимаются эти специалисты?

Хороший пример — CRM-разработчик. В его обязанности входят:

  1. Работа с базами данных клиента: создание событий, автоматизация процессов и интеграция приложений посредством API.
  2. Настройка аналитики в формате репортов/дашбордов.
  3. Создание простенького, но понятного интерфейса для работы с готовым продуктом.

Здесь также применимы инструменты вроде Bootstrap или Angular, но без фанатизма — важно создание рабочего функционального продукта.

Как стать full stack разработчиком

15. Какой язык программирования выбрать в 2023 году

Всё ещё не определились с языком? Для начала взгляните на рейтинг TIOBE:

Рейтинг языков программирования TIOBE 2021

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

15.1 Python

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

Основные сферы применения Python:

  • Data Science
  • Веб-разработка

15.2 JavaScript

О сферах применения JS говорить не стоит: язык давно стал лидером в веб-разработке, сперва захватив фронтенд, а теперь и отжимая бэкенд за счёт Node.js. Если хотите разрабатывать веб-приложения, учите JavaScript.

15.3 Java

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

Основные сферы применения Java:

  • Веб-разработка
  • Android разработка
  • Десктопная разработка
  • Big Data

15.4 C++

Быстрый, универсальный и полезный в качестве фундамента язык. Да, пусть Python в разы проще, но за сложностью C++ скрываются и преимущества. Освоив «плюсы», будет легче понять Java, C# и JavaScript, в основу которых легли принципы C++.

Главные сферы применения C++:

  • Геймдев
  • Интернет вещей (IoT)
  • Операционные системы
  • Ускорение существующих приложений

15.5 С#

C# часто сравнивают с Java, и у них действительно много общего. Код на C# удобочитаемый, а синтаксический сахар обеспечивает высокую скорость разработки.

Основные сферы применения C#:

  • Геймдев
  • AR/VR
  • Десктопная разработка

По этому видеокурсу вы узнаете, как стать C# разработчиком.

15.6 PHP

Это бессмертная классика серверной части веб-приложений. PHP бюджетен, прост в освоении и успел обрасти внушительным комьюнити. Пусть современные сайты и пишутся то на Java, то на Node.js, существует огромная база написанных на PHP веб-приложений, которые всегда будут нуждаться в поддержке.

15.6 Kotlin

Здесь только Андроид. Но, как говорилось ранее, чтобы стать Android разработчиком с нуля, стоит начать с изучения Java, а только после переходить на Kotlin.

15.7 Swift

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

15.8 На что обратить внимание при выборе

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

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

16. Где выучиться на программиста

Чтобы ответить на вопрос, где учиться на программиста, необходимо рассмотреть все доступные варианты.

16.1 Самостоятельная учеба

Обилие книг, видеоуроков и сервисов вроде Scratch позволяет освоить базис, не выходя из дома. Но как выстроить план обучения, чтобы стать программистом с нуля самостоятельно? Обратитесь к стандартным программам обучения или роадмапам. Чаще всего основы включают в себя:

  1. Знакомство с программированием.
  2. Разнообразие IT-направлений.
  3. Основы выбранного языка: синтаксис, объекты и классы, функции, списки и словари, условия, циклы.
  4. Hello World.
  5. Модульное тестирование.
  6. Безопасность.

16.2 ВУЗ

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

16.3 Практические курсы

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

16.4 С помощью ментора

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

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

17. Классификация разработчиков

Когда люди говорят, что программисты много зарабатывают, они чаще всего подразумевают сеньоров. Давайте разберёмся, какие уровни IT-специалистов существуют и чем разнятся.

17.1 Стажёр

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

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

17.2 Junior разработчик

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

17.3 Middle разработчик

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

17.4 Senior разработчик

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

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

18. Как стать Junior-разработчиком

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

18.1 Frontend Junior

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

Итак, что же нужно знать младшему Frontend разработчику в 2023 году?

  1. HTML5, понимать разметку, освоить базовые теги, атрибуты и вложенные элементы.
  2. CSS3 — позиционирование, компоновка и выравнивание элементов, их видимость, отзывчивый дизайн и подходы mobile-first.
  3. Если мы говорим о JavaScript, то сперва следует выучить основы языка, а лишь потом двигаться к фреймворкам.
  4. Понимание MongoDB.

18.2 Backend Junior

К младшему бэкенд программисту иные требования. Он должен знать:

  1. Принцип работы интернета и операционной системы.
  2. Язык серверного программирования: PHP, Java, JavaScript (Node.js), Python (Django) или другой.
  3. Базы данных — реляционные и NoSQL.
  4. API — REST, JSON.

Плюсом будет умение установить и настроить хотя бы один из популярных веб-серверов: Nginx, Apache, Caddy или MS IIS.

18.3 Junior iOS

Чтобы влиться в iOS-разработку, нужно:

  1. Знать язык программирования Swift.
  2. Иметь практический опыт работы с IDE Xcode.
  3. Понимать сущность MVC, а также то, как «яблочные» приложения строятся на основе этого паттерна.
  4. Уметь запускать приложения на устройствах и распространять их.

18.4 Junior Android

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

  1. Практический опыт работы с Android Studio.
  2. Понимание Android Architecture: паттерны MVVM, MVI, MVP.
  3. Изучение жизненного цикла Activity.
  4. Умение создавать гибкие интерфейсы с использованием фрагментов.
  5. Запуск приложений на устройствах.

19. Где работают программисты

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

19.1 Фриланс

Как стать айтишником на фрилансе? Для этого есть немало площадок: Upwork, Weblancer, Kwork, FL и другие. Но будьте готовы нарабатывать портфолио и репутацию, а для этого первое время придётся перебиваться дешёвыми заказами.

Большой плюс — знание английского и умение строить вопросы на получение исчерпывающих ответов: вы сами себе PM, тимлид и разработчик.

19.2 Компании аутсорсеры

Также ласково называемые галерами. А всё потому, что от сотрудников часто требуется многозадачность за зарплату одного специалиста.

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

19.3 Стартапы и небольшие компании

Неплохо для начинающих программистов и опасно для опытных, которые готовы ради этого бросить более крупную «рыбу». В стартапах всегда есть риски:

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

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

19.4 Банки и энтерпрайз

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

19.5 Продуктовые компании

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

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

Где ещё можно работать программистом? Это фриланс, open source и собственные проекты.

20. Как найти первую работу в IT

Всё чаще поднимается вопрос поиска и найма недооценённых специалистов — без диплома или соответствующего опыта работы. Исходя из этого, что же всё-таки нужно знать начинающему программисту?

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

Что должен знать младший программист

20.1 Где брать проекты для портфолио

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

Сложнее будет, если вы самоучка. Но и здесь можно что-то придумать:

  • писать небольшие программы по туториалам;
  • искать задания на фрилансе и выполнять их самостоятельно;
  • принимать участие в разработке open source проектов.

20.2 Как составить резюме, если нет опыта

  1. Нормально назовите резюме. В названии должны быть желаемая должность и ФИО кандидата, как здесь: «Junior Java — Пупкин Иван Иванович».
  2. Резюме может быть в формате Doc, PDF или сайта-визитки, если вы веб-разработчик.
  3. Добавьте адекватное фото и контакты.
  4. Укажите места, где учились и повышали квалификацию.
  5. Не копирайте бездумно инфу из разделов, что нужно знать, чтобы стать крутым программистом: вы должны доказать эти знания на собеседовании.
  6. Если нет опыта работы, указывайте, сколько времени практикуетесь в том или ином языке/технологии.

Последний пункт в резюме программиста может выглядеть примерно так:

  • Java — 1 year;
  • PHP — 0,5 years;
  • JavaScript — 0,5 years.

20.3 Где искать вакансии и работу

О фриланс-сервисах мы уже говорили, потому затронем платформы по поиску работы в офисе или в ремоут-режиме. Для России и стран СНГ лучшие сайты с вакансиями для программистов это:

20.4 Как общаться с рекрутерами

Как вы понимаете, стать хорошим программистом в обход общения с HR невозможно. На собеседовании не стесняйтесь озвучивать свои желания и вопросы. Если на всё кивать головой, как автомобильная собачка, после трудоустройства можно обнаружить себя в крайне некомфортных условиях работы. Мы подготовили 13 вопросов работодателю, которые стоит задать на собеседовании.

Несмотря на это, нужно вести себя в меру сдержанно, демонстрировать серьёзность и говорить о своей мотивации.

21. Что спрашивают у Джунов на собеседовании

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

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

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

Другие вопросы, которые могут прозвучать на собеседовании:

  • Принципы ООП и их понимание.
  • Команды Git — как сделать пуш, коммит и т. д.
  • Основные SQL-запросы.

Всё остальное будет касаться выбранного языка.

22. Что делать, если вам не хватает знаний до вакансии Джуниор-программиста

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

23. Заключение

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

Как стать программистом (мой опыт) ⁠ ⁠

Для ЛЛ:
1. Захотеть;
2. Некоторое время учиться;
3. Некоторое время искать работу;
4. Трудоустроиться;
5. Запилить пост на пикабу.
Спасибо за внимание.

Дальше будет очень много букв и парочка картинок из интернета: всё то же самое, что в 7 строках сверху, только намного подробнее и на моём личном примере. Если интересно, приятного чтения.

Как стать программистом (мой опыт) Длиннопост, Текст, Трудоустройство, Программист, Обучение, Личный опыт, Гифка

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


Моя сегодняшняя история началась примерно пару лет назад, когда я с чего-то решил, что кроме основной работы меня могло бы заинтересовать что-то иное. Точно не помню, с чего это я, вдруг, решил так поступить, но я полез на coursera.org посмотреть, а чему бы мне там поучиться. Залез почти бесцельно. так, чисто поглазеть. И "наглазел" я там курс от Яндекса и МФТИ "Основы программирования С++: белый пояс" (или как-то так). Он был бесплатным, так что максимум, что я мог потерять, это время. "Ну, — думаю, — Чем чёрт не шутит?" — и записался. Это был первый шаг на этом долгом пути.

Курс представлял из себя:
— видео-уроки, которые открывались каждую неделю;
— методические материалы на (в среднем) полтора десятка листов А4;
— домашнее задание по программированию, которое проверяет робот, когда ты ему через платформу передаёшь исходный код своей программы.

И с этого момента у меня начались проблемы со временем. Как выяснится потом, время — самый недостающий ресурс в случае, когда ты пытаешься и работать, и учиться.

Как стать программистом (мой опыт) Длиннопост, Текст, Трудоустройство, Программист, Обучение, Личный опыт, Гифка

Увы, Яндекс и МФТИ к тому моменту ещё не успели оформить следующий курс на coursera, и мне предстояло искать что-то иное.

Решил попросить совета у друга (профессиональный программист с IT образованием), где бы поучиться С++ более серьёзно. Читать учебники, как показывал мой опыт, оказалось не совсем то, что мне нужно было. Ответ друга был примерно следующий: "Ну, на плюсах особо сейчас никто не пишет, кроме железячников и тех, кому нужна высокая производительность" (отчасти это так, да простят меня более знающие товарищи). В общем, посоветовал несколько популярных языков, мол, "на выбор".

Полез я по интернету искать, где бы поучиться. Наткнулся в этот раз на geekbrains.ru (проект от mail.ru ) — платную платформу вебинаров по различным направлениям IT. В тот момент площадка была ещё более сырой чем сейчас, но информации там было уже достаточно. Обучение стоило денег, и мне предстояло принять решение, чему конкретно буду учиться. Второй раз закинул старик в воду невод. а. не из той сказки. Пошёл я более внимательно в интернете читать про языки программирования, которые пользуются популярностью, и уяснил для себя следующие вещи:
1. Если ты нихрена не знаешь о программировании, то нихрена ты не сможешь выбрать язык по душе, чтобы такой "раз(!) и понял — вот язык моей мечты";
2. Большинство языков программирования, в основе которых лежит парадигма ООП (объектно ориентированное программирование) похожи друг на друга;
3. Самые популярные языки могут быть использованы практически где угодно;
4. Большая часть мнений в интернете о языках программирования сводятся к "на этом языке я пишу — он лучший" и "этот язык лучше патамушта патаму"; более вменяемые говорили о том, что каждый язык для своих нужд, но это особо ничего не меняло.

Не придя ни к какому решению, я решил пойти другим путём и ринулся на hh.ru. Там отфильтровал вакансии по языку программирования и. ничего. Одна херня: "программисты все важны, программисты все нужны". Одно меня устроило: стоимость специалистов практически не отличалась друг от друга. Из этого всего я сделал вывод, что вполне можно доверить принятие решения Великому Рандому и не париться.

В итоге, я сделал выбор в пользу C# ("Си-шарп" или просто "шарп") — ничем не лучше и не хуже других языков, а просто "один из". Что меня привлекло:
— этот язык программирования разработан и поддерживается Microsoft для своих продуктов;
— у нас в стране дофига чего работает на продукции "мелкомягких", так что не пропаду, если что;
— язык Си-подобный: перейти на другой си-подобный язык не составит труда;
— если что Unity тоже хорошо дружит с C#;
— для работы с этим языком есть очень удобная среда разработки.

После этого я пошёл и купил комплект курсов, который назывался "Профессия C#": штук 7 месячных вебинар-курсов и с десяток мелких онлайн видео курсов. Этот комплект мне обошёлся чуть меньше чем в 60 000 рублей. В платных курсах был также свой сакральный смысл: я надеялся, что оплаченные курсы будет сложнее забросить — жаба задушит. Строго говоря, так оно и вышло.

Как стать программистом (мой опыт) Длиннопост, Текст, Трудоустройство, Программист, Обучение, Личный опыт, Гифка

Начало курсов прошло "как по маслу": было довольно просто (особенно после сложного курса на coursera). А затем всё курсы становились сложнее, и опять начались проблемы со временем.

Курсы представляли собой:
— два вебинара в неделю по 2 часа (живой преподаватель по телеконференции);
— методички по несколько десятков страниц;
— домашние задания.
Хотя живые преподаватели в плане временных рамок сдачи домашних заданий и оценки качества работ были более лояльными, чем бездушные роботы Яндекса и МФТИ, сдавать всё во время — это был единственный способ успеть всё сдать до окончания курсов. Да, и вообще, кому это нужно, чтобы ты учился за заплаченные тобою деньги: тебе или учителю? — не в школе же.

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

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

Прошло около полугода, прежде чем ко мне пришли две жабы (моя собственная и супруги). Они втроём вместе с самой супругой убедили меня продолжить обучение. Я нашёл в себе силы освежить в голове пройденный материал, прочесть книжку "Архитектура компьютеров" (читал запоем) и взяться за новые курсы (из уже оплаченных). Дело вновь стронулось с мёртвой точки, я с удвоенными силами и энтузиазмом принялся "грызть гранит науки". Хватило меня ещё на пару месяцев, а потом.

Потом случился январь-февраль текущего года — точка принятия решения:
— я в кой-то веки выбрался "на моря" в отпуск, после прибытия обратно у меня началась суровая депрессия, от которой отошёл только недавно;
— взятый мною новый темп обучения в очередной раз доканал меня: доходило до того, что я мог день отпахать на работе, прийти домой, посмотреть вебинар, потом всю ночь делать задание, затем в 5 утра выехать на работу, где-то посреди пути поспать в машине минут 40-50 и ещё целый день работать; понятное дело, здоровья и счастья такие выкрутасы не прибавляли;
— времени перестало хватать вообще на всё: всё занимало работа (за которую, на минуточку, мне платят деньги и которую, поэтому, я выполнял на все 100%) и учёба; какие-то мелкие бытовые дела — как в дыму (хз, что там было);
— я полностью и безоговорочно разочаровался в текущей профессии (тут много причин, сейчас не об этом).

Как стать программистом (мой опыт) Длиннопост, Текст, Трудоустройство, Программист, Обучение, Личный опыт, Гифка

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

Открыв в очередной раз hh.ru , я с радостью для себя обнаружил, что требования к кандидатам в вакансиях на программистов превратились из: "1. dsnksndcsdbc; 2. bsdybcisyu; 3.oizukbjhwbe; ну и, хорошо бы kjsndlksudn, lskjdn sdsdm" во вполне вменяемые названия областей знаний и технологий.

На скорую руку я оформил резюме по типу "я маленький, но гордый птыц, я умею тыц-тыц-тыц; пусть подтверждённого опыта немного, но я могу много чего иного". Затем стал потихоньку раскидывать резюме всем тем, под чьи требования я хоть сколько-нибудь подходил. Я старался не кидать резюме на те вакансии, где моей компетентности не хватало. Игнорировал я только опыт работы: вместе "без опыта" я включал в свою рассылку и интервал "1-3 года", а иногда и больше.

Вакансий в феврале было немного (совсем не трансферный период), работодатели отвечали неохотно и в основном отказом. Первое собеседование выдалось только через пару недель. Мы поговорили и разошлись: их не устроил уровень моих ответов на технические вопросы. "Ну, не беда", — подумал я и пошёл дальше учиться.

Затем последовала нескончаемая череда отказов без собеседований. Мне пришлось пересмотреть свои зарплатные ожидания на 10% ниже от первоначального, а также очень внимательно переписать текст в резюме. Сохранив общую идею о том, что я меняю профессию и поэтому боевого опыта в программировании у меня нет, я изложил текст резюме более строго, что ли? Это помогло, собеседования стали появляться. по 1-2 в неделю.

Как стать программистом (мой опыт) Длиннопост, Текст, Трудоустройство, Программист, Обучение, Личный опыт, Гифка

На конец мая у меня набралась небольшая коллекция отказов на собеседованиях. Лучшее из них "Вы нам не подходите потом, что":
— "У вас слишком высокие амбиции. Вы через год заходите повышения с %оченьмалоденегдлямосквы% на %чутьбольшеденег%. А вот Володя уже 10 лет здесь работает и не жалуется" (я был несказанно рад за Володю);
— "У вас нет опыта работы" (да-ладно?! это была первая строчка в моём резюме);
и гран-при:
— "Всё хорошо. Мы вам будем платить %вмакдакеплатятбольше% первые 3 месяца, пока вы учитесь; затем будем платить %вмакдакеплатятвсёещёбольше% ещё 6 месяцев, а уже когда Вы начнёте приносить прибыль фирме %вмакдакестольконеплатятнокэтомумоментувысдохните%".


Как известно, в при трудоустройстве в IT сфере очень часто либо до, либо после собеседования нужно выполнить тестовое задание для подтверждения знаний в области профессиональной деятельности.

Одна совсем не маленькая фирма, прочитав моё резюме, пригласила меня на собеседование, после которого выдала тестовое задание. Одна была загвоздка: часть тестового задания нужно было выполнить на языке программирования, который я не знал, с использованием технологии, название которой видел впервые в тестовом задании. За задание я взялся, заранее предупредив об этом (их это устроило) и ушёл делать задание (не забываем про основную работу). Задание я выполнил, и после этого меня "отмывампозвонимили". намедни отпраздновал 2 месяца, как они пообещали мне написать "когда тестовое задание будет проверено". Отпраздновал потому, что ну нахер таких руководителей. Сказали бы честно: "вы нам не подходите потому, что конченный кретин" — вообще бы вопросов к ним не было, а тут трусость какая-то и неуважение.

С тестовыми заданиями вышло всё очень хорошо. Я не отказывался писать тестовые задания ни в одной конторе, которая предлагала мне его пройти. За несколько месяцев у меня набралось несколько программ в репозиториях (места для обмена программами), которые, по факту, стали моим каким-никаким "портфолио". Очень удачно получилось.

С другой стороны, когда я стал искать работу и выполнять тестовые задания, пришлось подзабить на учёбу в очередной раз (на основную работу-то не забьёшь).

Затем были ещё менее интересны собеседования. Всего к настоящему моменту штук 10-15 прошёл. Немного, но все, в основном по делу. Все с отказом. "Ничего, — думал я, получая очередной отказ. — Моя работа меня найдёт". Так, собственно и вышло.

Как стать программистом (мой опыт) Длиннопост, Текст, Трудоустройство, Программист, Обучение, Личный опыт, Гифка

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

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

Собственно, как говорил в начале, чтобы стать программистом нужно: захотеть, немного поучиться, немного поискать работу и трудоустроиться на неё.
Всё очень просто. ведь так?

Как стать программистом (мой опыт) Длиннопост, Текст, Трудоустройство, Программист, Обучение, Личный опыт, Гифка

Всем хороших выходных.
Пойду посплю — и дальше учиться.

Мне 27. Работаю инженером-проектировщиком. Тоже пришёл к выводу, что хочу чего-то другого. Начал с изучения Python. Надеюсь, также как и у вас, что-то из этого выйдет.

Начну учиться заочно в этом году. Естественно иду не за дипломом, а за знаниями (дипломов у меня хватает). Скоро полтишок стукнет)))

Спасибо Вам за пост, мотивирует!

Автор, подскажи автора упомянутой книги «Архитектура компьютеров», не могу вдуплить

Подборка учебных (!) сериалов для изучающих английский⁠ ⁠

Все, завершил я карьеру преподавателя английского. 12 лет. Маркер на гвоздь, все такое. Решил немножко помочь тем, кто учит английский самостоятельно. Когда речь идет об изучении нового языка, нет лучшего способа попрактиковаться, чем вечное «погрузиться в среду». Раньше люди наивно полагали, что для погружения в среду непременно нужно свалить в Штаты на годик, но слава богу с годами этот стереотип сгинул плюс-минус полностью. Погружение в язык может организовать себе каждый сам, и тут все средства хороши – от блогеров, игорей и серверов в дискорде, до всяких там срачей про республиканцев на реддите и этих ваших сериалов с субтитрами.

Этот пост – небольшая подборка интересных (на мой взгляд) учебных видеоматериалов на английском. Это прекрасная альтернатива для тех, кто с трудом воспринимает стандартные сериалы/фильмы на английском, а посмотреть что-то хочется. Некоторые из них я активно использовал на уроках, до некоторых руки так никогда и не дошли, а некоторые я вообще не уверен, стоит ли показывать. Атенсион, у многих качество так себе, но что есть. К каждому дам небольшой комментарий. Кстати да, в комментариях делитесь своими сохраненками, кому-то может пригодиться.

Подборка учебных (!) сериалов для изучающих английский Учеба, Саморазвитие, Английский язык, Обучение, Опыт, Личный опыт, Образование, Преподаватель, Длиннопост

Extr@. Сразу с нетленки зайду. Мне кажется, про этот учебный ситком знают плюс-минус все. Девочка из Лондона (подло похожая на мою первую женщину) сожительствует с подругой. Внезапно к ним прилетает какой-то Хектор фром Арджентина и что-то началось. Плюсы — достаточно интересно снято, однажды остался без интернета и с удовольствием посмотрел как обычный сериальчик. Еще он на разных языках есть. Уровень – в начале от силы Pre-Int, но немного прогрессирует. Минусы – хз, по мне так все норм. Уж для учебного сериала то.

Lifetime – мини-сериал про мадам, которая устраивается на работу на какой-то дофига британский телеканал. Новый коллектив, новые знакомства и всякое. По идее там эпизоды по 7-8 минут, но они всегда собраны в ролики по плюс-минус часу, потому как это один диск. Уровень ощутимо выше предыдущего, я бы сказал Intermediate. Плюсы – речь с претензией на натуральность, да и в целом максимально похоже на обычное кинцо, но при этом лексика попроще в учебных целях. Минусы – без субтитров на ютьюбе только в пососном качестве, у меня есть скачанный получше. Вы же не будете смотреть с субтитрами? падме.жпг

Кстати на эти два есть прикольные упражнения (помимо штатных) – Вот на экстру (10 эпизодов правда) и вот на лайфтайм.

Подборка учебных (!) сериалов для изучающих английский Учеба, Саморазвитие, Английский язык, Обучение, Опыт, Личный опыт, Образование, Преподаватель, Длиннопост

New Headway video еще один британский сериал про то как кто-то с кем-то сожительствует. На этот раз одна женщина подселила к себе в дом двоих мужчин — нёрда рокера на семёрке и юриста-масона, а в свободную комнату было решено найти еще одного бродягу. Им оказалась Джейн. По идее это видеокурс к учебникам, но хоть они и продолжают издаваться, новых сезонов нам не снимают. Они зачем-то решили, что лучше делать видео про историю гамбургеров. Плюсы – скетчи интересные, подбор актеров с разными британскими акцентами, есть градация по уровням, от beginner. Минусы – их бегинер этот совсем не для бегинеров, увы. Сложность сопоставима с экстрой – около Pre-Int. А, и эта наркоманская фоновая музыка… просто с ума сводит.

Для любителей американского кинематографа у меня тоже имеется кое-что.

Top Notch – мой личный намбер уан. Тут никто ни к кому не подселяется и практически никто ни с кем не сожительствует. Этот сериал про трудовые будни небольшой туристической конторки. В эпизодах сотрудники взаимодействуют между собой и с какими-то другими людьми. Как по мне, здесь уровень скорее Pre, но вполне годится и на Elementary. Плюсы – юмор, реально местами пришлось хрюкнуть. Еще тут интересный формат скетча – сначала идет основная часть, минут на 6-7 и следом в отдельном видео на пару минут добивка по этому же сюжету. Это можно использовать для дискашена. Минусы – старовато. С другой стороны винтаж.

Хотя не, вот вам винтаж.

Подборка учебных (!) сериалов для изучающих английский Учеба, Саморазвитие, Английский язык, Обучение, Опыт, Личный опыт, Образование, Преподаватель, Длиннопост

Его величество Family Album. Когда нам в универе его на кассетах включали он уже был так себе новинкой проката, а теперь так вообще. Тут история про студентку по обмену, насколько я помню. В любом случае, есть некая семейка и в нее интегрируется некая девушка. Из плюсов только ностальгия по 80-90м, но может кому зайдет.

Примерно из той же оперы есть австралийский сериальчик. English Have A Go на мой взгляд неплох весьма. Есть семья с сыном-тинейджером, и появляется юная красотка. Сыну она понравилась и вот он там дальше пытается чет. Экшена маловато, в основном про диалоги. Но зато говорят медленно, четко и ясно. И худо-бедно объясняют базовую грамматику. Из минусов только растянутое изображение, но лучше увы не нашел. Не самый популярный материал, но далеко не самый бесползеный.

Living English. Тоже австралийский учебный сериал. В целом ничего выдающегося, тут мужик чем-то похожий на Роберта де Ниро и с охрененным голосом комментирует реплики из бытовых диалогов. Хз что еще сказать.

Раз уж мы в тот регион заглянули – есть Let’s Talk – очень добротный набор коротких скетчей-диалогов, которые делали для какого-то гонконгского телеканала. Тут реально все прекрасно, сгодится на любой уровень. Главный минус – вшитые субтитры. Ненавижу вшитые субтитры. А скетчи норм. Кстати, если вдруг покажется мало – вот вам еще несколько сотен таких же. Если только начинаете — смело начинайте с них, но ненавидьте себя за субтитры и стремитесь от них отказаться.

Ну и отдельно достойны упоминания:

Канал Voice of America. Честно – по мне так лучший канал для начинающих. Тут реальные дикторы, говорят сууупер медленно, всё с богомерзкими вшитыми субтитрами и обновления каждый день на любой вкус. В лексике не стесняются, а вот в грамматике все очень лаконично. Каких-то конструкций сложнее базовых почти нет.Вот дайджест новостей на каждый день. Вот про новости технологии, вот про экономику. Да в целом изучите канал, там миллиарды полезного, а главное простого. Великолепная возможность забустить словарь.

Американский гайд для иммигрантов. В культурных целях можно ознакомиться, но на большее уже не тянет. Морально устарел. Но в целом может быть интересно.

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

Подборка учебных (!) сериалов для изучающих английский Учеба, Саморазвитие, Английский язык, Обучение, Опыт, Личный опыт, Образование, Преподаватель, Длиннопост

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

Ну, и вишенка на торте. Тут 24/7 происходит очень величайший стрим. Некий усатый красавец и его закадровый дружаня разыгрывают абсурдные скетчи под саунтрек из Elder Scrolls и почему-то наложенным интерфейсом оттуда. Есть субтитры, тоже стилизованы. Если вы любите TES и учите английский – думаю, вам стоит это посмотреть. Я в первый раз залип минут на 40. Диалоги уровня «Что ты делаешь? Я лежу на кровати. Почему ты лежишь на кровати? Я не знаю. Я лежал на кроватях в детстве и теперь тоже лежу на кроватях. Я люблю лежать на кроватях». Шедевр, я считаю. Подойдет на любой уровень.

Подборка учебных (!) сериалов для изучающих английский Учеба, Саморазвитие, Английский язык, Обучение, Опыт, Личный опыт, Образование, Преподаватель, Длиннопост

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

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих⁠ ⁠

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Всем доброго времени суток! Так как о Data Science мы слышим всё чаще и чаще, предлагаю вам обзор книги, что будет полезна для начинающих.

Публикую обзор книги с моего телеграмм-канала IT-старт t.me/it_begin на книгу «Data Science.Наука о данных для начинающих».

Автор книги Джоэл Грас.

Стоит читать? Да! Почему? Опишу в статье.

Для кого эта книга?

Так как в названии фигурирует «Наука о данных с нуля» — не мудрено, что рассчитана она на тех, кто только начинает свой путь в Data Science 🙂

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Рис.1. Начальная страница

Что в самой книге?

Книга сама по себе немаленькая и состоит из 416 страниц.

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

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Ширина книги составляет чуть менее 17 см.

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Рис.1.2. Размер книги

Высота книги составляет 23 см.

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Рис.1.3. Размер книги

Глубина книги составляет около 2 см.

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

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Глав достаточно много, это радует) Всего глав 27.

Далее предметно и главное кратко постараюсь рассказать о том, что полезного и интересного мы сможем найти в этой книге.

Глава 1. Введение

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Первая вводная глава начинается с подробного описания тезиса «Воцарение данных» и ответа на вопрос «Что такое наука о данных?».

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

Более всего понравился пример на странице 26 с Facebook, что думаю примененим ко многим плоскостям исследования, используя практические любые соц. сети.

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

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Рис.2.1. Глава 1, страница 26

Глава 2. Интенсивный курс языка Python

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

В данной главе автор на протяжении 30 страниц крайне в сжатом формате старается познакомить нас с языком программирования Python.

По моему мнению, вследствие того, что объяснение крайне поверхностное и имеет ограничение в виде 30 страниц, объяснено всё плохо. Для тех, кто вовсе не имел опыта работы с Python, данная глава, к сожалению, вряд ли поможет.

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

Если вам необходимо изучить основы Python, советую книгу Тони Гэддиса «Начинаем программировать на Python с нуля» — мой обзор

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

В конце данной главы на странице 69мы видим две особенности книги.

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

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

Не сказал бы, что это крайне критично, но и приятного в этом также мало, общее впечательние от книги немного портится.

Всё крайне показательно видно на фото выше.

Глава 3. Визуализация данных

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Также яркий пример просвечивающих страниц это столбчатый график, что просвечивает на странице 71)

В третьей главе автор кратко рассматривает библиотеку matplotlib,

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

Согласиться с этим или нет? Вопрос сложный и оставлю его открытым на суд аудитории. Интересно ваше мнение по этому вопросу.

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

Завершается глава разделом «Для дальнейшего изучения», где автор оставляет ссылки на такие библиотеки, как seaborn, Altair, D3.js, Bokeh с кратким описанием каждой из них.

Глава 4. Линейная алгебра

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

В этой главе автор рассматривает векторы и матрицы.

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

Глава 5. Статистика

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

В данной главе автор описывает и рассказывает о том, что такое тенденции, вариация, корреляция, корреляционные ловушки.

В главе много кода, подробно всё описание, в целом впечатление от главы положительное.

Но также показалось интересным и хорошо запомнилось описание парадокса Симпсона 🙂

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Рис.6.1. Глава 5. Парадокс Симпсона

Глава 6. Вероятность

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

В этой главе рассмотрены:

Центральная предельная теорема

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

Глава 7. Гипотеза и вывод

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Хотел бы привести в пример «учаток» на странице 116, в подтверждение того, что без опечаток в этой книге не обошлось)

Теперь же о самой главе.

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

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Глава 8. Градиентный спуск

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Градиент — это вектор, что своим направлением указывает направления возрастания некоторой скалярной величины.

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

Градиентный спуск — это метод поиска локального максимума или минимума функции с помощью движения вдоль градиента.

Частично и достаточно понятно подход к максимизации функции описан на странице 128. (Рис. 8)

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

Глава 9. Получение данных

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Для того, чтобы исследовать данные, нужно сначала их собрать 🙂

В этой главе автор рассматривает способы подачи данных и также их последующее форматирование.

В главе рассматриваются аспекты чтения файлов, импорт информации из всемирной паутины с помощью html5lib, что такое API и как с этим можно работать.

Глава 10. Работа с данными

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

В 10 главе автор рассматривает непосредственную работу с данными.

Рассматривается разведывательный анализ данных, классы данных, многочисленные размерности.

Мне же понравилось, что автор не забыл про «чистоту» данных.

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

Глава 11. Машинное обучение

В 11 главе автор знакомит нас с машинным обучением.

Так как это обзор книги и он всё же будет немного предвзят с моей стороны по той причине, что у каждого человека есть своё мнение на ту или иную информацию — мне показалась данная глава не для тех, кто начинает с нуля)

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

Глава 12. k ближайших соседей

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

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

Теперь же о том, как всё это описывает автор на примере предсказания результатов на выборах

Глава 12. k ближайших соседей

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

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

Теперь же о том, как всё это описывает автор на примере предсказания результатов на выборах

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

Порадовало, что в данной главе автор не забыл о проклятии размерности

Глава 13. Наивный Байес

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

Порадовало то, что в конце данной главы автор ссылается на статью Пола Грэма «План для спама». Статья 2002 г., но менее интересной от этого не становится.

Глава 14. Простая линейная регрессия

В 14 главе автор рассказывает о простой линейной регрессии, описывает применение градиентного спуска, производит оценивание максимального правдоподобия

Глава 15. Множественная регрессия

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

Глава достаточно большая и много познавательной информации имеет, но мне более всего понравилась трактовка интерпретации моделей

Глава 16. Логическая регрессия

Логистическая регрессия — статистический метод для анализа набора данных, в котором есть одна или несколько независимых переменных, которые определяют результат. Результат измеряется с помощью дихотомической переменной (в которой есть только два возможных результата). Он используется для прогнозирования двоичного результата (1/0, Да / Нет, Истина / Ложь) с учетом набора независимых переменных.

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

Более всего понравилось рассмотрение гиперплоскости, что разделяет параметрическое пространство

Глава 17. Деревья решений

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

Автором неплохо показано это на достаточно простом примере.

Глава 18. Нейронные сети

Нейронные сети — то о чём мы всё чаще слышим из средств массовой информации.

В данной книге глава это мягко не особо большая. Всего 10 страниц. Но достаточно информативная. Расскажет о том, что такое нейронные сети, перспептроны, как работают нейронные сети прямого и обратного распространения. Глава интересная!

Глава 19. Глубокое обучение

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

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

Глава 20. Кластеризация

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

Глава 21. Обработка естественного языка

В главе об обработке естественного языка автор рассказывает несколько приемов, такие как: облако слов, N-грамматические языковые модели, грамматики. Много поясняющего кода)

Глава 22. Сетевой анализ

В главе про сетевой анализ автор описывает центральность, ориентированные графы, алгоритм PageRank. Мне данная глава «понималась» крайне тяжело, вследствие чего параллельно приходилось заглядывать в Google.

Глава 23. Рекомендательные системы

Та тема, с которой мы ежедневно встречаемся, используя те или иные стриминговые сервисы, соц. сети, поисковые системы — рекомендации 🙂

Сказали рядом с телефоном «купил собаку» и видите контекстную рекламу о дизайнерских будках на заказ? Это Data Science 🙂

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

Глава 24. Базы данных и SQL

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

Глава 25. Алгоритм MapReduce

MapReduce — модель для выполнения параллельной обработки крупных наборов данных. Рассматривается работа самого алгоритма, какие его преимущества и чем он может быть полезен и рассмотренно на примере аналази аобновлений новостной ленты. Всё достаточно подробно описано, вопросов после главы остаётся не так уж и много.

Глава 26. Этика данных

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

Глава 27. Идите вперед и займитесь наукой о данных

Заканчивается вся книга главой с призывом идти вперёд и заняться Data Science.

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

Глава по своей сути прощальная между автором и читателем, автор же оставляет ту выжимку необходимых мыслей, что он хочет донести до каждого читателя для продолжения путешествия в мир Data Science.

Теперь, тезисно о плюсах и минусах книги

Плюсы книги:

На первом маркетплейсе цена не такая уж и народная.На втором же, ситуация куда бодрее.

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

Обзор книги "Data Science. Наука о данных с нуля", отличная книга для начинающих Программирование, Python, Программист, Обучение, Linux, Профессия, Data Science, Data, Обзор книг, Обзор, Книги, Длиннопост

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

2. Книга крайне ёмкая и обширная. О необъятной теме в объятной книге.

Рассматривается и Python и SQL и методы Data Scince, что и как работает. В рамках одной книги это более чем достойно. Да, временами книга может показаться поверхностной, но думаю, это исходя из ограничений книги. Чтобы написать подробный том о каждой теме, для производства книги потребовалось бы куда больше бумаги 🙂

Минусы книги:

1. Прозрачные страницы.

Не особо бросается в глаза, когда увлечены чтением, но и приятного в этом мало.

Думаю, на всех фотографиях страниц книг, что сделаны мною, это отчетливо видно. Страницы тонкие и просвечивают. Считаю, что это минус.

2.Иногда крайне сжато подаётся материал, что , не имея под рукой поисковика, трудно понять некоторые вещи. Данная оценка субъективна, но мне показалось именно так. Опять же, не уместить всё-всё в одну книгу, понимаю. Но иногда охото отстраниться от цифрового мира, увлечься чтением интересной книги и не прибегать к помощи персонального компьютера)

Подведение итогов по книге:

Могу посоветовать к прочтению данную книгу. Книга даст базовые знания о Data Science, что опять же позволит вам понять, нужно ли оно вам в принципе, интересно ли всё то, что связано с этой сферой.

P.S. К сожалению, в один пост на пикабу можно поместить не более 25 изображений. Мною сделаны фотографии каждой главы, но показать их в рамках ограничений пикабу не могу. Поэтому, если интересно, то можете прочитать полную версию на моем канале.

Благодарю вас за внимание!

Мой канал в телеграмм

Если обзор показался вам интересным, то буду благодарен за подписку на мой

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

Ссылка на бесплатную электронную версию книги https://t.me/it_begin/461

Также публикую обзоры книг и интервью на сайте https://russia-it.ru

Жилет для инструмента⁠ ⁠

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

Жилет для инструмента Обучение, Работа, Помощь, Инструменты, Истории из жизни, Профессия, Личный опыт, Опыт

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

"Год как закончила курсы кройки и шитья и мне обещали. "⁠ ⁠

Привет всем умеющим шить!

В заголовок вынесена фраза из соседнего поста потому, что именно этот вопрос меня волнует: Курсы кройки и шитья.

Я умею шить (ну более-менее), могу сшить всё что угодно из мужского классического гардероба,

могу это носить и ни одна собака не скажет, что сшито плохо.

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

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

На производстве, где идёт поток, технолог раскладывает все сложные узлы до уровня : «сделайте шов, выверните, сделайте шов»,

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

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

Прошу поделиться, мнением:

на сколько мой интерес соответствует тому, что преподают на курсах?

(некоторые из них называются «Высшие», некоторые дают Диплом гос. образца)

Пожалуйста, поделитесь мнением, о курсах,

дают ли они то, что мне нужно

Всем красивых уизделий

Учёным можешь ты не стать, а инженером стать обязан. Часть 5⁠ ⁠

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

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

Все команды приходилось вводить вручную, в командной строке. Яшка же, видя, что я не успеваю запомнить и пытаюсь команды записать, старался команды набирать побыстрее, чтобы я не успел их прочитать. Компьютер тоже не успевал команды выполнять, буквы даже не успевали отображаться на экране. Получалась своеобразная игра: Яшка торопится клацать по клавиатуре, а я тороплюсь записать – кто успеет быстрее? Яшка гордился собой. Он достиг максимума, успевал вводить целых шесть команд подряд – больше компьютер не мог «прохавать» и на экране была видна только первая команда. Но я его обошел, я стал записывать не символы на экране, а нажимаемые кнопки.

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

Как то много позже, когда я уже хорошенько освоил операционную систему Рафос, отвечая на мой очередной дурацкий вопрос, Яшка мне сказал, что если бы я хотел, то мог бы взять мануал, который он распечатал и переплёл в типографии, и учиться по нём. Я удивлённо спросил, а где же его взять? Оказалось, что он давно стоит на полке среди другой макулатуры. Тут конечно я был удивлён. Откуда я мог знать, что у Яшки есть мануал и его можно почитать? Не буду же я у него шариться по полкам. И почему Яшка сразу не сунул мне эту здоровенную книгу? И честно говоря, мне тогда даже в голову не приходило, что есть книга, в которой полностью описываются все команды, которые понимает компьютер. У Искры была тоненькая инструкция и ее я изучил досконально, а откуда Яшка знает все команды М400 — я даже не задумывался, я просто считал его гением.

Через некоторое время после нашего знакомства Яшка куда-то пропал на пару дней и появился весь светящийся радостью. Оказалось, что он откуда-то притащил компилятор с языка Паскаль. До этого он писал какие-то научные программы на языке Фортран. Переплетенную книгу с описанием Паскаля и его библиотек он получил из типографии. Это был большая и довольно увесистая книга, напечатанная на принтере.

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

Как стать системным программистом

Dzen

СМИ, свидетельство Роскомнадзора от 07.03.2017 за номером ЭЛ № ФС 77 — 68911

Подключите пакет «Плюс» и пользуйтесь всеми сервисами сайта без ограничений и рекламы:

Полное отсутствие рекламы.

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

5 тестов на выбор профессии с расширенными результатами.

Сервисы сравнения вузов по 50 критериям и специльностей по 22 критериям.

Калькулятор ЕГЭ с дополнительными опциями.

Персональный онлайн робот-помощник с искусственным интеллектом Поступика (планируется).

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *