Как я могу быстро улучшить свои способности программиста? - PullRequest
6 голосов
/ 25 мая 2009

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

Справочная информация: Я прошел один курс информатики в java в своем университете, но планирую специализироваться в области компьютерных наук и электротехники (ECE). Мой урок по Java был довольно элементарным. Нам предоставили каркас и просто отредактировали / создали несколько методов и классов для выполнения простой задачи. Мы сделали версию Breakout и создали ИИ для простой игры «подключи четыре». Хотя я немного знаком с большими обозначениями O, на самом деле я не изучал их в классе (мой следующий класс CS охватывает это). В моем вводном курсе ЕЭК мы также запрограммировали BOE-ботов в PBASIC, чтобы они соревновались в полосе препятствий. Будучи студентом инженерного факультета, я также познакомился с Matlab, хотя я использовал его только для домашней работы по линейной алгебре. Таким образом, я не очень разбираюсь в программировании, но мне очень понравилось все, что я делал до сих пор, и я ищу способы создать более ценный набор навыков.

Выполненные шаги: Обратив больше внимания на раздел программирования reddit, я нашел ссылку на Project Euler . Этим летом я разбирался с этими проблемами (вчера я закончил свое 42-е решение), но я ищу другое направление. Я читал записи в блоге и так сильно. Я хотел бы кое-что узнать о php и, возможно, создать динамическую веб-страницу, но, по сути, я хочу сделать все, что в моих силах, чтобы улучшить себя и подготовиться к рабочему миру.

Вопрос: Какое направление вы бы мне порекомендовали? Должен ли я выучить новый язык? Продолжаете атаковать Project Euler? Читать некоторые книги по программированию? Начать проект кодирования (я даже не знаю, с чего начать)? Подождать до школы? Узнайте о более фундаментальных принципах программирования?

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

Ответы [ 17 ]

10 голосов
/ 25 мая 2009

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

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

; -)

7 голосов
/ 25 мая 2009

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

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

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

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

5 голосов
/ 25 мая 2009

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

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

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

3 голосов
/ 25 мая 2009

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

3 голосов
/ 25 мая 2009

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

3 голосов
/ 25 мая 2009

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

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

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

2 голосов
/ 25 мая 2009

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

2 голосов
/ 25 мая 2009

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

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

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

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

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

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

2 голосов
/ 25 мая 2009

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

2 голосов
/ 25 мая 2009

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...