Психологические проблемы программистов

Aug 10, 2005 00:53


Проблема первая. В старших классах школы, когда я одновременно начал коммерческий проект, я узнал про первую большую ошибку, которую можно совершить. То, что сделать нужно, не делаешь, потому что не можешь себя заставить, а ничего другого не делаешь, потому что нужно сделать то, что нужно.  В результате не сделано ничего, и ситуация только ухудшается. Если вы бы изначально занялись тем, чем хотели, было бы сделано хоть что-то.

Проблема вторая. Она очень проста, и когда я её сформулировал, то нашёл десятки её проявлений, более того, до сих пор иногда от неё страдаю. Люди слишком сильно, необъективно и без причины сужают свои представления о возможном/желаемом.

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

Была выбрана квартира, которую нужно было чуть-чуть подождать (как и 90-95% квартир на рынке недвижимости). Это чуть-чуть затянулось на месяцы, цены выросли где-то на 100 тысяч рублей, и пришлось искать вариант в другом районе, именуемым «Щ». Опять же, все остальные районы негласно отбросили как совсем непригодные для жилья. Всё повторилось ещё раз почти дословно, и наконец мы стали искать вариант в третьем районе, где в конце концов квартира была выбрана и куплена. (Тоже, правда, не без приключений.)

Мораль же в следующем. Сейчас, живя на Шлюзе, никто не чувствует сожаления по поводу того, что мы не купили квартиру в верхней зоне. Нам здесь нравится. Квартира здесь намного лучше (УП, 6-й этаж), чем могла бы быть там (хрущёвка - там все такие - и 1-й этаж, из-за денег). Желания человека очень легко меняются, и то, что раньше казалось невозможным, начинает казаться совершенно естественным.

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

Где-то с марта по сегодняший день мною было вот так вот создано много библиотек. Примерно треть из них действительно постоянно помогает мне и другим моим коллегам в каждом новом проекте. Остальные ещё существуют, но по сути мертвы.

Проблема третья. На сей раз хорошо известная и многими описанная истина. Она встречается в разных вариантах. Например, что написание 20% кода требует 80% времени. Или, как я бы сказал, задачи делятся на два вида. Первые столь просты, что кажется, что их можно сделать уже до завтра. Однако на самом деле на них уходит неделя. Вторые задачи сложные, и кажется, что они потребуют месяца. Но они тоже решаются за неделю 

Первый вид задач в проектах преобладает. Поэтому я так до сих пор не научился оценивать необходимое мне время. Большую часть кода я и в самом деле пишу за день, но всегда остаются мелочи, которые отнимают всё остальное время.

Проблема четвёртая. На самом деле это вариант предыдущей.  От полностью написанной и работающей программы до готового продукта - прорва работы. То, что вы могли бы успешно использовать сами, вы никогда не сможете поставить клиенту. Пусть каждый из необходимых шагов относительно прост, но все они требуют времени. И на них-то этого времени не хватает больше всего, потому что его заранее никто не планирует.

Теперь к чему это всё.  Я думал, что проблемы с мотивацией свойственны только мне. Однако я их научился решать. Этим летом я иногда работал в режиме 24/7 (минус время на сон - когда уже просто падаешь, на еду и другие необходимые вещи), писал в любое время суток (а под конец ночи недостаток мотивации чувствуется особенно сильно). Не только чтобы что-то сделать, но и чтобы доказать себе, что я это могу. Лично для меня сейчас актуальна вторая проблема, но я теперь замечаю и останавливаю (или наоборот запускаю) себя вовремя. Я считаю, что этот опыт куда более ценный, чем заработанные деньги. (В общем-то, этот пост родился, когда я размышлял, нужна ли на самом деле та библиотека, над которой я работал последнюю неделю, или можно было обойтись. А ещё у меня сейчас болит голова, я сегодня слегка приболел.)

Но я работаю не один. Оказывается, другие люди с этим пока справляются хуже меня. Я их понимаю, но мне от этого легче не становится. Правда, понимаю не всех. Передаю привет __hedin'у, который в обход меня выпросил у заказчика авансом (почти) все деньги за свой проект, за два месяца выпустил одну бесполезную версию и (для нас) исчез. Ему теперь легко писать на ЖЖ, что он мается от безделья. Кому и в какие сроки приходится заканчивать соответствующее дело, его не волнует.

P.S. Тому, кто интересовался сравнением Python и Ruby. Я не забыл, у меня даже есть черновик. Но пока некогда было закончить.
Previous post Next post
Up