Насколько важны знания предметной области и технические знания?

33

Я работаю над приложением «Управление трейдингом и рисками», и хотя из C # я получил приглашение работать с пакетами служб SSIS. Теперь я могу жить с этим. Беда в том, что слишком много внимания уделяется пониманию бизнеса. Торговля (энергетическая торговля, если быть точным) является ОГРОМНОЙ областью, и понимание каждой ее части ошеломляет. Но в течение последних двух месяцев я работал над пониманием бизнес-терминов - «Маркетинг на рынок», «Метрики риска», «Позиции», «PnL», «Греки», «Инструменты», «Структура книги» ... каждая мелочь (суть вопроса). Теперь ИМХО, это работа бакалавра. Конечно, для разработчиков очень важно понять бизнес, но где вы проводите черту?

Когда я говорил с моим менеджером об этом, он чуть ли не издевался, говоря, что любой может освоить технологию за неделю. Это дело сложнее. Мое долгосрочное стремление - остаться с технической стороны, возможно, стать архитектором (если это возможно). Если бы я хотел сосредоточиться на бизнесе, я бы получил степень MBA!

Я хочу знать, ошибаюсь ли я или слишком наивен в понимании важности бизнеса, или мое разочарование оправдано?

Mayank
источник
12
Пожалуйста, сообщите своему менеджеру, что технология / программирование не ограничивается EXCEL || MS Office || Подключение в одно и то же время, которое каждый может выучить за неделю.
Рейнджер
Я не могу поверить в некоторые ответы, я надеюсь, что люди отомстят за голосование.
Гаурав
@ Гаурав, надеюсь нет. Я не думаю, что горячие эмоции пойдут на пользу этому форуму (или любому форуму в целом). Мне было бы интересно узнать ваши конкретные возражения, поэтому не стесняйтесь комментировать ответы, с которыми у вас есть вопросы.
Петер Тёрёк
@Ranger LOL! Вы говорите, что легкой работой менеджера будет?
Гопи
5
Попросите его узнать, что вы делаете в течение недели. Это высокомерное отношение. Я бы даже поспорил с ним, что он не может делать то, что ты можешь, поспоришь на двойную зарплату. Новичку может потребоваться неделя, чтобы выучить синтаксис памяти, операндов и условных выражений определенного языка ... и, возможно, месяц или даже больше, чтобы освоить их. Это был долгий процесс, чтобы добраться туда, где мы находимся, но, как правило, это наша страсть, поэтому мы распределили трудности на всю жизнь.
Инкогнито

Ответы:

33

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

Карл Билефельдт
источник
1
Когда программист не знал, о каком клиенте говорят, сложно его кодировать
Гопи
+1 @ Шри Кумар, правда, но я думаю, что, будучи программистом, вы все равно должны понять, что им нужно, и как вы будете использовать технологии, чтобы найти решение. Я согласен, что написание бизнес-решений означает, что вы можете встретить все виды бизнеса.
Гидеон
3
Мой ответ был бы один и тот же, сформулированный по-другому. Если вы не понимаете контекст того, что вы создаете, вы создадите это в контексте, который вы понимаете, а не в том, который ОЖИДАЕТСЯ. Если вы не в большой команде и не пишете спецификации и объекты XML на основе диаграмм UML, это очень важно.
Инкогнито
Даже у компиляторов и vcs есть домен, нам может быть удобнее с ним.
Джош Джонсон
24

Бенджол и ваш менеджер правы, но позвольте мне уточнить:

изучение сферы бизнеса - это то, как вы добавляете ценность процессу и повышаете свою ценность для бизнеса

в этом разница между программистом-программистом и разработчиком кода

Стивен А. Лоу
источник
7
+1 Мне не нужны программисты. Мне нужны разработчики, иначе решатели проблем. :)
jmort253
18

Есть высказывание, которое пришло из факультета компьютерных наук моего университета:

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

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

Это не значит, что вы можете просто сесть и о, так творчески, построить то, что хотите. Это не арт-класс, это инженерное дело, и ваши клиенты и заинтересованные стороны будут ожидать, что вы создадите что-то, что решит их проблемы, а не то, что просто «круто».

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

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

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

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

jmort253
источник
2
+1 - Ваши клиенты и заинтересованные стороны будут ожидать, что вы создадите что-то, что решит их проблемы, а не то, что просто «круто».
Картик Сринивасан
«Если вы хотите создавать программное обеспечение для геологов ...», любите это утверждение. Какой университет? хотел бы иметь возможность цитировать это!
Радж Рао
1
@RajRao К сожалению, я перефразировал, и я точно не помню, от кого я это узнал. Это был либо доктор Рубен Гамбоа ( uwyo.edu/cosc/cosc-directory/ruben/index.html ), либо доктор Уильям Спирс ( uwyo.academia.edu/WilliamSpears ) из Университета Вайоминга, Ларами, Вайоминг, США.
jmort253
14

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

vegai
источник
2
+1 - Очень наивно думать, что можно быть успешным архитектором, не понимая предметную область. Если бы я мог, я бы снова +1 вам за упоминание связи. Слишком много людей пренебрегают развитием общения в своей карьере.
jmort253
11

На мой взгляд, вы не правы и слишком наивны.

Как сказал ваш менеджер (слегка легкомысленно), любой может освоить технологию за неделю. Единственное, что выделит вас и сделает вас полезными для вашей компании, это ваши знания бизнеса. И чем сложнее, тем больше вы будете стоить.

Очевидно, что если вы обнаружите, что этот конкретный бизнес скучно, он может искать что-то другое. Но если ваша идея о рае взламывает маленькие php-сайты, будьте осторожны: тысячи сценаристов будут делать это тоже.

Серьезно, «я просто кодировщик, не путайте меня с фактами», просто не урежет это.

Benjol
источник
1
Я согласен с этим. Если вы хотите писать код в вакууме, вернитесь в академию или поработайте в исследовательском отделе какой-нибудь крупной корпорации, такой как IBM, MS или Google. Для большинства из нас реальность такова, что мы должны понимать бизнес, особенно если цель состоит в том, чтобы стать архитектором, который по своей сути является комбинацией сильного разработчика и сильного BA.
Кертис Батт
1
@Mayank, имхо, действительно очень трудно понять детали всего бизнеса, и это то, что вы действительно должны ожидать только со временем. Каждый элемент системы (систем), над которой вы работаете, должен, естественно, включать в себя изучение бизнеса. Вот как все работало, когда я работал в отраслях с обширным знанием предметной области.
Carson63000
2
@Mayank, нет, это не правильно, сказать, что это очень сложно. Когда я пришел на свою нынешнюю работу, мои новые коллеги сказали мне, что потребуется 6 месяцев, чтобы разобраться в коде . Сейчас мне около 4 лет, и я все еще
узнаю что-то
1
+1000, если бы я мог. ИМХО, технология - это легкая и веселая часть.
Оз
1
Нет, он не наивный. Кроме того , его менеджер является Bleeping идиот, и должен грести на регулярной основе.
Гаурав
8

Я также работаю в сфере торговли энергией. Знание бизнеса - это 90% работы. Вы не можете обойти это - это сложный бизнес.

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

Я работаю с некоторыми бакалаврами, которые просто не могут правильно понять требования. Мне нужно полагаться на свои собственные аналитические навыки и понимание бизнес-знаний, чтобы выполнить работу.

Я думаю, что если вы работаете в магазине, который продает программное обеспечение Energy Trading, ваш опыт может отличаться - но в корпоративной ИТ-торговле энергоресурсами основное внимание уделяется пониманию рынка и тому, как программное обеспечение может в первую очередь обеспечить решение проблем бизнеса.

Используемые технологии и их внедрение находятся на втором месте.

Парень выше, который сделал комментарий в Excel, не знает, насколько уместен его комментарий. Трейдеры часто создают свои собственные небольшие торговые приложения в Excel / VBA (это все, что они знают), а затем ИТ-специалисты в конце концов наследуют эту путаницу программ.

Я бы хотел перестроить некоторые из этих приложений на «правильный» язык, но это не всегда является приоритетом.

asgeo1
источник
1
+1 Для «сложного бизнеса» :) До этого я работал в банковской сфере и нашел это намного интереснее и проще. Кроме того, как вы указали, все сделано в Excel!
Mayank
6

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

Ваша реакция может быть «Но что делают бизнес-аналитики?»

Бизнес-аналитики проводят длительные встречи с заказчиками, пытаясь вывести из них требования, которые достаточно ясны для работы разработчика. Я смотрю на то, как им приходится иметь дело с клиентами, и чувствую благодарность за то, что мне не нужно этого делать.

Андрей Шепард
источник
2
Подождите, бизнес-аналитики получают четкие требования? Этот подходит. Я лично предпочел бы иметь дело с конечным пользователем напрямую.
Кристофер Махан
@Christopher - я сказал, "пытаясь" получить требования :-)
Эндрю Шепард
На самом деле вы сделали.
Кристофер Махан
1
+1 - бизнес-аналитики проводят долгие встречи с заказчиками, пытаясь вывести из них требования, которые достаточно понятны для работы с разработчиком.
Картик Сринивасан
6

Мне нравится проводить аналогии между разработкой программного обеспечения и архитектурой. Оба прикладного искусства. Оба требуют сложного моделирования в уме. Аспект, который относится к этому вопросу, заключается в том, что написание программного обеспечения без знания бизнеса похоже на проектирование здания без понимания образа жизни и потребностей жителей. Я думаю, что многие из нас видели (или даже жили / работали в) зданиях, которые могут выглядеть красиво и современно, но не снаружи, просто не пригодными для использования изнутри. (В худшем случае они даже не хороши: - ((()

Обновить

Комментарий Гаурава:

Что меня интересует, так это то, в какой степени разработчик должен приложить усилия для понимания сферы бизнеса. Должен ли он пройти весь путь, или есть какая-то линия, которую нужно провести.

Я не думаю, что вы можете провести черту где-либо вообще. Если нет частей приложения / домена, к которым вам не нужно прикасаться (то есть понимать) никогда. Что ИМХО очень редко в реальной жизни, в долгосрочной перспективе. Любая часть приложения, которая находится в активном использовании, получит отчеты об ошибках и запросы функций. Меняются и домены, так как меняется соответствующее законодательство, налоговые правила, политика, привычки - короче говоря, реальный мир. Это должно следовать в программном обеспечении тоже.

Но даже без внешних запросов на изменения модульное тестирование и рефакторинг устаревшего кода также требует понимания соответствующих областей предметной области. В противном случае вы просто «замораживаете» текущее поведение приложения, не зная, является ли оно на самом деле правильным.

Update2

Что, если [...] разработчик часто меняет бизнес-домен, над которым он работает?

Это, конечно, означает, что значительная часть инвестиций (вашего времени и денег вашего работодателя), чтобы получить ваши знания бизнеса, теряется :-( Если вы знаете, что это произойдет, конечно, не стоит копать слишком глубоко в конкретный домен. Однако обратите внимание, что домены не являются абсолютно разными, есть основы, которые можно повторно использовать между разными доменами. И самое главное, получаемый вами подход к разработке на основе доменов можно использовать повторно.

Петер Тёрёк
источник
1
@Peter Спасибо за обновление ответа. У меня есть еще вопрос. Я предполагаю, что этот ответ, как и другие, предполагает, что разработчик будет придерживаться одного бизнес-домена, что, если это не тот случай, когда разработчик часто меняет бизнес-домен, над которым он работает. Я не уверен в остальном мире, но это очень распространено в Индии. Например, только в прошлом году я перешел с домена CAX на домен Marketing и вполне мог переключиться на другой домен.
Гаурав
2
@ Гаурав, это, конечно, означает, что значительная часть инвестиций (вашего времени и денег вашего работодателя) для получения знаний о вашем бизнесе потеряна :-( Если вы знаете, что это произойдет, то, конечно, не стоит копать . слишком глубоко в конкретной области Заметим , однако , что домены не полностью различны, есть основы , которые могут быть повторно использованы между различными доменами А самое главное, домен Driven Design. подход вы выигрыш многоразовые.
Петера Török
@Peter Еще раз спасибо. Я бы проголосовал за ваш ответ, но, видимо, вы можете проголосовать только один раз (глупые правила). Еще один, если это не слишком беспокоит, можете ли вы включить свой комментарий в свой ответ.
Гаурав
@Gaurav, готово, рад, что смог помочь :-)
Péter Török
И причина понижения голоса ...?
Петер Тёрёк
2

Я работаю в банковском секторе более десяти лет, разрабатывая торговые приложения, и согласен с тем, что для разработчиков важно хорошо понимать бизнес. Но снова и снова, во время процесса собеседования, если человек не имеет хорошего знания о бизнесе, он не проходит через дверь.

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

Мартин Купер
источник