Я твердо убежден, что независимо от того, какое приложение вы смотрите в первый раз, будь то веб-приложение или настольное приложение , драйвер устройства или что-то еще, один разработчик обычно выполняет три шага, чтобы понять, как это работает:
Получите общую картину:
Посмотрите, как оно работает:
Понять (или хотя бы попытаться) понять, как было продумано приложение:
1-й и 2-й шаги являются чисто техническими, а 3-й ДОЛЖЕН быть нетехническим как возможно ... это больше о психологии и понимании того, как было создано приложение. Очевидно, это требует опыта, но если вы достаточно хорошо думаете и не тратите время своего мозга на технические детали, вы в конечном итоге его получите.
Весь этот процесс не должен требовать использования клавиатуры. Вы'
Ho ho, good luck with this one. It's a great question and I'm sure you'll get a ton of answers. Although I have to say I cannot give a satisfactory answer to this - the last thing I would describe my thought processes as is a flow chart - I don't think there is any golden formula for this.
The only tip in problem solving I can recommend is discussing it with somebody else. In those times when you hit a brick wall, going through it with a colleague is invaluable. Quite often, as well, they will actually not even add much to the discussion - in the process of getting all your thoughts out in the open, the solution can become clear.
I don't think... I process.
This is actually less flip than it sounds. I always break down tasks into their components and then break these down further, and that doesn't just go for writing software! Much like @Mark Pim U go through things sequentially.
My wife gets really annoyed when I make dinner because I take so long to get started.
Я начинаю с попытки понять всю проблему как она есть, а затем начинаю находить закономерности, которые я могу распознать, и делаю то же самое для них в виде своего рода рекурсивного процесса, пока не разберусь с разбивкой. решение, которое я могу реализовать и которому будет легче следовать.
People are notoriously bad at examining their own thought processes, but I'll give it a whirl. I test very high for visuo-spacial ability in IQ tests, medium-to-high for verbal skills, and moderate for mathematical skills (explains my A-level Maths grade, I suppose). amd when I start to design software, I think in terms of shapes and the connections between them. When it comes to describing these thoughts to others (or clarifying them for myself), I use simple block diagrams or the object diagrams taken from Jacobson's Objectory method - NOT the over complex stuff that UML suggests. I sometimes write textual descriptions of complex things, mostly as reminders to myself, but never use numbers or maths.
Of course this is just me - I've worked with maths whizzes who were just as good or even better programmers than myself.
Это один из тех редких случаев, когда я отвечу «просто работает». Я узнаю вещи, пролезая через них. У меня нет уловок или приспособлений, которые могли бы мне помочь. Мне потребовалось время, чтобы изучить PHP, но после этого Javascript стал намного проще. Как только вы возьметесь за одну задачу, следующие станут в совокупности проще.
Similar to Jonathan Sampson - it kind of just works.
When I'm attacking a real problem, I try and think of the most logical way of getting through it is. Затем, когда все идет не так (как обычно), мне приходится делать сотни шагов в сторону, чтобы добиться цели. Просто продолжайте сосредотачиваться на этой конечной цели, на этом логическом пути, и вы ее добьетесь.
В конце концов, он решает работать на меня, и я получаю готовый продукт, который обычно совсем не такой, как я планировал. Пока клиенты довольны, я доволен!
Лично я вижу код в своей голове графически, а не текстуально (как Нил Баттерворт) - это немного сложно описать, поскольку (цитируя STIV) «нет общей системы координат».
Лично я веду внутренний диалог с самим собой: «Хорошо, нам нужно пройтись по этому списку целых чисел». «Но мы можем сломаться, когда найдем желаемую ценность». «Хорошо, будет ли список определенно инициализирован, когда мы начнем?»
Мне было бы интересно узнать, проводились ли какие-либо психологические исследования по методам решения проблем.
Мой главный навык - определять сходство между уже известными мне моделями или системами и стоящей задачей. Связи между некоторыми из них могут показаться довольно абстрактными; ключ в том, чтобы определить связи. Это приводит к абстракции общих шаблонов и подходов, которые широко применимы. В связи с этим, самое важное, что я узнал об алгоритмах, было то, что проблема никогда не заключается в том, чтобы «придумать умный алгоритм для решения X». Это «модельная проблема X, которую можно решить с помощью существующего интеллектуального алгоритма Y».