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

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

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

10 способов научиться программировать самостоятельно

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

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

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

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

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

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

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

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

Однако выбор «высокоуровневой» ниши не означает, что вы можете ничего не знать об ассемблере, Си, C++, устройстве операционных систем и так далее. И наоборот. Хороший Python-программист знает, как найти узкое место в своей программе и при необходимости переписать ее на Си, а крутой сишник знает, как сэкономить время, сгенерировав кусок шаблонного кода скриптом на Python, после чего протестировать его еще одним скриптом на Python.

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

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

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

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

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

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

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

Дополнение: См также Советы и примеры задач, которые помогут вам в освоении нового языка программирования

Метки: Работа, Разработка, Философия.

Перефразирую классика, скажу: “Программист — это звучит гордо”. Профессия программиста престижна, она обеспечивает достойный заработок, и возможность решать интересные задачи в офисе (а иногда даже дома или на пляже). Чтобы быть ценным специалистом в своей организации достаточно качественно и эффективно выполнять задания работодателя. Хотите большего? Хотите чтобы работодатели сражались за право видеть Вас своим сотрудником?

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

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

Неужели тут нет подводных камней и любой может попасть в топовую компанию только читая новости? — спросите Вы. Увы, в освоении профессии программиста есть и проблемы. 99% тех, кто решил стать программистом ошибаются и делают неверные первые шаги. Выбрали не ту специализацию программирования, ошиблись в выборе языка, просто “уперлись в стену” и не знаете как двигаться дальше. Что делать? Поможет вам друг человека — книга или наш бесплатный урок курса “Молодого бойца”.

Если нет времени на занятия или поиск литературы, постараюсь помочь Вам “здесь и сейчас”. Ответ на вопрос “Как стать программистом с нуля” прост. Вам нужно:

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

    Неправильный, но быстрый способ стать программистом

    Учиться конечно можно и самостоятельно, но лучше, если Вам поможет опытный наставник, например, как на нашем бесплатном уроке создания сайтов (верстки);

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

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

Теперь расскажу Вам немного поподробнее об этих четырех шагах.

Как определиться со специализацией?

Решили стать программистом? Тогда прежде всего ответьте себе на вопрос: "Каким программистом я хочу стать". Область информационных технологий настолько обширна, что стать "просто программистом" уже невозможно. Надо взять себя в руки и сделать выбор — определиться, на каком направлении Вы хотите сосредоточиться. Лучше, чтобы выбор соответствовал Вашим устремлениям и складу характера. Мы поможем выбрать именно Ваше направление — достаточно пройти тест. Выбирать, как водится, есть из чего.

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

  • Верстальщик — специалист, который создает статические странички сайта, первый шаг на пути освоения веб-программирования. Обучиться этой профессии можно на нашем курсе Основы HTML. Приятный бонус этого курса — первое занятие бесплатно, а записавшись на него вы создадите свою страничку под руководством опытного преподавателя.
  • Программист JavaScript — “оживляет” страницы сайта при помощи специального языка, который работает внутри браузера. Изучить язык JavaScript можно на наших курсах JavaScript базовый. Только помните — для написания программ, работающих “внутри браузера” требуется хорошее знание верстки
  • Программист PHP — создатель той части сайта которая не видна обычному пользователю и работает на сервере. По данным бирж фриласа (то есть сайтов с заказами для программистов) порядка 70% всех заказов — это программирование на PHP. И для изучения основ PHP у нас есть соответствующий курс.

Чуть посложнее разработка приложений для настольных компьютеров. Здесь часто важна эффективность приложения в выполнении задач и скорость его работы. Такую возможность нам дает язык C++. Программист C++ очень востребован для создания сложных программ, где требуется максимальное быстродействие. Правда, с непривычки поначалу разобраться как правильно программировать на языке C++ сложновато. Понять “как вы это делаете” можно на наших курсах C++ для начинающих. И да, первый урок бесплатный.

Можно остановиться на разработке приложений для мобильных устройств — очень востребованный сейчас вариант. Например, можно выучиться на программиста Android и создавать приложения для планшетов и смартфонов. Вакансий для Android-разработчиков море, кроме того можно работать “на себя”: разрабатывать приложения и продавать их через магазин Google.

Что мне нужно повторить чтобы начать изучать программирование?

Определились с направлением Вашего развития в области информационных технологий? Готовы приступать к обучению? Отлично! Но сначала проведем ревизию Ваших знаний.

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

Будущему программисту нужно знать:

  • Математику — хотя бы на уровне школьной алгебры за 9-й класс, чтобы не пугаться вида формул;
  • Математическую логику ну или хотя бы понимание, чем истина отличается от лжи, а 0 от 1;
  • Английский язык который поможет Вам читать и понимать документацию на языки программирования, если аналога на русском языке у Вас нет.

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

Обучение

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

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

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

Практика

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

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

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

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

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

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

Обучение программированию с нуля: с чего начать изучение в домашних условиях

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

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

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

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

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

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

Однако выбор «высокоуровневой» ниши не означает, что вы можете ничего не знать об ассемблере, Си, C++, устройстве операционных систем и так далее. И наоборот. Хороший Python-программист знает, как найти узкое место в своей программе и при необходимости переписать ее на Си, а крутой сишник знает, как сэкономить время, сгенерировав кусок шаблонного кода скриптом на Python, после чего протестировать его еще одним скриптом на Python.

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

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

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

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

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

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

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

Дополнение: См также Советы и примеры задач, которые помогут вам в освоении нового языка программирования

Метки: Работа, Разработка, Философия.

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

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

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

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

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

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

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

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

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

Однако выбор «высокоуровневой» ниши не означает, что вы можете ничего не знать об ассемблере, Си, C++, устройстве операционных систем и так далее. И наоборот. Хороший Python-программист знает, как найти узкое место в своей программе и при необходимости переписать ее на Си, а крутой сишник знает, как сэкономить время, сгенерировав кусок шаблонного кода скриптом на Python, после чего протестировать его еще одним скриптом на Python.

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

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

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

Как стать программистом, если очень хочется, но опыта нет

Читайте книги об алгоритмах, операционных системах, СУБД, системах контроля версий, просто книги о разработке (тут вспоминаются, к примеру, Спольски, Макконнелл, Брукс, Фаулер). Они пригодятся вам независимо от вашей работы и выбранной ниши. Также изучайте новые языки программирования. Как я уже когда-то писал, это редко оказывается пустой тратой времени.

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

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

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

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

Дополнение: См также Советы и примеры задач, которые помогут вам в освоении нового языка программирования

Метки: Работа, Разработка, Философия.

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

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

Профессия программиста довольно многогранна. Названия специалистов часто зависят от того, на каком языке или на каких технологиях они разрабатывают программы. Например, существуют программисты Java, Delphi, Python, 1С, Android, JavaScript и т.д.

Места работы

В настоящее время программисты востребованы практически везде. Должность инженера-программиста может существовать:

  • На «обычном» предприятии.
  • В IT-компании, занимающейся программированием профессионально.

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

История профессии

Первая программа для аналитической машины написана еще в 1843 году дочкой Джорджа Байрона графиней Адой Августой Лавлейс, а первый программируемый компьютер заработал в 1941 году.

Инструкция для тех, кто хочет стать программистом с нуля

Его запустил (а заодно придумал первый язык программирования) немецкий инженер Конрад Цузе.

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

День программиста, празднуется 13 сентября.

Обязанности программиста

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

  • Проектирование и разработка ПО.
  • Внедрение ПО и организация корректного взаимодействия с другими программами.
  • Поддержка ПО и помощь специалистам техподдержки в устранении ошибок.

Иногда функции программиста включают в себя тестирование программного обеспечения, но чаще этим занимаются тестировщики.

Требования к программисту

Предъявляемые работодателями требования к программисту, также могут варьироваться, но основные примерно таковы:

  • Знание необходимых в работе технологий и языков программирования (например, SQL, PHP, HTML и т.д.).
  • Опыт создания программ.
  • Умение составлять и читать ТЗ.
  • Умение разбираться в чужом коде.
  • Знание вспомогательных программ (например, системы контроля версий).

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

Образец резюме программиста

Образец резюме.

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

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

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

Зарплата программиста

Доходы программистов, как правило, достаточно высоки. На текущий момент средняя зарплата программиста находится в районе 47 000 рублей в месяц. Хотя в Москве ставки могут достигать 150 000 рублей в месяц и выше.

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

Что нужно сдавать чтоб поступить на программиста

Гость

Я так чтоб подготовиться!

bst4u

Математика и язык. И будет вам счастье.

Ant.Repin

А ты что, не знаешь куда хочешь поступать и какие предметы вступительные?!
Учи точные науки! Если и не придётся сдавать то в жизни пригодиться.

SiG

Матека, и комп дома… Ну и оценки на уровне 4…
остальное так чтоб не пролететь.

Ant.Repin

А вообще МАТЕМАТИКА! (со всеми наполняющими её компонентами)

OWERPOWER8

Если в Эстонии,
то один из предметов: Математика/Физика/Химия
И один язык Эстонский/Русский/Английский
Вычисляется средний бал по результатам двух экзаменов по специфический системе и потом выбирают достойных кандидатов на места.

я же

А точные науки это какие?!

Компьютер + Интернет + блог = Статьи, приносящие деньги

Знаю что английский обязателен…

Ant.Repin

Уточни вопрос, на какого именно программиста ты хочешь учиться!

я же

web дизайнер

Гость

Нет такой специальности=) Я учусь на 230102 (АСОИиУ) вступительные были:
математика, физика или информатика, зачет по языку

я же

Ну а связанные с web дизайном что есть?!

я же

Есть такая специальность! Web-дизайнер, web-программист -разработка полноценных интернет-сайтов от начала до конца!

Jesterok

Думаю есть… Погуглите "Прикладная информатика в дизайне". Не уверен конечно, но малоли.

Jesterok

Есть ПРОФЕССИЯ. Такой специальности (ровно также как и программист) в нашей системе образования не существует.

я же

[ad010]

Ну а смысл один и тот же, хоть профессия хоть специальность, глвное что он выполняет

EcoLes

Анализы на кал и мочу. В поликлиннике по месту работы.

Ant.Repin

Если ты на Вэб Дизайнера хочешь учиться, то по сути поступать можешь на любой факультет по програмированию, как здесь уже правильно сказали, такой специальности в нашей системе образования нет и не предвидеться, я Архитектор, а как минимум 3 сайта сверстать успел.
Учи Английский, работу с базами данных, javascript, Flash activescript, если так хочется полностью разрабатывать весь сайт то Adobe CS Pro Web тебе в помощь. Так же не помешают знания по колористике и эргономике.

я же

Всем большое спасибо, пойду на Веб-программист (веб-технолог)

Основные требования:
* Знания PHP, MySQL;
* JavaScript, HTML, XML.

dmitriyprosvetov

Есит интересный сайт на эту тему http://dmitriyprosvetov.net.ua

Никитосс

XD, EcoLes ну ты и загнул! =)

Гость

Математика, информатика, физика

Гость
12.05.2015
Математика, информатика, русский язык, физика. Вот все основное.

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

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

ya krevedko