Что нужно для того чтобы стать программистом. Курсы по PHP и фреймворкам. Объявление о работе я нашел в

Ирина Давыдова


Время на чтение: 13 минут

А А

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

Так или иначе – все начинают с нуля. И прежде чем с этого самого нуля начать – задайтесь вопросом, действительно ли вам нужна эта профессия?

Суть работы программиста – основные специализации, плюсы и минусы работы

Суть работы программиста зависит от специализации и компании.

Впрочем, иногда программист – и «швец, и жнец, и на дуде игрец». Но это, как правило, в маленьких фирмах, начальники которых экономят на специалистах.

Основные категории, на которые условно можно поделить всех программистов в соответствии с их деятельностью:

  • Прикладные специалисты. Задачи: разработка программного обеспечения для игр, редакторов, бух/программ, мессенджеров и др.; разработка ПО для систем аудио/видеонаблюдения, сигнализации и проч.; адаптация программ под чьи-либо конкретные нужды.
  • Системные специалисты. Задачи: разработка операционных систем, создание интерфейсов к базам данных, управление вычислительной системой, работа с сетями, контроль над работой созданных систем, и др. Эти специалисты зарабатывают больше всех других в своей области, благодаря редкости и специфичности профессии.
  • Web-специалисты. Задачи: работа с Интернетом, создание сайтов и веб-страниц, разработка веб-интерфейсов.

К плюсам профессии можно отнести следующие преимущества:

  1. Очень даже достойная зарплата.
  2. Высокий спрос на хороших специалистов.
  3. Возможность получения престижной работы без образования.
  4. Возможность зарабатывать удаленно, сидя дома на диване.
  5. Возможность работать удаленно на зарубежные компании.
  6. Творческая профессия (правда, нередко творчество зависит от пожеланий заказчика).
  7. Комфортные условия, которые обеспечивают крупные компании своим специалистам (бесплатные напитки/булочки, специальные места для отдыха и спорта, и проч.).
  8. Возможность получения «опциона». То есть, пакета акций компании. Правда, только после отработки определенного срока в компании.
  9. Расширение кругозора. По мере развития себя в профессии приходится знакомиться с самыми разными сферами жизни и вникать в самые разные системы – от делопроизводства и бухгалтерии до проч.

Минусы:

  • Работа «сутки напролет» — обычное дело для данной профессии.
  • Данная работа для многих людей будет скучной и однообразной.
  • Интересы специалиста и заказчика не всегда совпадают, и то, что очевидно для программиста, как правило, совершенно не объяснить клиенту. Это приводит к конфликтам и стрессам.
  • Не редкость – авральные режимы работы.
  • Необходимость постоянно развиваться, изучать новое, успевать эволюционировать вслед за IT-сферой. Всего за несколько лет программы устаревают, и приходится писать новые.

Видео: Как стать программистом?

Необходимые личные и деловые качества, профессиональные умения и навыки для работы программистом – что необходимо знать и уметь?

Главные качества хорошего программиста

Хороший программист должен…

  1. Любить свою работу. И не просто любить – болеть ею.
  2. Любить учиться и учить с нуля.
  3. Быть очень трудолюбивым, усердным и терпеливым.
  4. Быть готовым к постоянной рутинной работе.
  5. Уметь работать в команде.

Какие знания нужны будущему программисту?

Начинать следует с изучения…

  • Английского языка.
  • Устройства компьютера и физики всех процессов.
  • Языков программирования.
  • Методик разработки ПО.
  • Методик тестирования ПО.
  • Систем версионного контроля.

Язык программирования – с какого начать?

Также нужно будет изучить…

  • Java. Более популярный, чем Питон, и неплохой выбор для начинающего. Но более сложный, чем Питон.
  • PHP. Заточен под «веб», но будет полезен любому новичку.
  • C и C#. Весьма сложные языки, можно оставить их на потом.
  • Ruby. Хороший вариант для второго языка.
  • Django. Он научит программировать правильно. По сложности схож с Питоном.

Многое зависит от выбранного направления.

Например…

  1. Веб-программисту будут полезны знания HTML, CSS и JavaScript.
  2. Для десктоп-программиста — API и фреймворки.
  3. Для разработчика мобильных приложений — Android, iOS или Windows Phone.

Где обучаться на программиста с нуля – учебные заведения России, курсы, дистанционное обучение, онлайн-обучение?

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

  • Самообразование. Самый сложный путь к программированию, который лежит через изучение сайтов, приложений, книг и проч.
  • Университет. Если вы только закончили школу и мечтаете получить престижную профессию программиста, поступайте на соответствующий факультет. Основные знания вы все равно будете получать путем самообразования, но «корочка» поможет вам быстрее приблизиться к заветной цели. ВУЗы выбирайте технические, изучив заранее программы обучения.
  • Персональный учитель . Если вы сможете найти наставника среди программистов, самообучение будет более быстрым и эффективным. Ищите наставников на онлайн-форумах, на айти-тусовках, тематических конференциях и проч.
  • Курсы. Обучить вас тому или иному языку программирования смогут на простых курсах, которые можно найти даже в маленьких городах. Например, «Образовательный IT-портал GeekBrains», « Специалист» при МГТУ Баумана , «Компьютерная Академия ШАГ» , МАСПК .

Получить высшее образование по специальности программист можно в…

  1. МИФИ.
  2. Российском экономическом университете Плеханова.
  3. Московском государственном строительном университете.
  4. МГТУ Баумана.
  5. Государственном университете управления.

Видео: 7 ошибок начинающих программистов

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

  • habrahabr.ru (статьи на IT-тематику, информация по самым разным темам). Этот ресурс известен каждому программисту.
  • rsdn.org (книги, актуальные вопросы, полезный форум, восполнение пробелов в знаниях, материалы на русском языке).
  • sql.ru (отличный удобный форум, полезная литература и даже предложения по работе).
  • theregister.co.uk (новости из IT-сферы).
  • opennet.ru (новости, полезные статьи, форум и проч.). Ресурс для профессионалов.
  • driver.ru (библиотека драйверов). Полезный сайт для новичков.

Ресурсы для обучения:

  1. ocw.mit.edu/courses (свыше 2000 курсов на разные темы).
  2. coursera.org (более 200 курсов, бесплатно).
  3. thecodeplayer.com (пошаговые руководства для новичков).
  4. eloquentjavascript.net (ресурс для введения в Java Script).
  5. rubykoans.com (для всех, кто изучает Ruby).
  6. learncodethehardway.org (изучение Python, Ruby, C и др.).
  7. udemy.com (платные и бесплатные курсы).
  8. teamtreehouse.com (свыше 600 уроков).
  9. webref.ru/layout/learn-html-css (для освоения HTML и CSS).
  10. getbootstrap.com (изучение возможностей Bootstrap).
  11. learn.javascript.ru (изучение frontend и Javascript).
  12. backbonejs.org (для фронтенд-разработчиков).
  13. itman.in/uroki-django (для изучения Django).

Бесплатные сайты для обучения в помощь новичкам:

  • ru.hexlet.io (8 бесплатных курсов по C и PHP, JavaScript и Bash).
  • htmlacademy.ru (18 бесплатных курсов для верстальщиков).
  • codecademy.com (популярные курсы по языкам, инструментам и проч.).
  • codeschool.com (более 60 курсов (13 – бесплатных) по HTML/CSS и JavaScript, Ruby и Python, iOS и Git, и пр.).
  • checkio.org (для изучения Python и JavaScript).
  • codingame.com (обучение через видео-игры, 23 языка программирования).
  • codecombat.com (изучение JavaScript, Python и пр.). Обучающая игра, доступная и для тех, кто пока еще не владеет английским языком.
  • codehunt.com (обучение поиску ошибок в коде).
  • codefights.com (обучающая платформа, через турниры на которой можно «загреметь» на собеседование в приличную IT-компанию).
  • bloc.io/ruby-warrior# (изучение Ruby, а также искусств/интеллекта).
  • theaigames.com (развитие навыков программирования – увлекательный игровой онлайн-тренажер для программиста).
  • codewars.com (сборник обучающих интерактивных задач для тех, кто обладает минимумом знаний).

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

Как быстро найти работу программиста и начать зарабатывать – советы бывалых

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

Поэтому…

  1. Читайте книги, изучайте сайты и самообразовывайтесь, но уже сейчас начинайте писать свои самые 1-е строчки кода.
  2. Сами создавайте и усложняйте себе задачи по пройденному материалу.
  3. Ищите свои первые проекты, пусть даже и за «смешные деньги», записывайте себе в «резюме».
  4. Ищите работу на русскоязычных биржах фриланса (ru) и на англоязычных биржах (upwork.com) тоже – там больше шансов ее получить.
  5. Начинайте с маленьких проектов, которые вам по плечу.
  6. Не упускайте и вариант open source (в таких проектах всегда не хватает людей).
  7. Помогайте «за копеечку» (или даже бесплатно, для опыта) знакомым программистам. Пусть они дают вам несложные задания.

  • Обязательно пишем: свой опыт работы, список языков и технологий, которыми вы владеете, образование и контакты.
  • Не впихиваем в резюме весь перечень своих качеств и талантов. Даже, если вы виртуозно играете на баяне, писать об этом в резюме не стоит.
  • Оформляйте резюме с учетом креатива, но уместного.
  • Не стоит заполнять пункты вроде «ваши цели и амбиции» или «кем я вижу себя через 5 лет». Достаточно написать, чем вы занимались ранее и чем хотели бы теперь.
  • Не пишите о языках и технологиях, которые вам известны только по названиям. В резюме следует писать лишь те, в которых вы плаваете, как рыба в воде. Для всего остального есть волшебная фраза – «был небольшой опыт».
  • Если вы профессионально владеете Delphi, не забудьте упомянуть, что знаете также C#, jave или иной язык, потому как просто «программист дельфи» никому по сути не нужен (дельфи – это азы, с которыми знаком каждый выпускник).
  • Не упоминайте работу, которая была не по специальности. Это никому не интересно. Также никому не интересно, есть ли у вас водительские права или автомобиль. Вы же не курьером собираетесь устраиваться.

Перспективы карьеры программиста и зарплата программистов

Средняя зарплата программиста в крупных городах страны – от 50000 до 200000 рублей .

По России в целом – от 35 тысяч до 120000 .

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

От стажера до руководителя IT-отдела – путь не такой уж долгий, а зарплата на самом верху может достигать и 4000 долларов ежемесячно. Ну а потом можно двинуться и в руководители крупного проекта (прим. – по разработке ПО), а тут уже зарплата превышает 5000 долларов.

22.12.14 157K

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

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

Что нужно знать «чайнику»

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

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

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

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

После развала СССР все отечественные ВУЗы долгое время даже и не пытались перекроить свою систему обучения под потребности современного рынка. Не являлись исключением из этого правила и технические ВУЗы.

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

В странах бывшего СССР основным языком программирования, преподаваемым в технических ВУЗах, был Бейсик.

Ситуация кардинально не изменилась и через 10 лет. Лишь некоторые учебные заведения, учуяв веяния нового времени, в начале двухтысячных года начали перекраивать свое обучение под мировые стандарты. И только с этого момента программирование стало восприниматься как отдельная профессия и специализация обучения:

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

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

В некоторой мере такая тенденция сохраняется и по сей день. Хотя в наше время количество профессионалов, занимающихся преподаванием, заметно возросло.

С какого языка начать изучать программирование

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

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

Чаще всего выбор падает на язык программирования C (си) . Именно с него большинство новичков во всем мире начинают свое обучение. На основе C было создана основная часть программных языков, и во многом они наследуют его структуру и синтаксис.

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

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

  • Простая для понимания основа – часть встроенных возможностей языка для простоты вынесена в отдельно подключаемые библиотеки. К таким элементам относится большая часть математических функций и методов для работы с файловой системой;
  • Оптимально подогнанная система типов – благодаря простому набору типов данных и строгой типизации уменьшается риск допущения ошибок в процессе написания программного кода;
  • Направленность C на процедурный тип программирования, при котором соблюдается четкая иерархия всех элементов кода;
  • Доступ к памяти машины с помощью указателей;
  • Минимальное количество поддерживаемых ключевых слов;
  • Поддержка области действия имен;
  • Поддержка пользовательских типов данных (объединения и структуры ).

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

Программы (компиляторы) для программирования

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

Компилятор – специальная программа, переводящая программный код в форму, понятную для компьютера.

Вот несколько специализированных компиляторов с поддержкой языка C:

  • Microsoft Visual Studio – профессиональный инструмент, поддерживающий множество языков, в том числе и несколько серверных. Подойдет для новичков, если брать его «на вырост»:

  • Borland C++ — бесплатный компилятор, идеально подходящий для начинающего обучение. В отличие от предыдущего инструмента, отличается ясным и понятным интерфейсом. Поэтому его освоение не вызовет особых трудностей даже при самостоятельном освоении азов программирования:

  • Code::Blocks – бесплатная среда разработки, поддерживающая написание кода на нескольких языках. Средний по сложности освоения вариант:

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

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

Изучите различные типы архитектуры компьютерного оборудования. Будет полезно изучить основы построения цифровых схем и компьютерной архитектуры . Однако некоторые специалисты считают, что на начальном этапе это не нужно, поэтому достаточно будет прочитать 2-3 статьи на эту тему (например эту и эту). Вы сможете вернуться к этому, когда освоите свой первый язык программирования.

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

Изучите одну из систем продвинутого моделирования (к примеру, UML или ORM).

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

Начните применять полученные знания.

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

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

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

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

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

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

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

    Как я стал программистом

    С компьютером я впервые познакомился в 6 лет. В 13 лет у меня уже был свой персональный веб-сайт. В школе учился плохо, в универе тоже. На втором курсе мой друг нашёл работу Java-программистом и настоятельно рекомендовал мне сделать то же самое. Идея заинтриговала. Нужен был план.

    Первый шаг - резюме

    Первая и основная проблема, с которой сталкиваются новички, - резюме. Без адекватного, цепляющего резюме тебя не будут приглашать на собеседования. Но как быть тем, у кого совсем нет опыта работы? Для того чтобы «не с пустыми руками» идти к HR, мы с другом вписали мне в резюме целый год опыта работы над его проектом, над которым якобы вместе трудились.

    Зарплатная политика

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

    Позор и стыд

    Первые собеседования были провальными. Надо мной буквально смеялись. На первом же техническом собеседовании, где мне дали пару задачек на бумаге, меня раскусили в два счёта. Кто-то даже по-отечески посоветовал книгу Thinking in Java.

    Первая работа

    В конце концов меня пригласили на собеседование в филиал одной датской компании, где я ответил на фундаментальные вопросы и приятно удивил всех своим английским. Меня взяли на должность Junior Java developer с одним условием - первые три месяца я буду проходить курс SCJP (Sun Certified Java Programmer), который восполнил бы мои пробелы и выковал бы из меня более подготовленного специалиста. Что может быть лучше, чем оплачиваемая стажировка без нужды работать (выдавать свою некомпетентность)? В этой компании я проработал полгода, чтобы через несколько месяцев пойти на повышение в компанию покрупнее.

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

    1. Резюме. Оно должно быть правильно отформатированным и написанным исключительно на английском. Если не хватает опыта, то его можно (и нужно) придумать, но следует подготовиться отвечать за каждое написанное в резюме слово. Например, если у тебя там написано JMS (Java Message Service), то как минимум следует пройти хоть одну обучалку и поиграться с JMS, поделать какие-нибудь примеры, пускай это и будет банальное «Hello, world!». Теперь будет удобнее пускать пыль в глаза, вы ты и правда «работал с JMS».
    • Выучи азбуку программирования. Если ты ещё можешь позволить себе «плавать» на глубоких уровнях каких-нибудь комплексных технологий вроде Struts и Spring, то неправильные ответы на элементарные вопросы тебе никогда не простят. Если тебя ночью разбудить, то ты должен уметь рассказать про ООП, наследование, инкапсуляцию, полиморфизм и другие базовые концепции, а также суметь объяснить это всё на примерах.
    • Практика. Научиться программировать можно, только лишь программируя. Это больно и неприятно (если ты не программист), но другого пути нет. Единственный способ перестать бояться задачек на собеседованиях - порешать их дома самостоятельно.
    • Читай книги и проходи туториалы по Java только на английском Абсолютно все термины программирования проще понимать на языке оригинала, то есть на английском. Читать техническую литературу по Java на русском - себя не уважать. Почему? Потому что, чтобы понимать что-нибудь в духе «…модуль таблицы во многих смыслах представляет собой промежуточный вариант, компромиссный по отношению к сценарию транзакции и модели предметной области», нужно быть поистине гением, которым ты вряд ли являешься.
    • Выучи, наконец, английский! В первую очередь это касается разговорного английского. Сложно сосчитать то огромное количество толковых программистов, которых на моей памяти забраковали по одной единственной причине - неудовлетворительный уровень разговорного английского. Нет, если ты, конечно, собираешься работать программистом где-нибудь в отечественной компании, то твой уровень языка не будет играть важной роли. Но если ты хочешь попасть на работу в международную компанию, то сам бог велел выучить язык. Уровень твоего английского будет конвертироваться в дополнительные сотни долларов прибавки к зарплате.
    • Знай рынок. Походи по вакансиям, почитай требования, поспрашивай друзей-программистов, сколько они получают. Используй сервисы, которые позволят составить более полную картину о рынке IT. Ты был бы удивлён, узнав о том, насколько велико количество талантливых программистов, которые получают в два раза меньше, чем могли бы, только лишь по причине своей лени и нежелания держать нос по ветру.
    • Торгуйся. Нет ничего предосудительного в том, чтобы торговаться за зарплату. Твоим аргументом в споре может быть как хороший английский, так и предложение о работе в другой компании. Последний аргумент особенно хорошо работает: «Да, но мне в Luxoft предлагают на 300 долларов больше, почему я должен соглашаться на ваши условия? Может, мы могли бы найти компромиссный вариант?». В своё время мне пару раз удалось выторговать дополнительную сотню долларов к своей зарплате, и через год эта сотня долларов дала мне дополнительные 1 800 долларов дохода на ровном месте. Ты должен понимать, что даже для небольших зарубежных IT-компаний лишняя сотня баксов как капля в море.
    • Найди себе ментора. Хорошо, если у тебя будет более опытный товарищ, который сможет помочь советом и ответить даже на самые глупые вопросы. Благодаря его опыту и моральной поддержке ты будешь продвигаться в программировании быстрее, чем в одиночку. Если нет ментора, то неплохо сходить на какие-нибудь курсы по программированию, которые не только дадут более полную картинку того, чем занимается программист, но и позволят познакомиться с более опытными людьми. Кто знает, может быть, кто-нибудь из них захочет стать твоим ментором.
    • Начни свой проект. Даже если он будет образцом самых худших практик кодинга и ты его никогда не закончишь, по крайней мере, у тебя будет то дело, ради которого захочется разбираться в программировании и изучать новые технологии. Кроме того, у тебя появится дополнительная тема для задушевных бесед на собеседованиях.
    • Ищи работу летом. Во-первых, когда все в отпусках, в компаниях более остро ощущается нехватка кадров и повышается вероятность того, что тебя позовут на собеседование. Во-вторых, поскольку твои конкуренты-соискатели тоже на отдыхе, у тебя опять-таки повышаются шансы быть замеченным HR.
    • Никогда не сдавайся. Даже если кажется, что ты заваливаешь собеседование, важно проявить стойкость и продолжить попытки решить задачу, какой бы сложной она ни казалась. Кто знает, может быть, тебя именно в этот момент проверяют на усердие в работе!
    • Избегай заданий на компьютере. Нет способа быстрее раскусить непрофессионала, чем сразу же бросить его в пекло программирования. Твоя задача - постараться перевести все беседы на высокий уровень, где обсуждаются общие подходы и концепции, но никак не конкретная реализация в решении той или иной задачи. Если тебе дали бумагу и ручку и попросили записать решение, то попроси возможность нарисовать его схематически. Таким образом, удалившись от синтаксиса конкретного языка, ты не только убережёшь себя от каких-нибудь режущих глаз ошибок, но и покажешь, что способен мыслить абстрактно, не вдаваясь так уж сильно в детали.
    • Начинай говорить первым. Избегай ситуаций, когда в воздухе виснет пауза, во время которой в мозгу у интервьюера может созреть очередной коварный вопрос. Как только происходит какая-либо заминка, начинай рассказывать что-нибудь из того, что ты хорошо знаешь. Постарайся навязать интервьюеру свою игру.
    • Старайся говорить правду. Если ты никогда не писал PL/SQL процедуры, то лучше об этом сказать прямо. Возможно, в этом для тебя будет минус, однако ты убережёшь себя от нужды выкручиваться, отвечая на вопрос, в котором ничего не смыслишь. Опытный интервьюер за версту почувствует твои пробелы в знаниях.
    • Бойся маленьких компаний. В небольших компаниях, как правило, небольшие команды. Чем меньше в команде людей, тем быстрее тебя раскусят. Твоя цель - большая и неповоротливая корпорация, где ты сможешь выиграть для себя немного времени.
    • Соблюдай дресс-код. Если ты придёшь на собеседование на должность программиста в шикарном костюме, то это вызовет больше подозрения, чем если ты явишься в шортах или потёртом свитере. Не лишним будет также нацепить очки, мол, «эдакий я книжный червь».
    • Конечно, кто-то знающий может отметить, что приведённый выше рецепт - это скорее способ стать кодером, чем программистом, и он где-то будет прав. Однако дело всё в том, что вы никогда не найдёте вакансию с заголовком «Требуется плохой кодер». Всем нужны программисты. Желательно senior. У которых более пяти лет опыта работы на корпоративных проектах и которые одинаково хорошо владеют сразу несколькими языками программирования, при этом досконально разбираются в СУБД, умеют писать bash-скрипты, хранимые процедуры, знают в совершенстве Linux, TCP/IP, обладают лидерскими качествами, стрессоустойчивостью, коммуникабельностью и ещё массой навыков, «без которых никак».

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

    С чего начать учится программированию с нуля чайнику?
    В этой статье я постарался подробно разобрать, можно ли стать программистом с нуля самостоятельно и какие варианты есть для того, чтобы освоить программирование самостоятельно и начать зарабатывать на этом.
    UPD : Тем, кто ищет, с чего начать изучать программирование с нуля в 2018 (или пока только собирается и приступит в 2019:)), сильно повезло благодаря книге Якова Крамаренко «Введение в разработку программного обеспечения». Я искренне рекомендую с ней ознакомится — она стоит того, чтобы обновить статью №1 по рейтингу Google и отзывам читателей для тех, кто изучает программирование самостоятельно.

    Постарался дать самый лучший — на мой взгляд — путь. Предупреждаю — он не из легких! Дальнейшее прочтение может стоить вам многих часов интересных занятий:)

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

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

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

    Книга по веб-программированию для начинающих

    Версия 2016 года есть в переводе: https://courses.prometheus.org.ua/courses/Prometheus/CS50/2016_T1/about .

    Лучше пройти курс на английском. И язык прокачаете, и информация посвежее. Хотя сильно курс не менялся — только в 2017 вместо PHP начал использоваться Python.

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

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

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

    Как самостоятельно стать программистом с нуля

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

    1. Разобраться в HTML и CSS

    Хороший курс для базового освоения HTML и CSS: https://learn.shayhowe.com/html-css/ (English) или https://webref.ru/layout/ learn-html-css (перевод).

    После этого стоит посмотреть на возможности Bootstrap, который стал стандартом де-факто для ускоренной разработки веб-приложений: http://getbootstrap.com/

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

    На этом тоже можно зарабатывать — как на фрилансе, так и работая в ИТ-компании, которая специализируется на веб-разработке.

    Но раз мы решили стать программистом — двигаемся дальше!

    2. Познакомиться с jQuery

    Если понравилось — можно продолжить разбираться с frontend и начать изучать Javascript .

    Если следом пойдет https://angularjs.org/ или http://backbonejs.org/ — то это путь во фронт-енд разработку. Хорошая специальность, тем более, что такие знания пригодятся любому программисту, который выбрал веб-разработку.

    Мой совет — пока остановиться на jQuery и двигаться дальше.

    3. Освоить серверный язык программирования

    Тут выбор большой. Самые перспективные языки программирования — Ruby, Java, Python, Node.JS (Javascript для сервера).

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

    Хороший вариант — язык программирования Python и Django

    Плюс — Python и Django научат вас «правильному» программированию. Python стабильно входит в ТОП5-10 самых востребованных языков, а хорошие специалисты в Python одни из самых высокооплачиваемых программистов. Python одновременно простой и понятный для начинающих программистов язык программирования, и при этом используется во многих крупных компаниях и на больших проектах.

    Для самостоятельного освоения прочтите «Python для детей» Джейсона Бриггса или посмотрите:

    Среди других материалов рекомендую Learn Python The Hard Way . книгу «Простой Python. Современный стиль программирования». И, конечно The Python 2 Tutorial и The Python 3 Tutorial .

    Django — возможно лучший фреймворк для веб-разработки

    Лучший инструмент на все случаи жизни очень сложно найти. Django имеет все шансы стать таким инструментом для веб-разработки.

    С чего начать для изучения Django:

    Начните с официальной документации, там очень хороший tutorial: https://docs.djangoproject.com/en/2.1/intro/

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

    Вариант №2 — PHP и WordPress

    Другой путь — начать с PHP и работы с популярными CMS. Если вы изучаете программирование сами и хотите быстро начать работать — начните с PHP.

    Многие считают PHP «не совсем настоящим» языком программирования и для этого есть основания. PHP редко используется в крупных веб-приложениях и заточен только для веб — использовать его в других областях не получится.

    С другой стороны — PHP лидирует по количеству запущенных в мире сайтов. На нем основаны самые популярные CMS (системы управления сайтами).

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

    Хорошо разобравшись с этим, уже можно найти работу. Под PHP и WordPress очень много сайтов, поэтому работы хватит всем.

    Как начать зарабатывать программистом

    Многие представляют работу программиста-фрилансера так:

    На самом деле это выглядит примерно так:

    Если вы готовы к работе программиста и ищете способ зарабатывать — добро пожаловать на фриланс! Фриланс-биржи позволят вам найти простые заказы (возможно почти бесплатно на первых порах) — чтобы получить практику. Как правило, работа в ИТ-компании может быть прибыльнее, если вы просто ищете работу программиста.

    Уже после пункта 2 — освоив HTML, CSS и jQuery — можно идти на фриланс биржи и брать несложные заказы, нарабатывая профиль.

    Знаете английский? https://www.upwork.com/

    Совсем нет, даже со словарем? http://freelance.ru/

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

    Быстрый путь в веб-разработчики

    Исходя из моего опыта, на изучение программирования с нуля уйдет от 6 до 12 месяцев в лучшем случае, при этом 6 месяцев — это если вам кто-то помогает.

    Чтобы ускорить процесс входа в ИТ — ищите возможность пойти на тренинг (возможно понадобится не один) или найдите человека, который будет заниматься с вами. Реально без человека, который передаст вам свои знания — очень сложно, можно просидеть год за книгами и так и не начать. А со знающим человеком, который может просто рассказать о сложных вещах — намного легче.

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

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

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

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

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



  • Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: