Несколько вещей для обучения навыкам решения проблем, связанных с разработкой программного обеспечения (как только вы найдете интересующий вас проект, который также написан на языке, который вам нравится):
и, конечно, обсудить, обсудить, обсудить, если вы думаете, что имеете базовое представление о проблеме, но нуждаетесь в разъяснении по некоторым вопросам, не бойтесь спрашивать своих коллег.
Надеюсь, это хоть немного помогло, Добро пожаловать в мир открытого кода и удачи!
Что я нашел полезным за эти годы, так это проверка вашего кода, изучение конвенций кодирования и лучших практик для различных языков. Открытые стандарты - это неизбежная часть программного обеспечения с открытым исходным кодом. Для того чтобы поддерживать успешный проект OSS, он должен иметь некоторые общие позиции в сообществе, поэтому, например:
Наконец, но не менее важно, изучите объектно-ориентированное программирование и различные архитектуры, используемые для разработки программного обеспечения, например, паттерн MVC.
Как говорили другие, обратитесь к списку рассылки проекта, все равно некоторые разработчики открытого кода не готовы помогать (к сожалению) в таких вещах.
В этой ситуации я ищу ответы самостоятельно: беру терминал и использую grep.
Угадав именование классов/функций, с которыми связана ваша проблема, вы найдете путь к модулю, где написаны интересные биты.
... анализ кода других людей необходим для того, чтобы сделать карьеру в этой области.
Я бы не сказал, что это правильно. Конечно, это не обязательно . Чтение чужого кода обычно не объясняет , почему они решили решить проблему определенным образом, и какие альтернативы они рассмотрели, а затем отклонили. Кроме того, нередко можно найти открытый исходный код, который плохо спроектирован и / или плохо реализован.
Проблема в том, что ... но иногда я не могу решить проблемы самостоятельно.
Ах. Что ж, решение этого - практиковаться, практиковаться, практиковаться и не бояться делать ошибки. Будьте самокритичны, но не позволяйте этому мешать вам «попробовать». Чем больше вы будете решать проблемы самостоятельно, тем легче будет это сделать.
Обязательно анализировать код других людей ... Я студент ... общедоступные репозитории с открытым исходным кодом могут быть ответом?
Проблема с открытым исходным кодом в том, что качество варьируется слишком.(В общедоступных репозиториях с открытым исходным кодом есть много моего собственного кода, из которого я бы не хотел, чтобы кто-нибудь пытался увидеть , не говоря уже о изучать . И все же часть моего кода, код, на который я потратил время и внимание, очень хорош - по крайней мере, так мне говорят мои коллеги.) Так что вы не хотите выбирать проект с открытым исходным кодом и учиться у J. Random Hacker. Вы хотите учиться у лучших хакеров.
Вот несколько стратегий:
Если вы студент, у вас есть доступ к учителям. Один или двое из них могут иметь представление о программном обеспечении. Спросите их, что стоит прочитать - чему вы научитесь.
Посмотрите конференции и журналы, в которых публикуются материалы о программном обеспечении: SIGPLAN, SIGSOFT, USENIX, Программное обеспечение - практика и опыт , Journal of Functional Programming . Прочтите о системах, которые вам интересны. Напишите авторам и спросите их, рекомендуют ли они вам попробовать учиться на их коде. Внимательно слушайте, что они говорят; большинство лучших хакеров знают, что могут добиться большего. Если вы получите неохотное признание с кучей оговорок, что, возможно, там есть чему поучиться, вы нашли нужного человека.
Если вы изучаете C, многие из старых вещей Bell Labs действительно заслуживают внимания (а многие - нет). Я восхищаюсь работами Джона Бентли, Брайана Кернигана, Роба Пайка и многих других. Вы можете загрузить и прочитать исходный код исходного awk
или интерпретатора Пайка для Newsqueak.
Популярность не коррелирует с пригодностью к обучению.Инструменты GNU очень популярны, но почти любой, кто видел оба, скажет вам, что вы узнаете больше из версий Bell Labs. И Linux очень популярен, но люди, которым я доверяю, которые работают в этой области, говорят мне, что если вы хотите узнать об операционных системах, вам следует изучить BSD. Я сам работаю в области компиляторов и могу сказать вам, что если вы хотите написать компилятор на C, модель для подражания - это малоизвестная lcc
, а не очень популярная gcc
].
Наконец, я настоятельно рекомендую работы Ричарда Берда, Ханса Боэма, Ральфа Хинце и Фонга Во (двух программистов на Haskell и двух программистов на C / C ++).
Спрашивайте, спрашивайте, спрашивайте, спрашивайте, если вы сталкиваетесь с конкретной проблемой или решением, которое вы не понимаете. Приложите добросовестные усилия, чтобы решить проблему или понять решение, поделитесь своим мыслительным процессом и спросите. SO - отличное место для того, что вы, несомненно, уже открыли. Удачи!