Каждый слышал, что нужно писать “качественный код”. Но какой код считать качественным? Для кого-то качественный код это “работает и выдает результат”. Для кого-то “красивый, комментированный, использующий паттерны, ООП”. Если критерии качественно кода “спускаются сверху”, то затруднение вызывает вопрос – зачем собственно так писать? Ведь чаще всего по-быстрому проще и легче, чем качественно.
Не секрет, что мы пишем программы для того, чтобы заработать деньги. Это означает, что качественное ПО (программное обеспечение) это то, которое приносит больше денег.
Качественное ПО это то, которое приносит больше денег!
Давайте разберемся, как зарабатываются деньги в сфере разработки ПО. Подчеркиваем, мы будем говорить именно о разработке ПО, а не просто о написании кода для курсовой или лабораторной работы.
Типы производства
Существуют три основных типа производства ПО:
- Коробочное. Программа разрабатывается один раз (имеется ввиду одна версия программы), затем тиражируется множеством экземпляров и продается Покупателям (именно так – с большой буквы!). Функциональность продукта определяется разработчиками, возможно, с учетом пожеланий Покупателей.
- ПО под заказ. Компания пишет ПО под заказ конкретного Заказчика. Именно Заказчик определяет функциональность продукта и платит деньги за ее реализацию.
- Аренда. Компания пишет ПО и сдает его Клиентам в аренду в виде сервиса. Обычно это веб-приложения.
Прибыль
Прибыль вычисляется, как разница между затратами и полученными деньгами. Затраты это зарплата сотрудникам, налоги, оборудование, аренда офиса, обслуживание и т.д.
Деньги можно получить одним из трех вариантов:
- Деньги, полученные от продажи ПО.
- Деньги, полученные от Заказчика за сделанную работу.
- Деньги, полученные от Клиентов за аренду ПО.
Других вариантов нет.
Как увеличить прибыль
Очевидно, увеличить прибыль можно только двумя способами: уменьшить расходы или увеличить приход.
В случае коробочного ПО прибыль напрямую зависит от стоимости тиражируемой программы. Но увеличивать стоимость бесконечно нельзя - программу просто перестанут покупать, и Покупатели уйдут к более дешевым конкурентам. Значит нужно увеличивать число продаж, привлекать и удерживать Покупателей.
Как привлечь и удержать Покупателей? Конечно, важна и реклама и маркетинг, но мы пока обсуждаем этот вопрос с точки зрения разработки. Понятно, что продукт должен иметь хорошую функциональность, быть стабильным (не “падать”), быть достаточно гибким, но одновременно и простым в использовании.
Кроме того, нужно понимать, что продукт, скорее всего, не единственный на рынке и разработчики должны иметь возможность быстро и качественно добавлять в продукт новую функциональность. Иначе продукт будет отставать от конкурентов.
В случае с заказным ПО ситуация похожая. Получить существенно больше денег с Заказчика нельзя – на рынке много разработчиков и Заказчик может просто “уйти”, не согласившись с завышенными ценами на разработку. Значит нужно иметь больше Заказчиков. Другими словами, это означает: уметь разрабатывать быстро и качественно. В идеальном случае Заказчик придет еще раз, с новым заказом или заказом на доработку старого продукта, да еще и привлечет новых Заказчиков.
Сдача сервисов в аренду отличается не сильно. Точно так же необходимо создавать стабильное и гибкое ПО, необходимо уметь реагировать на новые требования. Реагировать быстро и качественно, без ошибок и сбоев.
А что такое некачественный код?
Если созданный продукт не решает задачу Заказчика, Клиента, Покупателя, то он не имеет смысла. Денег за него не получить.
Если продукт постоянно “падает”, работает медленно, пользователи теряют свои данные, то, в конце концов, они найдут другой, более качественный продукт и будут пользоваться им.
Если стоимость небольшой доработки программы будет сопоставима с полной переработкой всей программы – Заказчик будет недоволен и уйдет к другим, вменяемым разработчикам.
Если добавление новой функциональности поломает уже работающую, старую функциональность – это приведет к убыткам клиентов. Так простой одного рабочего дня банка из-за неработающего ПО может исчисляться миллионами рублей. Вам хочется получить счет на оплату убытков?
Если добавление новой функциональности занимает очень длительный срок, то конкуренты выйдут на рынок первыми и будут использовать свои преимущества.
Если добавление новой функциональности настолько сложно, что потребует тестирование всего продукта заново, то это означает повышение расходов на группу тестирования. А ведь эти расходы могли бы быть совсем небольшие…
Если код написан так, что не позволяет тестировать его в автоматическом режиме, обязательно требует наличия оператора (пользователя) у клавиатуры и монитора - это означает, что группа тестирования будет тестировать все снова и снова.
Что еще нужно учитывать
А еще нужно учитывать, что кроме себя любимого есть команда, которая работает над проектом. Большой проект, большую программу, не получится сделать одному человеку в разумный срок. Значит нужно учитывать, что:
- Вашим кодом будут пользоваться другие разработчики. Они должны его понимать и уметь использовать только так, как это задумывалось.
- Возможно, что программу начнут разрабатывать одни люди, а дорабатывать новую функциональность (ведь мы стремимся к тому, чтобы Заказчик пришел к нам снова и снова!) будут совсем другие люди. Чем меньше времени они потратят на “вход” в курс дела, тем меньше денег мы потратим.
Итого
Итак, что требуется от качественного кода:
- Скорость разработки
- Скорость добавления нового функционала
- Качество разработки, минимальное число ошибок
- Сохранение работающего функционала при добавлении нового
- Возможность быстрого понимания кода другими разработчиками
- Возможность тестирования программы в автоматическом режиме
Почему нужно писать качественный код? Потому что это деньги!
No comments:
Post a Comment