Программист-фанатик - [43]
Программировать безопасно крайне важно. Когда что-то идет не так, качество программного обеспечения подвергается испытаниям. Неизбежно возникают ситуации, реакцию приложения на которые вы не запрограммировали. Аварийные завершения и синие экраны в окончательной версии кода означают, что программист не поработал над ошибками, которые не смог предвидеть.
Любая фальшивая нота находится рядом с верной.
Те же принципы применимы к работе. Ремесленник подвергается испытаниям, когда возникают ошибки. Умение с ними работать является ценным и сложно приобретаемым навыком. Как человек, увлекающийся джазовой импровизацией, я понял, что любая фальшивая нота находится по меньшей мере в одном шаге от верной. Импровизация никогда не будет хорошей, если музыкант, взяв фальшивую ноту, не знает, что ему делать дальше. Когда рядом твоя группа, а впереди публика, эта гадкая нота способна вогнать тебя в полный ступор. Фальшивые ноты бывают даже у мастеров. Но они лихо выходят из положения, и слушатели даже на подозревают, что все произошло спонтанно.
Мы все обречены допускать ошибки на работе. В конце концов, мы всего лишь люди. Мы делаем ошибки в коде, заставляющие клиентов выполнять трассировку стека. Мы загоняем себя в угол критическими дизайнерскими ошибками. Или еще хуже — мы говорим неправду членам нашей группы, начальству и заказчикам. Мы даем невыполнимые обязательства или претендуем на отсутствующие у нас умения. Мы можем случайно дать коллегам неудачный совет по поводу решения технической проблемы, вынудив их впустую потратить время.
Так как все мы делаем ошибки, мы даем право на ошибку другим. И в разумных пределах не судим друг друга за оплошности. Суждение о человеке выносится по тому, как он разбирается с этими неизбежными ошибками.
В случае технической, информационной или проектной ошибки применимы следующие правила.
♦ Озвучивай проблему сразу же, как только ты о ней узнал. Не пытайся ее скрыть. В разработке и тестировании программного обеспечения обнаруженные на ранних стадиях ошибки создают куда меньше проблем, чем ошибки заключительного этапа. Чем раньше ты озвучишь свой промах, тем менее негативные последствия он будет иметь.
♦ Бери вину на себя. Не пытайся найти козла отпущения, даже если у тебя есть хорошая кандидатура на эту роль. Даже если ты не полностью виноват в ситуации, возьми ответственность на себя и двигайся дальше. Важно миновать эту точку как можно быстрее. Проблема должна быть решена. Затянувшийся поиск виноватых только отодвинет этот момент.
♦ Предлагай решение. Если ты его не знаешь, предлагай план поиска решения. Оперируй реальными и конкретными сроками. Если по твоей вине работа группы зашла в тупик, ограничь временные рамки решения проблемы и дай оценку требуемых на устранение проблемы усилий. На этой стадии важны конкретные, достижимые цели, пусть даже небольшие. Они не только инициируют процесс перехода от плохого к хорошему, но и помогут восстановить доверие.
♦ Проси помощи. Даже если вина за возникшую проблему лежит целиком на твоих плечах, не позволяй собственной гордости усугубить ситуацию, отказавшись от помощи. Коллеги, руководство и заказчики увидят тебя в более позитивном свете, если ты сможешь сохранить здравый подход, отставив в сторону эгоистические соображения, пока группа помогает тебе с поиском выхода. Зачастую наше чувство ответственности заставляет взвалить себе на плечи слишком тяжелую ношу и непродуктивно тратить силы, пока кто-нибудь не вмешается в ситуацию.
Вспомни последний случай, когда тебя плохо обслужили в ресторане. Например, ты долго ждал заказ и в конце концов официант принес не то блюдо. Вспомни, как официант отреагировал на твою жалобу.
Стрессовая ситуация дает прекрасную возможность для формирования лояльности.
В данном случае оправдания или попытки обвинить повара являются неверной реакцией. Не стоит ему и уходить, чтобы повторить заказ, после чего стараться не попадаться тебе на глаза, пока ты умираешь с голоду и недоумеваешь, когда же, черт возьми, тебе принесут еду. И уж совершенно точно официанту не нужно ставить на стол не то блюдо, заранее зная, что заказ выполнен неверно, но надеясь, что ты либо не заметишь, либо не станешь жаловаться.
Реакция фирмы в случае допущенной ошибки порой оказывается ключевым фактором в деле формирования (или разрушения) лояльности. Правильная реакция на ошибку может сделать нас более лояльными клиентами, чем мы могли бы быть при отсутствии проблем с сервисом. Вспомни об этом правиле при работе со своими заказчиками, когда тебе случится сделать ошибку.
Совет 30
Умей говорить «нет»
Самый быстрый путь к невыполнению обязательств — непосильные обязательства. Несмотря на очевидность этого утверждения, мы берем их на себя каждый день. Попав в затруднительное положение, мы не хотим разочаровывать начальство и соглашаемся сделать нереальную работу за нереально короткий срок.
Говоря «да», чтобы избежать разочарования, мы попросту врем.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.
Что общего между самыми востребованными профессиями и стремительным увеличением количества информации в мире? Ответ: язык структурированных запросов (SQL). SQL — рабочая лошадка среди языков программирования, основа основ для современного анализа и управления данными. Книга «SQL: быстрое погружение» идеальна для всех, кто ищет новые перспективы карьерного роста; для разработчиков, которые хотят расширить свои навыки и знания в программировании; для любого человека, даже без опыта, кто хочет воспользоваться возможностями будущего, в котором будут править данные.
Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.
Книга "Изучаем Python" - это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и многое другое). Хотите стать программистом? В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную "стрелялку" с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. Если вы решились разобраться в том что такое программирование, не нужно ждать.
Алгоритмы - это всего лишь пошаговые алгоритмы решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузится в глубокую философию гениального Кнута, изучить многостраничные фолианты с доказательствами и обоснованиями, но хотите ли вы тратить на это свое время? Откройте великолепно иллюстрированную книгу и вы сразу поймете, что алгоритмы - это просто. А грокать алгоритмы - это веселое и увлекательное занятие.