Еще один день Go-Live. Телефон звонит. Это клиент. Производство упало. У меня болит живот.
Мы обмениваемся некоторыми тонкостями, прежде чем он сразу перейдет к делу - производственная линия остановлена. Я ловлю каждое его слово, пока мои мысли бьются быстрее. Он упоминает об интеграции системы ERP. Я обо всем подумал? Я это тестировал !! Что пошло не так? Звонок завершается, и все, что я могу предложить, - это кроткое «Хорошо, я посмотрю код».
Я в КОМАНДЕ
К счастью, это не обычный день в жизни программиста-одиночки. Так на что это похоже? Отлично (в основном).
Самый приятный аспект - это полный контроль над полным жизненным циклом проекта. От начала до завершения, обладая абсолютной властью над каждым решением.
Все проекты начинаются со сбора требований от клиента. Это может быть простой телефонный звонок или спецификация требований пользователя для более сложных проектов.
С этого момента вы контролируете архитектуру, дизайн и каждую строку кода, которую вы напишете для удовлетворения этих требований. Звучит здорово. Что возможно могло пойти не так?
Много.
Ошибки, которые вы сделаете
В начале своей карьеры я проявил большой интерес к паттернам дизайна. Интерес, который меня поглотил. Я начинал новый проект и решил сделать решительный шаг с помощью шаблонов дизайна и внедрения зависимостей.
Довольно скоро я начал программировать интерфейсы, добавлять фабричные классы, конечные автоматы, объекты команд и связывать зависимости с помощью XML. Я быстро потерял из виду требования клиента и потратил дни на разработку шаблонов и по колено в конфигурации XML.
В то время я не понимал, но мне нужен был коллега, чтобы управлять мной, пока не стало слишком поздно! Но никого не было. Я был архитектором программного обеспечения, программистом, администратором базы данных, менеджером проекта. «Я» в «КОМАНДЕ».
Вы не знаете, чего не знаете
Это верно для каждого программиста. Но откуда у программиста-одиночки появятся новые идеи? Работая в команде, вы гораздо чаще будете сталкиваться с новыми идеями и терминами, с которыми вы не знакомы.
Новые версии платформ, языков и наборов инструментов выпускаются почти ежемесячно. Вы не наткнетесь на них во время разговора в столовой. Столовой нет. Ты летишь вслепую. Вам нужно тратить больше времени на исследования, потому что вы просто не знаете того, чего не знаете.
Сомнение в себе
Сомнение начинает закрадываться. Есть ли лучший способ сделать это? Нет команды или коллеги, с которыми можно было бы обсудить ваши опасения. Нет экспертных оценок.
С другой стороны, сомнение - это форма саморегуляции, а с другой - постоянное нытье. Был бы я лучшим программистом, если бы был частью команды?
Принимая удары
В начале своей карьеры я написал простое настольное приложение, в котором одно приложение генерировало XML-файлы в каталоге, а мое приложение анализировало их и выполняло некоторый анализ, детали которого я давно забыл.
Приложение было написано на VB6. Я прибыл к заказчику. Полный уверенности. Я запустил установщик и перезагрузил компьютер. Вы, наверное, догадались, что произошло дальше.
ПК не загружался.
Я получил свой первый удар. Наступает паника, но, к счастью, длится недолго. Ваш разум начинает бешено бежать, пока вы ищите надежду на причину и возможное решение. Решите проблему, и вы с триумфом ударите в воздух.
Но как этот опыт повлияет на вас в будущем? Считаете ли вы свою способность отладить проблему как победу и пойдете дальше? А как насчет следующего раза? Время после этого?
Ключевые черты одинокого программиста?
Самомотивация - это, прежде всего, самая важная черта программиста-одиночки. В отсутствие подотчетности команды ответственность за то, чтобы оставаться мотивированным и продолжать предоставлять свое лучшее программное обеспечение день за днем, лежит исключительно на вас.
Еще одна важная черта - стойкость. Некоторые дни тяжелее, чем другие. Некоторые клиенты более сложные, требовательные и упрямые.
Компромисс
Lone Programming предлагает полное владение решениями и огромную гордость и удовлетворение от предоставления комплексных решений от начала до конца.
Это не для всех. Есть компромисс - не быть частью успешной команды разработчиков программного обеспечения, которая делится идеями, в которой у каждого члена есть свои уникальные сильные и слабые стороны и набор знаний. Где две головы лучше, чем одна.
А еще есть одиночество.