Разработка
Паралич разработчика: вы тоже можете стать жертвой
Дорогие разработчики, вы чувствуете себя неуютно, потому что вы быстро пишете только на восьми языках для трех семейств устройств? Вздрагиваете ли вы, едва заслышав о переходе на очередной фреймворк? Откладывали ли вы любимый проект из-за того, что не могли определить, какая облачная платформа подойдет лучше всего?
Дорогие разработчики, вы чувствуете себя неуютно, потому что вы быстро пишете только на восьми языках для трех семейств устройств? Вздрагиваете ли вы, едва заслышав о переходе на очередной фреймворк? Откладывали ли вы любимый проект из-за того, что не могли определить, какая облачная платформа подойдет лучше всего?
Возможно, у вас тоже паралич разработчика. Бойтесь! Это не лечится.
Богатство доступных программистам опций сегодня просто чудовищно. Мы задохнулись под тем, что извергает рог изобилия. Последние несколько лет я зарабатывал на том, что писал на Java, Objective-C, C, C++, Python, Ruby, JavaScript, PHP (прошу прощения) с разными вариантами SQL/баз данных (MySQL, PostgreSQL, MongoDB, BigTable, Redis, Memcached и другими). Нравится ли это мне? Черт побери, нет. По большей части я просто чувствую вину за то, что не делал ничего на Erlang, Clojure, Rust, Go, C#, Scala, Haskell, Julia, Scheme, Swift или OCaml.
Я — жертва паралича разработчика: чувства ущербности из-за того, что индустрия софта развивается быстрее, чем может успеть один человек.
Возьмите любой из этих языков программирования, углубитесь в разнообразные фреймворки, и тулкиты, и доступные библиотеки… И постарайтесь, чтобы ваша голова не взорвалась. Месяцы уйдут только на то, чтобы серьезно оценить все сегодняшние фреймворки и библиотеки JavaScript. Что вы знаете о количестве доступных версий Ruby? Или фреймворков iOS? Или NewSQL/NoSQL баз данных? И даже не заикайтесь про Hadoop vs Spark vs Google Dataflow, или Avro vs Thrift vs protocol buffers, или-или-или…
По крайней мере, мобильный мир сжался до дуополии Android/iOS — хотя за этим тоже скрываются пересекающиеся альтернативы, вроде Xamarin или кроссплатформенного HTML на PhoneGap или Sencha. Да просто попробуйте понять, где и как развернуть бэкенд. Я работал на Heroku, Amazon Web Services, Google App Engine, Google Compute Engine и Parse… что только заставляет меня стесняться того, как мало я знаю про внутренности OpenStack, Force.com, Azure, AppFog, никогда мной не использованного множества AWS сервисов и других.
Starting a basic website in 2014:
1. Install Node
2. Install Bower
3. Pick CSS framework
4. Pick responsive approach
…47. Write some HTML
— I Am Devloper (@iamdevloper) October 2, 2014
Программисты сегодня оказались перед массой доступных возможностей, так что мы даже используем кучу инструментов, которые существуют только, чтобы помочь нам управлять другими инструментами: Bundler, Bower, CocoaPods, Pip и другие. Они отличные! Я не хотел бы жить без них. Но тем не менее. Потом вы начинаете использовать другие инструменты, и половину времени занимает отсеивание всякого мусора, затем начинаете понимать, что конфигурации недостаточно, вы на самом деле хотите чуть-чуть переписать их… капельку… или заменить другой альтернативой…
Число и разнообразие языков, инструментов, фреймворков и платформ, доступных разработчику, приводит в невероятное уныние. Конечно, никто не хочет признать это. Каждый хочет быть мастером на все руки. Но правда в том, что мы все страдаем от комплекса программистского паралича.
Даже сбор необходимой информации для принятия обоснованного решения почти наверняка приводит к обратному. Если перед началом проекта вы выделили время на анализ всех возможностей, а затем забрались на вершину кривой обучения, вас может мгновенно сбить с ног какой-нибудь подросток, использующий PHP и Swift с emoji в названиях переменных.
Но с другой стороны, если зациклиться на Swift и PHP, вы будете жить в постоянном страхе, что какой-нибудь ниндзя-программист на C#/Haskell заткнет вас за пояс так же, как это сделал ранее Пол Грэм с Lisp:
Когда вы выбираете технологию, вам приходится игнорировать все, что делают другие и учитывать только то, что будет работать лучше всего… На самом деле, у нас есть секретное оружие… Мы могли просто разрабатывать софт быстрее, чем кто-либо мог представить… Мы писали наше ПО на сумасшедшем Al со странным синтаксисом и кучей скобок.
Итак: паралич разработчика. Выбираем ли мы то, что уже знаем, потому что теперь можно двигаться вперед, не взбираясь на кривую обучения, и боимся, что кто-то делает это лучше, быстрее, элегантнее — и наши знания устареют и будут неконкурентоспособными в следующем году? Или мы хотим постоянно расширять наш кругозор, потому что нам нравится учиться и лучшие инструменты — и веселее, и конкурентоспособнее… но занимают больше времени, сил и нагрузки на мозг?
Вопрос на засыпку! Верного ответа нет. Вот почему каждый месяц — Месяц знакомства с параличом разработчика. Я пришлю вам мигающие калейдоскопические ленточки (чтобы все носили), как только пойму, какой 3D принтер, микроконтроллер, LED-софт и ОС для дрона лучше всего подойдут для этой цели. Не задерживайте дыхание.