Большинство разработчиков, включая меня самого, инстинктивно предпочитают заниматься технологическими задачами в надежде, что по ходу дела решатся и пара-тройка проблем продукта.
Заполучив что-то вроде нового супермасштабируемого молотка, горячо обсуждаемого на Hacker News, вы лупите им по всему, что попадается на вашем пути, пока каждая ваша вещь не превратится в пыль, а все, кого вы любите, не скончаются от тяжелых черепно-мозговых травм.
Переведено в Alconost Translations.
Воспринимая свой код как технологию, а не как продукт, вы проигрываете. Вы не знаете, как увеличить количество пользователей, поэтому сдаетесь и просто переключаетесь на любую интересную задачу, решаемую программно. Вы ожидаете сто миллионов пользователей, не имея даже ста. Вы создаете безнадежно скудный предметно-ориентированный язык, не имея настоящего понятия о предмете, для которого он нужен. Может оказаться, что все, что вы делали последние три месяца, придется свернуть за неделю, потому что рынок для найма барсуков по SMS еще не дозрел до того уровня, на который вы рассчитывали.
Впрочем, вы же создали милую сердцу технологию, испытали интеллектуальное напряжение, так что вам хотя бы не покажется, что время потрачено впустую. Конечно, ничего такого ужасного в упомянутой технологии нет. Написание кода, который лишь немного помогает вам понять Arel и попрактиковаться в использовании Vim, все равно стоит усилий, если вы хотите стать лучше в применении Arel и Vim. Ужасной идеей это будет только в том случае, если ваша цель — не технология, а продукт. Но когда у вас в глазу гвоздь — все выглядит, как гвоздь.
Если вы думаете о своем коде как о части продукта, а не о технологии, вы счастливы решать все те занудные проблемы, которые возникают у ваших пользователей. Вы делаете все, чтобы они получали письма вовремя, тексты были качественными, а сообщения об ошибках — информативными. Может быть, иногда вам придется потрудиться и над задачей-другой по программированию, но только если это нужно для серьезного улучшения пользовательского интерфейса.
Не думайте, что, решая жуткие уравнения, вы позволяете продвинутым пользователям вашего будущего продукта обрабатывать, импортировать и экспортировать исходные данные всеми возможными новаторскими и необычными способами. Вместо этого признайте, что никто на самом деле не понимает, для чего предназначен ваш продукт, и что, пожалуй, стоит просто улучшить текст на главной странице и добавить понятные и привычные пользователю сценарии.
Сейчас я занимаюсь сайд-проектом, благодаря которому разработчики смогут быть уверенными в том, что код проходит проверку. И, по-моему, продукт выйдет хорошим. Он систематизирует и реализует подход к проверке кода, который мы используем в Copyin, и несколько человек уже сказали, что будут пользоваться им вовсю, как только он будет готов. Но я все еще по-настоящему не верю в этот продукт. Мне все еще хочется запустить маленькое приложение Sinatra, которое асинхронно обрабатывает события на Github, и создать алгоритм автоматического определения, кого из членов команды лучше выделить для проверки коммита. И за все это время я так и не взялся за уведомления по электронной почте.
Если вас легко увлечь и заинтриговать, нужно невероятное количество энергии, чтобы удержать фокус на продукте, а не на технологии. Эта энергия чрезвычайно ценна, и найти ее источник очень непросто. Вас может подпитывать слепая вера, опора на будущих потребителей или тот факт, что ваш код уже используется или хотя бы признан реальными людьми — то есть уже стал продуктом, нравится вам это или нет. Так что, даже если ранний запуск вашего проекта ничему вас не научит, он позволит вам оставаться честным. Напомнит о том, что ваш код — это продукт, и о том, что вам нужно сосредоточиться на решении проблем продукта.
Чем глубже вы будете закапываться в технологию, тем больше отдалитесь от реальности и рынка. Технология не признается вам в любви. И когда окажется, что вы копаете не туда, плотно увязнув в дурно пахнущей грязи, вы даже не вспомните, зачем вы вообще начали копать в этом дурацком направлении.
Alconost Translations — переводы и локализация без гвоздей.
Автор: alconost