«Руководи мной лучше»: Что сделает работу начинающего программиста эффективнее |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2016-12-28 23:06 Ежедневная работа состоит в основном из рутинных дел, и программисты — не исключение. Но часто именно на таких делах и держатся все проекты. Поэтому руководство рабочими процессами в IT-компаниях или отделах должно включать контроль деятельности сотрудников и напоминание о важности этих дел. Мы в 1cloud считаем, что программисты очень похожи на художников. Так же, как и в сфере искусства, IT-специалисты часто мыслят творчески. И хотя искусство нельзя загонять в какие бы то ни было рамки, правильная постановка задач, мотивация и контроль помогут удержать функционирование компании на плаву. 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, в первом издании своей книги. Лень в конечном счете приводит к экономии времени и денег, что не может не радовать. Повторное использование кода как раз такой случай. Код уже протестирован, все баги известны, поэтому изобретать велосипед смысла нет. Но, конечно, экономия времени и лень во благо технического прогресса — это совсем не то же самое, что откладывать все на последний момент. Важно следить за прогрессом сотрудников и быть уверенным, что они знают меру и помнят про дедлайны. Как и в любой другой профессии достичь мастерства поможет врожденный талант. Который, в свою очередь, любому человеку придется развивать постоянной практикой. Но без упорства, получения опыта, навыков командной работы и любви к своему делу достичь вершин успеха вряд ли получится. Комментарии: |
|