Но ведь если оно не работает – оно не будут работать.

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

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

Однако со временем, я заметил, что собственно говоря любую вещь, которые хоть насколько то сложнее средней  он начинает обсуждать с фразы “А что, если оно в __каких-то__ случаях не работает?”. Резонный ответный вопрос -”В каких например?”. В ответ им выдается, дай бог, один какой-нибудь жутко редкий необычный случай, который сложно даже проверить.

Собственно говоря нервирует

- Критика методов, не конструктивная. То есть, чаще всего не предлагается лучший метод

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

И самое главное, что меня убивает – это аргумент “Но ведь если там есть ошибка – оно не будет работать.” Ну, ясен пень, работать оно не будет. Поэтому ошибка и называется ошибкой.

Слава богу, что работая я с ним в стиле agile. Поэтому мне достаточно легко говорить – в тот момент, когда мы обнаружим, что оно не работает – мы исправим. Будь воля того человека, то весь мир медитировал бы вечно над одним байтом кода, рассматривая все возможные ситуации, включая нападение инопланетян и глобальный потоп.

RSS feed | Trackback URI

39 Comments »

Comment by romikk
Reply to the post
2009-02-19 15:01:57

Перфекционизм – не такое уж плохое качество.
Главное уметь вовремя остановиться :)

Comment by Victor Ronin
Reply to romikk
2009-02-19 15:10:10

Да я сам такой – перфенционист :) Просто нужно уметь останавливаться. Да и плюс, нельзя просто говорить “все это говно”, нужно говорить еще “вот есть метод, как сделать все это лучше”.

 
 
Comment by ctype Subscribed to comments via email
Reply to the post
2009-02-19 15:14:08

:)
можно загнать человека в “паралич анализа”… после этого люди начинают бояться чрезмерно глубокого анализа

Comment by Victor Ronin
Reply to ctype
2009-02-19 15:18:26

Меня – да, можно туда загнать. А человек, видимо оттянется в полный рост и будем наслаждаться полным параличем :)

Comment by ctype Subscribed to comments via email
Reply to Victor Ronin
2009-02-21 20:52:19

в общем, если нужно что бы человек не приставал с глупостями, то есть масса способов:
– перевешивание отвественности на человека за принятые решения, типа “скажи как надо сделать – я так и сделаю”
– перевод отвественности за “усложнение решения”, типа “давай я поставлю себе Rational Rose и за пару неделек нарисую все алгоритмы в UML, потом мы их согласуем и будем делать”
– классические бюрократические методы “увода власти”

Comment by Victor Ronin
Reply to ctype
2009-02-21 21:20:19

Я где-то писал в комментариях.

Я обычно говорю человеку – “если видишь метод как все исправить/переделать и есть время – то вперед переделай”.

То есть, таки приходятся слегка делать ход конем, чтобы человек не приставал.

 
 
 
 
Comment by point Subscribed to comments via email
Reply to the post
2009-02-19 16:07:22

Можно попробовать научить доброй русской традиции: пока гром не грянет, мужик не перекрестится.

Пока не возникла сбойная ситуация, это не баг, а фича :) К тому же, есть вероятность, что такая ситуация может никогда и не возникнуть.

Comment by Victor Ronin
Reply to point
2009-02-19 17:54:18

>К тому же, есть вероятность, что такая ситуация может никогда и не возникнуть.

С последним согласен.

>пока гром не грянет, мужик не перекрестится.

В целом – это опасная метода, но иногда так и нужно делать.

Comment by point Subscribed to comments via email
Reply to Victor Ronin
2009-02-20 02:08:23

> В целом – это опасная метода, но иногда так и нужно делать.

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

Comment by Victor Ronin
Reply to point
2009-02-20 12:22:25

Коллега – опытный и умный. Но, почему-то у него не выработалось ограничение, на сколько шагов стоит просчитывать.

 
 
 
 
Comment by technix.in.ua Subscribed to comments via email
Reply to the post
2009-02-19 17:29:38

Что ж, тогда ему стоит взять на вооружение методы написания кода, содержащего минимум ошибок (одна ошибка на 420 тысяч строк кода):

“Возьмем, например, обновление программы для GPS-навигации шаттла, занимающее 1.5% программы (6366 строк кода). Спецификация этого изменения состоит из 2500 страниц. Спецификация же всей программы состоит из 30 томов и содержит 40000 страниц.”

Это в НАСА так пишут софт, если верить авторам статьи: http://www.fastcompany.com/node/28121/print

Comment by Victor Ronin
Reply to technix.in.ua
2009-02-19 17:55:46

Да, для NASA – это актуально. Так как, стоимость ошибки может быть несколько миллиардов (стоимость потери марсохода).

Для обычной программы – стоимость множество ошибок ничтожна мала.

 
Comment by Denis
Reply to technix.in.ua
2009-02-20 11:39:35

Приведу ссылку на русский перевод этой отличной статьи:
http://kholeg.spaces.live.com/blog/cns!D006ED9CB32B0F60!152.entry

Comment by Victor Ronin
Reply to Denis
2009-02-20 12:36:13

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

 
 
 
Comment by Sergey Subscribed to comments via email
Reply to the post
2009-02-19 21:08:42

Это же поиск в глубину, человек берет ситуацию и доводит ее до абсурда. Так можно проверять различные теории, по крайней мере это стимулирует на поиск более вероятных ошибок :)
p/s
В перфекционизме главное без фанатизма:)

Comment by Victor Ronin
Reply to Sergey
2009-02-20 12:17:03

Вот и я об этом же. Главное без фанатизма :)

 
 
Comment by РОСА
Reply to the post
2009-02-19 23:32:29

Перфекционизм – взял термин на вооружение. Спс

Comment by Sergey Subscribed to comments via email
Reply to РОСА
2009-02-20 00:25:08

Это надо очень аккуратно юзать, да и не все работодатели любят Перфекционизм:)

 
 
Comment by BlueJacket Subscribed to comments via email
Reply to the post
2009-02-20 04:45:01

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

Comment by Victor Ronin
Reply to BlueJacket
2009-02-20 12:19:51

Да, я сам таких людей люблю насчет подчищания кода. Как вы точно заметили – идеально работает в тандеме – локомотив + перфекционист.
Но, когда он во всех вагонах сдергивает стопкраны, просто из-за того, что это можно сделать… Вот тут, у меня и возникает нелюбовь.

 
 
Comment by markedone Subscribed to comments via email
Reply to the post
2009-02-20 06:09:19

Если можно разъясните, что такое “перфекционизм”. Но мне не кажется это до такой степени страшным!

Comment by Sergey Subscribed to comments via email
Reply to markedone
2009-02-20 06:18:22

Есть разные точки зрения на перфекциониз, но обычно в это слово вкладывают негативные моменты:)
А почитать можно здесь: http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%84%D0%B5%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B8%D0%B7%D0%BC
и здесь http://fritzmorgen.livejournal.com/17099.html

 
 
Comment by GeF Subscribed to comments via email
Reply to the post
2009-02-21 05:12:35

- “А что, если оно в __каких-то__ случаях не работает?”
- “Вот и замечательно, значит в условиях кризиса мы с тобой не останемся без работы”
:-D

Comment by Victor Ronin
Reply to GeF
2009-02-21 12:31:32

Ну слава богу. А ведь дай я ему все пофиксить, таки бы уволили :)

 
 
Comment by Igor Skomorokh Subscribed to comments via email
Reply to the post
2009-02-21 05:52:45

Как же я тебя понимаю!

 
Comment by Kettenblatt Subscribed to comments via email
Reply to the post
2009-02-21 06:36:54

Тут сильно зависит от конкретной ситуации.

Ситуация 1.
Я – мы пишем видеоплейер на Silverlight, до конца недели должен быть готов и бюджет – всего тридцатка. Давайте всю логику прямо в контролы запихаем, так проще и быстрее.
Перфекционист (П) – Не-не, это несерьезно. Давайте будем следовать MVVM, для VM и M напишем автоматизированные юнит-тесты, и вообще первые пару дней потратим на разработку архитектуры. Иначе изменения плейера в будущем будут дорого стоить. Кстати, ты уже записал все требования в формальный документ? Возьми день и запиши, иначе потом трудно с клиентами общаться будет.
Я – у нас бюджет ТРИДЦАТКА и времени до конца недели. Иди курить Экономикс.

Ситуация 2.
Я – Тут юзеры обнаружили, что у нас SQL injection.
П – Да, правда, смотри – в куче мест у нас SQL запрос из строчек собирается. Найти бы того, кто это написал, да руки бы поотрывать. Медленно.
Я – ну ОК, давай быстренько во всех местах параметры в функцию SqlEscape обернем.
П – не-не, давай лучше параметры через SqlCommand.Parameters передавать. Времени займет переделка столько же, а SQL-Server кроме того еще и сможет запросы лучше кэшировать, наша прилада залетает.
Я – ты прав.

Comment by Victor Ronin
Reply to Kettenblatt
2009-02-21 12:36:00

Да, согласен в ситуации 2 – гораздо логичней делать все более аккуратно.

Вопрос состоит в том, что чаще всего человек приходит без рационального улучшения.
То есть, не говорит давайте сделаем MVVM или SqlCommand.Parameters, а говорит.

Блин текущее решение такое опасное. В нем могут быть проблемы. Точка.

Я уже правда нашел магическую формулу – я отвечаю. Если хочешь и сможешь уложиться в сроки, можешь менять на другое решение.

Comment by Kettenblatt Subscribed to comments via email
Reply to Victor Ronin
2009-02-21 14:58:25

Может он просто не может или не хочет сказать, что на самом деле имеет в виду? Например, “Ты опять принял все технические решения сам. А я ведь тоже могу. И хочу. Мне тренироваться надо”.

Нет? :)

Comment by Victor Ronin
Reply to Kettenblatt
2009-02-21 15:02:34

Ну, все конечно может быть. Но скорее нет, чем да.

Как показывает практика, он не любит новые решения делать/выдумывать, так как опять же не может полностью оценить все возможные проблемы.

Как по мне, классический паралич анализа.

 
 
 
 
Comment by Финамаг
Reply to the post
2009-02-21 07:08:42

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

Comment by Victor Ronin
Reply to Финамаг
2009-02-21 12:39:36

Увы, тут он не компаньон. Он работает на ту компанию, на которую я консалтю. Кстати, я когда-то его сам нанял.

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

 
 
Comment by Лука Subscribed to comments via email
Reply to the post
2009-02-26 03:43:15

Взять исправить ошибку и все будет работать как нужно.

 
Reply to the post
2009-03-04 05:15:04

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

 
Comment by Елизавета Subscribed to comments via email
Reply to the post
2009-04-18 01:27:22

Да ладно, чего нервничать то, не надо обращать внимание и продолжать работать!

 
Comment by Лука
Reply to the post
2009-04-20 02:17:29

На мой взгляд с работодателем вообще спорить не надо, надо делать и получать деньги, а все остальное приложится

Comment by Victor Ronin
Reply to Лука
2009-04-21 14:55:40

Очень спорное утверждение. С такой позицией в просак попасть сложно, но и выбиться вперед тоже шансов мало.

 
 
Comment by Лука Subscribed to comments via email
Reply to the post
2009-05-10 15:32:44

Считаю, что такой человек чересчур ответственный. Не нужно его за это называть таким сложным словом :)

 
Comment by Alevtina
Reply to the post
2009-06-05 12:22:52

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

 
Comment by Эдуард
Reply to the post
2009-06-29 10:33:02

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

 
Name
E-mail
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.
Please enter word "captcha":

Trackback responses to this post