Многие программисты считают себя хорошими профессионалами в своей области. В некоторых случаях это правда. Единственная проблема заключается в том, что для разных людей быть хорошим программистом означает разные вещи. Давайте подумаем о том, что делает программиста экспертом в своем деле, какими качествами он должен обладать?
Согласно исследованию, проведенному Evans Data Corporation, в мире насчитывается 23 миллиона профессиональных разработчиков. Это огромное сообщество. Сколько ее членов можно назвать хорошими программистами? К сожалению, мы никогда не узнаем наверняка. Достоверных данных на этот счет нет. Можно ли вообще их проводить? Это вопрос для ученых; мы можем только предположить, что хороший программист должен обладать определенными качествами. Мы приняли вызов, чтобы выяснить, что эти качества из себя представляют. Очевидно, что хороший разработчик должен обладать знаниями в области программирования и новейших технологий. Но что же еще? После нескольких часов размышлений мы пришли к выводу, что он должен:
Сосредоточьтесь на развитии
Обширные знания и навыки программирования — это одно, но разработчик должен сосредоточиться на постоянном развитии. Как показывает статистика Stack Overflow, более 76% профессиональных программистов имеют высшее образование. Для любого, кто стремится к званию хорошего программиста, это только первый шаг. 91,1% профессиональных разработчиков регулярно совершенствуют свои знания. 46,6% из них посещают курсы, организованные работодателем или найденные в другом месте. 44,1% заканчивают онлайн-курсы и более 25% тренируют свои навыки программирования во время хакатонов и конкурсов для кодеров.
Многие люди заканчивают свое саморазвитие сразу после окончания университета или школы, но хороший программист не должен быть одним из них. Такой подход к образованию лучше всего характеризует термин «непрерывное обучение». Средства, которые разработчик выбирает для самообразования, зависят только от него. Хороший программист обладает инстинктом поиска знаний, и он осознает, что они постоянно меняются. Роберт Мартин писал в «чистом программисте», что вы должны отдавать 40 часов в неделю своему работодателю и тратить 20 часов на чтение, обучение и практику. Мартин также предупреждает программистов, что они не должны прекращать изучать новые языки, если хотят оставаться на вершине. Хороший разработчик будет регулярно проверять уровень своих знаний и навыков.
Цените время
Профессионал ценит свое время. Хороший программист не может позволить себе тратить его впустую, и именно поэтому он может уважать время других людей. На практике все сводится к мудрому и эффективному тайм-менеджменту и тщательному планированию ваших задач, а также к использованию минимального количества ресурсов. Например, гораздо эффективнее позвонить клиенту, а не отправлять бесконечные электронные письма. Вы также не должны делать самые важные и трудоемкие задачи в последний момент. Существуют различные методы, которые помогут вам организовать свое время, такие как pomodoro (установка таймера на 25 минут и в течение этого периода сосредоточение внимания только на одной конкретной задаче), 5S (пять правил для правильно организованного рабочего места, которые повысят вашу производительность) или Scrum-методология (разделение работы на более мелкие этапы: запланированный, незавершенный, проверенный, срочный, завершенный).
Хороший программист не теряет времени даром. Он способен оценить его в соответствии с каждым проектом и тщательно планирует задачи. Профессионал – это тот, кто избегает суеты. Когда он видит плохо подготовленный код, то немедленно меняет его, потому что знает, что в конечном итоге ему придется это сделать. Важно отметить, что хороший программист не позволяет оказывать на себя слишком большое давление; он не будет брать на себя дополнительные задачи, когда знает, что это снизит качество его работы. Этот программист избегает спешки, потому что он хорошо знает, что все, что сделано на скорую руку — враг качественной работы. Вместо этого профессионал предпочитает сосредоточиться на поддержании чистого кода, что позволяет ему развивать его дальше без особых препятствий. Он сохраняет спокойствие даже перед лицом быстро приближающегося дедлайна. Эксперт использует законные методы. Во многих случаях такой подход может спасти проект, который грозит развалиться.
Подготовьте подробную документацию
Многие программисты признают, что подготовка документации — одна из худших обязанностей программиста. Проблема в том, что, с одной стороны, разработчики ненавидят заполнять документацию, но с другой — они ненавидят читать плохо подготовленную. Хороший разработчик не считает подготовку документации злом во плоти. Он отдает себе отчет в том, что до тех пор, пока документы тщательно оформлены, работа над любым проектом будет идти гладко. Хороший программист имеет привычку облегчать работу везде, где это возможно. Это относится и к его документации. Хороший документ должен быть проработанным, свободным от ошибок, последовательным, прозрачным, и тогда в нем будет легко найти всю необходимую информацию. Во-первых, правильная документация упростит работу каждого при разработке индивидуального проекта. Во-вторых, это позволит будущим работникам легко внедрять новые функциональные возможности. Они просто должны будут генерировать большую часть документации из кода, используя определенные инструменты. И последнее: хороший программист регулярно обновляет свою документацию.
Задавайте вопросы
Вы помните Сократа? Он снова и снова повторял одну и ту же фразу:
Oida ouden eidos! А это значит: я знаю, что ничего не знаю.
То же самое относится и к хорошему программисту. Он признается, когда чего-то не знает, в отличие от многих программистов, которые только кажутся знающими все. На самом деле, они ищут каждый ответ в интернете и действуют так, потому что по-другому не умеют. Этой стратегии будет недостаточно, и любой, кто ее использует, в конечном итоге обманет себя и всех вокруг. Программирование — это работа, основанная на знаниях, и никто не знает всего. Хороший программист не боится задавать вопросы тем, кто мудрее его самого. Он предложит им вместе решить ту или иную проблему и в процессе получить новый опыт. Хороший программист ищет подсказки и решения из разных источников. Принятие нашего незнания — это первый шаг к величию, в том числе и в программировании.
Всегда проверяйте код
Хороший программист не пропускает тестирование своего кода. Он делает это на каждом шагу своей работы. Это разумный подход, поскольку он позволяет избежать утомительного и трудоемкого поиска ошибок, когда большая часть кода уже готова. Для решения этой проблемы используются новые методы создания программного обеспечения, например разработка на основе тестирования (TDD). Хороший программист знает, что лучше использовать TDD, чем тратить время на отладку всего кода. Благодаря тестированию профессионал может проверить, правильно ли работает код. Чем больше тестов вы проведете, тем лучшие результаты работы вы получите. Некоторые эксперты даже заявляют, что к 2022 году программисты, не использующие TDD, будут безработными. Даже если это преувеличение, факт остается фактом: тесты необходимы. TDD — это лишь один из примеров многих других тестов, доступных профессиональным разработчикам. Программисты не только используют тесты в своей работе, но и заботятся об их качестве, которое гораздо важнее количества.
Несомненно, есть еще много чего, что можно было бы сказать на эту тему. Цель этой статьи — начать дискуссию и обозначить проблему. Давайте все осмотримся; может быть, рядом с вами в офисе сидит хороший программист? Пусть эта статья вдохновит вас стать лучшими программистами. Может быть, вы уже один из них?