IT-инфраструктура для бизнеса и творчества
Разработка
Rapprogtrain

Самый важный навык, которому может научиться программист

Написание кода - это большая часть работы программиста. В жизни разработчика вам придется иметь дело с разными видами требования написать код. Каждый запрос заставит вас принимать трудные решения. И это нормально. В этом нет ничего плохого. Это то, чего все ждут от вас, как от программиста: Писать код. Однако, вот вопрос: Стоит ли вам писать весь код, который от вас требуется?

Этот вопрос подводит нас к самому важному навыку, который может выучить программист:

Знание того, когда не следует кодить, возможно, является самым важным навыком, которому может научиться программист. - Искусство читать код - «Читаемый код, или Программирование как искусство»

Я не мог не согласиться с этим. А почему так?

Программирование - это искусство решения проблемы. Так что, естественно, программисты - это решатели проблем. Как программисты, когда перед нами новая проблема, готовая к решению, или любая другая причина, требующая от нас написания кода, мы возбуждаемся.

И это нормально, потому что мы программисты. Мы любим писать код.

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

Итак, что же это за важные факты, которые мы склонны игнорировать?

Каждая строчка кода, которую вы пишете это:

  • код, который должен быть прочитан и понятен другим программистам.

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

Как писал Ричард Скрента, код - наш враг:

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

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

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

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

Это правда, не так ли? Программисты, которые вдохновляют вас своей производительностью - это те, кто знает, когда сказать "нет", и когда не кодить. Программное обеспечение, которое легко поддерживать, которое держится долго и продолжает помогать своим пользователям, не содержит лишних строк кода.

Лучший код - это вообще не код, а самый эффективный программист-это тот, кто знает, когда не нужно кодить.

Как понять, когда не нужно кодить?

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

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

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

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

Никогда не расширяйте главную цель вашего приложения.

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

Знание того, когда не стоит кодить, держит вашу базу c кодом маленькой.

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

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

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

Теперь, жизнь для вас - это борьба. Почему?

Поскольку вы не знали, когда не стоит кодить, вы сказали "ДА" каждой функции, которые вы хотели воплотить. Ты был слеп. Программирование чего-то нового заставило вас игнорировать существенные факты.

Это как в фильме ужасов, да?

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

Одним из моих самых продуктивных дней было удаление 1000 строк кода. - Кен Томпсон

Я знаю, что понимание, когда не стоит кодить, очень трудно. Даже для senior программистов.

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

Продолжайте кодить, но знайте, когда сказать "нет" программированию.

Спасибо за прочтение!

Оригинал - rapprogtrain.com

Было переведено вот отсюда - medium.com

Группа ВК и Facebook

(function () { let cdnUrl = `https://specialsf378ef5-a.akamaihd.net/SelectelBranding/images/` let previousArticleNumber = null let currentArticleNumber = 0 let platform = 'Desktop' let articles = [ { name: 'camera', url: `${cdnUrl}CameraCat`, text: 'умную камеру для\u00A0наблюдения за\u00A0котиками', link: 'https://vc.ru/selectel/306690', num: 3 }, { name: 'chill', url: `${cdnUrl}ChillCat`, text: 'трекер, который подскажет, когда пора отдохнуть', link: 'https://vc.ru/promo/288561-eye-tracker', num: 1 }, { name: 'cloud', url: `${cdnUrl}CloudCat`, text: 'котика: даёшь ему «пять», а\u00A0он делает бэкап в облако', link: 'https://vc.ru/dev/294799-maneki-neko', num: 2 } ] let buttonCycle = document.querySelector('.button--cycle') let buttonChoose = document.querySelector('.button--choose') let buttonMobile = document.querySelector('.button--mobile') let textField = document.querySelector('.selectel-footer-subtitle') let imageAgent = document.querySelector('.image--agent') let banner = document.querySelector('.selectel-footer') buttonCycle.addEventListener('click', cycleClick) buttonChoose.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) buttonMobile.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) let media = window.matchMedia("(max-width: 570px)") media.addEventListener('change', matchMedia) function matchMedia() { if (media.matches) { platform = 'Mobile' } else { platform = 'Desktop' } update() } matchMedia() function cycleClick(event) { sendEvent(`Promo ${articles[currentArticleNumber].num} Right`, 'Click') if (event) { event.preventDefault() event.stopPropagation() } window.open('https://vc.ru/tag/selectelDIY', '_blank') //cycle(event) } function cycle(event) { // incrementArticleNumber() textField.innerHTML = generatedText() imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?3' imageAgent.setAttribute("class", "") imageAgent.classList.add('image--agent', articles[currentArticleNumber].name) banner.href = articles[currentArticleNumber].link } function update() { banner.href = articles[currentArticleNumber].link imageAgent.src = articles[currentArticleNumber].url + platform + '.svg' textField.innerHTML = generatedText() } function incrementArticleNumber() { previousArticleNumber = currentArticleNumber if (currentArticleNumber >= articles.length - 1) { currentArticleNumber = 0 } else { currentArticleNumber++ } } const sendEvent = (label, action = 'Click') => { const value = `SelectelDIY — loc: Footer — ${label} — ${action}`; if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } }; function generatedText() { let defaultText if (platform === 'Desktop') { defaultText = `Мы тут собрали %text%. Хотите научим?` } else { defaultText = `Мы тут собрали %text%.` } return defaultText.replace('%text%', articles[currentArticleNumber].text) } function getRandom(min, max) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } (function create() { currentArticleNumber = getRandom(0, articles.length - 1) cycle() let page = document.querySelector('.page--entry') if (page) { function insertAfter() { let parents = page.querySelectorAll('[data-id="7"]') let referenceNode = parents[0] referenceNode.parentNode.insertBefore(banner, referenceNode.nextSibling); loaded() } setTimeout(() => insertAfter(), 0) } }()) function loaded() { banner.classList.add('loaded') } loadImages([ `${cdnUrl}CameraCatDesktop.svg`, `${cdnUrl}ChillCatDesktop.svg`, `${cdnUrl}CloudCatDesktop.svg`, `${cdnUrl}CameraCatMobile.svg`, `${cdnUrl}ChillCatMobile.svg`, `${cdnUrl}CloudCatMobile.svg?3`, ]) function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = document.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); } }())
0
8 комментариев
Популярные
По порядку
Написать комментарий...

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

0

Во-первых, это в авторитарных компаниях без обратной связи.
Во-вторых, программистов, которые сами себе менеджеры, тоже хватает.

1

В третьих, сделать тоже можно очень по разному

–1

"Код запрос" 🤦🏻‍♂️

0

Редакция приветствует оригинальный контент. Если вы опубликовали материал в своём блоге, а потом решили скопировать его на vc.ru, статья может быть распубликована на усмотрение модераторов (vc.ru/team/28520). Пожалуйста, учитывайте это, если собираетесь вновь публиковать тексты.

0

хорошо, буду знать.

0

"n? затраты"
:)

0

"Было переведено вот отсюда - medium.com"

Побуду занудой, но в той статье на медиуме есть ссылка на источник: https://huseyinpolatyuruk.com/the-most-important-skill-a-programmer-can-learn/

0
Читать все 8 комментариев
Комиссия за отмененное снятие наличных и некомпетентная поддержка Альфа-Банка

Месяц назад я решил в очередной раз съездить отдохнуть в Египет и, в том числе, заглянуть в Каир. И вот там мне понадобилось снять наличные деньги с карты Альфа-Банка (в Египте пока все очень любит наличные и не любят принимать платежи картами). Это было не первое и не последнее снятие наличных, но проблемы возникли именно с ним.

Из науки в IT: как создать свой стартап и стать преподавателем

Как перейти в IT из другой сферы? Как разработать курс, которому нет аналогов? Как студенту получить максимум пользы от занятий? Рассказывает преподаватель OTUS Сергей Окатов, руководитель курсов «Kotlin Backend Developer» и «Kotlin Developer. Basic».

Что Tele2 предлагает клиентам в «черную пятницу»

На главной распродаже года клиентов компании ждут сразу несколько интересных предложений: скидки на смартфоны, пакеты SMS и безлимитный трафик на YouTube, Яндекс.Карты, Яндекс.Навигатор.

Хочу кухню как у подруги: зачем в Циан сделали поиск квартир по фото

Рассказывает Юлия Зыкова, руководитель команды «Аудитория» в Циан.

Как у меня украли 600 тысяч с карты, а Тинькофф нарушает федеральный закон

Спойлер: я НЕ вводил никуда код, НЕ переходил по ссылкам и НЕ сообщал данные карты.

Я всегда считал себя финансово грамотным человеком, сам когда-то работал в банке, соблюдал цифровую гигиену, держал деньги на нескольких счетах, не привязывал основную карту в непонятных сервисах, в 90% оплат пользовался Google Pay. Когда родственники присылали…

Бот, который сделает маму счастливее

Kind Bot напечатает и отправит по почте фото вашей маме. В 2 клика.

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

Так получилось, что за покупками в основном ходим в пятёрочку, есть их "Выручай-карта" на которую копятся бонусы с покупок. 28.09.21 решил использовать эти бонусы в магазине по адресу Москва. Ул. Лухмановская 17А. При оплате терминал, со слов продавцов выдал ошибку, о невозможности списания баллов, и я оплатил деньгами. Вышло так, что списались и…

Ложь, статистика и бизнес-анализ (в ИТ)

Давайте посмотрим, кто такой бизнес-аналитик (сначала не в ИТ, потом в ИТ), чего от него ждут, чем он должен заниматься и что он делает на самом деле.

Потратили $1 млн на клинику для профилактики здоровья зубов в Москве — и через десять месяцев закрыли проект

История о неудачном запуске монопродукта в стоматологии — его пришлось переформатировать.

Та самая клиника
Завод по производству идей. Как работают акселераторы, зачем они нужны стартапам и куда идти с идеей прямо сейчас

По данным Startup Genome, 9 из 10 стартапов терпят неудачу. Возможных причин «смерти» много: недостаточно протестированная гипотеза, неподтвержденная юнит-экономика, неверная стратегия или просто неудача в подходе к продажам.

Сервис Boxberry по доставке посылок из США в Россию не умеет забирать посылки из почтового отделения, товар потерян?

Прочитала статью и решила воспользоваться сервисом, заказав товар на eBay.com:

null