Я писал о технологиях на протяжении многих лет, и я подготовил множество руководств о том, как делать крутые вещи (по моему, по крайней мере, по моему определению) на вашем компьютере. Но за все это время я не уделил никакого внимания тому, как подходить к этим руководствам или каким-либо техническим справочным материалам, на самом деле. Я предположил, что у читателей есть фундамент, необходимый для использования таких ресурсов, как мой.
Однако, как мы все знаем, предположения имеют последствия. Без правильного фундамента даже самое тщательное руководство может оставить место для назойливых переменных. Покрыть каждую из них невозможно, поэтому при наличии достаточного количества мастеров за достаточное время кто-то наткнется на препятствие. Все, что у них есть на данный момент, — это набор когнитивных инструментов.
Это заставило меня осознать, насколько важно установить прочную основу для технических проектов. Я не знаю никого, кто не прошел мимо правильных процедур, чтобы атаковать проект, по крайней мере, сначала. Это относится и ко мне. Даже сейчас я должен сознательно проверять правильность моего процесса.
Моя цель здесь — убедиться, что с этого момента мы делаем все правильно. Я собираюсь научить вас, какие шаги нужно предпринять, в каком порядке и как каждый шаг должен выполняться. Эти шаги будут достаточно общими, чтобы их можно было применять к языкам программирования, системам и даже целым дисциплинам.
Содержание статьи
Путешествие в тысячу байт начинается с одного шага за шагом
Давайте начнем с описания основной последовательности. Позже мы можем вернуться к некоторым из их соображений.
Шаг 1. Составьте каталог всех предметов, которые вам понадобятся. Я говорю «части», потому что это может относиться к буквальным частям для аппаратных проектов или к установленным пакетам для программных. Вы, ремесленник, будете знать, какие части имеют наибольший смысл.
По сути, вы проводите инвентаризацию. Когда вы открываете коробку с мебелью, которую нужно собрать, вы проверяете ее содержимое, прежде чем приступить к сборке, верно? То же самое и здесь. Однако, в отличие от вашей мебели, сделанной своими руками, ваш проект может включать манифест. Вполне вероятно, что первым шагом на этом этапе будет написание манифеста. Как бы то ни было, не двигайтесь дальше, пока не убедитесь, что перечислили каждую атомную единицу от начала до конца.
Шаг 2: Посмотрите, как работают все части. Мы рассмотрим это чуть позже, так как это сложнее, чем кажется. На данный момент просто знайте, что вы захотите обратиться к как можно большему количеству авторитетной документации, чтобы выработать четкое понимание того, как работает каждая часть и как каждая часть соединяется со всеми остальными. Если вы еще этого не сделали, обязательно делайте заметки.
Шаг 3. Определите порядок, в котором элементы должны быть установлены или собраны. Возможно, существует несколько жизнеспособных последовательностей, в которых вы можете собирать детали. Отлично, но на этом этапе вы должны выбрать один и придерживаться его. И здесь только вы будете знать, что выбрать, поскольку это сильно зависит как от вашего проекта, так и от вашего стиля. Однако обязательно строго соблюдайте обязательные условия.
Шаг 4. Напишите пошаговую инструкцию, описывающую то, что вы определили на шаге 3. Это похоже на псевдокод — и если вы занимаетесь реальной разработкой программного обеспечения, это настоящий псевдокод. Псевдокод — это именно то, на что он похож: он выглядит и действует как код, но на самом деле это не так. Обычно это смесь синтаксиса языка программирования с семантикой естественного языка (например, английского). Это что-то среднее между человеком и машиной.
Если вам нужны идеи о том, с чего начать, вы можете посмотреть, написал ли кто-нибудь руководство для вашего проекта. Тем не менее, вы все равно должны написать свой собственный! Онлайн-руководство не может заменить ваше собственное. Это касается даже тех, которые я пишу. Считайте уже существующие руководства отправной точкой и не более того.
При написании руководства после каждого шага, на котором вы «делаете «Что-то, вы должны проверить это с помощью того, что вы только что сделали. Это добавляет в ваш проект инкрементный рабочий процесс. Не двигайтесь дальше, пока тест не пройдет успешно. Это также делает ваш рабочий процесс итеративным, повторяя шаг с частичными изменениями, пока все, что вы построили к этому моменту, не станет надежно выдерживать нагрузку на то, что будет сидеть на нем.
Шаг 5: Подготовьте среду для инструкций, которые вы написали для себя на шаге 4. Думайте об этом, как о ведущем кулинарного шоу, у которого все ингредиенты отмерены, нарезаны и разложены по отдельным мискам, готовые вылить в назначенное время. Это включает в себя открытие всех необходимых страниц руководства и записных книжек, установку программного обеспечения, которое вы будете использовать (но еще не запускаете и не настраиваете его), и вход в любые учетные записи или устройства, которые вам нужны.
Шаг 6: Выполните инструкции шага 4. Вы знаете, что здесь делать — вы убедились в этом на шаге 4.
Важен не размер шага, а то, как его использовать
В ходе описанного выше процесса нам нужно помнить о нескольких моментах.
Внимательно проверяйте достоверность информации, с которой вы обращаетесь. Большая часть технической информации, которую вы найдете в Интернете, неверна, и это связано с суровой экономической реальностью. Технологии приносят прибыль из-за высокого, быстро растущего спроса на технических специалистов на фоне низкого предложения. Чтобы обучить поток честолюбивых технических специалистов, были быстро добыты тонны ресурсов.
Именно здесь вступают в силу рыночные силы. Когда спрос превышает предложение, качество падает, по крайней мере, в краткосрочной перспективе. Более быстрое производство без увеличения ни сырья, ни цен приводит к более низкому качеству. Большинство технических ресурсов остались бесплатными, и сейчас нет больше сырья, чем было раньше, поэтому качество обучения упало.
Но становится еще хуже. Учебные материалы пишутся не только в спешке и для аудитории с более низкой начальной технической грамотностью, но и новые технические работники, обученные этим материалам, становятся новыми «экспертами». Они продолжают писать образовательные ресурсы следующего поколения, и порочный круг снижения качества обучения продолжается.
Качественные справочные материалы есть, но они зарыты все глубже и глубже. По этой причине вам придется определить для себя надежные ресурсы.
Вы можете выполнить несколько проверок источника, чтобы убедиться, что он соответствует надежным стандартам:
- Является ли это коммерческой организацией? Есть хороший шанс, что это не слишком поможет. Многие компании, работающие в сфере высоких технологий, продают товары неосведомленной аудитории. Когда у компаний действительно есть полезные навыки, которыми они могут поделиться, они избегают раздавать их бесплатно — и даже если они у них есть, они могут использовать их иначе, чем вы.
- Является ли ваш источник некоммерческой организацией? Это может быть полезно. Проверьте репутацию организации и проверьте, имеет ли она прямое отношение к оборудованию или программному обеспечению, с которым вы работаете.
- Ваша исходная организация предназначена в первую очередь для обучения? Если это также коммерческая компания, будьте осторожны. Приоритетом для этих компаний зачастую является трудоустройство, а не качество стажеров. Если это некоммерческая обучающая группа, она, скорее всего, солидная. Подобные группы обычно хотят продвигать технологию или развивать область.
- Кто является автором вашего источника? Если автор работает, например, в крупной технологической компании, но предлагает ресурс бесплатно на своем личном сайте, вы, вероятно, можете ему доверять. Короче говоря, всегда думайте о том, кто пишет советы, которые вы читаете, и почему.
Никогда не запускайте код, если вы не уверены в том, что он делает. Это действительно должно быть само собой разумеющимся, но в любом случае это достаточно важно, чтобы сказать. Я почти уверен, что все мы это знаем, но иногда мы слишком ленивы, чтобы действовать в соответствии с этим. Не поленитесь, иначе вы пожалеете.
Написать хороший псевдокод
Качество псевдокода коррелирует с качеством проекта. Ключом к хорошему псевдокоду является максимально возможная детализация. Это называется «разложением».
Чтобы понять, давайте возьмем реальный пример: если кто-то проинструктировал вас приготовить горшок со спагетти, вы, вероятно, из прошлого опыта знаете, что делать. Однако, если подумать, эта задача состоит примерно из десятка предполагаемых шагов. Вам нужно взять пакет макаронных изделий, достать достаточно большой горшок, наполнить его водой… вы поняли.
При создании псевдокода вы должны разбить свой процесс на эти небольшие, казалось бы, очевидные шаги. Это потому, что вы делаете что-то новое и сложное, а не привычное и простое. Если вы разложите процесс на мельчайшие части, степень детализации будет правильной.
Также следует рассмотреть синтаксический элемент.
У каждого атомарного шага должна быть своя линия. Также выделите условные шаги и шаги цикла. Обычно это делается с помощью отступа.
Для условных операторов поместите тестируемое условие на тот же уровень отступа, что и строка выше (если это не цикл или другой условный оператор), и сделайте отступ для каждого шага, который нужно предпринять для выполнения этого условия под ним.
Для операторов цикла поместите условие, при котором цикл повторяется на том же уровне отступа, что и строка выше (если это не условный оператор или другой цикл), и сделайте отступ для каждого шага, который будет выполняться для каждой итерации, под ним.
Иди на расстояние, даже когда устали ноги
Заманчиво срезать углы и выбрать путь, который, наверное, нормально. Не сдавайся. У моего учителя музыки была поговорка в форме самодиагностики: «Насколько хорошо ты был бы, если бы делал все, что должен был делать?» Если вы читаете эту статью, вы потратили часы, чтобы понять, что «правильно». Итак, если вы поступаете неправильно, то это не из-за незнания — вы предпочитаете не делать этого.
Почему?
Да, сначала требуется больше времени, но позже это экономит больше времени, потому что все настроено правильно. Не выбирайте меньшее, чем вы способны, исходя из прихотей момента.