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


33

Я працюю над програмою «Торгівля та управління ризиками», і, хоча з C #, мене попросили працювати над пакетами SSIS. Тепер я можу з цим жити. Больовим моментом є те, що занадто багато акцентується на розумінні бізнесу. Торгівля (Торгівля енергією, якщо бути точною) - це ВЕЛИЧЕЗНА область, і розуміння кожної її дрібниці є надзвичайною. Але останні два місяці я працюю над розумінням бізнес-термінів - "Марк до ринку", "Метрики ризику", "Позиції", "PnL", "Греки", "Інструменти", "Книжкова структура" ... кожну дрібницю (ви розумієте). Зараз ІМХО, це робота бакалавра. Впевнені, що розробникам дуже важливо розуміти бізнес, але де ви проводите лінію?

Коли я говорив зі своїм менеджером про це, він майже знущався з мене, кажучи, що хтось може навчитися технології за тиждень. Це важче для бізнесу. Моє довготривале прагнення - залишатися на технічній стороні, ймовірно, стати архітектором (якщо можливо). Якби я хотів так зосередитися на бізнесі, я би здобув ступінь МВА!

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


12
Скажіть своєму менеджеру, що технологія / програмування не обмежується EXCEL || MS Office || Підключення одночасно, яке може вивчити кожен за тиждень.
Рейнджер

Я не можу повірити в деякі відповіді, сподіваюсь, що люди зголосилися на них.
Гаурав

@Gaurav, сподіваюся, що ні. Я не думаю, що гарячі емоції принесуть користь на цьому форумі (або будь-якому форумі взагалі). Мені буде цікаво знати ваші конкретні заперечення, тому сміливо коментуйте відповіді, з якими ви маєте питання.
Péter Török

@Ranger LOL! Ви кажете, що легка робота менеджера буде?
Гопі

5
Попросіть його дізнатися, що ти робиш за тиждень. Це дуже зарозуміле ставлення. Я б навіть зробив ставку з ним, що він не може робити те, що ти можеш, зробивши ставку на подвійну зарплату. Може знадобитися тиждень, щоб новонароджений вивчив синтаксис пам’яті, операндів і умовних умов певної мови ... і, можливо, ще місяць або більше, щоб навіть освоїти їх. Це був довгий процес, щоб дістатися там, де ми є, але це загалом наша пристрасть, тому ми поширюємо негаразди протягом життя.
інкогніто,

Відповіді:


33

Завдання програміста - переводити вимоги природної мови до машинних мов. Ви не можете зробити це ефективно, якщо вільно володієте з одного чи іншого боку. Якщо ви не пишете компілятори чи програмне забезпечення для управління версіями, майже кожна робота з програмування потребує значної кількості знань, які не програмують.


1
Коли програміст не знав про те, який клієнт говорить важко
кодувати

+1 @Sri Kumar правда, але я думаю, що програмуючи, ви все-таки зможете зрозуміти, для чого вони потрібні, і як би ви використовували технології для досягнення рішення. Я погоджуюсь, що писати бізнес-рішення означає натрапити на всі види бізнесу.
gideon

3
Моя відповідь була б однаковою, сформульованою інакше. Якщо ви не розумієте контекст того, що ви створюєте, ви збираєтесь створити його в контексті, який ви розумієте, а не в тому, що очікується. Якщо ви не є великою командою і не пишете XML-специфікації та об'єкти на основі діаграм UML, це дуже важливо.
інкогніто,

Навіть компілятори та vcs мають домен, ми можемо просто зручніше з ним.
Джош Джонсон

24

Бенжол і ваш менеджер мають рацію, але дозвольте мені детальніше:

вивчення ділового домену - це те, як ви додаєте цінність процесу та збільшуєте свою цінність для бізнесу

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


7
+1 Я не маю користі програмістам. Мені потрібні розробники, він також вирішує проблеми. :)
jmort253

18

Є приказка, що надійшла з кафедри комп’ютерних наук мого університету:

Якщо ви хочете створити програмне забезпечення для геологів, спершу потрібно розібратися в Geology. Якщо ви хочете створити програмне забезпечення для фізиків, то спочатку слід зайнятися питаннями фізики. Якщо ви хочете зрозуміти бізнес, то спочатку ви повинні навчитися говорити про бізнес.

Я постійно чую, як люди тут говорять, що розробка програмного забезпечення - це творче поле. Я вважаю, що це до певної міри вірно. Він передбачає творчість у тому, що його потрібно бачити поза коробкою, щоб вирішити низку проблем.

Що це не означає, що ви можете просто сісти і так творчо будувати все, що завгодно. Це не клас мистецтва, це інженерія, і ваші клієнти та зацікавлені сторони очікують, що ви створите щось, що вирішить їхні проблеми, а не те, що просто "круто".

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

Незалежно від того, що ви будуєте програмне забезпечення для фінансів, маркетингу, продажів, геології, фізики чи будь-якого іншого поля, яке програмне забезпечення підтримує, ви повинні стати частиною цього поля.

Саме з цієї причини, крім ступеня комп'ютерних наук, я також здобув ступінь бізнес; це зробило величезний вплив на мою здатність передавати потенційні рішення та постачати успішні продукти.

Якщо ви хочете дізнатися більше про те, на що я би звернувся, наймаючи інженера програмного забезпечення для бізнесу, ознайомтеся з цим зразком реклами вакансій Business Engineer, який я написав як відповідь на інше питання.


2
+1 - Ваші клієнти та зацікавлені сторони очікують, що ви створите щось, що вирішує їхні проблеми, а не те, що просто "круто".
Картик Сренівасан

"Якщо ви хочете створити програмне забезпечення для геологів ..." люблю це твердження. Який університет? хотілося б, щоб можна було це цитувати!
Радж Рао

1
@RajRao На жаль, я перефразовував, і не пам’ятаю точно, від кого я це дізнався. Це був або доктор Рубен Гамбоа ( uwyo.edu/cosc/cosc-directory/ruben/index.html ), або доктор Вільям Спірс ( uwyo.academia.edu/WilliamSpears ) з Університету Вайомінгу, штат Ларамі, Вайомінг, США.
jmort253

14

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


2
+1 - Дуже наївно думати, що можна бути успішним архітектором, не розуміючи домену. Якби я міг, ще раз поставив би вам +1 за згадку про спілкування. Занадто багато людей нехтують розвитком спілкування у своїй кар’єрі.
jmort253

11

На мою думку, ти неправий і занадто наївний.

Як сказав ваш менеджер (трохи легковажно), кожен може навчитися технології за тиждень. Єдине, що вас відзначить і зробить корисними для вашої компанії - це знання вашого бізнесу. І чим важче це, тим більше ти будеш вартий.

Очевидно, якщо ви виявите, що цей конкретний бізнес притаманно нудний, ви можете шукати щось інше. Але якщо ваша ідея раю зломлює маленькі веб-сайти на PHP, будьте обережні: знайдуться тисячі малюків сценаріїв, які теж це роблять.

Серйозно кажучи, "Я просто кодер, не плутай мене з фактами" просто не виріжеш.


1
Я згоден з цим. Якщо ви хочете ввести код у вакуумі, поверніться до наукових шкіл або влаштуйтеся на роботу з науково-дослідним відділенням у великому корпусі, такому як IBM, MS чи Google. Для більшості з нас реальність полягає в тому, що ми маємо розуміти бізнес, особливо якщо мета - стати архітектором, який принципово є поєднанням сильного розробника та сильного БА.
Кертіс Батт

1
@Mayank, imho, насправді дуже важко зрозуміти подробиці всього бізнесу, і це те, чого слід реально очікувати лише природним чином з часом. Кожен елемент системи (систем), над яким ви працюєте, повинен, природно, містити більше інформації про бізнес. Так склалося, коли я працював у галузях з великими знаннями в галузі.
Carson63000

2
@Mayank, Ні, неправильно сказати, що це дуже складно. Коли я приїхав на свою теперішню роботу, мої нові колеги сказали мені, що потрібно лише 6 місяців, щоб я оглянув код . Зараз я наближаюся до 4 років і все ще
дізнаюся

1
+1000, якби міг. IMHO, технологія - це легка / весела частина.
ozz

1
Ні, він не є наївним. Далі його керівник - кричущий ідіот, і його слід регулярно вести на веслуванні.
Гаурав

8

Я також працюю в торгівлі енергією. Знання бізнесу - це 90% роботи. Ви не можете обійти це - справа складна.

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

Я працюю з деякими випускниками, які просто не можуть правильно встановити вимоги. Мені потрібно покластися на власні аналітичні навички та розуміння ділових знань, щоб виконати роботу.

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

Фактичні технології, що використовуються та впроваджуються, наближаються до секунди.

Хлопець вище, який зробив коментар Excel, не знає, наскільки вдалий його коментар. Торговці часто будують свої власні невеликі торгові програми в Excel / VBA (це все, що вони знають), а потім ІТ в кінцевому підсумку успадковує ці помилки програм.

Я хотів би відновити деякі з цих додатків "належною" мовою, але це не завжди є пріоритетним.


1
+1 Для "складного бізнесу" :) Я працював у банківській сфері до цього і вважав це набагато цікавішим та простішим. Крім того, як ви вказали, все робиться в Excel!
Mayank

6

Якщо ви розвиваєтесь для бізнесу, у вас з’явиться чіткіше і детальніше уявлення про правила ведення бізнесу, ніж будь-хто інший в компанії. Це необов'язково, тому що ви розумніші за всіх, це відбувається, тому що це єдиний спосіб зробити цю роботу.

Ваша реакція може бути: "Але що роблять бізнес-аналітики?"

Бізнес-аналітики сидять на тривалих зустрічах із клієнтами, намагаючись вийти з них вимоги, які є достатньо зрозумілими для роботи розробника. Я дивлюся на те, як вони мають справу з клієнтами, і відчуваю вдячність, що мені не потрібно цього робити.


2
Зачекайте, бізнес-аналітики отримають чіткі вимоги? Це добре. Я особисто скоріше мати справу з кінцевим користувачем безпосередньо.
Крістофер Махан

@Christopher - Я сказав "намагаюся" отримати вимоги :-)
Ендрю Шеферд

Справді, ти так і зробив.
Крістофер Махан

1
+1 - Бізнес-аналітики сидять на довгих зустрічах із клієнтами, намагаючись вийти з них вимоги, які є достатньо зрозумілими для роботи розробника.
Картик Сренівасан

6

Мені подобається проводити аналогії між розробкою програмного забезпечення та архітектурою. Обидва - це прикладне мистецтво. І те й інше вимагає продуманого моделювання всередині розуму. Аспект, що стосується цього питання, полягає в тому, що писати програмне забезпечення без ділових знань - це як проектування будівлі без розуміння способу життя та потреб мешканців. Я думаю, що багато хто з нас бачили (або навіть жили / працювали в) будівлі, які можуть виглядати красиво і сучасно, а що ні зовні, просто не використовуються зсередини. (У гіршому випадку вони навіть не приємні: - ((()

Оновлення

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

що мені цікаво - це в якій мірі розробник повинен докладати зусиль для розуміння ділової сфери. Чи повинен він пройти весь шлях, або є якась лінія, яку потрібно провести.

Я не думаю, що ти можеш взагалі малювати лінію де завгодно. Якщо немає частин програми / домену, вам не потрібно ніколи торкатися (таким чином розуміти). Що є ІМХО дуже рідкісним у реальному житті, у довгостроковій перспективі. Будь-яка частина програми, яка активно використовується, отримуватиме звіти про помилки та запити щодо функцій. Домени теж змінюються, оскільки відповідне законодавство, податкові правила, політика, звички - коротше кажучи, реальний світ - змінюються. Цього потрібно дотримуватися і в програмному забезпеченні.

Але навіть без зовнішніх запитів на зміни, тестування блоку та рефакторинг застарілого коду вимагає розуміння відповідних областей домену. Інакше ви просто «заморожуєте» поточну поведінку програми, не знаючи, чи це насправді правильно.

Оновлення2

що робити, якщо [...] розробник часто змінює бізнес-домен, над яким працює?

Це, звичайно, означає, що велика частина інвестицій (вашого часу та грошей роботодавця) для отримання ваших знань про бізнес втрачається :-( Якщо ви знаєте, що це відбудеться, звичайно, можливо, не варто заглиблюватися занадто глибоко Зауважте, однак, що домени не є абсолютно різними, є основи, які можна використовувати повторно між різними доменами. І найголовніше, що підхід до дизайну, керований доменом, є багаторазовим.


1
@Peter Дякуємо за оновлення відповіді. У мене є додаткове запитання. Я припускаю, що ця відповідь, як і інші, припускають, що розробник буде дотримуватися одного бізнес-домену, а якщо це не так, коли розробник часто змінює бізнес-домен, над яким працює. Я не впевнений у решті світу, але це дуже часто в Індії. Наприклад, наприклад. лише минулого року я перейшов з домену CAX на домен маркетингу і можу перейти на інший домен.
Гаурав

2
@Gaurav, це, звичайно, означає, що значна частина інвестицій (вашого часу та грошей роботодавця) для отримання ваших знань про бізнес втрачається :-( Якщо ви знаєте, що це відбудеться, звичайно, це не варто копати занадто глибоко в конкретний домен. Однак зауважте, що домени не є абсолютно різними, є основи, які можна повторно використовувати між різними доменами. І найголовніше, що підхід, орієнтований на домен, який ви отримуєте, є багаторазовим використання
Péter Török,

@Peter Дякую ще раз. Я б голосував за вашу відповідь, але, мабуть, ви можете її проголосувати лише один раз (дурні правила). Ще один, якщо це не надто турбує, чи можете ви включити свій коментар у свою відповідь.
Гаурав

@Gaurav, готово, радий, що можу допомогти :-)
Péter Török

А причиною знищення є ...?
Péter Török

2

Я працюю в банківському секторі більше десяти років, розробляючи торгові програми і погоджуюся, що розробникам важливо добре розуміти бізнес. Але знову і знову, під час процесів інтерв'ю, якщо людина не має добрих знань про бізнес, він не пробирається через двері.

Це призвело до значної кількості критичних додатків та систем, які розробляються цими людьми з високими знаннями в бізнесі, але слабкими до середнього рівня технічних навичок. Ці системи завжди розробляються погано, що постійно виходить з ладу, пронизується помилками, не масштабується, майже неможливо виправити, не порушивши щось, і це якщо проект не закінчується скасовуватися через недостатню технічну майстерність, щоб насправді його отримати у виробництво.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.