Как правило, хорошего специалиста найти сложно, а вот хорошего программиста — еще труднее. Дело обстоит в особенности этой профессии. И особенность эту мало кто понимает, включая и самих программистов.
Хороший программист — знающий программист
Как и в любой другой профессии, программисту нужны знания. Знания, полученные самостоятельно, в стенах школ и университетов или же приобретенные вместе с опытом работы — т. е. базовые знания, которые отличают программиста от «обычного» человека. Ведь именно эта профессия очень остро проявляет огромный контраст между людьми, которые ориентируются в вопросах программирования и тем большинством, что понятия не имеет о специфике такой работы. Да и, впрочем, не желает его иметь. Не зря же говорят, что программист — человек, решающий проблемы, о которых другие даже не слышали, способом, который прочие совсем не понимают.
Хороший программист — обучающийся программист
Знания — это хорошо, много знаний — еще лучше. Но программирование этим не ограничивается. Здесь важен не столько объем знаний, сколько способность самостоятельно их получать. В отличии от других сфер деятельности информационные технологии развиваются большими темпами. По темпу развития ИТ на порядок опережают любые другие области, и конца-края этому бурному развитию не видно. Технологии развиваются, устаревают, появляются новые, и для того, чтобы быть «на волне», программист вынужден постоянно находиться в процессе обучения.
Задача состоит не в том, чтобы научить человека как можно большему. Задача в том, чтобы научить его быстро отыскивать нужную информацию. Это касается любой специальности, но в ИТ-профессиях из-за огромного темпа развития технологий, выражено особенно ярко.
Многим, наверное, приходилось встречаться с индивидуумами (программистами их никак не назовешь!), которые, изучив что-то одно, пусть и большое, не просто не горят желанием учиться чему-то новому, но даже активно противятся, когда их к этому подталкивают. Это мертвый груз для любого предприятия. Мало того, что этот «программист» быстро оказывается устаревшим, так он еще и тормозит развитие ИТ-структуры предприятия, а это уже огромная проблема.
Хороший программист — гибкий программист
Будучи представителем этой профессии, нужно уметь в любой ситуации оставаться гибким. Ведь частенько, раз в несколько лет, в этой сфере происходят настоящие революции, переворачивающие все вверх дном. Эти революции, в отличии от политических, не отменяют того, что было ранее. Новый порядок может преспокойно существовать (и существует) параллельно старому. Но, чтобы работать в новых условиях, требуется полное переосмысление. Точнее говоря, необходимо мыслить совсем по-другому, совсем не так, как раньше. Такое изменение в мышлении не всем дается легко. Тот, кто более гибок и изменчив, адаптируется быстрее и выходит вперед, зачастую опережая других на годы. Прямо как в природе: выживает не сильнейший, а тот, кто лучше приспосабливается.
Так называемых революций было достаточно много — объектно-ориентированное программирование, сетевые технологии и так далее. И во всех этих случаях происходило примерно одно и то же: кто-то это придумывал, некоторые дальновидные к нему присоединялись, большинство же недальновидных и/или ленивых просто не обращали внимания или яро критиковали. Впрочем, позже это выходило в массы и становилось привычным делом. Те, кто раньше был против, использовали новые технологии в повседневной работе, другие, — которые в свое время выглядели чудаками, — начинали продвигаться дальше. Наверное, именно эти последние, наиболее дальновидные, и изобретали то, что шло впереди своего времени, а потому не пользовалось успехом сначала.