a humble software engineer
117,6
рейтинг
7 сентября 2013 в 07:46

Разработка → Не кладите все свои яйца в чужую корзину (из книги «Passionate Programmer» by Chad Fowler) перевод


Продолжаю перевод глав из книги «Passionate Programmer», которые публикуются в блоге автора. Автор книги неординарный Чад Фаулер — известный спикер Ruby- и IT-конференций, бывший джазовый саксофонист, ныне CTO 6Wunderkinder.

Во время работы менеджером группы разработки, я как-то спросил одного из своих подчинённых: «Чего ты хочешь добиться в своей карьере? Кем ты хочешь стать?». Я был ужасно разочарован его ответом: «Я хочу быть архитектором J2EE-приложений». Я его спросил, почему тогда не «дизайнером Microsoft Word» или «инсталлятором RealPlayer»?

Этот парень хотел построить свою карьеру вокруг определённой технологии, созданной определённой компанией, в которой он не работал. Что будет если эта компания выйдет из бизнеса. Что будет если его «новенькая и сексуальная» технология станет устаревшей? Почему вы хотите доверить какому-то поставщику ПО свою карьеру?

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

Давайте остановимся на секунду и вспомним о том, что мы должны воспринимать свою карьеру как бизнес (об этом говорится на протяжении всей книги — прим. перев.) Конечно, можно построить паразитный бизнес, например, существуют компании, которые продают свои программы, борющиеся со шпионским ПО, прикрывая кленовыми листиками неадекватную модель безопасности браузера от Microsoft. Эти компании разработчики ПО обычно адаптируются к изменяющимся правилам игры рынка (например, к таким как неожиданное изменение безопасности в браузере от Microsoft или её решению разработать свой собственный продукт для защиты компьютеров от вирусной угрозы). В то же самое время у независимых разработчиков нет достаточных ресурсов для резкого изменения направления своей карьеры.

Печальный момент в мире, сконцентрированном вокруг определённых поставщиков ПО, таков, что обычно детали реализации их программ сохраняются в тайне. Вы можете знать работу проприетарного программного обеспечения ровно в том объёме, пока не достигнете профессионального «барьера поддержки». Профессиональный «барьер поддержки» возводится искусственно между вами и решением возникшей проблемы, для того, чтобы поставщик ПО мог продать вам свои услуги по поддержке. Иногда такой барьер возводится намеренно, иногда как побочный эффект защиты интеллектуальной собственности (путём закрытия исходных кодов).

Несмотря на то что прицельная инвестиция в одну определённую технологию почти всегда плохая идея, если вы всё-таки оказались в таком положении, что вынуждены так поступать, рассмотрите вариант погружения в open source решение, которое конкурирует с аналогичным коммерческим продуктом. Например, у вас есть желание стать экспертом в серверах приложений J2EE. Вместо того, чтобы фокусировать свои усилия на нюансах конфигурирования и поддержки коммерческого решения (в конце-концов любой сможет понять как подкрутить настройки в конфигурационных файлах, так ведь?), скачайте open source сервер JBoss или Geronimo и выделите время не только для изучения их базовых возможностей, но и их внутреннего устройства.

По прошествии некоторого времени вы осознаете, что какие-то изменения произошли в вашем восприятии. Эта J2EE штука (или что бы вы ни выбрали для погружения) вообще-то не такая и особенная. Теперь вы видите детали реализации, вы видите, что есть высокоуровневые концепции и паттерны. Вы начинаете осознавать, что Java это ли или какой-то другой язык или платформа, распределённая корпоративная архитектура — это распределённая корпоративная архитектура. Ваше видение становится более всеохватывающим, а ум начинает открываться. Вы начинаете осознавать, что концепции и паттерны, сортируемые вашим мозгом, начинают быть более масштабируемыми и универсальными, а не сконцентрированными вокруг технологий одного поставщика. «Пусть поставщики ПО приходят и уходят — я знаю как спроектирована система!»

Действуй!


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

P.S. Ещё во время подготовки первой части перевода не мог найти более или менее подходящий хаб для публикации, поэтому выношу на суд хабра опрос:
Нужен ли новый хаб «Психология программирования»?

Проголосовало 975 человек. Воздержалось 288 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Перевод: Chad Fowler
Александр Мышов @Myshov
карма
92,2
рейтинг 117,6
a humble software engineer
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (18)

  • +4
    Даёшь еще перевод!
  • +6
    Отдельный хаб для штук, вроде того что в этой статье, имхо нужен, но вряд ли «Психология программирования» адекватное название для него. Вообще, между первым и вторым Вашими переводами больше различий, чем сходств, и если первый касался и психологии, и программирования, то второй — проекция идеи диверсификации на карьеру разработчика ПО, интересный взгляд, но психологии здесь мало, а программирования еще меньше.
    В любом случае, продолжайте, еще 1 перевод — и я куплю себе эту книгу :)
    • +1
      А я не выдержал и уже купил.
  • +13
    Маленькое замечание к переводу.

    «Sexy» в контексте компьютерных технологий правильно переводить не «сексуальный», а «модный, привлекательный». Конкретно в данном случае «now-sexy» — это «новомодный».

    (Пишу сюда, а не в личку, потому что эта ошибка довольно распространена).
    • 0
      Зато звучит в данном контексте прикольно )
      • +4
        Кто это такой нежный, что не поленился даже в профиль зайти? ))
        • 0
          Ваш котэ тоже на Хабре? :)
  • +1
    Позволю себе привести несколько контраргументов к точке зрения автора.

    Во-первых, знать детали реализации ПО конкретного поставщика часто бывает необходимо. Иначе можно оказаться в ситуации, что архитектура вроде бы идеально выверена, но приложение работает крайне медленно или не работает вообще. Наиболее наглядный пример — разработка под мобильные устройства.

    Во-вторых, опыт работы с конкретной технологией так же важен, как и умение мыслить абстрактно и системно. Допустим, у работодателя есть несколько веб-сервисов и сайтов на ASP.NET MVC, и нужен еще один человек в команду. С какой вероятностью соискатель получит работу, если на собеседовании скажет «ASP.NET MVC это проприетарная технология, я ее не знаю, зато я ковырялся в исходниках PHP»?

    В-третьих, от скорости изменений в индустрии не убежать. Автор верно подмечает, что чем дальше ты от конкретных технологий, тем с меньшей скоростью устаревают твои знания, но это нельзя воспринимать как повод расслабиться и перестать воспринимать новое.
    • +1
      Во-вторых, опыт работы с конкретной технологией так же важен, как и умение мыслить абстрактно и системно.

      Проблема в том, что невозможно мыслить абстрактно и системно, если тебе доступен только один экземпляр, да и тот ты не можешь «разобрать».
    • +2
      ASP.NET MVC это проприетарная технология

      Это с каких пор? Ваши данные давно устарели — http://aspnetwebstack.codeplex.com/
      • 0
        Прошу прощения за неточность. Фреймворк ASP.NET MVC в качестве примера не годится, но, думаю, вы меня поняли :)
  • 0
    арррр! Да покупаю, покупаю!
  • +1
    Что-то я не могу придумать ни чего, что можно было бы положить в «Психология программирования», но нельзя в «Программирование». Оккам?
  • +1
    Хаб не помешает, только под другим названием и с более широкой тематикой — о специфике карьерной, образовательной и общеличностной стратегии развития ИТшника в 21 веке. Типа GTD, только в более долгосрочном масштабе. Или такой уже есть?
    (Темы о пенсии и тому подобном — туда же.)
  • +3
    Я его спросил, почему тогда не «дизайнером Microsoft Word» или «инсталлятором RealPlayer»?

    Наверное, потому, что J2EE — это такая большая область знаний и умений, которая жива уже 14 лет, нехило вросла в Java-индустрию и открывает знающему неплохой рынок труда с неплохими окладами. При этом речь не только про техническое владение горстью API, но и про софт и практики вокруг J2EE. Чтобы сравнить J2EE architect'а с «инсталлятором RealPlayer», надо быть глубоко альтернативно одарённым.

    Предположение, что «эксперты в серверах приложений J2EE» фокусируют внимание на конфигурировании, умиляет. Что для админов это несколько побочное знание (ну т.е. знать надо, конечно, но наряду со всем остальным), что для разработчиков, которые это конфигурирование впитывают в процессе разработки наполнения серверов, так сказать.

    Предположение, что после изучения исходников JBoss «видение становится более всеохватывающим, а ум начинает открываться»… Шаманские практики, итить. Просто полистать исходник и позырить на то, как вся эта машинерия крутится (ну т.е. совершить достаточно банальный и ежедневный для программиста акт) — уже не модно.

    Бррр. Ейбо, для Remarkable Career, как сказано на обложке, чтение какого-нибудь курса по J2EE намного полезнее, чем стопицотое блаблаводство на тему «как заработать миллиард и расширить чакры».
    • 0
      Remarkable Career еще одного синиор жава аркитекта? Нет, спасибо.
      • 0
        Почти любой вариант будет ещё одним, особенно если человек в процессе «чтобы что-то полезное сделать, надо чему-нибудь полезному научиться». Я выбрал в своём беглом совете J2EE потому, что глава с J2EE начинается. Понятно, выбор намного шире.
    • +1
      Предположение, что после изучения исходников JBoss «видение становится более всеохватывающим, а ум начинает открываться»… Шаманские практики, итить. Просто полистать исходник и позырить на то, как вся эта машинерия крутится (ну т.е. совершить достаточно банальный и ежедневный для программиста акт) — уже не модно.

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

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.