Я работаю над проектом, у которого очень плотный график. У меня не так много времени для написания кода и тестирования (хотя я работаю более 12 часов каждый день, это все еще задерживается), и результат очень хрупкий. Его код тоже очень дилемма.
Эта программа используется во всех офисах компании нашего клиента, которая находится во многих странах. В полночь я регулярно получаю телефонные звонки об ошибках от нашего пользователя / тестера или о том, что они не знают, как использовать некоторые функции.
После трех лет работы над этим проектом я чувствую себя очень напряженно и плохо сплю, потому что очень переживаю из-за ошибок и телефонных звонков.
У меня есть несколько вопросов:
- В течение трех лет весь код, который я написал, является просто идеальным кодом сценария использования (поэтому он легко ломается). Он плохо спроектирован и не имеет никаких юнит-тестов. У меня много проблем из-за этого факта. Поэтому я хочу знать, возможно ли написать код, который работает, когда у проекта очень плотный график?
- Как я могу написать лучший код за то же время?
- Как я могу очистить свой разум и не беспокоиться о работе, когда ложусь спать?
time-management
анонимное
источник
источник
Ответы:
Запрет телефонных звонков
Если ваши пользователи находятся по всему миру, они наверняка не могут ожидать, что вы возьмете трубку, когда в 4 часа утра вы будете в постели. Я бы запретил телефонные звонки и переключился бы на другие средства связи, которые могут лучше служить этому сценарию (электронная почта или некоторая БД отслеживания проблем). Но даже в офисе делают график доступности телефона по расписанию. В противном случае вы ничего не сможете сделать, пока находитесь в офисе.
Это даст вам ценный сон и отдых.
Сжатые сроки
Если этот проект был запланирован на три года, кто-то должен был заподозрить что-то, что на самом деле не работает. Может быть, пришло время кому-то сказать планировщикам, особенно вашим пользователям / клиентам и вашим менеджерам, что это проект марша смерти. Он был в разработке в течение трех лет, он отложен и полон ошибок. План должен быть полностью переоценен, существующий код должен быть реорганизован, а новые функции не должны разрабатываться до тех пор, пока не будут решены многочисленные проблемы.
Порядок из хаоса
Установите методологию разработки, которая сделает вещи предсказуемыми и терпимыми для вас. Если вы разработчик, то обработка телефонных звонков по мере их поступления не позволяет вам выполнять какую-либо работу. Каждое прерывание занимает у вас 15 минут, чтобы вернуться туда, где вы остановились. Телефонные звонки должны быть выключены . По крайней мере, на вашем столе, потому что вы разработчик. Если вы можете перенаправлять телефонные звонки кому-то другому, что не будет вас беспокоить после каждого звонка, чем это делать.
Создать какую-нибудь базу данных об инцидентах / ошибках. Потратьте некоторое время каждое утро, когда вы приступите к работе, и расставьте приоритеты для новых инцидентов (вы, ваша команда или ваш клиент / менеджер). Постарайтесь решить их в таком порядке приоритетов и даже не пытайтесь думать о телефонных звонках.
Что, если
Что, если вы не можете выключить свой телефон и не можете сказать своим пользователям, что они не смогут звонить вам, когда захотят? Если у вас есть номер телефона вашего пользователя, я предлагаю вам сделать обратное: когда они позвонят вам, сделайте уведомление и сообщите им, что вы перезвоните им, когда он будет решен. Затем перезвоните им, когда они спят. Если они скажут вам, что спят, запомните их ответ и используйте его, когда в следующий раз позвонят вам ночью. Люди обычно лучше понимают свой язык.
Если они используют офисный телефон, а вы используете мобильный телефон, чтобы вы не могли звонить им в нерабочее время, и они могут, тогда начните выключать свой мобильный телефон после того, как вы покинете офис. Вы были там в течение 12 часов, и вы заслуживаете отсутствия на работе. Если мобильный телефон является вашим личным, то ваша компания должна получить новый и сообщить об этом своим пользователям / клиентам. Если после этого они начнут звонить вам лично (потому что они не могут связаться с вами по вашему делу, вы тоже:
Самая важная вещь
Не разрабатывайте новые функции, пока не решите существующие проблемы. По крайней мере, высокий и средний приоритет.
источник
Если вы не единственный человек в команде - в этом случае вы, вероятно, более чем на полпути к истощению - ходите по очереди с «пейджером». Это должно облегчить нагрузку на данный момент.
Затем вам необходимо предоставить руководству информацию о том, что ему необходимо запланировать этап погашения технического долга - это означает тестирование, очистку кода, рефакторинг. И это должно быть запланировано в ближайшее время. Как правило, это означает, что какое-то время не существует нового кода, который не был бы рефакторингом или тестом. Если нет, то будет только хуже.
Оказавшись на этом этапе, вы выбираете наиболее проблемные разделы базы кода, реорганизуете его, очищаете и пишете тесты, чтобы проверить его. Как только вызовы прекратятся или могут быть обработаны без сумасшествия разработчиков, тогда вы готовы к другому этапу функций (если это то, что они хотят). На этом этапе вы пишете тесты с новым кодом и продолжаете выполнять регрессии. Прямо сейчас, программное обеспечение звучит как на пути к переписыванию.
Продажа очков за разговор с вашим боссом:
Давайте будем честными, хотя. До этого момента ваша компания не думала, что это достаточно большая проблема, чтобы с ней что-то делать; Вы собираетесь выгореть. Похоже, никто в управлении не имеет никакого реального опыта разработки. Начни искать.
источник
Хотя могут быть некоторые методы, которые позволят вам добиться небольшого прироста производительности, увеличение производительности труда на 5% хуже, чем бесполезно для вас сейчас. Реальный навык, который вам здесь не хватает, прост и фундаментален:
Узнайте, как сказать нет
Скажите «нет» всем необоснованным ожиданиям, о которых вы уже знаете, что вам следует отказаться. Вы знаете, что они есть. Это очевидно. Если вы сейчас не можете сказать «нет», найдите работу, где сможете. Умные работодатели найдут этот навык желательным.
источник
Начните с понимания того, что ваш проект потерпит неудачу, если ничего не изменится. Это самый важный шаг к тому, что вам нужно сделать. Разработчик не может выдержать 12 часов в день усилий и быть в состоянии производить полезный код. Вы попадете в точку, где вы создаете глупые ошибки и фактически теряете прогресс, потому что вы должны начинать каждый день с исправления того, что вы делали накануне. Похоже, вы уже там.
Есть две основные проблемы, которые необходимо решить, прежде чем вы снова обретете здравомыслие:
Для того, чтобы исправить вашу ситуацию, вам нужен управленческий бай-ин. Проблема в том, что они не чувствуют боли, и вы не хотите оказаться в больнице с инсультом, чтобы привлечь их внимание. Первый шаг - объяснить своему руководству, где вы находитесь, и какое давление вы испытываете. Если они этого не понимают, поднимитесь на другой уровень управления. Или, возможно, опишите ваши условия работы в отдел кадров. Требование работать более 8 часов в день в течение длительных периодов времени может быть нарушением закона, и отдел кадров наверняка это знает.
Предполагая, что руководство услышит вашу просьбу, вы хотите предпринять следующие действия:
После того, как вы сделали этот критический выпуск исправления ошибки, пришло время запланировать следующий. Все функции и исправления ошибок должны быть расставлены по приоритетам, а выпуски должны планироваться в зависимости от поднабора ожидаемой рабочей нагрузки. По мере того, как вы вносите некоторую здравомыслие в свою трудовую жизнь, уровень стресса снижается, качество повышается, и в целом вы будете более эффективными.
источник
Вы, кажется, страдаете от того, что я считаю случаем ложной экономики , и чем дольше вы придерживаетесь того, что не работает, тем хуже становится ваша проблема.
Некоторые ключевые показатели:
Краткий ответ: да. Длинный ответ - это сложный вопрос, и он потребует значительных изменений в восприятии со стороны руководства и, возможно, клиента, а также усилий Геркулеса с вашей стороны ... но я вернусь ко всему этому через минуту.
Реально, вы не можете, если вы предполагаете, что вы можете сделать что-нибудь, что сэкономит ваше время и при этом даст идеальный результат. Вам нужно применять методы, которые увеличат время, необходимое для реализации вашего кода, потому что вам потребуется время, чтобы сосредоточиться на правильной детализации. Это требует времени, и именно здесь ваша ложная экономика вредит вам больше всего. Однако, делая вещи лучше, вы улучшаете качество своего кода, и это, в свою очередь, приведет к снижению хрупкости вашей системы. Опять же, я объясню это ниже.
Беспокойство вызывает недостаток сна, а потеря сна вызывает беспокойство. Это замкнутый круг, если он когда-либо существовал, и если его не остановить, он, вероятно, приведет к злому близнецу беспокойства, Депрессии . Хроническая потеря сна, которая, как я полагаю, скорее всего, сочетается с отсутствием физических упражнений и, вероятно, с плохими пищевыми привычками, все это может привести к хронической усталости . Все это является симптомом всех проблем, с которыми вы сталкиваетесь на рабочем месте, и связанных с этим проблем, с которыми вы, вероятно, столкнетесь в своей домашней жизни. Именно в этом заключается наибольшее доказательство ложной экономики, и, вероятно, это самая серьезная проблема, с которой вам нужно разобраться в первую очередь.
Сначала я должен заявить, что я не медицинский работник, и вам действительно следует проконсультироваться с врачом, прежде чем что-либо предпринимать. Я отмечу, однако, что я пережил опыт, который вы описали в своей публикации, и я знаю, как трудно с этим справляться, и как важно с этим что-то делать. Я пережил депрессию, беспокойство, хроническую усталость, стрессы и все другие маленькие неприятности, которые их сопровождают, поэтому я предложу вам несколько советов, основанных на этом опыте:
Теперь, когда я прошел через все связанные с медициной вещи, давайте посмотрим, что вы можете сделать с вашей работой:
С точки зрения фактического программирования связанных вещей:
Самое главное, вам нужно управлять ожиданиями, начиная с ваших собственных. Вы всего лишь человек, и в любой момент вы можете сделать только так много. Вы должны управлять ожиданиями своего босса, и пусть ваш босс или непосредственно сам управляет ожиданиями ваших клиентов. Это значит серьезно расставлять приоритеты в работе, которую вы делаете. Выделите время для новых функций и время для ошибок, и предположите, что ваши сроки будут сокращаться. Имея дело с возможностью сокращения сроков доставки, пообещайте только предоставить набор критических функций и оставьте остальные функции как «приятно иметь, если это возможно». В следующую дату доставки вы снова проходите через этот процесс, увеличивая приоритеты предыдущей доставки «приятно иметь» и так далее. Включите это в свою методологию разработки как минимальную отправную точку, а затем просмотрите после нескольких поставок, чтобы увидеть, где вы можете настроить свои процессы, чтобы повысить эффективность. Наибольшая эффективность будет достигнута благодаря изменениям в вашем образе жизни, однако вы всегда сможете сделать небольшие вещи, чтобы упростить свою работу, например, сократить накладные расходы, связанные с документацией и общением между вами и конечными пользователями.
Будьте активны во всем этом. Покажите своему боссу, что вы можете вместе работать над тем, чтобы действительно улучшить положение дел, что в конечном итоге отразится как на вас, так и на компании в целом.
Кроме того, не принимайте никаких решительных решений сейчас. Подождите, пока вы не справитесь со своим здоровьем и нагрузкой, и посмотрите, как вы пойдете. Когда ваш ум прояснится, и когда вы почувствуете, что находитесь в лучшем месте, тогда будет время решить, стоит ли ему оставаться или пора идти дальше. То, что я в основном говорю, это иметь дело с одной проблемой за один раз, и оставьте остальным немного потушить, пока они не потребуют вашего внимания.
источник
Если у вас плотный график, вы должны быть склонны к тому, чтобы не повторяться . Определите наиболее используемые методы и убедитесь, что они многократно используются.
Запланируйте то, над чем вы будете работать сегодня, запишите это и придерживайтесь этого. Постарайтесь ограничить то, что вам нужно запомнить, до семи или менее пунктов.
Я бы сделал еще один шаг и не стал бы повторять чужую работу. Используйте библиотеки языка, когда это возможно. Используйте сторонние библиотеки, если это возможно.
Может показаться, что для написания требуется больше времени, но нацеливайтесь на методы, которые делают только одну вещь. Я ограничиваю метод принятием решений или делами. Сплоченность вашего кода должна увеличиваться, а сцепление снижаться. Вы должны найти тестирование проще. Это хорошо поддается прогрессивному разложению.
Упростите как можно больше. Используйте шаблоны, контрольные списки и любые другие методы, которые позволят вам не думать о мелочах.
Вам нужно будет избегать перерывов. Каждое прерывание будет стоить вам около 15 минут по расписанию. Берегите свое время.
Если это длительный срок, возвращайтесь домой, когда обнаружите, что ваша производительность начинает отставать. Если вы постоянно работаете по 12 часов в сутки, ваша производительность, скорее всего, будет такой же, как если бы вы работали по 8 часов. Вы можете не заметить, насколько сильно ваша производительность ухудшается. Возьмите дополнительные четыре часа, чтобы немного потренироваться и отдохнуть. Посмотрите, сможете ли вы вздремнуть в середине дня или отдохнуть после обеда.
источник
На вашем месте я бы поговорил с моим менеджером и объяснил им, что сроки, которые они устанавливают, нереальны. Если вы просто продолжите работать таким образом, они будут думать, что все в порядке, они не будут знать о ваших проблемах, и вы в конечном итоге будете добавлять все больше и больше плохо написанного кода в вашу систему каждый день, что усложнит вашу работу еще больше.
В качестве альтернативы, вы всегда можете переключиться на другую работу :-)
источник
Отслеживайте все, что вы делаете
Потратьте время, чтобы отслеживать все, что вы делаете, и сколько времени вы и ваша команда тратите на это. В конечном итоге это будет то, что вы принесете руководству, чтобы показать им, что вам нужно действовать по-другому. Если у вас нет холодных и неопровержимых фактов о том, что вы делаете, и сколько времени вы тратите на устранение проблем, о которых сообщают другие, будет гораздо сложнее убедить их в необходимости изменений. Каждый час должен отслеживаться всеми, чтобы быть точным. Это означает, что за последние 3 недели вы потратили 80 часов на то, чтобы починить систему, которая могла быть восстановлена с нуля за то же время.
Попробуй изменить вещи
Используйте отслеживание, которое вы собрали, и замечательные предложения, которые другие сделали, чтобы составить план по улучшению программного обеспечения. Выберите части программного обеспечения, которые вызывают наибольшее количество проблем. Составьте план, который, по вашему мнению, приведет к нормальным управляемым темпам. Дайте время на работу.
Приготовьтесь к тому, что пора уходить
Если руководство не желает что-то менять и работать с вами, возможно, пришло время подумать о том, чтобы двигаться дальше. Я согласен с другими, что вы сгораете. Начните готовить свое резюме и портфолио. Все может улучшиться, и вам не нужно будет двигаться дальше, но если руководство не согласится вносить изменения, тогда двигайтесь дальше. Ваше психическое и физическое здоровье важнее, чем пребывание на работе, которая отнимает у вас так много.
источник
Ради бога, где твой руководитель проекта?
Если у вас нет менеджера проекта, который помог бы вам установить продуктивное время, он вам нужен. Вам нужен человек, посвященный тому, чтобы следить за временем разработки, ограничивать область видимости, управлять ожиданиями и т. Д.
Вы делаете творческую работу для жизни. Если между вами и вашими клиентами / пользователями нет барьера, как вы можете эффективно сосредоточиться на своем развитии?
Хороший PM может быть хорошим для многих вещей ...
1. Чтобы разыграть карту «Высшая сила»:
Ваши пользователи требуют от вас новых функций, но вам действительно нужно время, чтобы сосредоточиться на выпуске с исправлением ошибок. Кто сказал, что вы должны общаться с пользователями? Вы несете ответственность за написание контрактов? Ваша работа - управлять ожиданиями клиентов? Есть ли у вас право окончательного решения диктовать условия контракта?
Нет? Тогда почему вы несете единоличную ответственность за взаимодействие с клиентом? Развитие тяжело и требует большой концентрации. Вам нужна способность восстанавливать время разработки, и вы можете сделать это с хорошим PM и хорошим оправданием.
Независимо от того, что ваш PM делает по сравнению с вами, если клиенты начнут беспокоить вас о модификациях за пределами спецификации, просто скажите.
Это вежливый способ сказать, я не даю как ***.
Следуйте за этим, надавив на них «Scope Creep Dog».
Теперь оставь меня в покое. Возможность пользователя напрямую взаимодействовать с разработчиками допускается как привилегия, которую можно отнять. Если это не так, ваше руководство не подведет вас.
2. Управление ожиданиями 101
Кто в здравом уме думает, что вы можете работать с таким сумасшедшим графиком и заниматься круглосуточной технической поддержкой. Вам нужен кто-то, кто заступится за вас, потому что ваше время ценно и должно быть посвящено вашему ремеслу.
Это относится как к клиентам, так и к компании, в которой вы работаете. Для клиентов, если они выходят за рамки, вы всегда можете спросить ...
Если это не так, у вас есть право отклонить запросы. Не поймите меня неправильно, приятно сделать все возможное, чтобы осчастливить ваших клиентов, но не менее важно, чтобы они знали разницу между тем, что ожидается, и тем, что вы им даете в качестве одолжения.
Для компании, в которой вы работаете, вам нужен кто-то, кто будет нести сообщение ...
То есть, они платят вам 60 тысяч в год, чтобы тратить 50% вашего времени на техническую поддержку по телефону, что значительно ниже для оплачиваемой должности. Это опасная тема для обсуждения, поэтому вам нужен PM, которому вы можете доверять, чтобы обосновать ваши интересы. Аргумент, который вы должны сделать ему ...
Или вы, ребята, наняли меня и охотно теряете деньги на эти инвестиции, заставляя меня тратить половину своего времени, занимая низкую должность. Хотите верьте, хотите нет, максимизируя свой потенциал, они могут заработать больше денег в долгосрочной перспективе.
Когда дело доходит до бизнеса, чертовски легко заставить компанию изменить свою позицию, если вы можете представить беспроигрышную ситуацию. Вам не нужно быть мастером переговоров, чтобы придерживаться этого. Конечно, если ресурсы компании ограничены, это может иметь неприятные последствия для вас.
3. Каждый мог иногда использовать чирлидера
Хороший премьер, естественно, будет человеком-человеком. Суть того, что они делают, - это отношения с людьми. Хороший премьер-министр сможет рассказать клиенту то, что он не хочет слышать, и все равно будет радостно уйти.
Они также могут быть отличным источником моральной поддержки в трудные времена. Простое повышение морального духа не должно быть слишком большим для хорошего руководителя, если вы спросите. Вам нужен кто-то на вашей стороне, иначе ваш моральный дух упадет, и работа будет подавляющей.
Если в организации нет никого выше, кто бы отвечал за управление ожиданиями, ваше руководство терпит неудачу, и руководители, вероятно, даже не знают о том, насколько плох проект.
Это главная причина, по которой я избегаю работать на такие корпорации, как чума. Мне повезло работать в небольших компаниях, где у меня есть кто-то выше, я могу честно обсудить проблемы с тем, кто будет придерживаться того, что я хочу сказать, с уверенностью и при необходимости принять меры.
Вам нужен кто-то на вашей стороне, чтобы помочь вам соответствовать бизнес-требованиям и управлять отвлекающими факторами. Если у вас этого нет и нет надежды найти его в будущем, удачи ...
источник
Вау вау вау ! Держи лошадей ковбой! Кажется, у вас там все не так. Вы упускаете некоторые основы программного обеспечения здесь во время кодирования. Да, освежить свои основы ... жизнь будет намного проще.
Вернуться в школу сейчас
источник
Мне нравится составлять список TODO, сортировать его в порядке необходимости и безоговорочно придерживаться этого порядка - даже если мне хочется отложить некоторые задачи.
Вы будете удивлены, сколько времени вы можете сэкономить, просто сократив время, которое вы тратите, задаваясь вопросом, над чем поработать дальше.
источник
Прямо сейчас, что вы можете сделать, это
Это будет означать, что по крайней мере то, что вы делаете с сегодняшнего дня, было одобрено ДВУМЯ людьми, надеющимися улучшить эти кусочки кода.
Что еще можно сделать, зависит от руководства. Вы можете показать им этот вопрос с ответами!
источник
Запретите телефонные звонки и применяйте строгое правило «ошибки идут только в систему отслеживания ошибок». Тогда ваш первый шаг за день - сортировать вновь введенные ошибки, убирать ошибки, расставлять приоритеты и приступать к исправлению ошибок. И убедитесь, что ваши исправления ошибок действительно исправляют ошибку и не вводят новые ошибки.
Как вы делаете эту последнюю часть? Путем переоборудования контрольных примеров в существующий код. Если у вас есть функции, проверьте, что они вводят и выводят то, что вы ожидаете, и что они прекрасно работают, если вы даете им мусор. Используйте своего рода автоматическое тестирование пользовательского интерфейса для тестирования интеграции и производительности.
Вы не встаете с постели в 3 часа ночи, чтобы решить проблемы с кодом, не так ли? Если так, то вы заслуживаете всего, что получаете.
источник
Попробуйте использовать технику Помодоро . Кроме того, у меня есть 3 персональных правила, чтобы знать, пишу ли я хороший или плохой код, который может оказаться полезным.
источник
Вы и такие разработчики, как вы, - единственная причина, по которой я могу подумать, что мне нужна лицензия на разработку программного обеспечения, например, врачи и юристы. Таким образом, ваша лицензия может быть отозвана за несоблюдение минимальных базовых правил программирования. Это не только защитит индустрию от некомпетентности, но и защитит тех компетентных программистов от менеджеров, которые настаивают на том, чтобы их программисты не следовали передовым практикам.
К вашему сведению, практически все работают в сжатые сроки. Тем не менее, те разработчики, которые знают, что они делают, следуют лучшим рекомендациям, потому что это делает работу быстрее в долгосрочной перспективе. Тогда им не нужно работать по 12 часов в день 3 года подряд.
источник