Упражнение 1: Процесс
Оригинал: Exercise 1: On Process
Переводчик: Wizardforcel
Лицензия: CC BY-NC-SA 4.0
Гордо использует Google Translate
В мире программной разработки существуют два типа процессов. Первый — это командный процесс, который может быть Scrum, агил или экстремальным программированием. Эти процессы предназначены для помощи группе людей в совместной разработке крупных кодовых баз, не мешая друг другу. Командный процесс относится к тому, как люди координируют свои действия, стандартам поведения кода, отчетам и административному надзору. Обычно эти командные процессы сводятся к следующему:
- Создание списка задач
- Выполнение задач из этого списка
- Подтверждение того, что они выполнены правильноОшибкой многих командных процессов является то, что они пытаются контролировать личные процессы, которые лучше всего подходят каждому человеку отдельно. Экстремальное программирование (XP) процесс может быть худшим примером этого, указывая даже на то, что каждый программист имеет наблюдателя, который наблюдает за его работой и кричит ему об ошибках, когда они появляются в текстовом редакторе. Я решительно против таких процессов, которые навязывают элементы личного процесса людям вне образовательной среды. Это оскорбляет нашу профессию, создает авторитарную среду, которая не способствует творчеству или качеству. В образовательной среде требуется, чтобы студенты использовали определенные методы личного процесса, но не в рабочей среде. Например, я требую парного программирования только от тех, кто является начинающим или новым программистом, который нуждается в обучении.Командный процесс должен быть таким, чтобы все могли работать, но им нужно было бы завершить работу на необходимом уровне качества. Другой тип процесса — это личный процесс, который я взял из идей художников, писателей и музыкантов. Как человек, сосредоточенный на качестве своего творчества, я создаю процесс, который поможет вам работать в последовательной манере. На самом деле, характерной чертой любителей-художников, музыкантов или писателей является то, что они не понимают свой процесс. Обычно люди, которые считают себя неблагодарными для творчества, на самом деле являются противоположностью; они просто не осознают этого, поэтому постоянно совершают ошибки. Большинство других творческих областей разрабатывают стратегии, чтобы помочь им создавать завершенные произведения из концепций, не останавливаясь на полпути. Для художников это метод разделения проблемы создания картины на логические шаги, чтобы увеличить вероятность успеха. Для музыкантов это аналогичный процесс, сочетающий баланс подходов, чтобы сохранять структуру выбранного музыкального стиля. Для писателей их процесс представляет собой способ построения своих произведений таким образом, чтобы они были естественно написаны, без пробелов и логических несоответствий (большинство сценаристов телевидения, кажется, совсем этим пренебрегают).Для программного обеспечения ваш личный процесс должен включать следующие задачи:+ Определение осуществимых идей.
- Начало понимания этих идей, проверка того, будут ли они работать, и быстрое их изменение.
- Поэтапное улучшение ваших идей во время многих рабочих сессий для избежания проблем или легкого восстановления.
- Обеспечение качества реализации ваших идей, чтобы вы не были заблокированы ошибками в будущем.
- Обеспечение возможности работы вместе с другими людьми (если вам это нравится).
Обратите внимание, что я говорю, что вы не обязаны работать вместе с другими. С момента появления открытого исходного кода идея создания программного обеспечения включает чрезмерные требования к сообществу. Если вы не хотите делиться или сотрудничать, то вы оскорбляете существование других людей и считаетесь антисоциальным человеком. Однако мало творческих усилий начинается в группах, а те, которые начинаются в группах, обычно не имеют творческого характера. Этот творческий порыв часто возникает, когда один или два человека придумывают идею и воплощают её в жизнь.
Создание конечного продукта, такого как книга, фильм или альбом, может потребовать большой команды. Многие другие творческие действия могут выполняться самостоятельно, например, живопись или большинство видов визуального искусства.Вы никогда не найдете художественную школу, которая требует от художников создавать картины только в группах. Программное обеспечение не является самостоятельной творческой деятельностью, как живопись или писательство, поэтому нет причин для этого. Программное обеспечение — это модульная область знаний, что позволяет вам создавать все самостоятельно; при этом другие люди всё равно могут использовать ваши программы, даже если они никогда не общались с вами или не писали код.Если вы начнете работу по личному процессу, а кто-то попытается сказать вам, что вы должны делиться или являетесь антисоциальным человеком, то они просто высказывают свое мнение. Люди имеют право на приватность и возможность делать свои дела самостоятельно. Те, кто требует вашего участия в больших проектах, зачастую являются теми, кто запускают эти большие проекты и получают выгоду от этого. На данный момент верьте мне, я уже вложил значительные средства в мир программного обеспечения, посещаю конференции, но меня называют неприсоединением, потому что я не пишу код для их проектов (хотя они ни разу не помогли мне ни в чем).
В этой книге, когда я говорю о "процессах", я имею в виду личные процессы. Я редко затрагиваю вопросы сотрудничества с другими людьми, так как существует множество книг, которые рассказывают вам, как вы должны работать вместе. Очень мало книг помогает понять, как следует действовать по своему личному процессу, что именно вы должны делать и почему. Поэтому нет ничего плохого в том, чтобы быть эгоистичным, алчным, антисоциальным или жестоким по отношению к тому, чем вы занимаетесь, поскольку это поможет вам лучше всего справиться со своими любимыми делами.
УпражненияУпражнение состоит в записи ваших мыслей и проблем, которые вы испытываете. На данном этапе вы можете не знать своего способа работы, так как у вас недостаточно опыта. Чтобы помочь вам, я составил список вопросов:+ Возникают ли у вас проблемы при длительной работе над проектом?
- Вы склоняетесь к написанию некачественного кода, но не знаете причин этому?
- Вы интересуетесь программными языками, но никогда не реализуете что-либо?
- Вы забываете API? Я тоже!
- Вы чувствуете себя неловко или как человек, который может быть пойман за то, что он мошенник?
- Вы беспокоитесь о том, является ли вы "настоящим программистом"?
- Вы не знаете, как выбрать идею и превратить её из ничего в код?
- Вы сталкиваетесь с трудностями при входе в проект?
- Вы работаете в хаотической среде?
- Вы завершили первую версию вашего проекта, но не знаете, как продвинуться дальше?
- Вы продолжаете добавлять код сверху до тех пор, пока всё не станет полной кашей?
Подумайте над этими вопросами и попробуйте записать, что вы делаете при работе над проектом. Если у вас нет опыта работы, запишите, что вы считаете необходимым сделать в рамках проекта.
Исследовательское обучение
- Составьте ещё несколько таких вопросов и ответьте на них.
- Обратитесь к другим программистам, которых вы знаете, и спросите их о процессах. Возможно, они сами не знают своих процессов.## Глубинное изучениеНе забывайте, что то, как люди говорят о своих процессах, может сильно отличаться от того, что они действительно делают. Мы склонны запоминать события в более позитивном и логичном свете, чем это было на самом деле. В этой книге вы научитесь преодолеть эту привычку и использовать внешние метрики (например, записи экрана) для определения действий, которые вы выполняете. Это не должно стать вашим постоянным подходом, но поможет вам развивать навыки программирования. Однако, когда вы спрашиваете других более успешных программистов о их процессах, помните, что они могут не делать этого, а значит, то, что они расскажут вам, может не совпадать с тем, что они на самом деле делают. Если вы сможете найти опытного программиста, который согласится записывать свой экран во время работы, это может быть намного более полезным, чем просто спросить его о том, что он делает. Я рекомендую просмотреть записи экрана других программистов и просто наблюдать за тем, как они решают проблемы и делать заметки.
Опубликовать ( 0 )