понедельник, 24 мая 2010 г.

[prog.work] Что такое “профессиональный программист” по мнению Роберта Мартина

Мой пересказ главы “The Professional Programmer” из книги “97 Things Every Programmer Should Know”. Главу написал Роберт Мартин.

Что такое профессиональный программист?

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

  • Если вы профессионал, то вы отвечаете за свою карьеру. Вы отвечаете за собственное обучение. Вы отвечаете за то, чтобы идти в ногу с индустрией и технологией. Слишком много программистов считают, что их обучение является задачей их работодателей. Извините, но это совершенно не так. Как вы думаете, поступают ли так врачи? Как вы думаете, поступают ли так юристы? Нет, они занимаются собственным образованием, тратя на это свое время и собственные деньги. Они тратят изрядную часть своего свободного времени на изучение журналов и судебных решений. Они сами поддерживают собственный уровень. Тоже самое должны делать и мы. Отношения между вами и вашим работодателем четко прописаны в вашем контракте. Вкратце: ваш работодатель обещает вам платить, а вы обещаете хорошо делать свою работу.
  • Профессионалы отвечают за код, который они пишут. Они не отдают код до тех пор, пока они не убедятся, что он работает. Задумайтесь об этом на минуту. Можете ли вы представить себя профессионалом, если вы собираетесь зарелизить код, в котором вы сами не уверены? Профессиональные программисты ожидают, что отдел тестирования ничего не обнаружит, потому, что они не отдают код до тех пор, пока тщательнейшим образом не оттестируют его. Конечно, отдел тестирования найдет какие-нибудь проблемы, поскольку никто не совершенен. Но у вас, как у профессионала, должно быть стремление к тому, чтобы ничего не оставлять отделу тестирования.
  • Профессионалы являются командными игроками. Они берут на себя ответственность за результат работы всей команды, а не только за свою собственную часть. Они помогают друг другу, они учат друг друга, они даже прикрывают друг друга, если это необходимо. Если кто-то из команды срывается и выпадает, то остальные делают его работу, зная о том, что в один прекрасный день им самим потребуется прикрытие коллег.
  • Профессионалы не могут мириться с большими списками багов. Большущий список багов – это небрежность. Системы с тысячами багов в баг-трекерах – это трагические следствия недобросовестности. В самом деле, в большинстве проектов сама необходимость баг-трекера – это симптом недобросовестности. Только очень громадные системы могут иметь настолько большие списки дефектов, что для их обслуживания требуются автоматизированные инструменты.
  • Профессионалы не производят беспорядок. Они гордятся своим мастерством. Они поддерживают свой код чистым, хорошо структурированным и простым для изучения. Они следуют общепринятым стандартам и устоявшимся best practices. Они никогда не суетятся. Представьте себе, что вы можете наблюдать за тем, как врач проводит хирургическую операцию на открытом сердце – вашем сердце. У этого врача есть дедлайн (в прямом смысле слова). Он должен закончить операцию до того, как аппарат искусственного кровообращения уничтожит слишком много клеток вашей крови. Как вы хотите, чтобы врач вел себя? Хотите ли вы, чтобы он действовал как типичный разработчик софта – суетясь и производя дерьмовый код? Хотите ли вы, чтобы он сказал: “Я исправлю это попозже”? Или же вы хотите, чтобы он аккуратно следовал правилам, не торопясь, будучи уверенным в том, что он тщательно выбрал наилучший способ проведения операции. Хотите ли вы беспорядка или профессионализма?

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

PS. Свое мнение по поводу этого описания профессиональных программистов я выскажу в комментарии.

Отправить комментарий