Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

Ответ 6

Для стартеров я бы предложил прочитать книгу Стива Макконнелла "Code Complete, 2nd Edition"

http://cc2e.com/

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

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

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

Ответ 12

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

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

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

Ответ 13

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

Лучший наставник.

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

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

Павел.

Ответ 14

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

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

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

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

Ответ 15

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

Ответ 16

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

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

Ответ 17

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

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

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

Ответ 18

Извините, пожалуйста, отправьте дубликат ответа, не выясните, как удалить

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

Ответ 19

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

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

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

удачи:)

Ответ 20

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