Как я могу быстро улучшить свои способности как программист?

1114 Я полагаю, что языки создаются по привычке. Ранние языки имели бы только операторы двоичного сравнения, потому что их было проще реализовать. Все привыкли говорить (x > 0 and x < y), пока разработчики языка не удосужились поддержать общую форму в математике, (0 < x < y).

В большинстве языков оператор сравнения возвращает логический тип. В случае 0 < x < y, если это интерпретировать как (0 < x) < y, это было бы бессмысленно, поскольку < не имеет смысла сравнивать булевы значения. Следовательно, новый компилятор может интерпретировать 0 < x < y как tmp:=x, 0 < tmp && tmp < y без нарушения обратной совместимости. Однако в случае x == y == z, если переменные уже являются булевыми значениями, неясно, означает ли это x == y && y == z или (x == y) == z.

В C # я использую следующий метод расширения, чтобы вы могли написать someColor.IsOneOf("Red", "Blue", "Yellow"). Это менее эффективно, чем прямое сравнение (как в случае с массивом, циклом, вызовами Equals() и боксом, если T является типом значения), но это, безусловно, удобно.

public static bool IsOneOf<T>(this T value, params T[] set) 
{
    object value2 = value;
    for (int i = 0; i < set.Length; i++)
        if (set[i].Equals(value2))
            return true;
    return false;
}
6
задан Dinah 3 October 2009 в 13:10
поделиться

17 ответов

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

Я бы исследовал, как работает операционная система (как они распределяют ресурсы для вас, как они планируют программы и потоки), как работают сети (маршрутизация , Поведение и ограничения TCP / UDP и т. Д.), А также немного теории баз данных.

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

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

7
ответ дан 8 December 2019 в 02:15
поделиться

My multi-advise:

  1. Keep training, and write code. Participate in small open source project.
  2. Read standard book (here is the Jeff's list)
  3. Learn from your mistakes, or better from the mistakes of others by reading site like www.badprogramming.com
0
ответ дан 8 December 2019 в 02:15
поделиться

Вот мое многостороннее предложение:

1) Работа над общей картиной - посмотрите на различные методологии разработки программного обеспечения и посмотрите, как при программировании вы следуете одному из этих подходов. Вы работали с Java, было ли это веб-приложение, приложение Windows, консольное приложение или что-то еще? Немного узнать о других типах также может оказаться полезным

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

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

0
ответ дан 8 December 2019 в 02:15
поделиться

Узнайте о передовых методах работы (например, обучающие видео на windowsclient.net). Получите любую проблему и решите ее, используя базу данных в качестве входных данных и базу данных в качестве выходных данных. Начните заново несколько раз. Это максимально близко к сценарию реального мира. Прочтите книги, рекомендованные Джоэлем.

0
ответ дан 8 December 2019 в 02:15
поделиться

Напишите программы для автоматизации вещей, которые вы делаете вручную ежедневно.

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

Суть такова:

Чтобы улучшить свое программирование, занимайтесь программированием! : D

1
ответ дан 8 December 2019 в 02:15
поделиться

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

В результате я бы сказал, выучите новый язык - знание более одного языка всегда открывает вам новые концепции. Как java-программист, я бы предложил C / C ++, поскольку они очень популярны, но они заполняют области, в которые не входят «управляемые высокоуровневые» языки, низкоуровневые высокопроизводительные, готовые к работе приложения. Если вы изучите C # (например), вы обнаружите, что просто используете другой диалект java (примерно), и вы не узнаете слишком много.

Если вам не нравится идея C / C ++, используйте вместо этого язык сценариев - bash, VBScript / WMI, perl или python. они будут достаточно разными, чтобы научить вас чему-нибудь хорошему.

Или сделайте и то, и другое!

2
ответ дан 8 December 2019 в 02:15
поделиться

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

На рабочем месте вы, скорее всего, не будет предложено писать программы типа «запустил и забыл», а будет работать в команде над большими приложениями. Чтобы делать это эффективно, вам необходимо научиться:

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

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

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

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

2
ответ дан 8 December 2019 в 02:15
поделиться

Помимо выбора интересного проекта и его реализации с нуля, чтение чужого кода также может быть полезным для улучшения ваших навыков. У Скотта Хансельмана есть хорошая серия по чтению кода: Weekly Source Code

2
ответ дан 8 December 2019 в 02:15
поделиться

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

2
ответ дан 8 December 2019 в 02:15
поделиться

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

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

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

Также, если вы живете рядом с колледжем / университетом, исследовательские лаборатории на территории кампуса почти всегда ищут летних стажеров для работы над кодом в одной форме или форме. Некоторые даже заплатят вам. Я делал это в течение 4-5 лет в средней школе и в каком-то университете, и это был отличный опыт обучения.

Очевидно, что участие в проекте с открытым исходным кодом - отличный способ получить опыт работы с другими разработчиками. Ознакомьтесь с материалами на github , sourceforge , bitbucket .

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

2
ответ дан 8 December 2019 в 02:15
поделиться

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

3
ответ дан 8 December 2019 в 02:15
поделиться

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

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

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

3
ответ дан 8 December 2019 в 02:15
поделиться

Навыки программирования - это лишь малая часть того, что делает успешного программиста, ИМХО. Также очень важна возможность читать спецификации, задавать вопросы и взаимодействовать с другими людьми для извлечения информации, необходимой для программирования. Обратите внимание на свои «мягкие» навыки, они очень помогут вам стать успешным программистом в коммерческой среде.

3
ответ дан 8 December 2019 в 02:15
поделиться

Есть только одна вещь, которая может улучшить ваши навыки как программиста: Программа .

Чтение книг о программировании сродни чтению книг о велоспорте. Это не превратит вас в велосипедиста.

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

5
ответ дан 8 December 2019 в 02:15
поделиться

Это слово быстро меня беспокоит ... Предлагаю вам прочитать Научитесь программировать за десять лет - Почему все так спешат? ~~ Питер Норвиг

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

; -)

10
ответ дан 8 December 2019 в 02:15
поделиться

Из 99 способов стать лучшим разработчиком :

  1. Программа! и постарайтесь максимально разнообразить свою работу
  2. Найдите наставника
  3. Станьте наставником
  4. Узнайте о различных аспектах разработки программного обеспечения, кроме кода (бизнес программного обеспечения и т. д.)
0
ответ дан 8 December 2019 в 02:15
поделиться

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

  • вы можете работать над кодом, написанным другими, что иногда бывает блестяще, а иногда ужасно;
  • сотрудничать в географически распределенной команде;
  • познакомиться с групповой политикой (ура!);
  • понять, что значит иметь реальных пользователей.

процитирую лишь некоторые из них. Некоторые хорошие места для поиска:

1
ответ дан 8 December 2019 в 02:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: