Часть II . Инвестируя в свой продукт
Какие эквиваленты этим вещам существуют у разработчиков про-
граммного обеспечения? Скажем, как обстоят дела с неясными мо-
ментами твоего основного языка программирования, на которые
ты редко обращаешь внимание? Поддерживает ли выбранный язык
регулярные выражения? Ведь это мощная и катастрофически игнори-
руемая функция многих программных сред. Зачастую разработчики
не пользуются ими просто потому, что им не хватает знаний. Резуль-
татом становится многострочный код, который потом требуется
поддерживать.
Эти же правила применимы к API или к библиотекам функций
выбранного тобой языка. Не научившись работать с многочислен-
ными инструментами окружения, ты вряд ли сможешь применить
их в ситуации, когда они действительно потребуются. Попробуй,
к примеру, разобраться, как функционирует в выбранной среде
разработки многопоточное программирование. А как у тебя об-
стоят дела с библиотеками потоков ввода-вывода, API сетевого
программирования или наборами служебных программ для работы
с коллекциями или списками? Большинство современных языков
программирования предлагает богатые и мощные библиотеки для
всех упомянутых областей, но разработчики предпочитают освоить
только небольшую часть из них, что негативно влияет на эффектив-
ность написания кода.
Чтение с листа
. Для профессиональных музыкантов, записываю-
щихся в студии, способность играть с листа имеет первостепенное
значение. Однажды пришлось принять участие в записи рекламного
ролика для
Blockbuster
(она специализируется на прокате видеокас-
сет). Большой оркестр играл быструю мелодию, а я не только соли-
ровал на саксофоне, но и исполнял партию второго альта. В первый
раз я увидел ноты в момент начала записи. Сначала мы сыграли соли-
рующую партию, потом — сопровождающую. При малейшей ошибке
все музыканты были бы вынуждены начать с начала, и не забывайте
про стоимость аренды студии.
Что для разработчика программного обеспечения означает умение
читать с листа код? Или технические требования? Или проектное
решение? Искать код для подобных упражнений лучше всего в со-
обществах разработчиков ПО с открытым исходным кодом. У тебя
77
Совет 15 . Практика, практика и еще раз практика
есть любимые фрагменты таких программ? Не хочешь попробовать
добавить в них какую-нибудь функцию? Прочитай список задач для
программы, с которой ты хотел бы поработать, и определи конкрет-
ную дату реализации новой функциональной возможности (или хотя
бы прикинь, сколько времени может занять эта реализация).
После этого загрузи код программы и приступай к его анализу. Как
понять, куда следует смотреть? Какими приемами ты пользуешься
для поиска конкретного места в большом фрагменте кода? В какой
точке ты начнешь работу?
Такое упражнение можно делать на время. При этом ты вовсе не
обязан
реально реализовывать выбранную функциональную возмож-
ность. Используй это как отправную точку. На самом деле ты учишься
с максимальной скоростью распознавать, что делает код, на который
ты смотришь. Для каждого следующего упражнения выбирай новую
программу. Попробуй выполнить его с разными типами программы,
написанными в разных стилях и на разных языках. Отмечай моменты,
которые облегчают или затрудняют понимание происходящего. Какие
стандартные действия помогают тебе в работе с кодом? Какие вир-
туальные «хлебные крошки» ты оставляешь себе, чтобы упростить
ориентирование при перемещении вверх и вниз по стеку вызовов
сложной функции?
Импровизация
. Импровизацией называется взятие некой структуры
или ограничения и мгновенное создание на его основе чего-то ново-
го. Как программист, я обнаружил, что чаще всего импровизирую
в моменты стресса.
Ох
,
нет! Сервер приложений в беспроводной сети
перестал работать
,
и мы теряем заказы!
Именно в такие моменты
у меня возникают самые творческие экспромты. Я делаю сумасшед-
шие вещи, такие как восстановление потерянных данных вручную пу-
тем повторной передачи по беспроводной сети пакетов из бинарного
файла системного журнала. Никто не рассчитывает, что ты способен
на подобные вещи, особенно под горячую руку. Такая способность
к резким и быстрым решениям напоминает приходящую на помощь
в нужный момент магическую силу.
Отличным способом заострить свой ум и улучшить способности
к импровизации при написании кода является практика с самосто-
ятельно наложенными ограничениями. Выбери простую программу
78
Do'stlaringiz bilan baham: |