2009-02-20 3 views
17

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

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

Подробнее: Вопрос в том, как разработать решение, а не как лучше кода.

ответ

21

Существует много разных подходов/советов.

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

  2. Код кодового обозначения. Код для удовольствия, код только ради кодирования, возьмите проблему, которая НЕПОСРЕДСТВЕННО не имеет ничего общего с работой, и просто код на ней (в свое время, конечно). Вы в конечном итоге решаете одну и ту же проблему несколькими способами и, надеюсь, начнете рассматривать проблемы по-разному. Или мы могли бы сказать «думать вне коробки».

  3. Поднимитесь на вызов. Когда вы сталкиваетесь с проблемой, что единственное решение, которое вы можете придумать, является «уродливым» или «грязным». Подходите к решению найти элегантное решение. Элегантные решения на 90% обсессивно компульсивны, 10% садисты, по крайней мере, когда вы начинаете.

  4. Не стесняйтесь задавать вопросы. Думаю, у тебя может быть это. Поэтому просто продолжайте задавать вопросы.

+0

Где я могу найти хорошие проблемы, которые я могу использовать для кодирования? – Ali

+0

Выберите один случайным образом. Это зависит от языка и т. Д., Который вы вводите в код. Но как насчет написания кода для выхода и чтения всех ваших rss-каналов и отправки вам электронной почты по ключевым словам. Поиск проблем для кода, в определенной степени, изобретает колесо. Но по-своему. – Infamy

+0

Теперь я понимаю, что вы имеете в виду, спасибо. Мой фон в .NET, есть ли сайт, на котором люди публикуют идеи и проблемы, которые они имеют в виду? – Ali

6
+0

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

+1

Это около 1000 страниц, действительно ли это стоит? – Ali

+0

@Ali: Определенно стоит. Я больше не рекомендую эту книгу, потому что чувствую, что это само собой разумеется, но каждый профессиональный разработчик должен ее прочитать. –

2

Для начала я хотел бы предложить чтение книги Стива Макконнелла "Совершенный код, 2-е издание"

http://cc2e.com/

2

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

7

Сохраните список всех проблем, которые вы или другие продлеваете или поддерживаете свой код.

Регулярно просматривайте этот список и сортируйте его по количеству трудностей. Затем создайте или найдите методы, которые минимизируют трудности и превращают их в постоянно меняющийся список «лучших практик».

2

Для решения проблемы техники рассмотрите, как другие люди решили проблемы. Я рекомендую The Algorithm Design Manual и Algorithms in a Nutshell. Обе эти книги берут вас из описания проблемы через несколько итераций решений, чтобы показать вам процесс мышления, а не сразу перейти к окончательному решению.

2

Самое эффективное решение, которое я нашел, это найти проблему и напасть на нее. Начните с небольших проблем и прокладывайте себе путь. Если необходимо, создать проблемы (хотя и не на работе, и, конечно, не на первичной ветке).

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

+0

Тот же вопрос, который я задал Infamy, Как я могу найти хорошие проблемы, которые могут помочь их решению? – Ali

+0

1: Присоединяйтесь к команде разработчиков большой компании, у них всегда есть проблемы. 2: Присоединяйтесь к проекту OSS, например FireFox или MetaWeblog. 3. Перерыв что-то. – tsilb

2

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

alt text http://headfirstlabs.com/Images/hfooad_cover.gif

http://headfirstlabs.com/books/hfooad/

0

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

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

-3

Чтобы улучшить кодировку, код еще.

+0

Вопрос о том, как разработать решение, а не как лучше кода. – Ali

3

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

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

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

+0

Это хорошая идея, но как можно найти наставника? – Ali

+0

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

0

На мой взгляд, лучший путь от среднего до продвинутого уровня является:

Читайте хороший код, написанный другими людьми.

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

+0

Где вы можете найти эти коды? – Ali

+0

Есть много проектов с открытым исходным кодом в sourceforge и т. Д. Не весь код очень хорош, но вы, вероятно, найдете хорошие примеры во многих проектах с открытым исходным кодом, созданных на основе eshtablished. –

+0

Sourceforge.net - это не единственное место. Есть много других, таких как codeplex.com, code.google.com, github.com ... –

1

Начните играть на языках, отличных от того, который вы используете сейчас. И с этим я не хочу начинать использовать Java в качестве разработчика .Net.

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

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

3

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

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

Конкретная, конструктивная обратная связь от ваших сверстников сразу же полезна.

1

Чтение и разговоры об этом помогут. Опыт тоже велик (предполагая, что вы не просто восстанавливаете вредные привычки).

Наставник является лучшим.

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

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

Paul.

1

Думаю, вам понравится Programming Pearls. Это очень удобочитаемо, с множеством подсказок, и дал мне много информации о том, как подойти к проблемам.

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

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

Теперь, если бы я только знал, что это Дональд Кнут парень курит ....

1

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

0

жаль acccidently отправить дубликат ответа, не понял, как удалить

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

0

1) Прочитайте как можно больше книг.

2) Изучите как можно больше открытого кода.

3) Код, проверка кода и пароли, как можно больше.

удачи :)

Смежные вопросы