Поддержка  •  Дневник  •  Без рекламы  •  О сайте  •  Реклама  •  Поставить баннер  •  Fleshlight  •  Прислать  •  Хроника  •  Translate Гости: 11    Участники: 0 Авторизация Авторизация   Регистрация 
Метод Научного Тыка
RULVEN
Поиск  
Blackball iMag | интернет-журнал
Каталог


Начало » Разработка ПО » 9 тяжёлых уроков, которые я усвоил за 18 лет разработки
Мне повезёт!

9 тяжёлых уроков, которые я усвоил за 18 лет разработки


9 тяжёлых уроков, которые я усвоил за 18 лет разработки
Добавлено: Пн 24.07.2023 • Sergeant
Источник: источник
Просмотров: 367
Комментарии: 0


Я начал писать код в моей комнате родительского дома, когда мне было 14. Помню, как читал всё, что мог достать с помощью своего медленного соединения с Интернетом. Затем, когда мне было 20, я подписал первый контракт, став веб-разработчиком и изучая PHP и JavaScript. Мне потребовалось 18 лет, чтобы осознать, что кодинг — только часть профессии. Заметьте, я по-прежнему наслаждаюсь кодингом. Не думаю, что когда-нибудь перестану программировать, даже если это станет просто моим хобби, но есть нечто гораздо большее, чем код. Вот почему я хочу поделиться своим опытом. Я думаю, что иногда разработчики усваивают эти уроки слишком поздно.

1. Оставьте эго за дверью

У разработчиков раздутое эго. Это факт. Но почему? Я сказал бы, что любой, кто серьёзно относится к своей профессии, считает себя кем-то вроде человека искусства. Да, мы не поём перед миллионами и не рисуем «Мону Лизу», но иногда пишем код, решающий сложные задачи столь эффективно и элегантно, что не можем не гордиться своей работой. Я думаю, что разработчик благодаря подходу к проблемам является человеком искусства настолько же, насколько им является математик. А раз так, мы склонны ползать вокруг кода так же, как мамаша-медведица вокруг своего потомства. Мы пишем его, любим его и терпеть не можем, когда люди вокруг спорят, насколько код ошибочен или нет.

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

2. Языки — это инструмент. Вы знаете только молоток? Тогда все проблемы похожи на гвозди

Перестаньте называть себя разработчиком на Java или разработчиком на JavaScript. Да, есть языки, которые нравятся вам из-за синтаксиса или возможностей. Это совершенно нормально. Однако вы выиграете, если какое-то время посвятите изучению чего-то ещё. Изучение новых языков, особенно если они следуют парадигме, отличной от привычной для вас, поможет открыть разум для различных подходов к решению проблем.

У меня даже нет слов, насколько это важно: изучение новых языков и их применение пойдут на пользу вашим навыкам. Я прочитал книгу Seven Languages in Seven Weeks несколько лет назад, и она открыла мне множество вариантов только потому, что показала способы решения задач, доступные в других языках.

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

3. Дело не в запоминании алгоритмов, а в их поиске

Некоторые разработчики-новички думают, что должны знать алгоритмы наизусть, так что чувствуют себя плохо в ту минуту, когда осознают, что начали забывать, как пишется цикл for. Это не только нормально. Я бы сказал, что это даже полезно. Просто у нас слишком много всего, что нужно запомнить. Но это тоже не нужно. Нужно принять тот факт, что Интернет — всего лишь ещё один инструмент, столь же необходимый, как наша IDE, для поиска ответов.

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

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

4. Вы будете учиться всю свою карьеру

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

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

Я знаю, что это может звучать глупо, но, возможно, у разработчика это навык номер один. Мы должны научиться быстро осваивать новые навыки. Иначе вы рискуете получить ярлык «устарел».

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

  • Новые языки.
  • Новые (и старые) парадигмы программирования.
  • Новые подходы к работе.
  • Новые пути решения проблем.
  • Новые способы взаимодействия с товарищами по команде.
  • Новые подходы к ревью и тестированию вашего кода.


Если вы не готовы быть вечным студентом, подумайте, для вас ли такая карьера. Заметьте, я не сказал: «Уходите сразу», но подумайте, готовы ли открыть своё сознание постоянному обучению.

5. Работающее лучше идеального

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

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

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

6. Заставьте код работать, затем оптимизируйте

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

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

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

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

Подумайте о рабочем процессе TDD:

  1. Напишите тест, чтобы понять всё, что нужно сделать для вашей функции (тест не пройдет).
  2. Напишите свой код так, чтобы тест прошёл.
  3. Теперь побеспокойтесь об оптимизации кода.

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

7. Последние 10 % проекта занимают 90 % времени

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

И это совершенно нормально. Мы склонны сосредотачиваться прежде всего на крупных функциях, оставляя мелкие детали или даже известные баги на самый конец. Но с ними, тем не менее, нужно бороться — и вот здесь появляются дополнительные 90 %. Вы должны протестировать, исправить код, протестировать ещё раз, научить пользователей обращаться с решением, представить финальную версию решения и так далее. Конечно, всё зависит от контекста, от того, кто ваш клиент, и от многих других факторов, но что-нибудь найдется всегда. Так что запомните: когда вы думаете, что почти закончили с кодом, вероятно, вы что-то забыли.

8. Когда вы в команде, нужна абстракция

Кодинг — это про поведение абстракций. Абстрагируя общую логику, мы можем повторно использовать её в других местах, но вначале мы забываем о важности абстракций. Вот моё личное правило: если код повторяется в двух местах, он отправляется в функцию (метод, модуль); вы поняли идею. Если два повторения выглядят в ваших глазах небольшим числом, учтите, что в будущем могут найтись другие места для применения только что абстрагированного кода. И, абстрагировав код сразу, вы сразу будете иметь к нему доступ.

Абстракция — это масштабирование. Кусочек абстрагированной логики может использоваться много раз с минимальными усилиями, тогда как копипаста (хотя сделать её легко) — чем больше вы её используете, тем больше усилий она требует. Подумайте, что произойдёт, если из-за бага вам нужно будет изменить часть логики, которая повторяется 5 раз. Чтобы исправить баг, вы буквально 5 раз измените одну и ту же часть кода.

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

9. Сторонние проекты не обязательны, но могут помочь

Некоторые говорят, что, если вы хотите быть успешным разработчиком, вам нужны сторонние проекты. Не думаю, что это правда. Я лично знаю многих великолепных разработчиков, которые пишут код только на работе, «с 9 до 17». Честно говоря, я восхищаюсь ими. Они мастера своего дела, а в свободное время они, делая что-то другое, наслаждаются жизнью. В этом нет абсолютно ничего плохого. Однако иногда вам нужна дополнительная практика. Иногда вам кажется, что вы отстаёте от своих коллег; здесь и помогут сторонние проекты.

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

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

Заключение

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



Мне нравится 0   Мне не нравится 0



Комментарии

Чтобы добавить видео с YouTube, нужно написать [@youtube=xxxxx] , где xxxxx – ID видео.


Комментарии: 0
Нет ни одного комментария.
RSS-лента
Поделиться ссылкой:
Коктейли с бурбоном: 15 рецептов с фото Коктейли с бурбоном: 15 рецептов с фото
Коктейли с абсентом Коктейли с абсентом
Коктейль виски со Швепсом – оригинальные и согревающие рецепты Коктейль виски со Швепсом – оригинальные и согревающие рецепты
Как лучше проводить one-to-one со своими сотрудниками: 5 лайфхаков из личного опыта Как лучше проводить one-to-one со своими сотрудниками: 5 лайфхаков из личного опыта
Удаление грудей
Бесплатные автозаправки Tesla Бесплатные автозаправки Tesla
HDR10 и его отличие от Dolby Vision HDR10 и его отличие от Dolby Vision
Интимные стрижки
Pagination in a .NET Web API with EF Core Pagination in a .NET Web API with EF Core
Правила группового секса в свинг-отелях Правила группового секса в свинг-отелях

работа
Soft skills: 18 самых важных навыков, которыми должен владеть каждый работник Ср 17.04.2024
Soft skills: 18 самых важных навыков, которыми должен владеть каждый работник
Жесткие факты о софт скилах Пн 19.02.2024
Жесткие факты о софт скилах
Пн 05.02.2024
Проблема понимания существующего кода, или Как делать иногда [не] надо
Пн 29.01.2024
Плохо девелопмент
Как лучше проводить one-to-one со своими сотрудниками: 5 лайфхаков из личного опыта Пн 01.01.2024
Как лучше проводить one-to-one со своими сотрудниками: 5 лайфхаков из личного опыта
Доводим разработчика до выгорания: три простых шага Пн 25.12.2023
Доводим разработчика до выгорания: три простых шага
5 приемов увеличения продуктивности разработчика Пн 18.12.2023
5 приемов увеличения продуктивности разработчика
Кто такой архитектор ПО и как им стать Пн 23.10.2023
Кто такой архитектор ПО и как им стать
Пн 16.10.2023
Какого черта мы нанимаем, или осмысленность собеседований в IT
9 тяжёлых уроков, которые я усвоил за 18 лет разработки Пн 24.07.2023
9 тяжёлых уроков, которые я усвоил за 18 лет разработки
Мультитаскинг, или Как работать над несколькими проектами и не сойти с ума Пн 10.07.2023
Мультитаскинг, или Как работать над несколькими проектами и не сойти с ума
Performance review, ачивки и погоня за повышением грейда — что может причинить боль сотруднику IT-компании? Пн 03.07.2023
Performance review, ачивки и погоня за повышением грейда — что может причинить боль сотруднику IT-компании?
Остановись, мгновенье. Медленное программирование — тренд для уставших разработчиков Пн 01.05.2023
Остановись, мгновенье. Медленное программирование — тренд для уставших разработчиков
Как избавиться от прокрастинации до того, как она разрушит вашу карьеру Пн 06.03.2023
Как избавиться от прокрастинации до того, как она разрушит вашу карьеру
Выйди и зайди правильно Пн 27.02.2023
Выйди и зайди правильно
10 историй, как «валят» айтишников на технических интервью Пн 20.02.2023
10 историй, как «валят» айтишников на технических интервью
Microsoft устроила массовые увольнения в мировом центре Open Source. GitHub закрывает все офисы и выгоняет на улицу сотни сотрудников Чт 16.02.2023
Microsoft устроила массовые увольнения в мировом центре Open Source. GitHub закрывает все офисы и выгоняет на улицу сотни сотрудников
Зарплата по результатам собеседования — лучший способ сократить отклики на вакансию, а тестовые задания — избыточны Пн 06.02.2023
Зарплата по результатам собеседования — лучший способ сократить отклики на вакансию, а тестовые задания — избыточны
Почему вы никогда не должны соглашаться на собеседования с программированием Пн 30.01.2023
Почему вы никогда не должны соглашаться на собеседования с программированием
«Великое увольнение» продолжается: теперь с работы уходят даже боссы Пн 16.01.2023
«Великое увольнение» продолжается: теперь с работы уходят даже боссы
Ср 31.03.2021
Удалённая работа: не рай, а светлое будущее
Ср 24.03.2021
Самый неадекватный кандидат за мою карьеру
Почему сеньоры ненавидят собеседования с кодингом, и что компании должны использовать вместо них Ср 17.03.2021
Почему сеньоры ненавидят собеседования с кодингом, и что компании должны использовать вместо них
Удалёнка кажется раем разработчика, но страданий не избежать: впереди нас ждет депрессия, чувство вины и выгорание Ср 10.03.2021
Удалёнка кажется раем разработчика, но страданий не избежать: впереди нас ждет депрессия, чувство вины и выгорание
Ср 10.02.2021
Кривые развития программиста и немного об эффекте Даннинга—Крюгера
Ср 06.01.2021
Тонкости собеседований при найме на удаленку
Пн 21.12.2020
16 вопросов для собеседования с .NET программистом
Вопросы на собеседовании по C# Пн 14.12.2020
Вопросы на собеседовании по C#
Смешные ИТ-собеседования: 17 историй соискателей Вт 08.12.2020
Смешные ИТ-собеседования: 17 историй соискателей
Смешные собеседования: истории ИТ-рекрутеров (часть 3) Вт 01.12.2020
Смешные собеседования: истории ИТ-рекрутеров (часть 3)
Ср 25.11.2020
Как айтишнику найти работу в США и ЕС: 9 лучших ресурсов
Смешные собеседования: истории ИТ-рекрутеров (часть 2) Вт 24.11.2020
Смешные собеседования: истории ИТ-рекрутеров (часть 2)
Смешные собеседования: истории ИТ-рекрутеров (часть 1) Вт 17.11.2020
Смешные собеседования: истории ИТ-рекрутеров (часть 1)
Пн 09.11.2020
Как устроиться в IT-компанию
Ср 07.10.2020
Гайд по работе на Апворке
Почему айтишники переходят из одной компании в другую Пн 28.09.2020
Почему айтишники переходят из одной компании в другую
Пн 07.09.2020
Первый рабочий день: инструкция по выживанию — 4 совета, как с комфортом выйти на новую работу
Пн 17.02.2020
Первый рабочий день: инструкция по выживанию — 4 совета, как с комфортом выйти на новую работу
Пн 05.11.2018
Найм программистов. Советы от программиста
Пн 16.07.2018
Как нанимать наилучших сотрудников
Перестаньте называть себя программистом и другие карьерные советы Пн 09.04.2018
Перестаньте называть себя программистом и другие карьерные советы
Пн 19.03.2018
Дюжина логических задач с собеседований
Книги
Refactoring with C# Вт 23.04.2024
Refactoring with C#
Год: 2023
Building IoT Visualizations using Grafana Вт 09.04.2024
Building IoT Visualizations using Grafana
Год: 2022
Getting Started with Grafana Вт 02.04.2024
Getting Started with Grafana
Год: 2022

Разработано на основе BlackNight CMS
Release v.2024-04-19
© 2000–2024 Blackball
Дизайн & программирование:
О сайтеРеклама
Visitors
Web-site performed by Sergey Drozdov
BlackballРекламаСтатистикаПоддержка | МузыкаПлейлистыКиноВидеоИгрыАудиоПрограммыСтатьиКартинкиЮморФорумДневник сайтаПрислать контент