Про софтваре чуваков и проблемы реального мира
Jan 1, 2017
7 minutes read

Здравствуй 2017, и мой анонимный читатель с псевдонимом George. Я еще никому не сказал про этот блог, но George его уже как-то нарыл, что приятно.

Наверное в первый день нового года стоит написать о том, что я планирую сделать в этом году. Поддамся стереотипам и попробую. Сделать это будет несколько сложно, ведь суть этого блога – показать ход мысли. Не только что я делаю/хочу/…, а как я дошел до это, в том числе через огромное количество ошибок. Для этого придется дампить некоторое содержимое из башки в текст, свзяать же все в одну кучу в тексте будет стоить много времени, но думаю, что к концу года все свяжется.

Начну издалека, и параллельно выдам себе комплиментов:

Про софтваре-чуваков и решение проблем

Я можно сказать с рождения был software-чувак. Сходу я не смог найти оригинальны пост про то, что я имею ввиду под софтваре-чуваком, но если кратко, то софтваре-чел – это чел, который видя какую-либо проблему в реальном мире, пытается решить ее в софте. Пытается - это не значит что он садится за компьютер и напрягается, я про способ мышления - есть проблема, есть фантазии на тему решения проблемы с помощью –зонта– софта.

Если порытся в сети, можно найти разнобразные проекции этой мысли, например вот здесь: The Best Software Developers Know It’s Not All ‘Hacking’ это первое попавшееся, но от себя я сразу уточню что быть софтваре-чуваком - это необходимое, но не достаточное условие для того, чтобы быть Best Software Developer.

Решать реальные проблемы с помощью софта - это не сначит делать софт самому, большая часть проблем решается сущуствующими инструментами. Будучи и программистом и софтваре чуваком, существенная часть реальных проблем, с которыми я встречался в жизни были связаны, как это не удивительно (сарказм), с программированием, и разработкой ПО.

Первая очевидная мне проблема встала в моей первой команде (в году так 1995, мне тогда было 19 лет) - проблема версионинга исходных файлов, и проблема “учета проблем” :). Смешно это писать в первый день 2017 года, когда даже начинающий программист удивится: ведь есть куча инструментов версионинга, и баг трекеры. Но гораздо смешнее то, что и в далеком 1995 годе большинство программистов жили без версионинга и багтрекинга и проблемы не видели. Перед ними стояли задачи синхронизировать кодебазу, которую они успешно решали передачей файлов на дискетах, через файловый сервер (у кого была локальная сеть), или самые продвинутые через электронную почту (у кого была и локальный сервер был не доступен). Вышак был воздвигнуть FTP.

Блять! Я вам скажу 95% программистов считало что таскать файлы на дискете - это нормально. Что у них нет проблем. Для учета проблем в самых продвинутых и жестких организциях была тетрадка учета проблем, а наиболее компьютеризированные (и имеющие локальные сети) записывали проблемы в текстовом (или вордовом!) файле (тем самым усугубляя проблему версионирования. Так делали не только в отсталой России, но и во всем мире.

Ребята, еб вашу мать! Так быть не должно, вы же понимаете что это пиздец, вы понимаете что вы теряетесь в версиях ваших файлов, вы понимаете, что вы тратите безумное количество времени чтобы синхронизироваться и огромное количество ошибок мы ловим потоуму что кто-то что-то собрал хуй пойми их каких версий, непонятно откудо взятых файлов??? (а это случалось постоянно). Но восклицать было бесполезно. 19 из 20 программистов смотрели на тебя как на долбоеба, типа что-ты тут орешь – такова жизнь и все так делают – разработка ПО - это боль.

Тогда, более 20 лет назад, я понял что программист != софтваре-чел. Это разные, случайно пересекающиеся множества. Большинство программистов не видят проблем, там где они есть. Они не видят проблем даже в том, чем непосредственно занимаются. Точно так же они не видят проблем ни в своих решениях, ни в той области в которую они призваны (наняты) решать проблемы.

Но мне то, как софтваре-челу проблема была очевидна, и я начал искать. В те времена я не думал что пацан из Сибири имеет право сам решать мировые проблемы, и я просто искал решение. На компакт дисках, устанавливая горы шлака имеющее хоть какое-то отношение к разработке, в интернете (на скоросте 500 байт в секунду), и эй! Google в то время отсутствовал, не думайте что найти что-либо релевантное в сети тогда было так просто.

И вот оно, оказалось под носом. Только что вышедший Delphi Client/Server версии 2.0 включал в себя некий комонент под названием PVCS. Как эта хуета работала и как ей пользоваться было решительно непонятно - я вам скажу этот PVCS был еще тот пиздец, но я радовался безумно: оказалось что я не один ебанутый, а есть люди, которые понимают проблему, и даже предлагают решения.

Для молодежи скажу что тогда, естественно, не было никакого git, и даже SVN. Уже был CVS: On November 19, 1990, CVS version 1.0 was submitted to the Free Software Foundation for development and distribution, но я его успешно пропустил - у меня не было машины с юниксом - сеть наша бегала на Novell Netware, и мой поиск к сожалению был нацелен на винду. Кстати, как бы там не было - CVS в то время был свежак - прям хипстерская технология не для масс. Хер его знает в каком он был состоянии в 1995 (активно пользовать сам я его начал примерно в 2002), так вот тогда SVN которому уже было пару лет отроду был полный пиздец, пользовать его можно было начинать только после 2006 - а там уже git подтягивался.

Long story short, я наконец нашел его: StarTeam от компании StarBase, чуть ли ни бету версии 2.0, то ли на треш-CD куда сливали весь warez мира без разбору и продавали в ларьках за деньги, толи еще где. Это была песня. Это был кайф, и не только versioning файлов, но и интегрированный баг-трекер. Чуть позже мы нарыли StarTeam Server и просидели на этом волшебном продукте до того как команда наебнулась в самом начале 1999.

Тогда я, кстати, думал что Borland - дураки, и должны были купить StarTeam, что они, кстати и сделали в 2003-м. Borland вообще единственная контора на моей памяти, покупки которой согласовались с моим наивным представлением о том, кто и что должен купить. В какой то момент смотря на уебищный Midas от Borland (такое же уебанство как PVCS), разочарованно думал, еб вашу мать, зачем вам это гавно - есть же прекрасный VisiORB. И Borland покупает VisiGenic. Наивный я был конечно в том, что думал компании и продукты покупаются чтобы сделать свою линейку еще более удобной и привлекательной для пользователя, но, во-первых и зачастую это не так, а во-вторых, даже когда это так - топ-менеджмент компаний нихуя не понимает в том, что на самом деле надо людям.

В 1999 я пришел в небезызвестный Novosoft. Я был 105-й, а через год там работало что-то около 500 человек. Так вот, большинство этих программистов не пользовалость ни version control, ни багтрекерами, и не парились по этому поводу. Были люди, которые прям насаждали CVS или StarTeam в отдельно взятых командах, но багтрекерами большинство так и не воспользовалось (Jira кстати тогда тоже не было), про Wiki даже не говорите, и хоть Ward Cunningham уже сделал WikiWikiWeb - знали о значении этого слова их четырех букв только избранные.

Хехе CruiseControl я тоже пользовал - но это уже лишнее для данного поста.

Резумируя

Большинство диалогов начинающихся с фразы: “ты же программист, реши нам проблему (сделай софт)” заканчивается двумя проблемами: оригинальной проблемой, которая до сих пор нормально не решена и тем решением, с которым как то приходится жить и мириться. Это происходит потому что mindset большинства программистов (как впрочем и непрограммистов) не заточен на решение real-world пробелем. Они не видят проблем (да же тех, которые у них перед носом) и так же не видят решений.

То есть если им объяснить проблему (показать) - они смогут придумать некоторое решение, которое будет далеко не идеальным. У меня нет объяснения почему так, но я думаю объяснение лежит в области слепоты: человек не видящий проблему не может увидеть решение. Тут важно заметить что я говорю не про знание а про видение: даже самый глазастый визионер не будучи знаком с предметом никаих проблем там не увидит. Речь идет о том когда человек знаком с проблемным предметом.

В общем так, ребятишки - если бы вас научили программированию где-нибудь на необитаемых островах и заставили писать софт, то только на одном из 20 таких островов нашлись бы люди, которые сделали бы себе систему контороля версий и прочее, остальные бы херачили как получится. Я это видел - и это медицинский факт.

Что интересно, если бы вас научили программировать на ассемблере и оставили на острове, то только на одном из 20 появилось бы некоторое подобие Си. Остальные так бы и херачили на ассемблере, не видя в этом никаких проблем. Я привожу примеры из области программирования только потому что блог как бы про программирование, к сожалению (или к счастью) то же самое верно для любой области деятельности и в любом разрезе.

На сегодня хватит писанины, надо бы еще попрограммировать. Завтра продожу подводить к планам на 2017, и после этого расскажу что там с программированием. Последние несколько дней 2016 я чо то поделал, и сейчас буду продолжать.


Назад, к записям


comments powered by Disqus