Одна из сложных вещей для многих программистов — начать думать о том, что ты создаешь не в категориях инженерных решений и написанного кода, а в бизнес-процессах. Многие инженеры настолько погружены в профессию, что для них мерой успеха и главной мотивацией становится красота инженерной мысли, лаконичность синтаксических конструкций и другие сугубо программистские вещи. Например, программист может месяцами конструировать какое-то супер эффективное решение, которое дает прирост производительности в 0,5%, но стоит огромных денег для владельцев и в будущем не приносит никакой ощутимой пользы.
Чтобы такого не происходило, любому инженеру неплохо мыслить бизнес-процессами. Нужно стараться представлять весь путь клиента внутри вашего продукта и фокусироваться на общей работоспособности всего решения, а не отдельных его частей. Конечно, бывают особо узкие места, которые требуют серьезного внимания, но их бывает немного.
Давайте рассмотрим стандартную структуру проекта — интернет-магазина. У нас есть программа для складского учета, которая интегрирована с бухгалтерией и сайтом-витриной, на этом же сайте можно оформлять заказы. Все это базируется на какой-то базе данных, в которую мы записываем информацию о продажах, остатках, ссылки на фотографии с товаром и т.д.
Можно рассмотреть несколько сценариев:
- Если к нам заходит в день по 100 человек, то это крайне небольшая нагрузка. Но это и очень небольшое количество клиентов. В этом случае стоит потратить время на улучшение портала с точки зрения SEO. Такие улучшения очень помогут маркетологам. С точки зрения инженерии, повышение производительности портала — более интересная задача, но это приведет к большим убыткам.
- Если к нам в день заходит по 1000000 человек, и сайт начинает тормозить, то лучше бросить все силы на улучшение производительности. SEO может подождать. Оптимизация выдачи в браузер клиента изображений товара в данном случае будет лучшим выбором. Это будет и интересно программисту и полезно для бизнеса.
- Может также быть такая ситуация, что клиентов среднее количество, производительность высокая, очевидных проблем нет, но ни маркетинговые инструменты, ни программные какие-то оптимизации не помогают увеличить выручку. В этом случае, возможно есть проблемы с юзабилити. А по-простому — с удобством пользованием сайтом. В этом случае будет очень неплохо вложиться в новый дизайн и переключить фокус на создание нового интерфейса для клиентов.
В этих примерах я охватил несколько сфер программирования: backend, front-end, databases. Это означает, что задействованы будут программисты разных специализаций и в единый момент времени. Не факт, что будут интересные задачи для всех.
Например, в случае серьезных проблем с front-end, backend программист может выполнять минимальные действия для выдачи данных интерфейсу. Он мог бы начать делать какие-то оптимизации, но в этом случае тестировщики будут вынуждены проверять не только критически важный front-end, но и backend. Как следствие, у них остается меньше времени и вероятность пропуска ошибок увеличивается.
Вообще, понимание бизнес-процессов позволяет также более правильно распределять свою ежедневную нагрузку, приоритетность задач, лучше работать в команде, выстраивать свою карьеру и просто прослыть адекватным человеком.