Глава называется “Преимущества и недостатки…”, но начнем мы с недостатков (помните о деталях, которые видит программист?). Причина проста – глава должна заканчиваться на позитиве. Поехали.

Недостатки работы программистом

Работа программистом – это свой образ жизни. Некоторые вещи можно компенсировать, другие – проблематично. Вы должны сразу понимать все, чем придется пожертвовать и принимать решение осознанно, а не под лозунгом “Как Цукерберг!!!” (кто не в курсе, Марк Цукерберг – это создатель социальной сети Facebook, т.е. сайта как Одноклассники, только без оценок фото 5+).

Итак, что же нас ждет?

Сидячий образ жизни.

Казалось бы, ерунда. Сидеть – это не мешки таскать. Но сидеть придется очень много. Обязательно нужно что-то “противопоставлять этому”. Прогулки, фитнес, велосипед. Без этого противодействия сидению вы за 10 лет ощутите все “прелести” сидения – лишний вес, кривая осанка т.д.

Если вы человек, который не может жить без движения – то вероятно, вам будет сложно “усидеть”. В целом это обычно не проблема, но помнить об этом стоит.

Постоянно работа с компьютером

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

Постоянно надо учиться. Устаревание знаний

Если вы думаете выучить 1 язык и работать далее не обучаясь – то вероятно вам нужно выбрать другую профессию.

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

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

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

Ну и самое неприятное – все что вы изучили сегодня, завтра вероятно уже может устареть. Конечно есть общие базовые принципы, которые работают всегда, но сами технологии очень быстро меняются. Не дай Бог вам изучать технологию, которая в будущем просто может совсем “закрыться”, например flash, silverlight.

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

Постоянное решение проблем

Готовьтесь к тому, что вначале проблема будет сидеть на проблеме, и конца этому не видно. Пока вы новичок, каждую проблему вы будете решать как последнюю.

Здесь есть несколько чит-кодов.

  • Первый – спрашивайте у опытных коллег. Они все проходили это, и 95% вопросов уже решались миллионами программистов до вас. Желательно, чтобы за вами был закреплен наставник, к которому вы бежите за советом. Но при этом важно и самому решать проблему, а не сразу просить помощи. Иначе у вас разовьется навык прошения помощи, а не решения проблем. Воспринимайте каждую задачу как личный вызов, в этом случае самостоятельно решение будет приносить вам максимум удовлетворения.
  • Второй – это умение искать информацию. Искать нужно в Google на английском. На русском гораздо меньше информации. Крайне важно уметь правильно формулировать проблему. Если вы это делаете качественно, то можете не глядя набрать запрос, щелкать на первой ссылке и вот вам решение.
  • Третье – ведение базы знаний. Помните, ошибки имеют систематический характер. Решая конкретную проблему, вы в будущем решаете целый кластер проблем. Систематизируйте проблемы и в будущем вам проще будет работать.
  • Четвертое – имейте хорошую базовую основу. База – это ядро ваших навыков. Выделите, что вы должны хорошо делать и досконально разберитесь с этим. Это повысит в разы вашу скорость и эффективность. У вас не будет дурацких ошибок в распространенных операциях, не нужно будет искать банальные решения глупых проблем.

Долгий путь к мастерству

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

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

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

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

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

Скорее ремесло, чем искусство

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

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

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

←Качества хорошего программиста ч.3 Преимущества работы программистом →