27 мая 2003 года, в 10:02
О работе и использовании времени
Раньше я думал, что я что-то понимаю в том, как делать программы. Программированием я занимаюсь давно. Языки программирования, компьютерные технологии, даже некоторые методологии разработки. Я кое-что понимаю в этом. Надо разработать программный продукт? Нет проблем!
Сейчас я в середине работы над большим (для меня) программным проектом и скоро мне нужно сдать первую стадию, выпустить первую версию. И я вам скажу, нихрена я не умею.
Мне приходилось в жизни много раз неуспевать сдавать работу к назначенному сроку. Курсовые работы, диплом — самые яркие, но не единственные примеры. (Не случайно это называют синдромом студента - в начале отчетного периода ты ничего не делаешь, а в конце — бегаешь, как ошпаренный.)
Я привык в последнее время считать себя взрослым, самостоятельным, сильным человеком. Могу ли я справиться с задачей, которую сам взял на себя, и сделать продукт вовремя? Могу я собраться, сконцентрироваться и сделать?
Я пока не знаю. Я хочу, но боюсь загадывать.
Самое сложное — не обманывать самого себя.
Где-то я читал, что программисты — неисправимые оптимисты. Сколько вы знаете случаев, когда программист правильно оценил, сколько времени ему понадобится на выполнение работы? Я вообще таких случаев не знаю. Я не говорю, что так не бывает. Просто обычно оказывается, что ты переоценил свои силы и возможности. Когда смотришь на задачу с высоты птичьего полета, то не видишь деталей. А детали часто оказываются неожиданными. О, этот оптимизм! Это просто болезнь.
Сейчас, когда мне осталось примерно три недели до релиза (выпуска программного продукта), я пытаюсь провести переучет всех больших и маленьких оставшихся дел. Дел, которые нужно сделать, чтобы продукт был готов. Я пытаюсь посмотреть правде в глаза. И мне уже оказывается не так важно, смогу я сделать это вовремя или нет. Оказывается важным лишь одно: честен ли я перед собой?
Когда я сижу и смотрю в наш Schedule — этот самый список оставшихся дел — я иногда просто пугаюсь. Боже, как я мог рассчитывать сделать этот проект, когда у меня небыло даже наброска этого списка? Как я мог планировать сделать систему, когда у меня не было ее четкого описания, спецификации? Я просто как слепой котенок.
Во-вторых, и это наверное главное, что меня пугает, мне и моему помощнику надо сделать еще очень многое. Если быть точным, то меня пугает, что я до сих пор не знаю, как сделать некоторые из этих вещей. А их уже надо делать. Они уже должны быть сделаны...
Выход один: садиться и продумывать, планировать и описывать. До тех пор, пока я не скажу себе: да, теперь я знаю, как сделать все это. И потом уже, собственно, делать.
* * *
Ссылки по теме:
- Joel on Software: Painless Software Schedules и Painless Functional Specifications — Part 1: Why Bother?, но это только две статьи Джоела Спольски из многих.
- Если вы работаете над бумажными документами, вам может быть полезен Универсальный чеклист объемных документов, написанный Владом Головачом.