10 вещей, которым я научился за 10 лет профессиональной разработки ПО

Перевод [Оригинал]

Читая вчера эту горячую десятку, я подумал, что, возможно, и сам cмогу составить список вещей, о которых я не знал, пока не начал разрабатывать ПО за деньги.

1. Объектное ориентирование гораздо сложнее, чем можно подумать

Может, это только у меня так, но после курса компьютерных наук я было подумал, что ОО — это просто. Я имею в виду, ну что может быть сложного в создании классов, имитирующих реальный мир? Оказалось, что это не так легко. Прошло десять лет, а я всё ещё учусь, как правильно проектировать. Жаль, я не уделял достаточно времени на чтение книг про паттерны... Хорошие навыки проектировщика ценятся в любой девелоперской команде.

2. Одна из самых трудных вещей в разработке — связь

Имеется в виду общение с людьми, а не программирование сокетов. Не сегодня, так завтра ты можешь столкнуться с заковыристой технической проблемой, но это случается не так уж часто. Гораздо чаще получаются непонятки между тобой и руководителем проекта, между тобой и заказчиком, и, наконец, между тобой и другими разработчиками. Привыкай сглаживать такие моменты.

3. Учись говорить «нет»

Когда я только начинал, я был рад услужить всем и каждому. Это означало, что мне было ох как тяжко отказывать людям, которые просили меня сделать то или иное. Я работал сверхурочно, и всё равно не успевал сделать всё. Результатом было недовольство с их стороны, а я сгорал на работе. Если ты никогда не говоришь «нет», твоё «да» стоит очень мало. Откусывай столько, сколько сможешь прожевать, а если тебя просят о большем, то откровенно признавайся им, что это будет подразумевать отказ от выполнения какой-то другой твоей работы. Что делал я — я носил с собой бумажку со списоком вещей, которые нужно выполнить. Когда кто-то просил меня что-то сделать, я показывал ему этот список и спрашивал, что по его мнению можно отложить, чтобы иметь время на помощь ему. Это позволяло мне достаточно изящно говорить «нет».

4. Если всё одинаково важно, то ничто не важно

В нашем деле принято считать, что все фичи являются ключевыми. Это не так. Притормози, пусть сначала решат. Конечно, проще не принуждать начальство выбирать, что тебе надо делать, а что не надо. Наоборот, заставь их выбрать, что ты должен сделать на этой неделе. Это позволит тебе выполнить те вещи, которые имеют самое большое значение. Если всё остальное пойдёт лесом, хотя бы эта часть будет тобой закончена.

5. Не думай над проблемой слишком много

Top tenЯ могу тратить дни напролёт, проектируя что-то у «белой доски». Это не означает, что результат будет хоть сколько-нибудь лучше — это означает, что результат будет сложнее. Я не пытаюсь сказать, что проектировать вообще не нужно — просто на практике я сразу увижу тонкости, о которых я в любом случае не подумал бы, так зачем гоняться за совершенством? Как сказал Дейв Фарелл (Dave Farell): «Дьявол прячется в деталях, заклинание же против него — в практике, не в теории».

6. Погружайся в дело целиком, но не зависни

Крис и я забрались очень глубоко во внутренности SQL Server. Это было классно, и я в процессе многому научился, но со временем я осознал, что такое многознание на самом деле не слишком помогает решать бизнес-задачи. Пример: я знаю, что на уровне таблицы SQL Server не сделает IU-блокировку — он сделает сразу IX-блокировку. Это такой трюк для увеличения производительности, т.к. в большинстве случаев IU-блокировка будет всё равно доведена до IX-блокировки. Чтобы это обнаружить, я потратил бесчисленные дни на эксперименты, чтение документации и общение на конференциях с ребятами из Microsoft. Воспользовался ли я когда-либо в последствии этими знаниями? Не-а.

7. Изучай остальные части механизма разработки

Очень важно быть классным разработчиком, однако чтобы так же классно стать частью системы, которая разрабатывает ПО, тебе важно понимать, чем занимаются остальные части этой системы. Как работает отдел QA? За что отвечает руководитель проекта? Что делает бизнес-аналитик? Такие знания дадут возможность лучше контактировать с остальными людьми и позволят «смазать» отношения с ними. Чаще проси людей вокруг тебя помочь тебе понять что-то. Какие книги стоит прочесть? Большинство людей будут польщены тем, что ты интересуешься, и с готовностью помогут тебе. Даже немного потраченного на это времени окупается сторицей.

8. Твои коллеги — твои лучшие учителя

Через год после того, как я впервые устроился на работу, мы слились с другой компанией. Неожиданно вокруг меня оказалось множество более талантливых и опытных людей. Я отчетливо помню, как из-за этого я начал чувствовать себя каким-то второсортным и даже тупым. Я много занимался, проглатывал книгу за книгой, но всё равно не дотягивал. Я сделал для себя вывод, что у них слишком большое преимущество передо мной. Теперь же работа бок о бок с выдающимися людьми совсем меня не угнетает. Я просто осознаю, что у меня есть редкий шанс чему-то научиться. Я задаю вопросы и прилагаю максимум усилий, чтобы понять, как мои коллеги пришли к тем выводам, к которым они пришли. Вот почему я присоединился к ThoughtWorks. Увидь в ближних ценность, а не соревнование.

9. Всё сводится к работающему ПО

Не важно, насколько быстры твои алгоритмы, не важно, насколько превосходна структура базы данных, не важно, насколько потрясающе у тебя что бы то ни было — если продукт не удовлетворяет клиента, то продукт ничего не стоит. Сосредоточься на создании работоспособной программы, и в то же время готовься продолжать создавать ПО на базе этого кода — и тогда ты на верном пути.

10. Люди порой козлят

Большую часть времени большая часть людей — прелесть. Ты учишься у них, они учатся у тебя. Делать что-то плечом к плечу очень приятно. К сожалению, ты скорее всего столкнешься с исключениями из этого правила. С людьми, которые по каким-то причинам становятся убогой серой посредственностью. Подленькие начальники. Завравшиеся коллеги. Тупые, невежественные заказчики. Не принимай это близко к сердцу. Обойди это стороной и постарайся скостить неприятности, которые они доставляют, но не обвиняй во всём себя. Пока ты остаёшься честным малым и выкладываешься по полной, ты хорошо играешь свою роль.

LinkedIn

15 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

6. Погружайся в дело целиком, но не зависни

Я считаю, что иногда даже целиком не надо погружаться, а лишь до меры необходимости. Ну конечно, если сильно интересно стало, то да. Но бывают случаи когда много времени уходит именно на эту лишнюю часть работу.

Очень понравилось!

8. Твои коллеги — твои лучшие учителя

Когда я сам дошел до этого, мое отношение к разработке и работе в команде перевернулось.Это было трудно, но я теперь уверен, что это был шаг над собой:)

Статья хорошая.Сейчас эти пункты для меня очевидны. Но путь к пониманию был долог и труден.

Очень понравилось! К некоторым выводам я уже пришел на своем опыте, к остальным тоже доберусь:). Спасибо автору!

Пока ты остаёшься честным малым и выкладываешься по полной, ты хорошо играешь свою роль.Супер!!!

в 11 имелось ввиду «может быть»

«Очень хорошая статья! Особенно пункт 9, о котором многие ОЧЕНЬ талантливые программисты забывают» — это сказал очень талантливый менеджер? Пункт 9 может ох как очень разным от ситуации к ситуации.

прям программистский дзен ребяты... И помните — программист постигший дзен — не рисует интерфейсы, не выпускает документации и его программы не нуждаются в дебаге и тестировании. Его программы идеальны...))

hm... naprimer s punktom 5 ja otkrovenno govorja ne soglasen... esli ty pervoklasnyj arhitektor, ty znaesh, kuda stoit lazit’, a kuda net... i ne nado uvjazat’ v detaljah na etom puti... a vot esli ty malo podumal i na praktike vdrug okazalos’, chto vsja tvoja arhitektura “G”, to u tebja ujdet kucha vremeni, prezhde chem ty perekroish arhitekturu, ne govorja uzhe o tom, chto eto mozhet sluchit’sja ne raz (!) komu interesno, pochitajte chto-nibud’ iz ekstremal’nogo programirovanija, tam mnogie iz etih tem zatronuty:)

Подчеркнул много полезного

Очень честные и открытые заметки, чистый позитив.

Отличная статья! Есть что почерпнуть

Верно написано! Особенно про тупых и невежественных заказчиков. Сам сталкивался не раз, хотя работаю не так уж давно.

Да, парень достаточно искренне и оригинально написал, мне тоже очень понравилось

Класс! Очень хорошая статья! Особенно пункт 9, о котором многие ОЧЕНЬ талантливые программисты забывают: (

Подписаться на комментарии