Це зводиться до того, що я почав думати як про "Вічний конфлікт" (між бізнесом та технікою). У мене немає рішення, оскільки це проблема, яка ніколи не згасає, але ви можете робити речі, щоб допомогти пом'якшити.
Те, що люди часто не усвідомлюють, - це те, що ми, як інженери, просто припускаємо, що проблема "успішного бізнесу" завжди є заданою. Ми хочемо, щоб наш код був приємним, акуратним і доступним, щоб ми могли додавати нові функції та налаштовувати існуючі швидко та з мінімальним числом клієнтів, які роблять QA для нас, виявляючи химерні випадки бахроми, які були б зірвані кращим кодом. Утримання клієнтів та підтримка конкурентоспроможних можливостей та вишуканості, які ніхто інший не може досягти досить швидко - це і бізнес-виграші, і хороший код безпосередньо сприяє, і багато в чому інформує про те, що ми хочемо в першу чергу кращий код.
Тож пропишіть це. "Ми хочемо зробити X у нашій кодовій базі, тому що якщо ми цього не зробимо, це негативно вплине на бізнес через Y" або "... тому що це підвищить нашу здатність залишатися конкурентоспроможними, покращивши нашу здатність швидше перетворювати нові вдосконалення та функції. . "
І зробіть все можливе, щоб спробувати отримати чіткі докази того, що поліпшення працюють. Якщо покращення деякого підмножини програми призвело до швидшого функціонування / удосконалення, перевірте, який інструмент відставання ви можете використовувати для підтвердження цього, і вкажіть це на відповідних засіданнях.
- Поставте команду на ту ж прокляту сторінку
Его часто є проблемою. Одне, що інженерним командам дуже потрібно, - це встановити цінність узгодження послідовного підходу до вирішення певних типів проблем над усіма, хто робить свій власний кубок Kool Aid d'jour, оскільки вони знають краще. Добре вважати, що перевага іншого хлопця є гіршою за твою, але цінність послідовності над правильністю, якщо його підхід є працездатним, і це аргумент, який ти не можеш перемогти. Компроміс заради послідовності є ключовим. Коли речі узгоджуються, важче зробити їх неправильно, оскільки послідовно встановлений спосіб зазвичай також буде найшвидшим.
- Виберіть потрібні інструменти
Є дві школи фреймворків / набори інструментів / бібліотеки / що завгодно. "Встановіть 99% для мене, так що я повинен знати / робити дуже мало" проти ", не тримайтеся з мого шляху, коли я не хочу вас там, але допоможіть мені зробити дуже швидко і послідовно з речами, які я насправді хочу" використовувати на моркві, а не на принципі палички ". Віддайте перевагу другому. Гнучкість і детальний контроль ніколи не повинні приносити жертви у вівтарі швидкого повороту, тому що для бізнесу "ми не можемо цього зробити, тому що наші власні інструменти не дозволять нам" - це ніколи не прийнятна відповідь, і питання завжди виникатиме для не- тривіальна / одноразова інженерія виробів. На моєму досвіді, негнучкі інструменти майже завжди розбиваються на ширину або обробляються неелегантно і створюють великий гігантський незбагненний безлад. Майже завжди, гнучкі / простіші для модифікації рішення такі ж або дуже близькі за короткий термін, незалежно. Швидка, гнучка та рентабельна можливість можлива за допомогою правильних інструментів.
- FFS, якщо інженери не приймають рішення, як мінімум, отримайте інженерний внесок для вибору інструментів
Я розумію, що це питання з точки зору розробника, але я був у надто багатьох ситуаціях, коли технологічні рішення приймалися з нульовим інженерним вкладом. Що це, чорт візьми? Так, хтось у кінцевому підсумку повинен здійснити остаточний дзвінок, але отримайте кваліфіковану думку, якщо ви нетехнічний менеджер, а не те, що хтось із продажів чи демонстраційний сайт говорить про власну продукцію. Все, що обіцяє заощадити гроші, тому що людям не потрібно бути такими розумними або тому, що це захищає розробників від себе, - брудна, брудна брехня. Наймайте талант, якому можете довіряти. Поясніть їм, що ви хочете від стека чи іншого технічного рішення, і сприйміть їх серйозний внесок, перш ніж вирішити, на який технічний пробіг стрибати.
- Зосередьтеся на дизайні над впровадженням
Інструменти призначені для впровадження, і вони можуть допомогти вам, але першочерговим завданням має бути архітектура незалежно від того, який набір іграшок у вас є для створення цієї архітектури. Зрештою, KISS і DRY та всі відмінні філософії, які випливають із цього питання більше, ніж це в .NET чи Java чи, можливо, щось, що є вільним І не смокче.
Коли бізнес-сторона наполягає, що ви робите це погано, збережіть цю електронну пошту, особливо ту частину, де ви сказали, чому це коштуватиме вам. Коли всі ваші прогнози справдяться і виникають серйозні проблеми, що завдають шкоди бізнесу, саме тоді у вас є велика купа аргументів для того, щоб серйозно поставитися до проблем інженерів. Але час ретельно ретельно. В середині палаючого інферно - це поганий час для "я-казав-ти-так" після наступного коду пожежі. Погасити пожежу та внести свій список попередньо ігнорованих проблем на ретроспективну зустріч / розмову, і намагайся тримати увагу на інженерних проблемах, висловлених та ігнорованих, та міркування, які ти зрозумів, чому їх ігнорували, а не імена реальних людей прийняття рішення ігнорувати. Ти інженер. Тримайтеся проблем, а не людей. " Ми висловили занепокоєння з приводу Х, бо боялися, що це призведе до проблем Y. Нам сказали Z і відкладати справу ".