Пост Джереми Гюнтера о том, почему иногда бывает полезнее уметь грамотно пользоваться инструментами поиска, чем пытаться запомнить огромные количества информации.

Несколько месяцев назад я просматривал посты в учебной группе freeCodeCamp моего родного города. Вдруг на глаза мне попалось нечто интригующее…

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

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

поиска

Переместимся вперед на 18 месяцев. Меня только что наняли в качестве fullstack-разработчика. В своей повседневной работе я трачу достаточно времени на обращения к всезнающему гуглу. Но это больше не кажется мне слабостью. Я знаю, что на самом деле это лишь первый шаг к решению проблемы.

Что же заставило меня изменить свои взгляды? Много что. Но здесь лишь несколько основных вещей.

Не верите мне? Можете почитать топик на Quora, где сотни других программистов придерживаются того же мнения, что и я.

Я не мог бы выразить эту мысль лучше, чем этот парень:

«Никогда не запоминайте то, что можете подсмотреть» – А. Эйнштейн.

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

Задумайтесь обо всех словах родного языка, которые вы знаете. Я готов поклясться, что ваш лексикон гораздо шире, чем круг слов, используемых вами каждый день. Если вы забудете значение слова, что вы будете делать? Просто спросите Siri или заглянете в словарь и продолжите жить спокойно. Вы не сидите и не сокрушаетесь о том, что не смогли вспомнить это слово.

Позвольте мне привести наглядный пример.

В прошлом декабре я слушал дискуссию на CSSDay в Фениксе и услышал, как докладчик обронил фразу, которую я уже не раз слышал в разных вариациях:

«Запоминайте только то, что используете в повседневной работе. Для всего остального достаточно помнить, где это подсмотреть.»

Эта концепция стала самым большим благом для моей карьеры программиста.

поиска

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

Тогда меня осенило: вместо того, чтобы беспокоиться о том, как написать это, надо просто сфокусироваться на понимании того, как оно работает. Я перестал обращать внимание на синтаксис и радостно начал строчить тонны псевдокода. И как только я почувствовал, что близок к решению, пришло время для поиска!

Это возымело ровно тот эффект, на который я рассчитывал. Больше я не мучился над запоминанием методов для добавления элемента в конец массива. Вместо машинального запоминания я сосредоточился на том, какое действие мне нужно произвести. Когда нужно было добавить элемент в начало массива, оказалось гораздо проще вбить «добавить в начало массива JavaScript», чем пытаться самостоятельно вспомнить разницу между shift() , unshift() и pop() .

Вместе с ощутимой экономией времени проявились еще несколько плюсов:

  1. Я обнаружил, что могу изучать новые языки гораздо быстрее, потому что (сюрприз, сюрприз) большинство концепций не зависят от языка;
  2. Мое понимание этих концепций значительно углубилось.

Помимо вышеупомянутых, был еще один огромный бонус, которого я никак не ожидал.

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

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

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

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

И знаете, что? Это работает очень хорошо. Начав свой путь разработчика в мае 2015, я получил первую работу в сентябре 2016.

Менее чем за 18 месяцев я прошел путь от весьма поверхностного понимания HTML до написание скриптов для Ansible, бэкенда на Ruby on Rails и создания компонентов интерфейса с помощью React.

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

Лучшим советом было бы не бояться признаться самому себе, что вы чего-то не знаете, и попытаться исправить это любыми доступными методами.

Единственный способ излечиться от невежества — задавать вопросы.

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

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