Все, что люди спрашивают о том, действительно ли вы медлительны, глупы. Стать более быстрым программистом, не жертвуя качеством, всегда хорошая цель, какой бы медленной или быстрой вы ни были. Это моя цель номер 1 как программиста, и я никогда этого не сделаю. Я всегда стараюсь быстрее, не жертвуя качеством, я одержим этим. Вот что сработало для меня до сих пор в порядке полезности, вместе с некоторыми экспериментальными идеями в конце:
1) Никогда не прекращайте учиться: узнайте все, что можете о программировании и использовании компьютеров в целом. Найдите области, в которых вы слабы, и изучите их. Даже если это кажется совершенно не связанным с вашей работой и C #, я гарантирую, что если вы ищете его, вы часто найдете способы применить его к тому, что вы делаете. Обучение также связано с опытом, поэтому не просто читайте материал, но и попробуйте его и расширьте свои навыки. Если вы привыкли использовать Windows, попробуйте Unix или наоборот. Если вы обычно любите использовать IDE, попробуйте инструменты командной строки и текстовые редакторы или наоборот. Если вы слышали об инструменте или технологии, о которых вы раньше не слышали или о которых мало что знаете, не поддавайтесь искушению идти дальше. Поищи это! Не бойтесь мыслить нестандартно и изучать экспериментальные новые технологии, которые другие считают непрактичными;
2) Разбейте проекты: попробуйте разбить свои проекты на мини-проекты. Попытайтесь делать новый выпуск каждый день или не чаще, чем раз в несколько дней. Спросите себя: «Какой минимальный объем функциональности я могу выпустить, и все же выпустить что-то полезное для пользователя». Это навык, который вы выучите, выполнив его. Возможно, вам придется убедить ваших менеджеров позволить вам это сделать, но они, как правило, будут довольны результатами довольно быстро. Делая это, вы начнете замечать, что вещи, которые вы считаете важными для вашей функции, на самом деле являются дополнительными функциями, которые могут быть разработаны позже. Это позволяет вам и вашим менеджерам расставлять приоритеты только для наиболее важных функций вместо всех функций, связанных с той, над которой вы работаете. Это позволяет вам думать быстрее, сохраняя ясность и сосредоточенность. Вы в свою очередь законно будете программировать быстрее. Ваши менеджеры или, по крайней мере, менеджеры вашего менеджера, вероятно, также поймут, что вы сейчас программируете даже быстрее, чем на самом деле, потому что вы выпускаете больше релизов. Еще одним огромным преимуществом этого является то, что вы будете гораздо лучше оценивать, сколько времени потребуется для завершения релизов, и ваши менеджеры будут любить вас за это. Поскольку вы уже проводите много автоматизированного тестирования, у вас не должно возникнуть проблем с выполнением стабильных стабильных выпусков. Возможно, вам придется усилить вашу автоматизированную систему сборки. Я настоятельно рекомендую прочитать книгу «Непрерывная доставка» в серии Мартина Фаулера. Это трудно читать, потому что это чрезвычайно повторяющееся, но все же очень полезное. Менеджеры также, вероятно, поймут, что вы сейчас программируете даже быстрее, чем на самом деле, потому что вы выпускаете больше релизов. Еще одним огромным преимуществом этого является то, что вы будете гораздо лучше оценивать, сколько времени потребуется для завершения релизов, и ваши менеджеры будут любить вас за это. Поскольку вы уже проводите много автоматизированного тестирования, у вас не должно возникнуть проблем с выполнением стабильных стабильных выпусков. Возможно, вам придется усилить вашу автоматизированную систему сборки. Я настоятельно рекомендую прочитать книгу «Непрерывная доставка» в серии Мартина Фаулера. Это трудно читать, потому что это чрезвычайно повторяющееся, но все же очень полезное. Менеджеры также, вероятно, поймут, что вы сейчас программируете даже быстрее, чем на самом деле, потому что вы выпускаете больше релизов. Еще одним огромным преимуществом этого является то, что вы будете гораздо лучше оценивать, сколько времени потребуется для завершения релизов, и ваши менеджеры будут любить вас за это. Поскольку вы уже проводите много автоматизированного тестирования, у вас не должно возникнуть проблем с выполнением стабильных стабильных выпусков. Возможно, вам придется усилить вашу автоматизированную систему сборки. Я настоятельно рекомендую прочитать книгу «Непрерывная доставка» в серии Мартина Фаулера. Это трудно читать, потому что это чрезвычайно повторяющееся, но все же очень полезное. и ваши менеджеры будут любить вас за это. Поскольку вы уже проводите много автоматизированного тестирования, у вас не должно возникнуть проблем с выполнением стабильных стабильных выпусков. Возможно, вам придется усилить вашу автоматизированную систему сборки. Я настоятельно рекомендую прочитать книгу «Непрерывная доставка» в серии Мартина Фаулера. Это трудно читать, потому что это чрезвычайно повторяющееся, но все же очень полезное. и ваши менеджеры будут любить вас за это. Поскольку вы уже проводите много автоматизированного тестирования, у вас не должно возникнуть проблем с выполнением стабильных стабильных выпусков. Возможно, вам придется усилить вашу автоматизированную систему сборки. Я настоятельно рекомендую прочитать книгу «Непрерывная доставка» в серии Мартина Фаулера. Это трудно читать, потому что это чрезвычайно повторяющееся, но все же очень полезное.
3) Используйте технику pomodoro и адаптируйте / измените то, что вам не подходит. Если вы объедините это с номером 2 в этом списке, вы получите ОГРОМНОЕ повышение производительности.
4) Изучите Vim. Даже если вы в конечном итоге будете использовать эти команды в Visual Studio через ViEmu, или из Eclipse через плагин, или из Emacs, вы получите повышение производительности. Лучший способ изучить Vim - это начать использовать его и заставить себя никогда (отключать его / возвращаться к старым инструментам), пока вы не овладеете им. Сначала это больно, но вам никогда не захочется отступать, и даже съеживаться, когда вам приходится работать без него. Кто-то скажет, что это не сильно увеличит вашу скорость. Но быстрее - быстрее, особенно когда чтение и изменение кода - это то, ЧТО МЫ ДЕЛАЕМ, и я иногда экономлю время на этом.
5) Последний вариант не обязательно рекомендуется, так как я не уверен, что это хорошая идея, и она может фактически снизить вашу производительность, но я все равно справлюсь с этим. Вы можете попытаться сделать больше приемочных тестов и меньше юнит-тестов, или, по крайней мере, убедиться, что вы делаете некоторые приемочные тесты. У меня был успех с SpecFlow, но я подозреваю, что есть что-то лучшее там. Даже написание спецификаций может быть довольно техническим, поэтому вам может потребоваться, чтобы ваш менеджер / клиент сначала написал черновую версию, в которую вы вносите существенные изменения, или вы можете написать все самостоятельно, просто прочитав их и подтвердив. Это поможет вам с номером 2 из этого списка. Также приемочные тесты могут быть более практичными и требуют меньше кода, чем модульные тесты. Нельзя сказать, что они заменяют их, разные инструменты для разных вещей.
6) Этот еще более экспериментальный и противоречивый. Я на самом деле не сделал это сам, поэтому я не могу точно рекомендовать это. Изучите и используйте систему метапрограммирования от JetBrains. Используйте его для создания инструментов, которые ваш менеджер / клиент использует для создания нужного программного обеспечения. Возможно, вы даже сможете прекратить выполнение модульных и приемочных тестов, если сможете использовать их для создания инструментов, которые ваш менеджер / клиент использует для определения поведения очень простым и не запутанным способом. Идея не в том, чтобы избавиться от программиста. Программистам по-прежнему необходимо добавлять новые функции в эти инструменты, используемые клиентом / менеджером, всякий раз, когда они (люди, а не инструменты) не могут легко создать желаемую функциональность. Я верю, что MPS или другие подобные ему инструменты - путь будущего.