10 вещей, которым я научился за 10 лет профессиональной разработки ПО
Перевод [Оригинал]
Читая вчера эту горячую десятку, я подумал, что, возможно, и сам cмогу составить список вещей, о которых я не знал, пока не начал разрабатывать ПО за деньги.
1. Объектное ориентирование гораздо сложнее, чем можно подумать
Может, это только у меня так, но после курса компьютерных наук я было подумал, что ОО — это просто. Я имею в виду, ну что может быть сложного в создании классов, имитирующих реальный мир? Оказалось, что это не так легко. Прошло десять лет, а я всё ещё учусь, как правильно проектировать. Жаль, я не уделял достаточно времени на чтение книг про паттерны... Хорошие навыки проектировщика ценятся в любой девелоперской команде.
2. Одна из самых трудных вещей в разработке — связь
Имеется в виду общение с людьми, а не программирование сокетов. Не сегодня, так завтра ты можешь столкнуться с заковыристой технической проблемой, но это случается не так уж часто. Гораздо чаще получаются непонятки между тобой и руководителем проекта, между тобой и заказчиком, и, наконец, между тобой и другими разработчиками. Привыкай сглаживать такие моменты.
3. Учись говорить «нет»
Когда я только начинал, я был рад услужить всем и каждому. Это означало, что мне было ох как тяжко отказывать людям, которые просили меня сделать то или иное. Я работал сверхурочно, и всё равно не успевал сделать всё. Результатом было недовольство с их стороны, а я сгорал на работе. Если ты никогда не говоришь «нет», твоё «да» стоит очень мало. Откусывай столько, сколько сможешь прожевать, а если тебя просят о большем, то откровенно признавайся им, что это будет подразумевать отказ от выполнения какой-то другой твоей работы. Что делал я — я носил с собой бумажку со списоком вещей, которые нужно выполнить. Когда кто-то просил меня что-то сделать, я показывал ему этот список и спрашивал, что по его мнению можно отложить, чтобы иметь время на помощь ему. Это позволяло мне достаточно изящно говорить «нет».
4. Если всё одинаково важно, то ничто не важно
В нашем деле принято считать, что все фичи являются ключевыми. Это не так. Притормози, пусть сначала решат. Конечно, проще не принуждать начальство выбирать, что тебе надо делать, а что не надо. Наоборот, заставь их выбрать, что ты должен сделать на этой неделе. Это позволит тебе выполнить те вещи, которые имеют самое большое значение. Если всё остальное пойдёт лесом, хотя бы эта часть будет тобой закончена.
5. Не думай над проблемой слишком много
Я могу тратить дни напролёт, проектируя что-то у «белой доски». Это не означает, что результат будет хоть сколько-нибудь лучше — это означает, что результат будет сложнее. Я не пытаюсь сказать, что проектировать вообще не нужно — просто на практике я сразу увижу тонкости, о которых я в любом случае не подумал бы, так зачем гоняться за совершенством? Как сказал Дейв Фарелл (Dave Farell): «Дьявол прячется в деталях, заклинание же против него — в практике, не в теории».
6. Погружайся в дело целиком, но не зависни
Крис и я забрались очень глубоко во внутренности SQL Server. Это было классно, и я в процессе многому научился, но со временем я осознал, что такое многознание на самом деле не слишком помогает решать бизнес-задачи. Пример: я знаю, что на уровне таблицы SQL Server не сделает IU-блокировку — он сделает сразу
7. Изучай остальные части механизма разработки
Очень важно быть классным разработчиком, однако чтобы так же классно стать частью системы, которая разрабатывает ПО, тебе важно понимать, чем занимаются остальные части этой системы. Как работает отдел QA? За что отвечает руководитель проекта? Что делает бизнес-аналитик? Такие знания дадут возможность лучше контактировать с остальными людьми и позволят «смазать» отношения с ними. Чаще проси людей вокруг тебя помочь тебе понять что-то. Какие книги стоит прочесть? Большинство людей будут польщены тем, что ты интересуешься, и с готовностью помогут тебе. Даже немного потраченного на это времени окупается сторицей.
8. Твои коллеги — твои лучшие учителя
Через год после того, как я впервые устроился на работу, мы слились с другой компанией. Неожиданно вокруг меня оказалось множество более талантливых и опытных людей. Я отчетливо помню, как из-за этого я начал чувствовать себя каким-то второсортным и даже тупым. Я много занимался, проглатывал книгу за книгой, но всё равно не дотягивал. Я сделал для себя вывод, что у них слишком большое преимущество передо мной. Теперь же работа бок о бок с выдающимися людьми совсем меня не угнетает. Я просто осознаю, что у меня есть редкий шанс чему-то научиться. Я задаю вопросы и прилагаю максимум усилий, чтобы понять, как мои коллеги пришли к тем выводам, к которым они пришли. Вот почему я присоединился к ThoughtWorks. Увидь в ближних ценность, а не соревнование.
9. Всё сводится к работающему ПО
Не важно, насколько быстры твои алгоритмы, не важно, насколько превосходна структура базы данных, не важно, насколько потрясающе у тебя что бы то ни было — если продукт не удовлетворяет клиента, то продукт ничего не стоит. Сосредоточься на создании работоспособной программы, и в то же время готовься продолжать создавать ПО на базе этого кода — и тогда ты на верном пути.
10. Люди порой козлят
Большую часть времени большая часть людей — прелесть. Ты учишься у них, они учатся у тебя. Делать что-то плечом к плечу очень приятно. К сожалению, ты скорее всего столкнешься с исключениями из этого правила. С людьми, которые по каким-то причинам становятся убогой серой посредственностью. Подленькие начальники. Завравшиеся коллеги. Тупые, невежественные заказчики. Не принимай это близко к сердцу. Обойди это стороной и постарайся скостить неприятности, которые они доставляют, но не обвиняй во всём себя. Пока ты остаёшься честным малым и выкладываешься по полной, ты хорошо играешь свою роль.
15 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.