четверг, 12 мая 2011 г.

[prog.work] Одно из важнейших условий успешной работы программиста

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

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

9 комментариев:

YoungSkiper комментирует...

А если посмотреть с другой стороны "баррикад", то один из критериев стоимости программиста это как раз умение быстро и с минимальными потерями переключатся между разноплановыми задачами.

Причем это вполне тренируемый скилл. Т.е. сугубо вопрос опыта.
Могу судить как и по себе, так и по наблюдениям за другими. Даже в таких случаях когда мы имеем три разноплановых проекта (даже с разными платформами и языками программирования) и есть необходимость работать в режиме 2/2/2 - т.е. по 2 часа в день над каждым проектом.

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

Т.е. это скилл, как другие дополнительные скиллы. И когда я выступаю работодателем я считаю этот скилл очень и очень ценным. И согласен за него дополнительно доплачивать.

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

Безусловно возможность длительно работать на одной задачей не отвлекаясь это плюс. Но плюс сравнимый с наличием душа/сауны в офисе к примеру.

Т.е. некий плюс к комфорту. Но как и все подобные плюсы - он уже вычтен из дохода программиста :)

eao197 комментирует...

@YoungSkiper:

> по 2 часа в день над каждым проектом.

Сделайте в течении этих 2 часов хотя бы два прерывания в работе программиста и посмотрите, что получится. Боюсь, что и одного прерывания будет достаточно.

YoungSkiper комментирует...

Я уже несколько лет работаю дома, так что не нужно рассказывать что значит иметь по несколько прерываний в течении часа :) А уж с ребенком маленьким что будет :))

Безусловно некая "атомарность" задач должна быть. Причем предсказуемая. И 2, или даже 3 часа это скорее минимум. А целый рабочий день вообще не страшно.

Yuri Zi комментирует...

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

eao197 комментирует...

@Yuri Zhidum:

Да, к сожалению не всегда.

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

Quaker комментирует...

Вот наткнулся на интересный пост относительно необходимых знаний программиста:
http://sharpc.livejournal.com/67583.html
Евгений, хотелось бы услышать Ваше мнение: что из этого вышеприведенного списка Вы считает действительно нужным?

eao197 комментирует...

@Quaker:

На тему этого набора я уже высказывался: http://eao197.blogspot.com/2011/03/progidiotichumour.html

Очень хорошо сделанная шутка-стеб. Так что действительно нужным я бы счет чувство юмора :)))

Quaker комментирует...

А что Вы считает более важным: знания или концентрация внимания?

eao197 комментирует...

@Quaker:

Ну и вопросик. Для отдельного большого поста.

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

Но, работа программиста (именно программиста, который плодит баги, а потом тратит силы на их поиск и исправление) требует моментов высокой концентрации. То самое состояние потока. Чем чаще оно нарушается, чем труднее в него войти из-за внешних факторов, тем хуже.