Они тянут тебя вниз: плохие привычки программистов

В течение жизни человек приобретает и теряет разные привычки. Этому способствуют обстоятельства, общество и профессиональная деятельность.

К счастью, плохие привычки можно побороть, если знать, как они «захватывают» наш мозг.

У любой привычки есть цикл:

  1. Сигнал – триггер, который активируется при различных обстоятельствах.
  2. Процесс – эмоциональная или практическая реакция организма на сигнал.
  3. Награда – зачастую мнимая польза или чувство удовлетворения.

Например, вы испытываете стресс на работе – Сигнал. Вы курите – Процесс, а после чувствуете спокойствие и расслабленность – Награда.

Привычка формируется, когда Сигнал ассоциируется с определённым Процессом. Когда такая связка сформировалась в сознании, вы начинаете повторять цикл привычки снова и снова.

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

Стремление что-то улучшить точно не назовёшь плохой привычкой. Переписать и закомментировать неработающий код – это хорошая идея. Но после проделанной работы старый код нужно удалить! Если хранить старый код в виде комментариев, то со временем его станет больше, и он начнёт отвлекать от актуальных участков.

Представьте, что знакомый попросил вас реализовать новые фичи в своём проекте. Вы скачиваете его код и видите, что закомментированных участков больше, чем работающего кода. Они будут отвлекать вас и портить читаемость кода. Вы точно не будете в восторге.

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

Выход: система контроля версий. Если вы ещё не используете её в своих проектах, сделайте это сейчас, и не бойтесь удалять старый код!

Боитесь осваивать что-то новое? Тогда знакомьтесь со следующей плохой привычкой.

Они тянут тебя вниз: плохие привычки программистов

Ни для кого не секрет, что разработка – это динамичная сфера с непрерывным процессом обучения. Иногда может казаться, что осваивать что-то новое ни к чему. Например, когда вы работаете с Legacy системами или не горите желанием карьерного роста. Но даже в этом случае вам нужно учиться новому.

Посмотрите на IT-индустрию, как на поток. Вы – часть этого потока. Рано или поздно вам придётся учить что-то новое, чтобы оставаться «на плаву». Время, проведённое в комфортных условиях с одним фреймворком «в руках», сделает вас ленивым и неквалифицированным в будущем. В итоге вам придётся прилагать колоссальные усилия, чтобы освоить что-то новое.

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

Не ленитесь экспериментировать с технологиями, которые не имеют отношения к вашей области. Вы поймёте тренды и направления упомянутого «потока».

Изучение нового кажется вам непреодолимой преградой? Искорените ещё одну плохую привычку.

Чтобы распознать эту привычку, нам придётся забыть на минутку о коде, карьере и даже интернете!

Не бойтесь, это ненадолго 😉

Представим, что вы живёте в те времена, когда ещё не было интернета. Если вы – мужчина, и ваш отец – фермер, то и вы с большой вероятностью станете фермером. Это тяжёлый физический труд, отсутствие нормального обучения, доступа к информации, и, как итог, – слепое движение по течению.

Не очень, правда?

А теперь очнитесь и вспомните, что на дворе 21-й век! Информация никогда не была такой доступной. Конечно, это не дарит вам безграничные возможности, но люди, которые пользуются преимуществом доступа к информации, – читают книги, задают вопросы, следуют своему любопытству, – имеют больше возможностей для представления и формирования успешного будущего.

Не останавливайтесь на полученных знаниях: всегда желайте большего.

Пытаетесь писать код, который будет обрабатывать всё, что вы ему скормите? Расслабьтесь: для 90% приложений не возникнет необходимости в абстрактном коде.

Главная причина абстрагирования – повторное использование. Зачем описывать 10 ситуаций в своём компоненте, когда приложение использует всего 2?

Выход: не создавайте в коде то, что не нужно. Вы тратите своё время и время клиента. Выделяйте классы в отдельные сущности при частом использовании в разных проектах.

ООП облегчает понимание концепций программирования и сопровождение кода.

Но чрезмерное увлечение декомпозицией – это новые проблемы. Увеличение количества классов не должно сопровождаться увеличением проекта. Задайте себе вопрос: какой смысл писать класс с одной-единственной функцией?

Код, разбитый на классы, сложнее оптимизировать. В него сложнее добавлять новые функции. Всегда обдумывайте необходимость выносить какой-то код в отдельный класс. Может, в этом нет никакого смысла?

Прежде чем использовать шаблоны, подумайте, сможете ли вы разобраться в них при возникновении ошибок в будущем? Паттерн – это заманчивая идея. Он экономит время, но может принести боль в будущем.

Чем больше шаблонов вы используете, тем меньше вы знаете о своём коде. Чем больше вы кодите руками, тем лучше контролируете свою систему.

Шаблоны проектирования прекрасны, когда внедряются в практику правильно. Они помогают, будучи дополнительным источником вдохновения, но не конечной целью.

Шаблоны проектирования способствуют дискуссии разработчиков вокруг распространённых проблем. Такие шаблоны показывают простые учебные случаи, которые легко понять и легко использовать на практике. Они обучают нас конкретным и разнообразным аспектам ООП.

Используйте каждый отдельный шаблон, только когда он соответствует поставленной задаче.

Если вы работаете над сложной системой, вам не обойтись без документации. После достаточно большого перерыва, вы сами забудете свой код. Прибавьте сюда команду разработчиков, где каждый пишет свои участки и модули. Без документации участники команды не поймут друг друга.

Ещё одна причина научиться документировать свой код – это «текучесть кадров». Ваш коллега может заболеть, уволиться, перейти в другой отдел компании. Представьте, что вам достался его код без намёка на документацию. Вряд ли вы обрадуетесь.

Вряд ли обрадуется и руководство компании, ведь пока вы разбираетесь в чужом коде, бизнес теряет время.

Документация ускоряет бизнес-процессы, а тот, кто ею занимается, повышает свою ценность в команде.

Они тянут тебя вниз: плохие привычки программистов

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

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

Выход: не отказывайте себе в перерывах. Иногда приходится проводить весь день за компьютером. От этого ценность каждой возможности сделать перерыв только растёт. Отвлекайтесь от рабочих задач и под любым предлогом выходите на улицу поесть, погулять, попить кофе. Поначалу будет трудно – придётся заставлять себя. Но в скором времени вы почувствуете, что смена обстановки только способствует вашей продуктивности. Альтернатива прогулкам – общение с коллегами в офисе.

Если вы думаете, что цель физических нагрузок – это только атлетичное телосложение, то вы сильно ошибаетесь. Физические нагрузки полезны для тела и мозга.

Разработчики занимаются интеллектуальным трудом. И в этом их превосходят разве что учёные. Поэтому уставшего разработчика может напугать мысль о физических нагрузках после тяжёлого рабочего дня. Однако физическими нагрузками вы компенсируете недостатки сидячей работы.

Выход: сделайте первый шаг – начните совершать прогулки в перерывах. Затем добавьте упражнения в спортзале. Вы найдёте хобби и почувствуете себя уверенней.

Разработка – это круто! Каждый может найти свою нишу в сегодняшнем изобилии экосистем, фреймворков и библиотек. Можно программировать целыми днями и даже посвятить этому всю свою жизнь.

Работа обязывает программиста изучать что-то новое и не отставать. Для этого нужно увлекаться программированием. Однако не каждый может выдержать такой темп.

После долгих месяцев работы программирование может вызывать отвращение. Вплоть до полного отказа от этой деятельности.

Выход: разделяйте работу и дом, программирование и отдых. Не берите домой рабочие проекты. Посвящайте время своим близким. Читаете профессиональные книги? Попробуйте художественную литературу. Разнообразный досуг только подогреет ваш интерес к программированию 🙂

Вы пропустили

AEGIS Algorithms Android Angular Apache Airflow Apache Druid Apache Flink Apache Spark API API Canvas AppSec Architecture Artificial Intelligence Astro Authentication Authorization AutoGPT AWS AWS Aurora AWS Boto3 AWS EC2 AWS Lambda Azure Babylon.js Backend bash Beautiful Soup Bento UI Big Data Binary Tree Browser API Bun Career Cassandra Charts ChatGPT Chrome Extension Clean Code CLI ClickHouse Coding Codux Combine Compose Computer Context Fusion Copilot Cosmo Route CProgramming cron Cryptography CSS CTF Cypress DALL-E Data Analysis Data science Database dbt dbt Cloud deno Design Design Patterns Detekt Development Distributed Systems Django Docker Docker Hub Drizzle DRY DuckDB Express FastAPI Flask Flutter For Beginners Front End Development Game Development GCN GCP Geospatial Git GitHub Actions GitHub Pages Gitlab GMS GoFr Golang Google Google Sheets Google Wire GPT-3 GPT3 Gradio Gradle Grafana Graphic Design GraphQL gRPC Guidance HMS Hotwire HTML Huawei HuggingFace IndexedDB InfoSec Interview iOS Jackknife Java JavaScript Jetpack Compose JSON Kafka Kotlin Kubernetes LangChain Laravel Linux LlaMA LLM localStorage Logging Machine Learning Magento Math Mermaid Micro Frontends Mobile Mobile App Development mondayDB MongoDB Mongoose MySQL Naming NestJS NET NetMock Networks NextJS NLP Node.js Nodejs NoSQL NPM OOP OpenAI OTP Pandas PDF PHP Playwright Plotly Polars PostgreSQL Prefect Productivity Programming Prometheus Puppeteer Pushover Python Pytorch Quarkus Rabbitmq RAG Ramda Raspberry Pi React React Native Reactor Redis REST API Revolut Riverpod RProgramming Ruby Ruby on Rails Rust Scalene SCDB ScyllaDB Selenium Servers Sklearn SLO SnowFlake Snowkase Software Architecture Software Development Solara Solid Spring Boot SQL SQLite Streamlit SudoLang Supabase Swift SwiftUI Tailwind CSS Taipy Terraform Testing Transformers TURN TypeScript Ubuntu UI Design Unix UX UX Design Vim Vite VSCode Vue Web Architecture Web Components Web Development Web Frameworks Web Scraping Web-разработка Webassembly Websocket Whisper Widgets WordPress YAML YouTube Zed Наука о данных Разное Тренды

Современный подход к разработке с использованием Next.js