Якщо вільний кодер нехтує добрими методами, чи не працює він проти нього? [зачинено]


16

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

Значна частина програми була авторами інтернів, n00bs тощо; але також був програміст у званні Master Developer, і з усією смиренністю код, який він залишив після себе, також сумнівний, можливо, інакше, але все ж.

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

І це змусило мене думати, що бути висококваліфікованим кодером (я навмисно не використовую слово "розробник", припускаючи, що воно вказує на ширший набір навичок), якщо не супроводжується іншими якостями, насправді може бути таким чином отруйним.

Якщо припустити, що це правда, я можу подумати про деякі причини:

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

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

Що ти думаєш про це? Це правда (в якій мірі, якщо так)?


24
"Дайте мені шість годин, щоб зрубати дерево, і я проведу перші чотири заточки сокири". --Абрахам Лінкольн "Загострить сокиру на свій час". - Більшість босів
JeffO

15
Певна плутанина тут для мене викликана заголовком, як коли я читав "вільно"I.ThinkOf(this).KindOfThing()
Бенжол

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

@Ramhound - ні, оскільки він покинув компанію до того, як я приєднався. Він був останнім, хто працював над цим, перш ніж я взявся за це. Я знаю від колег, що він звик поспішати, оскільки виправлення програми було пріоритетним завданням через багато скарг клієнтів. Але він не дуже добре працював з точки зору управління часом, адже він раз у раз пробирався через відкриті двері. До речі, він створив власну бібліотеку для локалізації додатків WPF та Winforms.
Конрад Моравський

1
дуже споріднене: це і це . Деякі (дуже багато) люди
зациклюються

Відповіді:


22

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

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

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

А як щодо решти вашої команди? Вони стають дуже залежати від вас. Вони не можуть google для "Clive's Quicky ORM", щоб отримати допомогу на об’єктно-реляційному мапі, який ви написали.

І ось настає день, коли їм потрібно найняти когось нового, і вони не можуть шукати людей з досвідом роботи в Quicky ORM Клайва.

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

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


1
Я теж був тим хлопцем - і я не згоден з другим реченням. Бути в змозі вирішити більшість проблем не означає, що ваші рішення надійні, доступні, гнучкі, масштабовані ... або навіть, що початкова реалізація розроблена так швидко. Багато найкращих ідей, які ви дізнаєтесь поза посібниками з мови / бібліотеки, - це речі, "чому я цього не придумав?" проста, а також гнучка, масштабована і т. д. Одна з найгірших речей - усвідомлення того, що я був підданий ідеї раніше, але відкинув її як безглузду академічну безглуздість без практичного використання, тому коли мені це було потрібно
Steve314

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

2
@Toby: Справедливий пункт. Але ці компанії взагалі не вдається заощадити.
pdr

Не кажучи вже про ВВС США - це те саме, що згадані компанії @Toby. Ми намагалися просунути Рубі на Рейки, але це їм не сподобалось.
Травіс Пессетто

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

14

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

Володіє мовою, але не інструментами. Це насправді навіть не сильний кодер. Це просто шліфування однієї майстерності (знання мови) і надання можливості іншій іржавіти (бібліотечні знання). Навпаки так само погано, але простіше помітити.

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

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


1
Так, справді. І я гадаю, що я був би більше проти людей подібного типу, якби я не заробляв на гарне життя протягом багатьох років, щоб прибирати за ними ... ;-)
Майк Вудхаус

4

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

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

Редагувати: Давайте переконаємось, що ми не покараємо тих, хто випадково знає відповіді. Є ті, хто вільно і швидко пише хороший код. Головне - не підходити до кожної проблеми таким чином.


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

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

3

100%.

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

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

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


1

Описана вами проблема була в основному NIH ("тут не винайдено") - чи є інші симптоми?

Іноді з NIH, особливо якщо він ізольований для одного або двох людей, можна зіткнутися з груповою дискусією ("Джо тут має певний досвід виконання резервних копій SQL за допомогою стандартних бібліотек - як ви думаєте, Джо?"). Це може бути менш конфронтаційним, ніж ви просто прямуєте до людини і говорите: "Ей! Використовуйте стандартну бібліотеку, манекен!" :)


1

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

Що стосується використання чужого коду чи прокрутки власного аргументу, я думаю, що це дійсно зводиться до того, що найкраще виконує роботу. Іноді "кращий" не враховує таких речей, як стиль та ремонтопридатність, якщо "найкращий" означає, що проект виставляється на шість тижнів за два тижні. Ось чому ми переробляємо та вдосконалюємо. Крім того, розробник повинен знати про те, що є в наявності щодо сторонніх кодів, і вони повинні знати, як ним користуватися, і вірити, що він буде працювати і належним чином підтримуватися / підтримуватися. Зважаючи на те, що існують тисячі необов’язкових фреймворків, бібліотек та API для будь-якої популярної парадигми розробки, що використовує такі речі, це може призвести до витрат більше часу, енергії та стресу, ніж просто прокат власних. Крім того, я знаходжу випадки, коли сторонній код просто не робить саме те, що мені потрібно - це коли це "


0

Я в цьому човні (у спадок вільно написаний код) і деякий час був самим вільним типом.

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

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


як це відповідає на поставлене запитання?
гнат

@gnat На питання "що ти думаєш про це?", моя відповідь була те, що я думав. Я все ще дотримуюся такої думки: вільне володіння (таким чином, можливість швидко робити рішення, злом тощо) може призвести до шкідливого коду в довгостроковій перспективі. Ви не можете просто вільно володіти мовою, ви повинні знати, як організувати код.
MPelletier
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.