- PVSM.RU - https://www.pvsm.ru -

«Руководи мной лучше»: Что сделает работу начинающего программиста эффективнее

Ежедневная работа состоит в основном из рутинных дел, и программисты — не исключение. Но часто именно на таких делах и держатся все проекты. Поэтому руководство рабочими процессами в IT-компаниях или отделах должно включать контроль деятельности сотрудников и напоминание о важности этих дел.

Мы в 1cloud [1] считаем, что программисты очень похожи на художников. Так же, как и в сфере искусства, IT-специалисты часто мыслят творчески. И хотя искусство нельзя загонять в какие бы то ни было рамки, правильная постановка задач, мотивация и контроль помогут удержать функционирование компании на плаву.

«Руководи мной лучше»: Что сделает работу начинающего программиста эффективнее - 1 [2]
/ фото David Goehring [3] CC [4]

1. Постоянное обучение

Современный рынок ИТ-услуг развивается с сумасшедшей скорость, поэтому компании должны быть готовы даже к незапланированным изменениям курса (во всех смыслах этого слова). В этой связи хорошей идеей будет нанимать широкопрофильных специалистов (совсем недавно мы обсуждали различия [5] между «Programmer», «Software Engineer» и «Computer Scientist»).

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

Конечно, для создания отличной программы в конце концов потребуется написать код, но прежде нужно продумать всю концепцию. Этому отлично учат в университете, поэтому не в последнюю очередь стоит обращать внимание на специальное образование соискателей или сотрудников. Они воспринимают программирование как еще и умение размышлять и решать проблемы, что помогает им развиваться в своей профессии и в случае необходимости осваивать любой другой язык или тип программирования (например, функциональное программирование).

Конечно, программист не может знать абсолютно все, но он должен знать, какие инструменты нужно применять в определенных ситуациях. Такие знания также пригодятся не только при выборе языка: когда программист знает, что требуется для решения определенной проблемы, он может выбрать язык с необходимой функциональностью (например, статической или динамической типизацией и т.д.).

Но обучение никогда не заканчивается, программистам приходится учиться всю жизнь, а иногда и учить других: коллег по работе, стажеров и практикантов. Мы можем посоветовать объяснять концепты программирования через другие сферы, более близкие непрофесионалам. Например, лучше понять монаду [6] можно обратившись к философии — сама идея родом из Древней Греции, но многие философы обращались к этому концепту намного позже. А философия Готфрида Лейбница даже называлась «Монадология». Кстати, о связи программирования с другими областями знаний мы уже писали подробно в этой статье.

2. Логическое структурирование работы

Создание продукта (о том, как мы разрабатывали свой продукт [7]), безусловно, заключается не только в том, чтобы написать код, на каждом шагу приходится продумывать очень много вещей начиная от эффективности и сопровождаемости кода, выбора языка и инфраструктуры, структуры базы данных и алгоритмов и заканчивая выбором необходимой стратегии тестирования и развертывания. И ни в коем случае нельзя забывать о логическом аспекте. Хороший прием — сформулировать гипотезу до начала разработки, проверить ее и придерживаться плана действий [8].

Хороший руководитель команды должен уметь ставить правильные вопросы. Например, Джон Л. Миллер (John L. Miller) из Microsoft считает [9], что можно разделить эти вопросы на три группы: Почему..? (Почему надо это делать?) Что, если..? (Что, если у машины закончится память?) и Как..? (Как программа будет вести себя в будущем?) Такой прием помогает двигаться в правильном направлении и видеть картину в целом. Но еще один важный этап — актуальность. Если какие-то условия проекта поменялись, то следует обновить и список таких вопросов.

Кроме того, специалисты советуют не забывать о банальных способах развития логического мышления [10]: любые головоломки (пункты 5 и 1) помогут улучшить навыки решения проблем и научить нестандартно мыслить. Но помимо работы и развития способностей нужно помнить о полноценном отдыхе и даже здоровом питании (о том, как «прокачать» навыки программирования… практически без программирования, мы рассказывали тут [11]).

Давно доказано, что образ жизни влияет на эффективность работы, а повлиять логическое мышление [10] способны даже некоторые продукты. Например, помидор содержит антиоксидант ликопин, который предотвращает вредное воздействие свободных радикалов на организм, что, в свою очередь, улучшает работу мозга [10], память и логику.

3. Работа с чужим кодом

Программисты сталкиваются с кодом, написанным кем-то другим, каждый день. Поэтому, как считает [12] Райан Маттес (Ryan Mattes), разработчик в digital-агентстве Insite Interactive, = настоящим профессионалом является тот, кто способен добавить 300 строк кода к уже написанным 250 тысячам строк, и ничего в нем не сломать. Деятельность разработчика включает не просто написание кода, а разработку концепта и возможности его применения, разделение работы на несколько этапов и более легкие задачи, распределение этих задач по времени.

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

Нельзя забывать и про обучение. Например, на площадках вроде «The Code Player [13]» можно посмотреть весь процесс написания кода для небольших графических элементов. Можно выбрать подходящий вам темп, пересмотреть сложную часть, прочитать описание и комментарии.

4. Комментирование

Польза этой рутинной операции совершенно очевидна, но иногда сотрудникам кажется, что они тратят на это слишком много времени, и некоторые из них просто пренебрегают такой работой. Мэтт Хэммонд (Matt Hammond), совладелец нескольких интернет-платформ, считает [14], что комментирование в первую очередь отражает уважительное отношение к своим коллегам. А, по словам [15] Кристофера Ларкина (Christopher Larkin) из Oracle, комментирование кода занимает не больше 1/10 или 1/20 части времени, затраченного на проект. Скорость и качество комментирования, конечно, тоже приходят с опытом.

Очень важным является читабельность и краткость комментариев. Чтобы улучшить эти характеристики, норвежский разработчик Йермунд Бьонс (Gjermund Bjaanes) предлагает программистам читать [16] больше книг. Он уверен, что чтение художественной литературы формирует умение быстрее воспринимать информацию, лучше и корректнее формулировать сам код и комментарии к нему. Кстати, неплохую подборку книг для программистов не про программирование (от фантастики до философии) можно найти здесь [17].

5. Автоматизация процессов

Программисты часто работают практически 24/7: кто-то занимается своими проектами в свободное от основной работы время, кто-то работает на двух работах или подрабатывает фрилансом. Поэтому еще один важный аспект работы — автоматизация, которая упрощает жизнь, или поиск более коротких путей решения проблемы.

Лень – отличное качество для разработчика. Можно сказать, что были созданы благодаря человеческой лени. Об этом говорил [18] еще Ларри Уолл, автор Perl, в первом издании своей книги. Лень в конечном счете приводит к экономии времени и денег, что не может не радовать.

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

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

Еще немного полезных материалов по теме:

Автор: 1cloud.ru

Источник [22]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/213647

Ссылки в тексте:

[1] 1cloud: https://1cloud.ru/news

[2] Image: https://habrahabr.ru/company/1cloud/blog/316110/

[3] David Goehring: https://www.flickr.com/photos/carbonnyc/6415460111/in/set-72157611159249976/

[4] CC: https://creativecommons.org/licenses/by/2.0/

[5] обсуждали различия: https://habrahabr.ru/company/1cloud/blog/315230/

[6] монаду: https://ru.wikipedia.org/wiki/Монада_(программирование)

[7] как мы разрабатывали свой продукт: https://1cloud.ru/news/how-to-create-iaas-provider

[8] плана действий: https://www.youtube.com/watch?v=SwmkPcrXzXo

[9] считает: https://www.quora.com/What-do-good-programmers-know-or-do-that-lousy-programmers-do-not/answer/John-L-Miller

[10] мышления: http://www.braintools.ru

[11] рассказывали тут: https://habrahabr.ru/company/1cloud/blog/309372/

[12] считает: https://www.quora.com/How-good-is-an-average-professional-programmer/answer/Ryan-Mattes

[13] The Code Player: http://thecodeplayer.com/walkthrough/html-css-ice-cream-cone

[14] считает: https://www.quora.com/What-do-good-programmers-know-or-do-that-lousy-programmers-do-not/answer/Matt-Hammond

[15] словам: https://www.quora.com/What-is-the-difference-between-a-programmer-a-good-programmer-and-a-great-programmer/answer/Christopher-Larkin-6

[16] читать: http://www.codeproject.com/Articles/871731/reasons-why-reading-books-is-important-for-develop

[17] здесь: http://stackoverflow.com/questions/38210/what-non-programming-books-should-programmers-read

[18] говорил: http://wiki.c2.com/?LazinessImpatienceHubris

[19] 6 «вредных» советов разработчику: https://habrahabr.ru/company/1cloud/blog/305352/

[20] Нужно ли руководителю разбираться в программировании: https://habrahabr.ru/company/1cloud/blog/305908/

[21] 13 вещей, которые не стоит говорить разработчикам и тестировщикам: https://habrahabr.ru/company/1cloud/blog/304694/

[22] Источник: https://habrahabr.ru/post/316110/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best