Профессиональный программист – это совсем не тот человек, который способен писать сложные SQL-запросы, разбираться в виртуальных деструкторах, и знать все нововведния в последней версии языка PHP. В реальной жизни опытный менеджер ожидает от программиста совсем другие качества:
Программист не должен быть абстрактным творцом
Каждый может взять готовый паттерн или с нуля придумать абстрактное хранилище данных. Это не сложно, но это только половина дела. Если в реальности твоё хранилище при попытке выбрать “все зелёные объекты массой от 10 до 50 кг, которые были куплены не менее 2-х раз за текущую неделю” на несколько секунд вешает выделенный сервак – то грош цена твоей красивой абстракции.
Реальная жизнь определяет то, с чем будет иметь дело программист. А не наоборот. В абстрактной модели не должно быть того, чего нет в реальной жизни. Абстрактная модель должна оперировать теми же понятиями, которыми оперируют обычные люди. Потому что именно обычные люди будут ей пользоваться, а не твои друзья-гики.
Программист не должен быть социопатом
Парное программирование придумали не дураки. Разработка софта вся основана на коммуникации: коммуникация с клиентом, коммуникация с менеджером, коммуникация с дизайнерами и верстальщиками, коммуникация с коллегами по цеху. Я часто слышу истории о том, что программистов не допускают на различные meetings, собрания, или встречи с клиентами. Это – плохие программисты, которых наняли просто потому, что не смогли найти нормальных. Нормальные программисты всегда способны выражать свои мысли обычным человеческим языком.
Потому что если они этого не могут – они и в коде будут выражать никому не понятную абракадабру.
Программист должен не терять обратную связь с внешним миром
Худший вариант программиста – это человек, который в коммерческом проекте программирует ради себя. Под каким бы предлогом это ни подавалось: самореализация, приобретение навыков, повышение квалификации, саморазвитие и т.д. Если программист не понимает, что он пишет код не чтобы ему было хорошо, а чтобы другому было хорошо, то его надо гнать из коллектива как можно быстрее.
Потребителю пофиг, насколько сложны твои архитектурные решения и какие интересные выборки можно производить из твоей БД. Потребителю нужно, чтобы продукт выглядел симпатично, работал стабильно, быстро, и решал поставленные задачи. Как только программист начинает мыслить этими категориями, он уже делает широкий шаг от желторотого юнца к уровню уважаемого специалиста.
Программист не должен ставить в приоритеты самореализацию и эксперименты
Коммерческий проект – не место для чрезмерного самоутверждения. Плох тот программист, который стремится воткнуть в проект как можно больше модных “экстеншенов” чисто для того, чтобы похвастаться перед коллегами или знакомыми.
Работа – не место для опасных экспериментов. Никому не нужно твоё решение на MongoDB, если 99% твоих клиентов сидит на шаред-хостингах с MySQL. Никому не нужен твой скрипт на Питоне, если вся команда пишет на PHP. Экспериментируй дома! Купи себе VDS за копейки и развивай на нём свои проекты, тестируй на них экспериментальные технологии, а на работу приноси только известные и проверенные решения.
Программист не должен тратить слишком много рабочего времени на самообучение
С утра ты почитаешь Хабр, потом пару статей про Хайлоад, потом новости от Гугла и Микрософта, а там глядишь и обедать пора. Пообедал, вроде надо поработать, но коллега прислал интересную ссылку про новые функции PHP, глядишь и вечер наступил. А завтра тебя отправят на интересную конференцию за счёт фирмы, целый день можно будет ничего не делать. Прекрасно!
Разумно уделять какое-то время самообучению и “изучению новых технологий”. Но только тогда, когда есть планы по их внедрению, обозначенные руководством. Абстрактную самодеятельность и саморазвлечение, не направленные на достижения конкретных результатов, на рабочем месте надо строго ограничивать. Почему?
Потому что компания оплачивает каждую минуту твоего рабочего времени. Каждую минуту, когда ты не решаешь задачи компании, она несёт убыток. Горькая правда: компания не заинтересована в том, чтобы ты изучал технологии, которые неприменимы в твоём проекте непосредственно сейчас (в обозримом будущем). Никто не будет добровольно спонсировать обучение и дальнейший уход специалиста в другие области. Понимание этого факта приходит годам к 25, а ко многим и позже, но для тех кто хоть раз пробовал поднять собственный бизнес – это нерушимая аксиома. Работа – это место для работы, а не для развлечения.