Помимо простого кодирования: куда идти? - 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 ]

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

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

РЕДАКТИРОВАТЬ после комментария : Если это слишком сложно для вас, попробуйте запустить «настоящий» проект. Я говорю «реальный», потому что это должно быть то, что вы хотите сделать, а не «создать блог» или «как сделать цикл». Например, в прошлом году я создал полнофункциональную систему управления проектами, которую теперь использую для некоторых своих проектов. Если это реально, вы будете более мотивированы и захотите это сделать.

Выберите технологию, которую вы хотите для него. Я бы порекомендовал Ruby on Rails , потому что он великолепен и полон интересных концепций, которые улучшат способ, которым вы будете кодировать сверхурочно (DRY, RESTful, MVC ...) ... но вы можете выбрать все, что захотите.

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

Поскольку вы начнете проект с нуля, вы увидите, с чего начать и как это будет развиваться. Я возьму инструмент управления проектом. Мы начали с «У проекта есть задачи», и в итоге мы получили все другие функции, такие как сложный календарь, полноценный интерфейс AJAX, встроенный чат ...

Как только вы увидите, как вы это сделали, попробуйте сделать то же самое с вашим другом, чтобы почувствовать командную работу в процессе разработки. Узнайте, как использовать SVN, basecamp ... узнать о процессах разработки программного обеспечения ( Agile !), Равноправном программировании ..

Есть много опыта! Тогда вы могли бы попробовать open source еще раз.

Надеюсь, что поможет

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

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

Я рекомендую книгу Real World Haskell для изучения.

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

1 голос
/ 13 июля 2009

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

Скажите им, что вы можете сделать это бесплатно, а затем просто сделайте это. Как только вы начнете делать это, вы начнете понимать, что вам нужно выучить.

Например, немного назад у меня на Mac была программа Peel www.getpeel.com. Но продал мой Mac за Wind, пока я путешествую.

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

1 голос
/ 13 июля 2009

Проверьте шаблоны проектирования.

Я полагаю, что это не просто простое кодирование.

1 голос
/ 13 июля 2009

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

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

1 голос
/ 13 июля 2009

Вы понимаете все следующее и как они работают?

  • Связанные списки (одинарные и двойные)
  • Последовательный или двоичный поиск
  • Бинарные деревья
  • Штабеля
  • Красно-черные деревья
  • Алгоритмическая сложность и большие обозначения O
  • Рекурсия
  • Хеш-таблицы и алгоритмы хеширования

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

1 голос
/ 13 июля 2009

Я думаю, что лучший способ улучшить свои навыки программиста - это делать то, для чего предназначалось программирование: решать проблемы. Я уверен, что вы играли на своей машине и одно время думали про себя: «Хотелось бы, чтобы была программа, которая делала это ...» или «Интересно, есть ли программы, которые делают X ...» Вместо того, чтобы просто гуглить, чтобы увидеть, написал ли это кто-то еще, напишите это самостоятельно. Начните с чего-то маленького и постепенно усложняйте. Добавить функции. Позвольте себе потерпеть неудачу, и когда вы это сделаете, спросите себя (или нас в stackoverflow), как преодолеть это препятствие. Если у вас есть основы программирования, все остальное просто делает большие вещи из маленьких вещей, а маленькие вещи, как правило, довольно легко.

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

1 голос
/ 13 июля 2009

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

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

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

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

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

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

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

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