«Руководи мной лучше»: Что сделает работу начинающего программиста эффективнее
Ежедневная работа состоит в основном из рутинных дел, и программисты — не исключение. Но часто именно на таких делах и держатся все проекты. Поэтому руководство рабочими процессами в IT-компаниях или отделах должно включать контроль деятельности сотрудников и напоминание о важности этих дел.
Мы в 1cloud считаем, что программисты очень похожи на художников. Так же, как и в сфере искусства, IT-специалисты часто мыслят творчески. И хотя искусство нельзя загонять в какие бы то ни было рамки, правильная постановка задач, мотивация и контроль помогут удержать функционирование компании на плаву.
/ фото David Goehring CC
1. Постоянное обучение
Современный рынок ИТ-услуг развивается с сумасшедшей скорость, поэтому компании должны быть готовы даже к незапланированным изменениям курса (во всех смыслах этого слова). В этой связи хорошей идеей будет нанимать широкопрофильных специалистов (совсем недавно мы обсуждали различия между «Programmer», «Software Engineer» и «Computer Scientist»).
Настоящий профессионал должен иметь широкий кругозор и разбираться не только в своей узкой сфере, но и иметь знания об операционных системах, распределенных вычислениях, компьютерных сетях и безопасности, структуре данных и теории алгоритмов, не говоря о каком-то основном языке программирования.
Конечно, для создания отличной программы в конце концов потребуется написать код, но прежде нужно продумать всю концепцию. Этому отлично учат в университете, поэтому не в последнюю очередь стоит обращать внимание на специальное образование соискателей или сотрудников. Они воспринимают программирование как еще и умение размышлять и решать проблемы, что помогает им развиваться в своей профессии и в случае необходимости осваивать любой другой язык или тип программирования (например, функциональное программирование).
Конечно, программист не может знать абсолютно все, но он должен знать, какие инструменты нужно применять в определенных ситуациях. Такие знания также пригодятся не только при выборе языка: когда программист знает, что требуется для решения определенной проблемы, он может выбрать язык с необходимой функциональностью (например, статической или динамической типизацией и т.д.).
Но обучение никогда не заканчивается, программистам приходится учиться всю жизнь, а иногда и учить других: коллег по работе, стажеров и практикантов. Мы можем посоветовать объяснять концепты программирования через другие сферы, более близкие непрофесионалам. Например, лучше понять монаду можно обратившись к философии — сама идея родом из Древней Греции, но многие философы обращались к этому концепту намного позже. А философия Готфрида Лейбница даже называлась «Монадология». Кстати, о связи программирования с другими областями знаний мы уже писали подробно в этой статье.
2. Логическое структурирование работы
Создание продукта (о том, как мы разрабатывали свой продукт), безусловно, заключается не только в том, чтобы написать код, на каждом шагу приходится продумывать очень много вещей начиная от эффективности и сопровождаемости кода, выбора языка и инфраструктуры, структуры базы данных и алгоритмов и заканчивая выбором необходимой стратегии тестирования и развертывания. И ни в коем случае нельзя забывать о логическом аспекте. Хороший прием — сформулировать гипотезу до начала разработки, проверить ее и придерживаться плана действий.
Хороший руководитель команды должен уметь ставить правильные вопросы. Например, Джон Л. Миллер (John L. Miller) из Microsoft считает, что можно разделить эти вопросы на три группы: Почему..? (Почему надо это делать?) Что, если..? (Что, если у машины закончится память?) и Как..? (Как программа будет вести себя в будущем?) Такой прием помогает двигаться в правильном направлении и видеть картину в целом. Но еще один важный этап — актуальность. Если какие-то условия проекта поменялись, то следует обновить и список таких вопросов.
Кроме того, специалисты советуют не забывать о банальных способах развития логического мышления: любые головоломки (пункты 5 и 1) помогут улучшить навыки решения проблем и научить нестандартно мыслить. Но помимо работы и развития способностей нужно помнить о полноценном отдыхе и даже здоровом питании (о том, как «прокачать» навыки программирования… практически без программирования, мы рассказывали тут).
Давно доказано, что образ жизни влияет на эффективность работы, а повлиять логическое мышление способны даже некоторые продукты. Например, помидор содержит антиоксидант ликопин, который предотвращает вредное воздействие свободных радикалов на организм, что, в свою очередь, улучшает работу мозга, память и логику.
3. Работа с чужим кодом
Программисты сталкиваются с кодом, написанным кем-то другим, каждый день. Поэтому, как считает Райан Маттес (Ryan Mattes), разработчик в digital-агентстве Insite Interactive, = настоящим профессионалом является тот, кто способен добавить 300 строк кода к уже написанным 250 тысячам строк, и ничего в нем не сломать. Деятельность разработчика включает не просто написание кода, а разработку концепта и возможности его применения, разделение работы на несколько этапов и более легкие задачи, распределение этих задач по времени.
Несмотря на всю рутинность, работа с чужим кодом — отличная тренировка и упражнение. Но автоматизм приходит лишь с опытом, начинать нужно просто с чтения и понимания. Затем можно переходить к анализу использованных решений, устранения багов. А последний этап такого упражнения — доработка кода и его улучшение.
Нельзя забывать и про обучение. Например, на площадках вроде «The Code Player» можно посмотреть весь процесс написания кода для небольших графических элементов. Можно выбрать подходящий вам темп, пересмотреть сложную часть, прочитать описание и комментарии.
4. Комментирование
Польза этой рутинной операции совершенно очевидна, но иногда сотрудникам кажется, что они тратят на это слишком много времени, и некоторые из них просто пренебрегают такой работой. Мэтт Хэммонд (Matt Hammond), совладелец нескольких интернет-платформ, считает, что комментирование в первую очередь отражает уважительное отношение к своим коллегам. А, по словам Кристофера Ларкина (Christopher Larkin) из Oracle, комментирование кода занимает не больше 1/10 или 1/20 части времени, затраченного на проект. Скорость и качество комментирования, конечно, тоже приходят с опытом.
Очень важным является читабельность и краткость комментариев. Чтобы улучшить эти характеристики, норвежский разработчик Йермунд Бьонс (Gjermund Bjaanes) предлагает программистам читать больше книг. Он уверен, что чтение художественной литературы формирует умение быстрее воспринимать информацию, лучше и корректнее формулировать сам код и комментарии к нему. Кстати, неплохую подборку книг для программистов не про программирование (от фантастики до философии) можно найти здесь.
5. Автоматизация процессов
Программисты часто работают практически 24/7: кто-то занимается своими проектами в свободное от основной работы время, кто-то работает на двух работах или подрабатывает фрилансом. Поэтому еще один важный аспект работы — автоматизация, которая упрощает жизнь, или поиск более коротких путей решения проблемы.
Лень – отличное качество для разработчика. Можно сказать, что были созданы благодаря человеческой лени. Об этом говорил еще Ларри Уолл, автор Perl, в первом издании своей книги. Лень в конечном счете приводит к экономии времени и денег, что не может не радовать.
Повторное использование кода как раз такой случай. Код уже протестирован, все баги известны, поэтому изобретать велосипед смысла нет. Но, конечно, экономия времени и лень во благо технического прогресса — это совсем не то же самое, что откладывать все на последний момент. Важно следить за прогрессом сотрудников и быть уверенным, что они знают меру и помнят про дедлайны.
Как и в любой другой профессии достичь мастерства поможет врожденный талант. Который, в свою очередь, любому человеку придется развивать постоянной практикой. Но без упорства, получения опыта, навыков командной работы и любви к своему делу достичь вершин успеха вряд ли получится.
Еще немного полезных материалов по теме:
- 6 «вредных» советов разработчику
- Нужно ли руководителю разбираться в программировании
- 13 вещей, которые не стоит говорить разработчикам и тестировщикам
Автор: