Коли це стає зайвим?


10

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

Як розробник на багатьох платформах, технологіях і навіть на інфраструктурному рівні; У мене завжди виникає питання, коли я багато роблю?

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

Але де баланс, і як ти знаєш, коли втрачаєш час, не набираєш його ?!


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

1
Вікі спільноти майже застаріли. Це ніколи насправді не працювало так, як планувалося. Не хвилюйся з цього приводу.
Девід Торнлі

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

Відповіді:


12

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

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

Я борюся з усіма "архітекторами", керованими резюме, з якими я стикаюся. Бажаю, щоб купол існував! ;)

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


5

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

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

1
Мені подобається ваше перше речення; чіткість коду важлива. Але часті огляди коду? Архітектурні дискусії на щоденних зустрічах ... Дійсно? І що саме означає "архітектори, керовані резюме"?
Роберт Харві

1
Часті огляди коду означають, що вони повинні бути автоматичними. Ви пишете функцію, один з колег переглядає її і повинен зрозуміти її, щоб підтвердити її. Якщо він запитує вас, ви працюєте разом, щоб покращити код. Ви згадуєте про свої архітектурні проблеми під час стояння, але обговорення відбувається після. Прочитайте, кому потрібен архітектор ( martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf ). На основі резюме ви будете вибирати технологію, оскільки ви хочете її у своєму резюме

11

Коли процеси випереджають результати.

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

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


4

Для мене мені подобається підхід, який Кент Бек висуває в XP (не впевнений, це "його" ідея чи хтось інший, але саме там я вперше почув це):

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

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

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

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

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

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


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

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

1

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

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

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

Введення коду відстеження (від Code Complete ), ймовірно, є хорошою ідеєю цього уникнути: Ви починаєте свій проект, написавши код, який з'єднує весь код - від GUI (або поблизу від нього) аж до бекенда, а потім назад. Таким чином, у вас завжди є щось, що працює, і ви не витрачаєте час на вдосконалення дрібниць, поки вся справа не працює.

Але все ж це питання дисципліни та пріоритетності.


Я погоджуюсь, але я також багато разів витрачав години функціональності, а потім передав його нетехнічному ендузеру та відхиляв його через дрібниці!
Теофаніс Пантелідес

1

Коли я відповідаю "ні, я буду злий, я не зробив цього пізніше, і це мене кусає".

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


1
Для мене немає нічого більш дратуючого, ніж відхилення від плану A
Теофаніс Пантелідес

1

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

найгірший сценарій, звичайно, це коли ти кінцевий користувач / замовник / клієнт! :)

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