Robert L. Read with Community
Copyright 2002, 2003, 2016 Robert L. Read
Выпущено под лицензией Creative Commons Attribution-ShareAlike 4.0 International License.
Быть хорошим программистом трудно и благородно. Самое сложное в коллективной разработке программного обеспечения это взаимодействие с коллегами и клиентами. Писать компьютерные программы важно и требует многих знаний и навыков, но это лишь детский лепет по сравнению с тем прочим, что хороший программист должен делать, чтобы создать программное обеспечение, успешное как для клиентов, так для множества коллег, за которых он несет частичную ответственность. В данном эссе я попытаюсь как можно более кратко изложить все те нюансы и детали, которые я сам бы хотел, чтобы кто-нибудь мне объяснил, когда мне был двадцать один год.
Это очень субъективная тема, поэтому данное эссе неизбежно будет отражать мои личные взгляды и убеждения. Я ограничу себя проблемами, с которыми, скорее всего, столкнется почти каждый программист во время работы. Многие из них, а также их решения являются настолько общечеловеческими, что вероятно, мой тон покажется назидательным. Несмотря на это, я надеюсь, что эссе окажется полезным.
Программирование преподается на курсах. Великолепные книги The Pragmatic Programmer [Prag99], Code Complete [CodeC93], Rapid Development [RDev96] и Extreme Programming Explained [XP99]: все обучают программированию и более общим вопросам о том, как быть хорошим программистом. До или вместе с данной статьей непременно стоит ознакомиться также с эссе Пола Грехэма [PGSite] и Эрика Рэймонда [Hacker]. Данное эссе слегка отличается от этих великолепных работ тем, что акцентирует внимание на социальных проблемах и обобщает набор навыков, необходимых программисту, с моей личной точки зрения.
В данном эссе я называю "боссом" любого, кто ставит перед вами задачи. Слова "бизнес", "компания" и "клан" я использую как синонимы, кроме тех случаев, когда "бизнес" означает генерирование прибыли, "компания" - место работы, а "клан" - людей, с которыми вы разделяете преданность общему делу или профессии.
Добро пожаловать в клан.
- Начинающий программист
- Личные навыки
- Научитесь отлаживать
- Как отлаживать, разделяя пространство проблемы
- Как устранять баги
- Как отлаживать, используя логи
- Как определять проблемы производительности
- Как устранять проблемы производительности
- Как оптимизировать циклы
- Как справиться с расходами на операции чтения и записи
- Как управлять памятью
- Как устранять плавающие баги
- Как научиться проектировать программы
- Как экспериментировать
- Командные навыки
- Почему важно оценивать задачи
- Как оценивать время на разработку
- Как искать информацию
- Как спрашивать людей
- Как документировать правильно
- Как работать с плохим кодом
- Как использовать системы контроля версий
- Как писать юнит-тесты
- Делайте перерывы, когда вы в тупике
- Как понять, когда идти домой
- Как вести себя с трудными людьми
- Личные навыки
- Программист среднего уровня
- Личные навыки
- Как сохранять мотивацию
- Как заслужить доверие
- Как балансировать процессорное время и память
- Как проводить стресс-тестирование
- Как балансировать краткость и абстракцию
- Как осваивать новые навыки
- Научитесь печатать вслепую
- Как проводить интеграционное тестирование
- Языки взаимодействия систем
- Стандартные технологии
- Как анализировать данные
- Командные навыки
- Экспертиза
- Как балансировать качество и время разработки
- Как управлять зависимостями
- Как оценивать стороннее программное обеспечение
- Как решить: покупать программу или писать свою
- Как расти профессионально
- Как проводить собеседования
- Как понять, когда применять высокие технологии
- Как разговаривать с неинженерами
- Личные навыки
- Продвинутый программист
- Техническая экспертиза
- Правильные компромиссы
- Управление командой
- Как развивать таланты
- Как выбрать, над чем работать
- Как получить наибольшую отдачу от коллег
- Как разделять задачи
- Как распределять скучные задания
- Как получить поддержку для проекта
- Как развивать систему
- Как качественно взаимодействовать
- Как сообщать неприятное
- Как справляться с менеджерскими мифами
- Как справляться с организационным хаосом
- Глоссарий
- Приложение A - Библиография/Список сайтов
- Приложение B - История (на январь 2016)
- Приложение C - Участие в проекте (на январь 2016)
How To Be A Programmer: Community Version by Robert L. Read with Community is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.