Однажды в университете во время лабораторной работы преподаватель на мой вопрос по поводу установки и запуска интегрированной среды Eclipse обронил именно ту фразу, которой я назвал данную заметку, - "настоящий программист пишет в блокноте, если он знает язык, ему не нужны вспомогательные средства".
Я надеюсь, что не ошибусь, если предположу, что подобные замечания, в которых высказываются излишние требования к профессиональной подготовке специалиста, встречаются довольно часто в сфере IT. Кроме всего, такой излишне идеализированный подход к вполне просто решаемой проблеме, как написание некоторой программы, характерен для молодых людей, желающих поразить сверстников своими способностями. Однако, как правило, сказанное самоуверенным тоном редко подтверждается на практике и остается, по сути, обычным хвастовством.
Но прошу читателей не делать поспешных выводов и не начинать упрекать преподавателя, так как он является обычным человеком, как вы и я, склонен совершать необдуманные поступки и ошибки, как каждый из нас. Я хотел бы поделиться некоторыми доводами, которые, возможно, изменят уже в определенной степени укоренившиеся взгляды на роль, вес и профессиональную пригодность технического специалиста в секторе информационных технологий.
Главный критерий - эффективность
Во взрослой жизни человека отношения на работе складываются так, что он наиболее ценен, когда делает свою работу качественно и быстро. Это понятно, т.к. за такую работу, надлежащего качества и выполненную в срок, платит деньги заказчик. А сотрудники, которые видят свою роль исключительно в качестве "крутого" парня-хакера, доставляют больше проблем, чем проку. Современные информационные технологии сейчас охватывают такую обширную область знаний, что один человек вряд ли может разбираться во всех аспектах того или иного направления IT. Поэтому всегда ценятся командные, скромные и находчивые люди, которые четко знают свою роль в группе. В этом залог эффективной работы. Забудьте о личных амбициях типа "я не пользуюсь отладчиком, так как уверен в своем коде" и тому подобное! Выходит, что демонстрация своих знаний путем искусственного усложнения методов работы и отказа от наиболее удобных средств не выдерживает никакой критики.
Поэтому отсюда следует один главный вывод: специалист должен искать и использовать для решения своих профессиональных задач именно такие инструменты, которые позволят выполнить конкретную работу максимально качественно, эффективно и быстро. Я употребляю слово специалист, т.к. зачастую человек желает подниматься по карьерной лестнице и заинтересован в своем профессиональном росте.
Специалист должен искать и использовать для решения своих профессиональных задач именно такие инструменты, которые позволят выполнить конкретную работу максимально качественно, эффективно и быстро.
Абсурдизация требований
Вернемся к примеру с ортодоксальным программистом, который пишет в блокноте свои программы (под блокнотом понимаем одноименную программу Windows). Посмотрим, каких инструментов он лишается, упорствуя и предъявляя к своей работе настолько завышенные требования.
Во-первых, блокнот не оборудован отладчиком, поэтому такой программист, не зная состояния объектов программы во время выполнения, не сможет гарантировать даже на 20%, что программа работает правильно. Также немаловажно, что поиск и исправление ошибок, а в любой программе они всегда будут, превращается в длительную и малоприятную процедуру, что сильно бьет по нашим приоритетам - качеству продукта и эффективности работы персонала.
Во-вторых, ни один текстовый редактор не поставляется в комплекте с системой контроля версий, а без нее поддержание продукта, который находится в разработке, в консистентном состоянии даже одним человеком становится проблематичным. Опять сильный удар по производительности труда и качеству.
В-третьих, стандартный блокнот Windows не поддерживает подсветку синтаксиса языка (gedit или kwrite из Fedora Core Linux, например, этим недостатком конечно не страдают), форматирование и структурирование кода, не поддерживает удобное управление структурными блоками продукта. Не забываем, что приложение обязательно работает с данными, которые могут храниться в базе данных, XML, в файлах или быть доступны через веб-сервисы, RMI, CORBA, WCF. А на знании какого-то языка далеко также не уедешь, т.к. вокруг него моментально выстраивается вереница сопутствующих технологий, логика которых может быть совершенно отличной и базироваться даже на противоположной парадигме программирования.
Вот и получается очень грустная ситуация, когда наш идеализированный сотрудник загнал себя (самостоятельно или повинуясь чужой прихоти) в очень жесткие рамки, где невозможно существование проекта сложнее алгоритма сортировки или бинарного поиска. Не стоит и говорить, что такой человек никогда не устроится на работу, т.к. он просто ничего не умеет делать и полностью профессионально непригоден.
Заключение
Настоящий специалист в работе, да и каждый человек в жизни, не должен (и от него никто не должен требовать) намеренно усложнять свои задачи, если усложнение не преследует цели углубления познаний. Если вы хотите изучить PHP, то не нужно начинать с С++! Да, если знаешь С++, то автоматически знаешь и все остальные языки программирования, однако на изучение PHP уходит вечер, когда C++ изучается годами. Поэтому предлагаю в подобных вопросах руководствоваться принципом разумной эффективности, четко разделять задачи коллектива и личные амбиции, а также чувствовать ту грань, за которой обычное хвастовство перерастает в форменное самодурство. Если кто-то продолжает утверждать обратное, просто дайте ему прочитать эту статью.
Настоящий специалист в работе, да и каждый человек в жизни, не должен намеренно усложнять свои задачи, если усложнение не преследует цели углубления познаний.
Виталий КРАСИЛЬНИКОВ
Комментарии
Как там правильно называется повторение известных истин?
Правильно Красильников!
Нечего загонять себя в "рамки" и искать потом выход через... разные отверстия, а потом еще и гордиться этим.