Помимо простого кодирования: куда идти? - PullRequest
11 голосов
/ 13 июля 2009

Я занимаюсь кодированием с ранних лет. Я начал с HTML, потом перешел на PHP / MySQL (создал свои собственные форумы, сайты социальных сетей и т. Д.), А затем разветвился на более традиционные языки, такие как Java и C ++ (также немного поднял VB .NET на высоком уровне). школа). Теперь я больше всего знаком с C ++, так как это язык, который нам преподают в Computer Science II (пропущен Comp Sci I) в RPI. Теперь я чувствую, что очень хорошо знаю, как программировать из этого класса (домашние задания были жестокими).

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

Мой вопрос: куда мне идти отсюда? Я пытался следовать онлайн-учебникам, но они были слишком просты. Затем я попытался перейти на sourceforge и помочь с различными проектами. Но, как только я скачал код, я заблудился в его сложности. Я никогда не создавал реальных программ в реальных масштабах. И я не знаю, с чего начать. Как вы переходите от знаний в области программирования к созданию программного обеспечения?

Я также открыт для изучения новых языков (javascript / jQuery, ASP .NET, C #, Python) или использования новых библиотек и / или фреймворков с c ++ (мы использовали только STL в Comp Sci II) и других языках. , Опять же, мой вопрос: куда мне идти отсюда? И я приветствую все возможные ответы.

Большое спасибо, Michael

Ответы [ 16 ]

0 голосов
/ 13 июля 2009

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

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

Например, вы можете попробовать подход «снизу вверх», в котором вы пытаетесь понять, как обрабатываются взаимодействия с базой данных, прежде чем смотреть на код, который использует уровень базы данных. Вы продолжаете идти вверх, пока не доберетесь до обработчиков событий GUI.

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

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

0 голосов
/ 13 июля 2009

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

0 голосов
/ 13 июля 2009

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

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

Например, если вам нужно какое-то программное обеспечение, которое проверяет RSS-каналы каждые 5 минут и делает небольшое всплывающее окно, как только появляется новое. Или вам нужна программа, которая позволит вам делать простые презентации, просто перетащив несколько картинок внутрь.

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

0 голосов
/ 13 июля 2009

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

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

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

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

0 голосов
/ 13 июля 2009

Что ж, мой совет - найти интересующую вас проблему / проект и попытаться ее кодировать. Попытка создать реальную проблему - это то, что движет вами. Найти что-то не сложное, но не слишком простое. При запуске нового языка стоит попробовать написать несколько инструментов. Например, вы можете запрограммировать скрипт Python, который печатает метрики в проекте C ++. Вы можете написать инструмент, который извлекает некоторую статистику из веб-сайта, который вы используете, и т. Д. Когда я узнал, программирование игр было довольно увлекательным (я был молод :-)). Вы можете попробовать запрограммировать какую-нибудь простую игру, используя 3D движок, например, Ogre3D . Участвовать в проекте с открытым исходным кодом тоже здорово, но, как вы уже сказали, возможно, пока что это немного ошеломляет; -)

Найдите что-то, что вам нравится, и у вас есть НАСТОЯЩАЯ полезная цель для вас. Вы будете стремиться решить проблему и многому научиться на этом пути!

0 голосов
/ 13 июля 2009

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

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