Вот немного информации обо мне, прежде чем начать с вопроса.
Я - бакалавр компьютерных наук, Java - мой основной язык программирования.
Основная проблема в моем университете - стандарты обучения. Никого не волнует обучение студентов программированию, а не только теоретические знания.
В результате большинство моих коллег по колледжу совсем не разбираются в программировании.
Даже я не смог выйти из традиционной среды программирования, которая до некоторой степени ограничивает мое кодирование.
Каковы возможные пути, которыми я могу развить и расширить свои навыки программирования / кодирования.
Кроме того, вы можете предложить источники для того же?
Отредактировано : источники, предлагающие развитие навыков кодирования.
Ответы:
Программирование - одна из областей, где опыт имеет значение. Поэтому, чтобы стать лучшим программистом, вам нужно больше кодировать. Тем не менее, написание не единственное, что вы должны делать. Вам также следует прочитать код других разработчиков и узнать, что это за хороший код. Обратитесь к ТАК вопросы по этому поводу .
Вы также можете найти полезными книги, специально посвященные кодированию; такие как «Код завершен». Они содержат описания того, что такое хороший код, который в сочетании с вашими фундаментальными знаниями может сделать вас хорошим программистом.
источник
must-read
списке. :) Спасибо!(push 'code-complete must-read)
Моя любимая цитата из Конфуция:
Все знания, которые я получил, были от применения одной и той же стратегии:
Вы хотите изучать C #? Получить работу в качестве разработчика C #.
Вы хотите выучить итальянский? Идите туда со словарем английского / итальянского и говорите по-итальянски
Вы хотите научиться кодированию? Код!
источник
Кодирование - отличный совет, но без кого-то, кто даст вам обратную связь, вы просто повторите свои ошибки. Найти работу, работать над проектом с открытым исходным кодом, найти наставника и заставить их взглянуть на ваш код.
источник
Вот презентация Дэна Норта и QCon о том, как перейти от новичка к опытному программисту, под названием «Заточка инструментов» . Ниже приведены основные предложения из презентации:
источник
Попробуйте написать компилятор для простого языка с нуля. Вы будете значительно улучшать свои навыки по пути (с некоторыми хорошими теоретическими приемами из теории формального языка как бонус) Я попытался написать простую версию Excel, и это тоже очень хорошее упражнение.
Как говорили другие, единственный способ улучшить свои навыки кодирования - это сделать это на самом деле. Запачкайте руки большими проектами. Но для большой программы еще более важно овладеть техникой проектирования программного обеспечения, в противном случае размер программы кажется неуправляемым.
Есть одна хорошая цитата из Нейта Кирби:
Поэтому переключение между этими двумя уровнями абстракции - это навык, которым вы должны овладеть.
Кроме того, скорость того, сколько строк кода вы можете написать в час - это не то, к чему вы должны стремиться. Мне нравится цитата Дэвида Парнаса :
источник
Я реализовал либо пул ставок, либо игру «Баккара» почти на каждом языке, который я выучил.
Этот тип программного обеспечения охватывает
Блэкджек с несколькими игроками и покер также будут работать.
Одним из предостережений является то, что в своей повседневной работе я работаю над финансовыми системами, и существует огромное совпадение между вещами, которые необходимо учитывать при написании многопользовательской азартной игры и торговой системы.
источник
источник
Подумайте об этом так ... Тайгер Вудс не стал «лучшим» игроком в гольф, наблюдая за гольфом или читая об этом. Он поступил так, как любой другой спортсмен, учась, тренируясь, находя, где он может улучшить свою игру, и что-то с этим делать.
Кодирование одинаковое. Лучший способ добиться большего - это изучить то, что делают другие, понять, ПОЧЕМУ они делают это таким образом, а затем делать это самостоятельно.
источник
Как и в любой другой человеческой деятельности, лучший способ улучшить свои навыки - это практиковать свои знания, но для этого вам нужны упражнения. Дейв Томас , один из авторов книги «Прагматичный программист», представил концепцию Code Katas , аналогичную концепции kata в боевых искусствах.
Вы можете посмотреть там: http://codekata.pragprog.com/
источник
Прыгайте в воду, поначалу может быть холодно, и вы испытаете искушение выбраться, но вскоре ваше тело привыкнет к нему и снова станет теплым, и, когда вы почувствуете себя комфортно в воде, вы сможете плавать вокруг, возможно, и глубокий конец.
Я только что закончил колледж пару месяцев назад, где я изучал Java. Как и вы, я понятия не имел, как правильно кодировать. Около месяца назад я хотел создать веб-приложение на PHP. Я не знал, что я делал, но просто пошел на это. Сначала это было пугающе и ошеломляюще, но с практикой это становится естественным. Я даже написал приложение много раз, каждый раз упрощая его еще больше. Сейчас я работаю над приложением с нуля, но на этот раз я выясняю, как сделать его объектно-ориентированным и использовать PEAR и его модуль quickform, что является еще одним препятствием, которое я должен преодолеть, но, тем не менее, определенно и взволнован.
Так что практикуйтесь. Прыгай в воду! Удачи :)
источник
Я предлагаю изучить весь синтаксис вашего любимого языка. Понять, как использовать виртуальные функции, наследование, лямбда, если они существуют. и т.д. Одна вещь, которую я сделал, - это взять большую страшную библиотеку (я сделал это с boost и STL для C ++) и посмотреть, имеет ли смысл каждая строка и каждое ключевое слово.
Или же вы можете прочитать справочник по синтаксису языка, если есть хороший, который охватывает самую последнюю версию. В качестве примера здесь приведена ссылка на C # (не версия вверху. Я сделал ошибку, посмотрев на более популярную более старую версию, в которой не было синтаксиса, который я искал)
источник
Общее согласие: «Пиши больше кода», с чем я согласен, но я добавлю к этому совету, что тебе следует писать много разных видов кода. Java хороша в том, что касается языков, но вам определенно следует писать код, как вверх, так и вниз по спектру мощности. В дополнение к Java, я бы предложил сделать несколько небольших проектов на языке более низкого уровня (C - хороший вариант для этого), язык сценариев (я предпочитаю Perl, но Python также хороший выбор), функциональный язык ( lisp - это общая рекомендация, но OCaml и Haskell также являются хорошим выбором), и, по крайней мере, научиться читать на ассемблере.
Кроме того, выберите некоторые типы программ, которые вы реализуете. Посмотрите на реализацию хотя бы графического интерфейса пользователя Desktop, многофункционального веб-приложения, сетевого клиента и сервера, драйвера, утилиты сбора данных, трассировщика лучей и симуляции физики.
Все проекты должны быть относительно небольшими по объему, цель состоит не в том, чтобы иметь многофункциональную программу, а в том, чтобы получить широкий опыт в различных областях, с которыми вы можете столкнуться, чтобы изучить различные типы мышления, необходимые для каждого, и выяснить, где ваши интересы.
Как только вы это сделаете, у вас будет хорошее представление о том, какой тип программирования вам наиболее интересен, и вы можете найти или запустить проект с открытым исходным кодом, чтобы получить опыт работы с большими базами кода, работающими с перспективные проекты и работа с другими разработчиками.
источник
Вы получаете несколько похожих ответов, и мои тоже будут такими же. Написать код Есть два хороших способа сделать это.
Любой из них даст вам непосредственный опыт программирования, который вам необходим, а также участие в сообществах программистов по мере того, как вы учитесь, и вам придется задавать вопросы, чтобы извлечь из этого больше пользы. Вы сделаете много ошибок. Это хорошо - если вы перестаете совершать ошибки, вы перестаете учиться, и вам нужно найти какой-то новый способ бросить вызов себе.
источник
Мои предложения
источник
Экспертные обзоры действительно помогают улучшить качество вашего кода. Если у вас нет настоящего наставника, вы можете опубликовать свой код [после того, как вы уменьшите его до необходимого минимума], в StackOverflow или RefactorMyCode или в списках рассылки, и люди помогут вам улучшить качество вашего кода.
источник
«Практика!» Это клише.
Вы должны пересмотреть то, что вы узнали на уроках математики, и составить несколько программ, которые решают проблемы. Кроме того, реализуйте программу лифта, торговый автомат (который рассчитывает изменения в монетах), чтобы отточить свои логические навыки. Думайте обо всем в повседневной жизни и воплощайте их в жизнь.
источник
Да, практика чрезвычайно важна для развития навыков программирования и поддержания их остроты. Однако одна только практика приведет вас только так далеко. Вы также должны учиться у людей, которые знают больше, чем вы. Есть приемы, о которых вы никогда не слышали, приемы, преимущества которых не сразу очевидны, и приемы, которые вы никогда не сможете придумать сами.
Способ изучения новых техник, изящных уловок и полезных практик очень велик. Читать книги. Поговорите с коллегами. Задавать вопросы. Просмотрите код других людей и попросите их просмотреть ваш. Читайте блоги и статьи по программированию, в том числе и на этом сайте. Короче, не работай в вакууме.
Да, и если вы не уверены, что означает NP-полная, или если нотация big-O вас пугает, то вам, вероятно, стоит воспользоваться некоторой теорией вычислений и классами алгоритмов.
источник
Я бы сказал, что вам следует ознакомиться с шаблонами проектирования, такими как Builder, Factory, Composite и, в конечном итоге, Observer, Mediator и Flyweight. Шаблоны проектирования не являются конечной целью решений для кодирования, но они демонстрируют, как реализовать теоретические концепции объектно-ориентированного программирования.
источник
Я могу только предложить ту вещь, которая сработала для меня. Я мечтал выучить язык программирования и создать с ним шахматный движок. Я оставил тратить время на книги, статьи и небольшие образцы. Поэтому я решил проверить реальные проекты, в которых есть лучшая документация для разработчика. Я выбрал один и начал читать проект день ото дня. Не думайте, что прошедшие дни - пустая трата времени на чтение. Это гораздо лучше, чем тратить время на чтение статей и книг. Вы столкнетесь со многими вещами, которые не ясны на первый взгляд, но день ото дня это изменится, если вы будете терпеливо пытаться исследовать. Не ожидайте, что все поймете за неделю. Вы должны сохранять низкую самооценку, когда не понимаете некоторых вещей. Просто попробуйте выяснить, как работает эта * потрясающая вещь и наслаждайтесь.
Выберите существующий проект, который вам не безразличен. Начните читать коды, отлаживать его и пытаться понять, как все работает каждый день. Также используйте проект для себя. Затем начните добавлять некоторые функции, которые вы хотите. Даже попробуйте написать такое же или похожее приложение.
источник