Подтвердить что ты не робот

Дорожная карта для лучшего программиста

Он всегда говорил, что чем больше вы программируете, тем лучше становитесь. Звучит неплохо и верно. Но мне было интересно, есть ли проверенный путь стать лучшим программистом.

Что-то вроде:

  • Изучите
  • Узнать b
  • Узнать c > "Теперь вы хорошо сжигаете двигатели"
  • Попробуйте все вокруг, основываясь на вашем обучении.

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

Спасибо

4b9b3361

Ответ 1

Неверно, что практика делает совершенным.

Это идеальная практика, которая делает совершенным.

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

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

Нет "верного" способа узнать все, что я знаю. Если бы это было, любой мог бы это понять.

Ответ 2

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

Технические детали:

  • Шаблоны проектирования. Вероятно, некоторые из них относятся к домену, но обычно это полезные способы запуска частей приложения. Вы знаете MVC или MVP?
  • Исходные точки базового алгоритма - разделение и покорение, динамическое программирование, рекурсия, создание специальных типов данных, таких как куча, жадные и т.д.
  • Умение решать проблемы - как легко вы можете вскочить и найти, где ошибка? Можете ли вы придумать несколько решений проблемы?
  • Абстрактное моделирование. Насколько хорошо вы можете представить себе вещи в вашей голове с точки зрения кода или классов, когда кто-то описывает проблему?
  • Высокий уровень против низкого уровня. Насколько хорошо вы понимаете, когда кто-то хочет чего-то высокого или низкого? Это просто то, что я хотел бы бросить туда, поскольку эти термины проходят через много, например, на высоком уровне, что-то или язык низкого уровня.

Части процесса:

  • Agile - Знаете ли вы Scrum, XP и другие новые подходы к управлению проектами программного обеспечения? Как насчет таких принципов, как YAGNI, DRY и KISS? Или такие принципы, как SOLID? Идеи, такие как Broken Windows?
  • Среда разработки - Насколько хорошо вы знакомы с IDE, которую используете? Управления источником? Непрерывная интеграция? Знаете ли вы, что на вашей машине есть шея для бутылок с точки зрения продуктивности?
  • xDD - Вы знаете TDD, BDD и другие разработки, основанные на парадигме?
  • Рефакторинг. Переходите ли вы обратно к своему старому коду и делаете его лучше или вы пытаетесь написать один раз, а затем отказаться от своего кода?

Мягкие навыки:

  • Эмоциональный интеллект - может быть полезен для презентаций и работы с другими в основном.
  • Страсти/Мотивация. Знаете ли вы, что заставляет ваши соки течь и просто пинать с точки зрения продуктивности? Знаете ли вы, что бы вы хотели сделать много лет?

Ответ 3

Моим основным советом было бы: не бойтесь переписать свой собственный код. Посмотрите на материал, который вы написали еще месяц назад, и увидите недостатки и хотите переписать материал.

Убедитесь, что вы понимаете некоторые основы: коллекции, равенство, хэш-коды и т.д. Они полезны на почти всех современных языках.

В зависимости от языка, который вы используете, используйте инструменты lint и metric и запускайте их по вашему коду. Не все их предложения будут применимы, но изучение, которое важно, а какие нет, важно. Например, FindBugs, PMD и т.д. Для Java.

Прежде всего уточняйте и продолжайте совершенствовать свою работу. Не относитесь к своей работе как к отказу!

Ответ 4

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

Фокус в том, что знать, чему учиться сначала:

  • Языки программирования - это место для начала, потому что вы не можете писать программное обеспечение, не зная хотя бы одного из них. После того, как вы освоили один язык, попробуйте изучить другое.
  • Парадигма программирования - то есть объектно-ориентированное, динамическое/функциональное программирование и т.д. Попытайтесь изучить новый с каждым новым языком.
  • Концепции дизайна - S.O.L.I.D, шаблоны проектирования, а также архитектурные концепции.
  • Навыки людей - научитесь сообщать свои идеи.
  • Командное лидерство - научитесь подметать других и как стать командой или технологическим лидером.

После этого небо является пределом.

Ответ 5

Практика, практика, практика.

После того, как вы закончите базовый горб, чтобы быть в состоянии программировать, вы также можете прочитать полезные книги (например, Code Complete, Effective Java или их эквиваленты и т.д.) для идей о том, как улучшить код.

Ответ 6

Я бы посмотрел на улучшение примерно в этом порядке, в итерациях с каждым зданием на предыдущем:

  • Концепции программирования. Понимать такие вещи, как управление памятью, указатели, стеки, переменная область и т.д.
  • Языки. Работа над освоением нескольких современных языков.
  • Концепции дизайна. Узнайте о шаблонах проектирования. Практикуйте их использование.
  • Связь. Часто упускается из виду. Вы можете стать высоко оцененным инженером-программистом, если сможете эффективно общаться с нетехническими людьми. Научитесь слушать и понимать потребности, которые люди выражают, воплощать в набор требований и технический дизайн, но затем объясните, что вы поняли (и разработали) к ним, в терминах, которые они могут понять, для проверки перед кодом. Это непросто освоить, но это важно.
  • Архитектурные концепции. Научитесь понимать общую картину больших сложных систем.

Ответ 7

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

Знание/ноу-хау - наша настоящая валюта. Чем больше мы знаем, тем больше мы можем принять лучшее решение о том, как что-то нужно делать и делать это быстрее.

Например, узнайте о:

• Практика разработки, разработка программного обеспечения, оценка, методология Бизнес-анализ базы данных (есть много замечательных книг и онлайн-ресурсов)

• Читать код - проекты с открытым исходным кодом - хорошее место для этого. Читать Программирование блогов

• Попробуйте участвовать в Open Source Проекты.

• Ищите группы пользователей программирования в ваш город и/или кто-то, кто может наставлять вас.

И да, как упоминалось в практике. Не просто читать, делать и смотреть, как вы будете улучшаться.:)

Ответ 8

Для меня должна быть причина узнать что-то новое... то есть, если у меня нет проекта или какой-то проблемы, которую мне нужно решить, нет никакой надежды. Если это условие выполняется, то я обычно стараюсь получить работу "Привет, мир", а после этого неба предел. В наши дни большая часть развития - это просто освоение новых API. Иногда бывает какой-то сдвиг в парадигме, который дует в ваш ум, но это не так часто, как люди любят думать, ИМХО.

Ответ 9

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

Практика, практика, чтение, а затем практика больше

Ответ 10

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

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

В-третьих, потратьте некоторое время на большую качественную базу с открытым исходным кодом. Я узнал тонну от кода Quake я и Quake II. Помог мне стать лучшим программистом.

Четвертое решение сложных проблем. Нажимайте свои ограничения. Постройте вещи, которые вы считали невозможными. Сейчас я пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.

Ответ 11

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

Ответ 12

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

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

Ответ 13

Один, кого вы что-то узнали, попытайтесь немного научиться чему-то. Читайте и много разбирайтесь в вещах, которые кажутся запутанными в первый раз (лямбда-функции, потоки, манипуляции с массивами и т.д.). Это займет свое время, но как только вы достаточно практиковали, то, что сначала показалось мне непонятным, будет знакомым и легким.

Ответ 14

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

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

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

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

Ответ 15

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

Хорошие сайты для чтения: -thedailywtf.com -joelonsoftware.com -codinghorror.com -blogs.msdn.com/oldnewthing

Отличное место для практики - программирование веб-сайтов конкурса. Это поможет вам научиться писать хорошие алгоритмы, не обязательно поддерживаемый код, но они по-прежнему являются хорошим местом для обучения. Тот, который я использовал (когда у меня было время): http://uva.onlinejudge.org/

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

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

Ответ 16

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

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

Ответ 17

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

Ответ 18

Существует два вида обучения: 1. Неофициальный (например, как вы научились функционировать в обществе - через взаимодействие со сверстниками и семьей) 2. Формальные (например, обучение в средней школе - через плановое обучение)

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

Трудно никому дать вам список всех, что вам нужно знать. Он варьируется в зависимости от области (например, веб-разработчика и разработчика), и он зависит от компании (например, Microsoft, которая продает программное обеспечение и General Motors, которые в основном используют его только в своих автомобилях). Неофициальный трейлинг и участие в попытках научиться чтобы сделать вашу работу лучше и получить повышение - это ваш лучший выбор, на мой взгляд.

Чтобы доказать свою точку зрения, у всех здесь есть отличные ответы, но все они различаются. Спросите разработчика рок-звезды, как он узнал что-то или когда, почему; они могут не знать - все происходит.

Ответ 19

  • Практика, индивидуально и коллективно

  • Держите открытый ум, всегда изучайте новые вещи, не ограничивайте себя тем, что знакомо. Не только с технической точки зрения, дизайна ui, навыков людей,... Не бойтесь того, что нового

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

  • Любовь кодирования. Если вам нравится то, что вы делаете, то много времени кажется легким. Каждый кодер нуждается в диске!

Ответ 20

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

Например, в С++ и Javascript я больше не использую if() без привязок. Причина в том, что его слишком легко ошибочно поставить:

while (true) {
    if (a > b)
        print a
        print b
}

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

Итак, найдите сверстника или наставника и поработайте над их кодом.

Ответ 21

Я не уверен, ищет ли OP общих советов о том, как быть хорошим программистом, а скорее более конкретным.

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

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

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

Ответ 22

Сама вера в существование дорожной карты препятствует пути к совершенству.