Білл про відповідальність програмістів [закрито]


40

Отже, ми всі чули про Білль про права програмістів і XP має подібну концепцію.

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

Мене насамперед цікавлять неприємні та ті, які, як правило, не трапляються. Це те, що програмісти прагнуть ухилятися і уникати, а не ті, які насправді хочуть робити 90% програмістів (наприклад, завжди рефактор і використання керування джерелами).

Отже, що має бути з Біллом про обов'язки програмістів?


4
окрім того, я думаю, що він відповідає вказівкам 1,2,4 та 6.
Стівен Фурлані

2
Я думаю, що це важливе питання.
HLGEM

1
Важливою подальшою діяльністю може бути "як ви навчаєтесь бути відповідальним програмістом?"
Стівен Фурлані

2
Здається, це питання генерує лише список елементів. Хоча відповіді досить вражаючі (і я вдячний тим, хто відповів, хто вклав час і зусилля на свої посади), вони зосереджені на думках, а формулювання питання вражає мене як опитування.
Томас Оуенс

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

Відповіді:


41
  • Програміст несе відповідальність відштовхуватися від поганих вимог, а не сліпо виконувати їх. Сюди входить сказати клієнтам, що те, що вони хочуть, дорожче інших варіантів або має певний набір ризиків. Це також включає професійне повідомлення про погані новини - не кричати, називати людей дурними, маючи на увазі, що вони дурні або іншої дитячої поведінки. Якщо він відштовхується назад, у нього повинен бути ряд причин (більше ніж: "Мені не подобається SQL Server і не буду його використовувати") та альтернативний план подання.

  • Однак програміст також несе відповідальність за прийняття рішень та використання інструментів чи конструкцій, які можуть не сподобатися, якщо їх відштовхування не було прийнято. Якщо звіт вимагали в SSRS, його надання в Crystal Reports (якого клієнт може не мати) неприпустимо. Якщо потрібне рішення .net, його доставка в Haskell неприйнятна. Якщо ніхто з команди не використовує інструмент чи мову, якими ви хочете скористатися, використовувати їх непрофесійно, якщо керівництво не погодиться, що це найкращий інструмент для конкретної роботи.

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

  • Програміст несе відповідальність за витончене поводження з помилками та винятками та написання повідомлень про помилки, які користувач побачить як професійні та нейтральні, а не жарти та образи.

  • Програміст несе відповідальність за захист приватних даних, захист власного коду, який він пише для компанії, та захист користувачів від катастрофи (навіть самопричиненої катастрофи) від їх використання додатком.

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

  • Програміст несе відповідальність за координацію з іншими, щоб переконатися, що його зміни не впливають негативно на те, що вони роблять.

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

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

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

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

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

  • Програміст несе відповідальність за вивчення ділової сфери, яку він підтримує не лише концепції програмування.

  • Програміст несе відповідальність за оновлення своїх навичок.

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

  • Програміст має ті ж обов'язки, що і будь-який інший працівник - з’являтися вчасно, відпрацьовувати погоджені години, запитувати час відпустки, заздалегідь вимагати часу на канікули, відповідати на телефонні повідомлення та повідомлення електронної пошти (чортів, читати їх електронні листи), заповнювати необхідні форми для HR та ін.


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

2
Я ставлю під сумнів відповідальність розробника за тестування особистого коду у будь-яких ситуаціях ... Я б перефразував це для того, щоб перевірити його код ... Якщо організація має професійних тестерів (як автоматизованих, так і людських) та надійний процес щоб переконатися в тестуванні коду, я не бачу, чому розробник повинен це робити особисто. Якщо я розробляю нову функцію або виправляю помилку, обов'язково проверу її самі, інакше я не знаю, чи закінчу я свою роботу. Однак, якщо я роблю великий рефакторинг, мені не має сенсу вичерпно регресувати весь тест.
JoelFan

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

2
А як щодо оклику в повідомленнях про помилку ... тобто "Дата недійсна!"
JoelFan

1
Вони повинні бути гендерно нейтральними. Зробити це імперативом полегшило б це, наприклад, замість того, щоб "програміст несе відповідальність за тестування своєї роботи", має бути "Перевірте свою роботу".
сигіл

42

Кожен програміст повинен зробити свій код читабельним для інших.


@Kevin D: Те є відповідальність. Ви несете відповідальність за створення коду, зрозумілого для людини.
doppelgreener

1
@Axidos, це тому, що я змінив свою відповідь, як тільки зрозумів, що робив.
dan_waterworth

Я видалю свій оригінальний коментар, оскільки це вже не актуально.
Кевін Д

1
"Читаним" ким? Мої "однолітки" (тобто, хто має освіту та досвід, подібний до мого)? Хтось справді добре освічений у мистецтві та науці? Або мавпа з літаючим кодом, яка НЕ ​​має жодного бізнесу з більш просунутим, ніж Dartmouth BASIC?
Джон Р. Стром

7
@John, інші в цьому контексті мають на увазі інших програмістів. У реченні: "Жирафа була більшою за інших", ми не вважаємо інших маючи на увазі літаючих мавп. "Інші" означають "більше того ж типу, про які вже не згадували".
dan_waterworth

22

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


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

2
Я думаю, що люди у Facebook не повинні застосовуватись, якщо йдеться про більшість вищезазначених обов'язків. :)
MetalMikester

4
-1 це занадто велика відповідальність.
Пітер Тернер

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

@Neal: Системний архітектор - це ще один програміст. Звичайно, для великих проектів він, мабуть, не зможе зайнятися будь-яким програмуванням, але це не означає, що він не програміст. І це стосується лише великих проектів; для 2- або 3-х чоловічих проектів програміст, як правило, відповідає за якусь частину бази даних або за її повноту; його відповідальність - забезпечити надійне збереження даних.
конфігуратор

20

Не змушуйте користувачів втрачати роботу.

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

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

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

Ще одне, що вони помилилися ... якщо я випадково натиснув Ctrl-A (замість Ctrl-S праворуч), він не повинен втрачати своє місце у файлі і класти курсор на початку .... Я закликаю знайти потрібне місце у файлі "робота", який програма "втратила".

Ще одне: у діалоговому вікні "фіксування" TortoiseSVN є довгий список файлів. Перш ніж натиснути "Ввести", ви можете зійти зі списку файлів, двічі клацнувши по кожному, щоб побачити його зміни у другому діалоговому вікні. Для цього швидко інколи використовую лише клавіатуру, натискаючи, <Esc>щоб закрити 2-е діалогове вікно і повернутися до першого. Якщо я випадково потрапив <Esc> двічі, він також закриє перше діалогове вікно, в результаті чого я забуду, до якого файлу я був.


5
Намагайтеся не робити комбінацій клавіш, які роблять протилежні речі, призначені клавішам поруч (наприклад, CTRL-C і CTRL-V, не можу сказати, скільки разів Якщо скопійовано, коли коли я мав намір вставити і навпаки)
HLGEM

5
Парадоксально @HLGEM, той, хто розробляв це, мабуть, думав, що він робить нам послугу, поставивши їх поруч
JoelFan

4
А його не було? Я маю на увазі, у вас немає всієї потужності Emacs або нічого іншого, але ви можете копіювати та вставляти, не рухаючи руки багато.
комман

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

1
Для останнього прикладу (Ctrl-A втрачає своє місце у файлі), я нещодавно знайшов часткове вирішення, яке працює у багатьох програмах ... Ctrl-Z, Ctrl-Y .... що скасує моє останнє редагування у вміст файлу, потім "повторно" його, у результаті чого вміст такий самий, як і раніше, і я розташований у місці редагування. Це необов'язково збігається з місцем, на якому знаходився мій курсор перед помилкою Ctrl-A, але це часто досить близько ... Це, звичайно, не виправдовує погану поведінку програми на Ctrl-A ... це лише часткове вирішення проблеми і зайняв мене час, щоб
зачепити

15

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

Наприклад, його програма не повинна:


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

7
Мені подобаються всі вони, за винятком "оновлення без згоди користувача". Мені здається, що Chrome оновлює себе оновленням - я люблю просто знаходити нові функції. Однак, як це роблять інші програми, мерзенний. Я дивлюся на тебе, Ява, і на тебе, Acrobat Anything. Ви НЕ питайте мене , якщо я хочу , щоб оновити вас кожен день. Я вже не один раз сказав, підкажіть!
конфігуратор

2
Якщо програма має оновитись автоматично, принаймні, вона повинна вперше попросити користувача згоди.
габлін

Ще одне порушення TortoiseSVN ... що робив майже все, що завгодно, змушує систему зупинитися
JoelFan

@SpashHit: Хм? Я використовую TortoiseSVN щодня, і я ніколи цього не помічав ...
Мейсон Уілер

8

З Маніфесту для майстра програмного забезпечення :

Як прагнучі майстри програмного забезпечення, ми піднімаємо планку професійного розвитку програмного забезпечення, практикуючи його та допомагаючи іншим вивчати це ремесло. Завдяки цій роботі ми оцінили:

  • Не тільки робоче програмне забезпечення, але й добре продумане програмне забезпечення

  • Не лише реагуючи на зміни, але й неухильно додаючи цінності

  • Не лише люди та взаємодії, а й спільнота професіоналів

  • Не тільки співпраця з клієнтами, але і продуктивні партнерські стосунки

Тобто, переслідуючи предмети зліва, ми визнали предмети праворуч незамінними.


8

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

  1. Не дізнаючись нічого нового
  2. Не прагнучи розширити свої навички
  3. Не будучи відкритим для нових, дотримуючись старих звичок
  4. Не піклуючись про якість вашої роботи
  5. Не прагнучи покращити якість вашої роботи
  6. Будучи працівником від 9 до 5 без пристрасті
  7. Не маючи власної думки про речі
  8. Прийняття чужої думки без сумнівів
  9. Вважаючи, що ви все це навчилися
  10. Не терплячи жодної критики
  11. Не слухає зовнішній вхід
  12. Будучи егоцентричним, знаю все
  13. Маючи негативну особистість і критикуючи інших людей

+1, але фразування цього способу робить це досить негативно.
dan_waterworth

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

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

Частина цього стосується обов'язків " Компанії, що програмує ".


4
  • Програміст повинен знати та використовувати основні бібліотеки та використовувані платформи.

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

  • Програміст повинен створити код самодокументування

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

Наприклад, порівняйте:

// validates if is leap year
if(  year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) ) { 
     doSomethingWithFebruary();
}

до

if( isLeapYear( year ) ) { 
    doSomethingWithFebruary();
}

4

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

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


2

1) Поясніть чітко, що вирішення будь-якої проблеми передбачає компроміс між продуктивністю, вартістю, часом та якістю.

2) Заповніть відповідну документацію, будь то звільнення приміток або тестових планів. (документація буде залежати від типу та розміру компанії)

3) Попросіть правильних інструментів для своєї роботи (так багато людей просто стогнать над цим, але ніколи не звертаються до свого начальника з розумною справою отримати те, що їм потрібно)

... Інші, без сумніву, слідкувати.


2

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


1

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

Ось чому менеджери повинні гарантувати, що вони мають все до своєї мети.


1

Ось моя пропозиція.

  1. Програміст повинен вимагати умов праці, викладених у Біблійному документі про програму, щоб не знижувати стандарти на цю посаду.

(Під "програмістом" я маю на увазі "програміст", а не "хакер на вихідні", тому все стандартне, що повинен робити програміст, мається на увазі.)


-1. Я не думаю, що відповідальність може бути такою, яка "вимагає [s]" права.
Крейдж

1

5 приписів гільдії програміста

1.) перевіряйте його код щотижня та у святкові дні.

2.) забезпечують потреби спільноти програмування.

3.) читати принаймні одну книгу програмування на рік.

4.) відвідувати хоча б одну конференцію програмування на рік.

5.) володіти своїми помилками.


"перевіряйте його код щотижня та у святкові дні"? Ви маєте на увазі щогодини, правда?
конфігуратор

@configurator Я маю на увазі це як мінімум, щоб назвати себе програмістом. Але чим більше перевіряє веселість
Пітер Тернер


0

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

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