Совет 11 Учимся ловить рыбу
Совет 11
Учимся ловить рыбу
Лао-цзы сказал: «Дай человеку рыбу, и он будет сыт целый день. Научи его ловить рыбу, и он будет сыт всю жизнь». При всей верности этой поговорки Лао-цзы не учел, что бывают люди, не желающие учиться ловить рыбу. Такой человек предпочтет на следующий день попросить еще одну рыбу. В процессе обучения задействованы как учитель, так и ученик. Но многие из нас зачастую не испытывают желания учиться.
Не жди, пока тебе расскажут. Спрашивай сам!
Что в индустрии ПО считать рыбой? Процесс работы с инструментом, некий аспект технологии или некую информацию из бизнес-отрасли, в которой ты работаешь. Умение проверить определенную часть системы управления исходным кодом, с которой работает твоя команда, или настроить сервер приложения. Многие из нас считают все эти мелочи само собой разумеющимися и считают, что с ними обязательно справится кто-то другой. В системе управления версиями разбирается парень, отвечающий за сборку проекта. Достаточно попросить его все настроить, когда возникнет такая необходимость. Группа, отвечающая за поддержку инфраструктуры, умеет настраивать брандмауэры между вами и заказчиками. Поэтому, если появится такая нужда, достаточно отправить им письмо по электронной почте, и они обо всем позаботятся.
Кто хочет зависеть от милостей другого человека? Или поставим вопрос более жестко: ты бы согласился нанять на работу человека, зависящего от целой группы специалистов? Лично я отвечаю на этот вопрос отрицательно. И предпочитаю сотрудников, способных к самостоятельным действиям.
Очевидно, что первым делом следует изучить инструменты, необходимые для выполнения непосредственных обязанностей. Например, такой мощный инструмент, как система управления версиями. Он позволяет разработчикам повысить продуктивность своего труда. Это не просто место для кода, с которым ты закончил работать, ни в коем случае не следует воспринимать эту систему подобным образом. Она является неотъемлемой частью разработки. И столь важная вещь — надежное хранилище твоей работы — не должна быть для тебя загадкой. Самодостаточный разработчик легко обнаружит разницу между той версией проекта, над которой он работает, и последней корректной версией из хранилища. А представь, что тебе нужно взять последний выпущенный код и исправить там ошибку. Обнаружив существенную ошибку посреди ночи, ты вряд ли захочешь кому-то звонить и просить дать тебе корректную версию, чтобы приступить к устранению неполадок. Все то же самое можно сказать о средах разработки, операционных системах и практически каждом фрагменте инфраструктуры, на которой базируется твой код.
Не менее важной является используемая тобой технологическая платформа. Например, ты можешь разрабатывать приложения с помощью J2EE. Тебе приходится создавать различные классы, интерфейсы и дескрипторы развертывания. Можешь ответить на вопрос: зачем? Знаешь, как применяются все эти вещи? Что происходит при запуске J2EE-контейнера? Даже если ты не являешься разработчиком сервера приложений, знание всех этих вещей позволит тебе писать надежный код для этой платформы и устранять неисправности, когда что-то идет не так.
Особенно располагают к лени различные модули, генерирующие за тебя код. Они весьма распространены среди Windows-разработчиков, так как Microsoft создала множество инструментов, предельно упрощающих решение многих задач. Оборотной стороной этого удобства стало появление множества разработчиков, не имеющих понятия о принципах работы своего кода. Происходящее внутри того или иного модуля остается для них мистической тайной. Не пойми меня неправильно — генерация кода может быть весьма полезной. Ведь именно она позволяет перевести высокоуровневый код C# в байтовый код, запускаемый в среде исполнения .NET. Не думаю, что тебе понравилось бы писать такой код вручную. Но применение высокоуровневых мастеров и модулей не способствует углублению твоих знаний. В итоге твои навыки ограничиваются умением работать с имеющимся инструментарием.
В бизнесе, с которым связана наша деятельность, также можно легко проглядеть рыбу. Например, сотрудник ипотечной компании может попросить специалиста рассчитать процентную ставку для всех необходимых при тестировании сценариев, а может рассчитать ее самостоятельно. Хотя взаимодействие с клиентом приветствуется, как и согласование с ним бизнес-требований (в противовес недопониманию и самостоятельным попыткам нарисовать полную картину), только представь, насколько быстрее ты смог бы двигаться вперед, разбираясь в специфике бизнеса, на который работаешь. Разумеется, весь деловой регламент ты вряд ли выучишь, да это и не нужно. Но ничто не мешает разобраться в основах. Вспоминая лучших программистов, с которыми мне довелось поработать за прошедшие годы, могу сказать, что многие из них разбирались в бизнесе лучше, чем некоторые из их заказчиков. Это улучшило результаты их труда. Не знакомый с особенностями конкретного бизнеса человек легко допускает глупые ошибки, которых легко можно было бы избежать, обладая базовыми представлениями о том, в какой сфере ты работаешь. Более того, такой человек выполняет свои обязанности медленнее (и в конечном счете стоит компании дороже), чем аналогичный разработчик, разбирающийся в бизнесе.
Мы, разработчики программного обеспечения, можем перефразировать высказывание Лао-цзы так: «Попроси рыбу, и будешь сыт один день. Попроси кого-то научить тебя ловить рыбу, и будешь сыт всю жизнь». Но лучше не просить кого-то, а взять и научиться самостоятельно.
Действуй!
1. Как и почему? Прямо сейчас после прочтения данного раздела или в следующий раз на работе подумай о тех аспектах своей деятельности, которые ты не до конца понимаешь. Для погружения в непонятную сферу можно задать себе два крайне полезных вопроса: Как это работает? и Почему это происходит (или должно происходить)?
Возможно, ты даже не сможешь на них ответить, но сам факт постановки подобных вопросов приведет твой ум в новое состояние и поможет лучше осознать твое рабочее окружение. Как IIS-сервер передает запросы твоим ASPNET-страницам? Зачем генерировать все эти интерфейсы и дескрипторы развертывания для твоих EJB-приложений? В чем разница в работе компилятора при динамическом и статическом подключении? Почему для заказчиков из Монтаны сумма налога вычисляется по-другому?
Разумеется, ответ на любой из этих вопросов даст тебе потенциальную возможность снова задать подобный же вопрос. Как только вопросы как и почему иссякнут, можно считать, что ты достаточно углубился в тему.
2. Немного времени. Выбери в своем инструментарии важный, но игнорируемый инструмент и сосредоточься на нем. Это может быть твоя система управления версиями, библиотека, которой ты активно пользуешься, но не имеешь представления о том, как она устроена, или даже редактор, применяемый при написании кода.
Ежедневно выделяй немного времени, чтобы изучить очередной аспект выбранного инструмента, позволяющий повысить продуктивность твоей деятельности или лучше контролировать среду разработки. Например, ты можешь выбрать для изучения командную оболочку Bourne Again Shell операционной системы GNU. Когда в очередной раз твой ум начнет уходить в сторону от рабочих задач, вместо загрузки привычного новостного сайта поищи в интернете советы по bash. В течение минуты-другой ты обязательно найдешь новую для себя полезную информацию по работе с этой оболочкой. А узнав новый прием, начинай препарировать его с помощью вопросов как и почему.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Глава 18 ICQ — учимся пользоваться
Глава 18 ICQ — учимся пользоваться Что такое ICQ? Это еще одна программа, которая также работает при подключении к сети, но при этом не упомянуть о ней мы не можем! Программа используется по всему миру и позволяет легко и быстро находить собеседников и общаться в режиме чата.
Глава 20 Подключаем принтер, учимся его использовать
Глава 20 Подключаем принтер, учимся его использовать Естественно вывести на бумагу то, что сидит внутри компьютера. Как? Какой принтер предпочесть? Какая у них разница? Принцип работы этих устройств, стоимость, надежность — как выбрать хороший принтер? Давайте
Глава 21 Подключаем сканер, учимся его использовать
Глава 21 Подключаем сканер, учимся его использовать Вы купили сканер. Перед этим вы должны были решить для чего он вам. Сканер нужен для ввода в компьютер бумажной документации (оцифровка документов, чертежей, графиков, распознавания текста).Если сканер нужен лишь для
Учимся говорить «да»
Учимся говорить «да» Я попросил Роя разрешение на публикацию этой статьи, потому что она задела меня за живое. Я долго объяснял, как научиться говорить «нет». Однако не менее важно научиться говорить
Учимся считать
Учимся считать В январе 1996 года Ларри, Сергей и другие студенты курса «компьютерные технологии» вместе с преподавателями переехали в красивое четырехэтажное каменное здание, надпись над входом которого гласила: «William gates computer science». Глава Microsoft выделил на сооружение
31. Учимся продвигать чужие ресурсы и зарабатываем на них
31. Учимся продвигать чужие ресурсы и зарабатываем на них Еще один интересный вид заработка в сети – продвижении и раскрутка сайтов на заказ. Этот вид заработка тоже имеет свои особенности и поэтому подойдет не каждому.Как же добиться успеха в этом бизнесе? В сети
32. Учимся зарабатывать на купонных сайтах
32. Учимся зарабатывать на купонных сайтах Купонные сайты в Рунете стали появляться в 2008 году, а на данный момент их существует уже великое множество. Успешность всех этих проектов объясняется просто: люди обожают скидки. На купонных сайтах можно приобрести товар или
§ 110. Учимся делить на два
§ 110. Учимся делить на два 21 ноября 2004Любой интерфейс можно упростить в два раза.Рассмотрим в качестве примера очень простой интерфейс — фантастический пульт из рекламы телеканала РБК-ТВ. Рекламная полоса РБК-ТВ, Мария Вознесенская. 2003Грамматические и пунктуационные
§ 111. Учимся умножать на два
§ 111. Учимся умножать на два 27 февраля 2005Любой интерфейс можно усложнить в два раза. Как правило, делается это для однозначности, надежности или «защиты от дурака».Упрощать интерфейсы просто (см. предыдущий параграф) — две «а» можно заменить на одну.Простейший пример
Часть 3. Пишем рыбу.
Часть 3. Пишем рыбу. 3.1. Итак, приступим. Вы можете проследить за последовательностью и содержанием действий, открыв файл main.asm для просмотра.Начнём, пожалуй, так:.586p ; Процессор Intel Pentium, разрешены инструкции защищённого режима.model flat, stdcall ; Здесь всё ясно. Плоская модель
5.2. Учимся двухмерному видению
5.2. Учимся двухмерному видению Трехмерный мир, который вы поймали в видоискатель, необходимо научиться видеть двухмерным. Не отвлекайтесь на третье измерение, а постарайтесь увидеть выбранный вами кадр таким, каким он будет выглядеть на плоской фотографии. Прежде всего
2.6. Учимся читать конфигурации компьютеров
2.6. Учимся читать конфигурации компьютеров Рассмотрим типичную конфигурацию компьютера, которую могут указать в рекламных объявлениях в газетах и журналах:IP4 3.2G/1.0 GB/i945/200GB SATA/DVD-RW/ 256MB nVidia 7600/17" LCDДанная запись говорит о том, что продается компьютер с процессором Intel Pentium IV с
4.2. Учимся читать комбинации клавиш
4.2. Учимся читать комбинации клавиш Чтобы постоянно не писать «Нажмите клавишу Ctrl, не отпуская ее, нажмите клавишу X, а потом отпустите обе клавиши», в компьютерной литературе принято обозначать такую комбинацию кратко: Ctrl+X.Вот несколько примеров комбинаций клавиш:Ctrl+Alt+Del
4.4. Учимся работать с мышью
4.4. Учимся работать с мышью 4.4.1. Указатель мыши Основное внимание при работе с мышью уделяется ее указателю. Обычно он имеет вид стрелки, но в зависимости от ситуации (рис. 33) может принимать другие значения. Например, когда система занята и нужно подождать некоторое время,
8.2. Paint: учимся рисовать
8.2. Paint: учимся рисовать 8.2.1. Растровая и векторная графика Paint— это простейший графический редактор, позволяющий создавать и редактировать примитивные графические изображения (рис. 67). Paint вряд ли можно использовать для профессиональной работы с графическими