Компанія, в якій я працюю, використовує C ++ Builder 6. Ми розробляємо власний код з моменту задуму. Наш флагманський продукт повністю написаний на рідному коді.
Входить у .NET Framework зі своїми наворотами. Я падаю, гачок, шнур і грузило. Я переконую керівництво в тому, що .NET має бути абсолютно новою структурою для розробки нового програмного забезпечення, і що ми повинні розпочати перенесення нашої існуючої кодової лінії якомога швидше. З усіма перевагами це не вимагає переконливості. Вони приймають мою пропозицію як завжди.
На цьому етапі я починаю розробку свого першого додатка .NET. Все йде за планом. Проект - це лише одна складова нашого продукту. І ось я переходжу до точки створення інсталятора для цього нового компонента. Як компанія ми пишаємося тим, що робимо речі для користувача максимально простими. Навіть Microsoft з тисячами розробників не створює інсталяторів, як ми. Наприклад, коли ви інсталюєте Microsoft CRM, ви отримаєте лише список збоїв та передумов, які потрібно встановити, перш ніж продовжувати. Не ми. Ніколи. Якщо вам щось потрібно, ми встановимо це для вас.
Це робить наші установки настільки легкими. .NET Framework не встановлено? Нема проблем! Ми зробимо це за вас. Потрібен власний клієнт SQL? Чудово!
Проблема в тому, що тепер, коли один єдиний компонент нашого рішення написаний у .NET, це неймовірно ускладнює процес встановлення. Перш ніж я зможу навіть встановити наш продукт, мені потрібно зробити наступне:
Визначте, чи встановлено передумову
Встановіть його, якщо ні
Переконайтесь, що він був успішно встановлений
Наступна передумова
Щоб встановити .NET Framework, спочатку потрібен інсталятор Windows 4.5. Але існують різні версії для різних ОС, тому я додаю виявлення ОС і запускаю правильний EXE. О, .NET framework вже упакований з 2k8, і програма встановлення exe не може працювати на ньому, вам потрібно запустити OCSetup.exe з параметрами, щоб встановити його.
І так продовжується. Потім потрібно встановити SQL Express 2005. Залежності знову збільшуються.
Я сперечаюся з керівництвом, що навіть Microsoft не робить це простим для користувача. Їх відповідь полягає в тому, що немає жодної причини, щоб ми не були кращими за них таким чином. Я не можу сперечатися з цим, крім того, що я відчуваю, що є дуже вагомі причини, чому вони пішли зі своїм підходом.
Раптом наш інсталятор є масовим. Усі передумови для .NET, навіть не кажучи про 64-бітну підтримку, яка має цілий окремий діапазон EXE для встановлення. Отже, ми дійшли до того, що ми хочемо, щоб користувачі мали змогу завантажити "швидку" оцінку. Який жарт. Вам потрібно завантажити 500 Мб, щоб запустити програму на 30 Мб. Більшість інсталяційного пакету є передумовами.
Керівництво вважає, що у нас занадто багато залежностей / передумов. Я цілком розумію. Вони пропонують нам відійти від середовища .NET, повернувшись у рідну землю, де все ще було «просто» з точки зору встановлення. Ось де одна частина мене хоче заступитися за .NET, пояснюючи переваги в загальній картині, покращений досвід розробки, спрощення обслуговування та загальну якість коду. Інша частина мене погоджується з ними від усього серця! Розробка в .NET просто вимагає встановлення забагато інших передумов, що ускладнює встановлення.
Так, деякі прихильники .NET стверджуватимуть, що все слід встановлювати на виправлену та оновлену операційну систему. Це правда, але не у всіх клієнтів це є, і просто сказати «Вибачте, спочатку оновіть» це просто не виріже. Пам’ятайте, ми пишаємось загальним досвідом роботи користувачів.
Зараз ми розглядаємо можливість написання власного коду ще раз, і я знаю, що ми втрачаємо з точки зору швидкості розробки та всіх приємностей .NET. Але ми отримуємо виграш у цій галузі, будь то незначний, якщо ви дивитесь на загальну картину чи ні. Оскільки ми маємо власні навички розробки коду, а .NET насправді є новим майданчиком, навіть є сенс повернутися назад.
Моє запитання полягає в наступному: яким є погляд вашої компанії на цю проблему, якщо вона взагалі є проблемою, і яким буде бізнес-кейс, який я пропоную керівництву, припускаючи, що я хочу продовжувати мігрувати всі наші продукти до .NET?