Навыки — всё по этой теме для программистов


Оглавление (нажмите, чтобы открыть):

Как составить успешное резюме программиста

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

Общие требования к резюме

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

В целом принято включать в него такие разделы:

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

При оценке кандидата на позицию программиста значимы языки программирования, которыми он владеет, имеющиеся у него профессиональные сертификаты (например, сертификаты Microssoft). А значит, эта информация в резюме должна быть обязательно отражена и может быть вынесена в соответствующие дополнительные разделы.

Ключевые навыки программиста

В условиях стремительного развития IT-индустрии требования к ключевым навыкам занятых ей специалистов меняются столь же быстрыми темпами. Например, в 2011 году их ТОП-10 выглядел так:

  1. Знание основных языков программирования. HTML, CSS, JavaScript, DHTML, HTML 5, последний стандарт W3C, который включает в себя аудио- и видеовложения, базы данных.
  2. Понимание всех трёх сред Web-Development. NET, PHP и Java. Современный веб-разработчик должен быть экспертом, по крайней мере, в одной из них, и шапочно знаком с двумя другими. Вы должны также знать и фреймворки.
  3. Знание Rich Internet приложений (RIA). Flash, AIR и Flex. Microsoft Silverlight и JavaFX, обеспечивающих функциональность интернета, AJAX.
  4. Навыки создания веб-служб или интегрировать сторонние реализации в вашем проекте. XML, SOAP, JSON, REST.
  5. Знание динамических языков программирования. Новые языки программирования появлялись в течение последних тридцати лет. Некоторые до сих пор выделяются, особенно те, что ориентированы на динамические функции, такие как Python, F#, Groovy, Ruby, Ruby On Rails.
  6. Наличие своих Soft Skills.
  7. Понимание проблем DNS и доменов.
  8. Использование гибких методологий. Большинство компаний-разработчиков сегодня покупают в Agile концепции развития. Любой веб-разработчик, который понимает Agile концепции будет востребован работодателями.
  9. Знание мобильных технологий. Мобильные веб-разработки как никогда актуальны. Любой веб-разработчик, который знает, как перевести веб-дизайн для мобильных приложений, а также разрабатывающий приложения непосредственно для мобильных устройств, получат преимущество на рынке труда.
  10. Умение создавать чистый код.

В 2020 он, по версии популярной социальной сети LikedIn, приобрёл уже иной вид:

  1. Программирование облачных и вычислительных систем.
  2. Статистический анализ и интеллектуальный анализ данных.
  3. Веб-архитектура и среды разработки.
  4. Разработка и внедрение ПО.
  5. Дизайн пользовательских интерфейсов.
  6. Сетевая и информационная безопасность.
  7. Мобильная разработка. Представление данных.
  8. SEO/SEM маркетинг.
  9. Системы хранения и менеджмент.

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

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

Например, по версии московской школы программирования GeekBrains, он включает такие позиции:

  1. Умение решать задачи.
  2. Аналитический склад ума.
  3. Упорство.
  4. Умение работать в команде.
  5. Хорошая концентрация.
  6. Усидчивость.
  7. Алгоритмизированный подход.
  8. Ответственность.
  9. Коммуникабельность.
  10. Инициативность.

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

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

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

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

Чего не должно быть в резюме программиста?

Основные рекомендации носят универсальный характер для любой профессии:

  • Любой информации о вас, которая ничего не говорит о вас как о профессионале в ракурсе вакансии, на которую вы претендуете, в резюме не место. Упомянутое наличие водительских прав и автомобиля в случае программиста — избыточная информация, даже если речь идёт о работе в офисе: как вы будете до него добираться — ваше личное дело. Умение играть на баяне, вязать крючком, первое место на районном конкурсе чтецов в пятом классе, игра в любительском театре по выходным или страсть к рыбной ловле в профессиональном плане не характеризуют вас никак!
  • Лучше совсем отказаться от раздела о личных качествах, чем заполнять его пустопорожними «коммуникабелен», «быстро обучаем», «способен работать в команде» и т. п.
  • Ни к чему писать и о базовых навыках работы с ПК: те времена, когда информатику в школах и вузах преподавали «на пальцах», давно канули в Лету.

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

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

Специфика разных направлений программирования

К основным направлениям программирования относятся:

  • веб-программирование — разработка приложений для сайтов, которое подразделяется на создание скриптов для серверов (языки PHP, Python, Ruby) и разработка интерфейса для пользователей (Javascript, HTML, CSS);
  • desktop-программирование — написание программ для разных операционных систем;
  • программирование для серверов, включающее разработку приложений для игровых серверов или серверов, на которых базируются популярные мессенджеры, базы данных для банков и т. п.;
  • создание мобильных приложений — разработка программного обеспечения для гаджетов;
  • программы для встраиваемых систем (в основном бытовой электроники). Востребованы особые языки, например, MATLAB;
  • системное программирование: драйверов для различных девайсов, ядра операционных систем, интерпретаторов и компиляторов для языков программирования;
  • создание игр;
  • разработка задач по программированию (востребованы такие малоприменимые в других отраслях языки, как Delphi или Pascal);
  • разработка финансового программного обеспечения. Наряду с навыками 1С-программирования нужно знать и азы бухучёта;
  • создание баз данных, например, для социальных сетей;
  • научное программирование (Science): моделирование различных процессов, запуск спутников, создание нейронных сетей и пр.

Примеры резюме программиста

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

Этот пример нуждается в коррекции. Основные замечания:

  1. Как минимум недоумение работодателя обязательно вызовет низкая зарплата, на которую претендует кандидат. Он живёт в Москве, где 30 тысяч рублей для программиста не зарплата. Отразить в резюме свои зарплатные ожидания логично, но они должны быть адекватными рынку, в том числе и относительно нижней планки. Согласие кандидата с опытом работы на низкую зарплату провоцирует подозрение, что у него что-то не так в части личных качеств.
  2. Соискатель ставит опыт работы перед образованием. Это не рекомендуется делать даже новичку, а у автора к тому же в активе пять лет стажа по профессии, которые работодателю однозначно интереснее всего остального.
  3. В свете сказанного выше навыки должны идти после опыта работы. Оптимальная последовательность: опыт работы — навыки — образование.
  4. В названии раздела о навыках слова «и опыт» лишние: речь там идёт только о том, что кандидат умеет, а опыту он к тому же посвятил особый раздел.
  5. Семейное положение кандидата упоминать в самом начале резюме нелогично: работодателя это если интересует, то в последнюю очередь. Для таких сведений предусмотрен раздел «Дополнительная информация». В приведённом примере такого нет, да только ради сведений о том, состоит ли претендент в браке, он и не нужен.

Резюме программиста с минимальным опытом работы

  1. Здесь также есть несколько замечаний:
  2. Раздел о профессиональных навыках в том виде, в каком он представлен в резюме, лучше не включать туда совсем. Программист по умолчанию является опытным пользователем интернета и офисного пакета программ. А требуется от него гораздо большее. Да и базового английского, как говорил персонаж одного советского мультфильма, «маловато будет». Лучше посвятить особый раздел знанию языка (а навыкам — особый после опыта работы и перечислить именно те, которые характеризуют как профессионала). Английский же лучше охарактеризовать как технический, без которого программист как без рук.
  3. О личных качествах лучше не писать вообще: никакой принципиально значимой для работодателя информации этот раздел в примере не содержит.
  4. То же самое касается рекомендаций. Об их наличии лучше упомянуть в сопроводительном письме или сразу отправить их вместе с резюме.
  5. Соискатель уделил недостаточно внимания оформлению резюме. Лучше оно будет выглядеть, если в нём раздел об опыте работы и его подразделы и обязанности о достижениях обозначить заголовками разного уровня (Заголовок2 для всего раздела, и Заголовок3 для подразделов), последующие разделы давать не одним абзацем, а двумя (первый — название раздела, далее — всё остальное), названия разделов также оформить как Заголовок2, перечень навыков, если включать его с учётом уже сказанного, оформить как маркированный список.
  1. Раздел об образовании должен идти после опыта работы и профессиональных навыков, перед иностранными языками.
  2. При описании опыта работы кандидат допустил небрежность в оформлении — подал два места работы в одном абзаце.
  3. Функциональные обязанности на каждом месте работы лучше оформлять в виде маркированного списка — так удобнее читать.
  4. Как уже говорилось применительно к другому примеру, о семейном положении можно вообще не писать.

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

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

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

Если в описании вакансии указано контактное лицо, обратитесь к нему по имени. Если нет, уместна фраза «Внимание службы персонала компании N».

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

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

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

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

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

И, конечно, само резюме должно соответствовать красоте обёртки по своим качествам.

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

14 качеств хорошего программиста

Дарья Гайна, руководитель отдела веб-разработок в компании JMA SRL, рассказала Tipler о том, какими качествами должны обладать эффективные программисты.

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

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

Я выделил 14 качеств, которые помогут отобрать правильного претендента.

1. Хорошие технические навыки

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

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

2. Готовность учиться

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

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

3. Устранение ошибок

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

Например, при интервью Вы можете спросить: как Вы отслеживаете и исправляете ошибки в своем коде?

4. Идеальная рабочая среда

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

Можно спросить: Опишите Вашу идеальную рабочую среду.

5. Умение решать проблемы

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

Хороший вопрос при интервью: как бы Вы создали (можно предложить разобрать очень комплексный проект с использованием новых технологий)?

6. Страсть к работе

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

Хороший вопрос для интервью: Чем Вы увлекаетесь?

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

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

Вопрос при интервью: Опишите случай, когда Вы находились под сильным давлением, и Ваш проект не работал по причинам ошибок в коде. Что Вы делали в этой ситуации?

8. Коммуникационные навыки

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

Мастер Йода рекомендует:  Цветокоррекция уровни и контраст

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

9. Бизнес видение

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

Пример вопроса на собеседовании: Вам когда-нибудь приходилось делать предложение об улучшении бизнес-процессов?

10. Способность планировать

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

Пример для интервью: Объясните свой подход к новому проекту. Что Вы делаете в первую очередь?

11. Терпение к ошибкам

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

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

12. Навыки командной работы

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

Пример вопроса для интервью: Поделитесь впечатляющим опытом команды.

13. Готовность к исследованию

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

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

14. Уважение сроков

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

Пример вопроса: Опишите тот случай, когда Вам нужно было выполнить проект в сжатые сроки.

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

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

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

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

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

  • Стремление быть лучше, знать больше – саморазвитие.

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

  • Любовь к программированию

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

Так, в общих чертах мы понимаем, кто такой «хороший программист». Давайте теперь разберемся, что нужно знать программисту.

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

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

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

  • Алгоритмы и структуры данных.


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

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

Работа программиста

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

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

Необходимые профессиональные умения и знания

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

Другой вопрос, что нужно знать чтобы поступить на программиста. Здесь невозможно за 2–5 лет вырасти в профессионала, если подойти к профильному образованию с минимальным набором школьных знаний. Желая опередить соперников, со старта карьеры получить преимущество, каждый программист (будущий) должен приступать к освоению профессии с отличной базой:

  • по математике (здесь же – логика, теория вероятности);
  • физике;
  • информатике;
  • английскому, русскому.

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

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

Дополнительные навыки делающие конкурентоспособным на рынке труда

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

  • Умение работать в команде для IT-специалиста – 50% успеха его становления на любом поле (разные архитектуры сетей, языки программирования).
  • Усидчивость, упорство, неумение сдаваться.
  • Аналитический склад ума + критическое мышление позволят отмести априори неисполнимые задачи. Умение экономить время заказчика – самый важный плюс профессионала.
  • Аргоритмизированный подход (системность характера) поможет добиться успеха быстрее.
  • Особенность профессии – работа в условном отрыве от социума – определяет некоторые привычки программиста, которые в будущем могут снизить его эффективность. Потому навыки позитивного общения и умение презентовать свои идеи, привычка быть в курсе популярных алгоритмов, сервисов тоже являются полезными навыками.

Что должен знать новичок

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

  • навыков написания программ на 2–3 популярных языках (оптимальными для начинающего специалиста считаются Python, JavaScript, HTML);
  • знания и понимания алгоритмов, баз данных, паттернов программирования;
  • изучения фреймворков (программная среда под разные операционные платформы – Windows, iOS).

Всем нужен английский язык и понимание принципов логики. Многое определяет выбранное направление работы. Веб-программисту важно умение писать программы и понимание архитектуры разных платформ. Системным программистам необходимо освоить API ОС.

Необходимые знания для поступления

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

Ленинградский пр-т, д. 80, корпуса Е, Ж, Г.

Станция метро «Сокол», выход в центре зала на ул. Балтийская, далее пешком или на троллейбусе (№ 6, 43) до остановки «Институт Гидропроект» (1 остановка), у троллейбусного депо повернуть направо.

Контакты приемной комиссии:
Телефон: +7 (495) 800 10 01

График работы приёмной комиссии:
Пн – Пт: 08:30 – 22:10;
Сб – Вс: 10:00 – 17:00;

8 видов российских программистов

Какие кодеры наиболее востребованы в нашей стране?

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

  • «Мне надо переустановить Windows. Я всю жизнь ждал того, кто сделает это для меня. А потом пойдем чинить тостер.»;
  • «О! Ты можешь помочь мне с лабораторной работой на VBA!»;
  • «За сколько сможешь сделать сайт для магазина моей мамы?»;
  • «Да ну! Скучная и дурацкая профессия. Я вот как-то пробовал разобраться с 1C…».

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

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

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

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

1. Front-end веб-разработчик

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

Где работает?

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

Что делает?

Разрабатывает динамику пользовательского интерфейса. Если в компании нет верстальщика, то еще и переводит PSD-шаблоны в HTML-код.

Технологии

  • HTML и UI фреймворки (Bootstrap, Foundation, Pure);
  • CSS и препроцессоры (SASS/LESS);
  • JavaScript + фреймворки/библиотеки на этом языке (Jquery, ReactJS, AngularJS, BackboneJS);
  • Утилиты для сборки проектов (Grunt, Gulp, Bower).

2. Back-end разработчик

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

Где работает?

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

Что делает?

Разрабатывает “ядро” сайта или веб-приложения: код исполняемый на сервере и архитектуру базы данных.

Технологии

Один из нижеперечисленных языков и фреймворки/библиотеки для него:

  • Базы данных MySQl/PostgreSQL/NoSQL.

3. Full-stack веб-разработчик

Человек, который может сделать сайт любой сложности «от и до».

Где работает?

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

Что делает?

Сайты и веб-приложения. Выполняет работу front-end и back-end разработчика одновременно.

Какие технологии ему желательно знать?

См. списки двух предыдущих типов.

4. Разработчик игр

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

Где работает?

В игровых студиях.

Что делает?

Какие технологии ему желательно знать?

  • С#/C++/Java;
  • Open GL или DirectX;
  • Один из игровых движков (Unity, Unreal Engine, Torque и другие).

5. Разработчик приложений под Android

Где работает?

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

Что делает?

Разрабатывает приложения под операционную систему Android.

Какие технологии ему желательно знать?

6. Разработчик приложений под iOS

Где работает?

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

Что делает?

Разрабатывает приложения под операционную систему iOS.

Технологии

7. Программист 1C

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

Где работает?

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

Что делает?

Пишет программы для автоматизации документооборота в компании.

Технологии

  • «1С:Управление торговлей»;
  • «1С:Бухгалтерия»;
  • «1С:Зарплата и кадры»;
  • T-SQL.

8. Инженер-программист

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

Где работает?

На производстве или в научном учреждении.

Что делает?

Разрабатывает программы для управления самыми разными устройствами: от печи на хлебозаводе до робота-пылесоса.

Технологии

Один из нижеперечисленных языков:

+ огромный багаж технических знаний, соответствующий отрасли в которой человек работает.

Если посмотреть объявления о найме программистов на российских сайтах, то 90% из них будут подходить под эти семь типов. На Западе рынок вакансии несколько разнообразнее. Кто интересуется, может зайти на Odesk и посмотреть, какая работа там предлагается.

С грустью замечаю, что 14-летние пакистанцы требуют там за html-верстку от 500 рублей в час.

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

P.S. Напоследок, жизненный анекдот в тему.

Если бы водителей нанимали на работу так же как программистов:
Вакансия: водитель.
Требования: профессиональные навыки в управлении легковыми и грузовыми автомобилями, троллейбусами, трамваями, поездами метрополитена и фуникулёра, экскаваторами и бульдозерами, спецмашинами на гусеничном ходу, боевыми машинами пехоты и современными легкими/средними танками, находящимися на вооружении стран СНГ и НАТО. Навыки раллийного и экстремального вождения обязательны. Опыт управления болидами “Формулы 1″ — приветствуется. Знания и опыт ремонта поршневых и роторных двигателей, автоматических и ручных трансмиссий, систем зажигания, бортовых компьютеров, антиблокировочных систем, навигационных систем и автомобильных аудиосистем ведущих производителей. Опыт проведения кузовных и окрасочных работ — приветствуется. Претенденты должны иметь сертификаты Mercedes, BMW, General Motors, а также справки об участии в крупных международных соревнованиях не более, чем двухлетней давности.
Зарплата: определяется по результатам собеседования.

(4.69 из 5, оценили: 13)

Способности, склонности и странности программистов

13 сентября, на 256 день года, в России празднуется День программиста – профессиональный праздник тех, кто зарабатывает на жизнь написанием программ для компьютеров. Официально этот праздник был утвержден в России только в 2009 году. Однако во всем мире День программиста отмечают уже давно. Празднуется он 13 сентября, а если год високосный – то 12 сентября. 256 (два в восьмой степени) день был выбран потому, что это количество целых чисел, которое можно выразить с помощью восьмиразрядного байта.

Несмотря на то, что этот праздник появился относительно недавно, профессия программиста, как ни странно, гораздо старше. А убежденные в том, что программист – это исключительно мужская профессия, вынуждены столкнуться с еще одним противоречием. Дело в том, что именно женщина считается первым в истории человеком с такой профессией. Ее имя Ада Августа Байрон Кинг, графиня Лавлейс. В первой половине XIX века дочка великого английского поэта Джорджа Байрона написала первую в мире программу для аналитической машины. Эта программа решала уравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости. Правда, ни одна из написанных Адой Лавлейс программ так и не была никогда запущена. Но среди программистов имя ее увековечено – универсальный язык программирования называется «Ада».

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

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

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

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

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

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

Для того чтобы хоть немного понять, как мыслит человек, разбирающийся в нюансах компьютерного дела, можно прочитать несколько известных афоризмов программистов: «О том, над чем мы работаем сегодня, другие подумают только завтра»; «Помните: 60 кг нераспечатанных листиков сберегают одно дерево»; «Мозг человека обычно загружен лишь на 10% своей мощности; остальное – резерв для операционной системы»; «Пользователь не узнает, чего он хочет, пока не увидит то, что он получил»; «Не говори «OK», пока не перепишешь»; «Старый глюк лучше новых двух»; «Софт пишут – диски летят».

Мастер Йода рекомендует:  Тег Doctype - просто о важном

Благодаря своему необычному мышлению и поведению программисты уже давно стали объектами множества шуток и анекдотов. Шутить любят над их чутким отношением к «железу», оторванностью от жизни, неудачами в отношениях с противоположным полом и т.д. Вот несколько примеров:

Жена сисадмина спрашивает мужа:
– Почему ты никогда не рассказываешь, как у тебя дела на работе?
– Да чего тебе рассказывать? Вот, вчера блок питания сгорел.
– Бедненький! Ну ты хоть с собой бутерброды бери.

Объявление: «Серьезная организация возьмет на высокооплачиваемую должность опытного хакера. Резюме просим размещать на главной странице сайта www.microsoft.com».

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

Материал подготовлен на основе информации открытых источников

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

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

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

С чего начать

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

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

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

Какой язык, технологию и направление выбрать

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

  • Наличие на рынке вакансий. Конечная цель этого пути — найти работу программистом. А это будет трудно сделать, если на рынке вакансий никто не будет искать разработчиков на вашем языке программирования. Проверьте сайты с вакансиями, посмотрите, кого больше ищут, выпишите десяток языков. И переходите к следующему критерию.
  • Низкий уровень вхождения. Если вам придётся потратить длительное время на изучение языка, это может отбить у вас охоту к программированию вообще. Почитайте о тех языках, которые вы выбрали выше. Просмотрите литературу, которую нужно будет прочитать, чтобы изучить эти языки. И выберите те, о которых пишут, что они лёгкие, или которые вам показались лёгкими. Такими языками могут оказаться PHP, Ruby, Python.
  • Кайф от процесса. Если вам не нравится писать код на выбранном языке, вы не будете получать удовольствия от этого процесса, от работы и от жизни. А оно вам надо? Делайте правильный выбор.


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

В любом случае изучите веб-технологии. Это язык разметки HTML, стили CSS и JavaScript, который позволит сделать вашу страницу динамической. На следующем этапе изучите серверный язык (Python, PHP, Ruby и другие) и подходящие для него веб-фреймворки. Изучите базы данных: практически в каждой вакансии программиста это упоминается.

Как получить начальный опыт

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

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

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

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

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

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

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

Почему стоит выбрать Python

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

Код программы на Python читабелен. Вам даже не нужно быть программистом, чтобы в общих чертах понять, что происходит в программе. Из-за несложного синтаксиса Python вам понадобится меньше времени для написания программы, чем, например, на Java. Огромная база библиотек, которая сэкономит вам кучу сил, нервов и времени. Python является высокоуровневым языком. А значит, вам не нужно особо думать о ячейках памяти и о том, что там разместить. Python — язык широкого назначения. И он такой простой, что даже дети могут его выучить.

Справедливости ради стоит упомянуть и о других языках программирования. Java может стать неплохим выбором для новичка. Этот язык популярнее, чем Python, но и немного сложнее. Зато инструменты для разработки гораздо лучше проработаны. Стоит только сравнить Eclipse и IDLE. После Java вам будет проще перейти к работе с низкоуровневыми языками программирования.

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

Языки C и C# очень сложны для новичка. Ruby — хороший выбор в качестве второго языка, но не первого. JavaScript — очень простой язык, но ничему хорошему он вас не научит. А задача первого языка программирования всё-таки научить вас чему-то правильному, задать какую-то логику.

Важен ли английский язык

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

Что нужно знать, кроме языка программирования

Конечно же, кроме языка программирования и английского, нужно знать что-то ещё. А вот что — зависит от направления, которое вы выберете. Веб-программист обязан знать HTML, CSS, JavaScript. Десктоп-программист учит API операционной системы и различные фреймворки. Разработчик мобильных приложений учит фреймворки Android, iOS или Windows Phone.

Всем нужно выучить алгоритмы. Попробуйте пройти курс на Coursera или найти подходящую для себя книгу по алгоритмам. Кроме этого, нужно знать одну из баз данных, паттерны программирования, структуры данных. Стоит также познакомиться с репозиториями кода. Хотя бы с одним. Обязательно знание систем версионного контроля. Выбирайте Git, он самый популярный. Вам нужно знать инструменты, с которыми вы работаете, операционную систему и среду разработки. И главный навык программиста — уметь гуглить. Без этого вы не проживёте.

Последние шаги

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

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

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

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

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

Технологии меняются, поэтому нет такого языка программирования, зная который можно было бы всегда оставаться востребованным на рынке труда. Но многие навыки действительно никогда не теряют актуальности. Подчеркнув уверенное владение такими навыками, а также базовую техническую компетентность в определенной сфере — скажем, Java, SQL или HTML5 — вы значительно повысите свой «коэффициент успешности» и будете выгодно выделяться среди соискателей-конкурентов.

Изучите нижеприведенный список, оцените степень вашей компетентности и подумайте, как максимально естественно ввести эти аспекты в вашу деловую коммуникацию. Обязательно коснитесь всех важных аспектов в вашем резюме и мотивационном письме, а также подчеркните их на собеседовании. Если у вас нет каких-либо из этих навыков — приобретите их. Поймите меня правильно—- я не призываю говорить: «Пользуюсь абстракциями, возьмите меня на работу!». Нет, следует акцентировать сильные деловые качества, выстроенные на базе технического навыка. Подробнее об этом — в заключении статьи.

От контроля версий до использования абстракций

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

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

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

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

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

2. Контроль версий

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

Если вы не пользуетесь subversion (svn), git или подобной системой контроля исходников (версий), то не можете считать себя компетентным программистом и должны максимально оперативно освоить такую систему. И точка. Без контроля версий вы не сможете работать в команде, отслеживать историю разработки, возвращаться к предыдущим версиям, управлять сразу несколькими версиями, уверенно заниматься рефакторингом, либо уверенно исправлять баги.

3. Модульное тестирование

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

4. Автоматизация при помощи Jenkins, Maven и/или Ant или подобных инструментов; что такое «непрерывная интеграция»

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

5. Понимание софтверной архитектуры и паттернов проектирования

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

6. Чтение и написание документации (вики-источники, т.д.)

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

7. Понимание масштабируемости и воспроизводимости

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

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

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

8. Оценка (время и бюджет) и планирование

Умейте учитывать в цикле разработки ПО время, необходимое на реализацию (lead time). Мне никогда не приходилось работать в компаниях, где не требовалось бы соблюдать жесткие сроки. Однако ни в одной компании, где я работал, сотрудники не умели качественно оценивать сложность решения задач и распределять время. Это долгий разговор, который можно резюмировать так: «оценив время, необходимое на разработку, умножьте его на пять — даже с учетом этого правила».

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

9. Понимание того, когда следует и не следует оптимизировать

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

Мастер Йода рекомендует:  Пример универсального скрипта для обработки HTML-форм PHP

10. Agile-разработка

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

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

11. Рефакторинг

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

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

12. Миграция

Необходимо понимать концепцию миграции и принципы ее реализации. Например, как организовать миграцию пользователей с версии 1 на версию 2? Как выполнить миграцию изменений из среды разработки в среду тестирования? Как перевести базу кода из одной технологии в другую?

13. Умение описывать API и пользоваться другими API

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

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

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

Также обратите внимание на разделы об архитектуре и рефакторинге выше, а также на раздел об абстрагировании ниже.

14. Написание повторно используемого кода (как правило, объектно-ориентированного)

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

15. Наличие профессиональной сети, на которую можно положиться

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

16. Система отслеживания ошибок и организации рабочих потоков — например, Jira

Вы должны уверенно обращаться как минимум с одной системой выявления и отслеживания ошибок, например, с Jira. Существует и много других таких систем. Умейте пользоваться такой системой и применяйте ее ежедневно. Учитесь быть администратором, конфигурировать информационные панели, отчеты и т.д., чтобы такая система была максимально эффективной. Индикатор — Excel или совместно используемый документ Google не является системой отслеживания ошибок.

17. Понимание «достаточности» на аппаратном уровне

Если вы — эксперт по софту, то можете и не быть экспертом по харду, и наоборот. Однако полное невежество в аппаратных вопросах недопустимо. Вы должны понимать, когда задача может/должна решаться при помощи дополнительного аппаратного обеспечения (добавление памяти, применение резервного избыточного массива независимых дисков (RAID), ускорение сетевого соединения), а когда — на программном уровне (допустим, при помощи кэширования).

18. «Достаточные знания» о технологиях и инструментах, которыми пользуются другие программисты

Если вы беретесь за молоток, то всё вокруг начинает напоминать гвозди. Например, если вы знаете Flash/ActionScript, то можете полагать, что эти технологии во всех возможных случаях выигрывают у HTML/JavaScript (или наоборот). Подобные мнения никогда не являются абсолютно истинными — все зависит от ситуации. Поэтому либо подружитесь с инструментами, применяемыми другими разработчиками, либо, как минимум «знайте врага в лицо». Не обладая элементарными знаниями об альтернативных инструментах разработки, люди зачастую просто порют глупости.

19. «Достаточные знания» обо всем стеке

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

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

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

20. Понимание того, что на реализацию каждой фичи требуется время

Программисты просто терпеть не могут, когда их «закидывают» все новой работой, а потом бранят за срыв сроков (речь о расползании возможностей (feature creep), бесконечных пересмотрах и изменениях в пользовательском интерфейсе и т.д.).
Все остальные просто терпеть не могут, когда приходится постоянно подгонять разработчика и надоедать ему вопросами «ну когда будет готово?». Поэтому ниже предлагаю вам волшебные слова, позволяющие справиться с этой проблемой. Когда вам как разработчику предъявляется новое требование, четко и ясно скажите следующее:

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

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

Вышеприведенная формулировка уместна при поступлении любого запроса на реализацию новой возможности. Кстати, еще лучше было бы переключиться на методологию Agile. Еще один универсальный ответ — «это слишком серьезное требование для версии n», где n равно как минимум +1 от актуальной версии. Можете просто заявить о фактической невыполнимости требования, но сделать это аккуратно, например: «это отличная функция для версии 4, но сейчас мы работаем над версией 1».

21. Использование абстракций

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

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

Если программа правильно спроектирована, то в ней не должно быть никаких деталей, жестко завязанных на использование Oracle, за исключением тонкого уровня абстрагирования. И этот уровень должен легко заменяться на аналогичный слой кода, специфичный для Microsoft, чтобы все остальное «просто работало». Этот же принцип касается рассмотренного выше гипотетического «API для воспроизведения видео».

22. Умение избавляться от предупреждений компилятора или сообщений об ошибках

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

23. Понимание того, когда требуется и когда не требуется самодеятельность

Самые невыносимые разработчики — это зачастую такие senior-специалисты, которые заставляют вас изобретать велосипед или все писать с нуля (см. выше об определении/использовании API). Если вы не пользуетесь готовыми библиотеками или API, то напрасно тратите свое время и деньги компании. Например, есть библиотека Java, обеспечивающая экспорт в Excel. Если вы реализуете собственный механизм экспорта в Excel — не исключено, что вы самовлюбленный дурак и просто не умеете гуглить.

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

Заключение

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

Он: «Опишите пожалуйста, каким образом ваш опыт работы соотносится с рассматриваемой вакансией.»

Вы: «Хорошо. Как вы считаете, чего особенно остро не хватает в нынешней команде разработчиков для решения стоящей проблемы?»

Он: «Ну, у нас всегда были проблемы с масштабируемостью.»

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

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

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

Он: «Звучит заманчиво. И все понятно!»

Вы: «Может быть, есть еще какие-то проблемные области, о которых вы хотели бы поговорить?»

Он: «Еще одна большая проблема — управление множественными версиями программы для множества пользователей. Настоящая головная боль.»

Вы: «Насколько мне известно, в большинстве компаний проблемы управления версиями обусловлены несколькими факторами. Разрешите поинтересоваться, какой системой контроля версий вы пользуетесь, выполняли ли вы миграцию?»

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

Вы: «Да, меня интересует такое предложение, постараюсь быть максимально полезен вашей компании.»

Как лечится кризис начинающего программиста?

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

Если программировать нечего, значит оно вам сейчас не нужно. Зачем зря себя мучить.

Если не хватает инструментов, сделайте их. Программировать точно научитесь.

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

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

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

Не стесняйтесь использовать чужие решения. Копирование и подражание – неотъемлемый процесс обучения.

Постоянно ищите лучшие варианты сделать то, что было сделано вчера.

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

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

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

Возьмем, как пример, тот же бух.учет на предприятии. Как Вы думаете, почему 1С Бухгалтерия так широко распространилась в РФ и СНГ? Эта программа позволяет бухгалтеру в 2-3 клика мышки сформировать отчет для регулятора(ФНС, ПФР и т.д.), вместо того чтобы человеку сидеть руками искать платежные поручения, вычислять налоги и т.п. Софт просто подтягивает выписку из банка, анализирует ее и выдает готовую для печати бумажку, что экономит бухгалтеру сильно много времени. Расчет заплатанный налогов и отчеты в соц.фонды это вообще красота — 8 кликов мышкой и все готово 🙂

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

И вот, далее Вы для себя определитесь, какая Ваша основная цель? Какой Ваш основной посыл обществу?

Личной мой посыл — «Я помогаю людям экономить: время, деньги, нервы и т.д.».

Как я это делаю?
У меня сначала был маленький интернет-магазин по продаже катализаторов для бензина(в поиск «кондиционеры метала для а/м»). При соблюдении определенных условий, расход топлива на малометражках снижался от 20% до 45%
Вторым моим проектам было небольшое мобильное приложение для отслеживания хода исполнительного производства в ФССП(для взыскательней, уже сдохло). Мне и моим знакомым(не юристы) это экономило достаточно много времени на ругань с приставами, чего они должны делать и т.д. Кто сталкивался с этой службой должен знать эффективность и оперативность их работы, особенно в регионах.
Сейчас я пишу небольшой конструктор сайтов, который поможет одной дружественной мне веб-студии сильно оптимизировать процесс создания низкобюджетных сайтов визиток

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

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

Если говорить о чисто практических инструментах(функции стандартной библиотеки, фреймворки и т.д.). Лично я могу считать себя профессионалом в какой бы то ни было технологии, ни когда я прочитал 1-2 книги и/или написал 1,5 задачи оттуда же. С таким уровнем я не могу сказать что я знаю язык/технологию в принципе, просто знаком — да, но я ее не знаю. Считать себя профессионалом я могу после того как решу не менее сотни задач, используя эту технологию и написал не менее 1 млн строк кода, именно написал, а не сгенерировал rake/gii/artisan или чем-то там еще.

Вам же я желаю не останавливаться, развивайтесь. Мастерство приходит с опытом.

Образование в Поволжье

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

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

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

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

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

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

Итак, топ-10 навыков, которые необходимы были программистам в 2011 году:

1) Знание основных языков программирования. HTML, CSS, JavaScript, DHTML, HTML 5, последний стандарт W3C, который включает в себя аудио-и видео-вложения, базы данных.

2) Понимание всех трех сред Web Development
NET, PHP и Java. Современный веб-разработчик должен быть экспертом по крайней мере в одной из них, и шапочно знаком с двумя другими. Вы должны также знать и фреймворки.

3) Знать Rich Internet приложения (RIA). Flash, AIR и Flex. Microsoft Silverlight и JavaFX, обеспечивающие функциональность Интернет. AJAX.

4) Знания, как оздать веб-службы или интегрировать сторонние реализации в вашем проекте. XML, SOAP, JSON, REST.

5) Динамические языки программирования. Новые языки программирования появлялись в течение последних тридцати лет. Некоторые до сих пор выделяются, особенно те, которые ориентированы на динамические функции, такие как Python, F#, Groovy, Ruby, Ruby On Rails.

6) Иметь свои Soft Skills.

7) Понимание проблем DNS и доменов

8) использование гибких методологий

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

9) знание мобильных технологий

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

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