OwlFury
@OwlFury
Пытаюсь стать Android разработчиком

Откуда разработчики знают как именно что то реализовать?

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

Например человек работает разработчиком backend и ему приходит задача: "Сделать балансировщик нагрузки на сервера" или "Написать систему регистрации" или еще какие то задачи. Так как у меня вообще отсутвует опыт хоть какой-то разработки я еще только учусь.

Назрел вопрос.
Откуда разработчики черпают или как узнают как сделать то что от них просят.

Т.е ему дали задачу как я уже писал выше. И он такой "Ага вот тут так,там так.И работает". Мне интересно как к этому приходят, когда понимают как сделать то что от них просят.
  • Вопрос задан
  • 1100 просмотров
Решения вопроса 1
Ваша проблема в том, что вы слишком сильно задаетесь сложными вопросами. Примерно как пытаться понять, почему машина двигается "влоб".

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

Когда вам нужно сверстать страницу, вы что-то там себе пишете. Вот все, страница готова. Далее вам говорят. А сделайте регистрацию. Первое что вы делаете - лезете в гугл с запросом "как написать регистрацию на php". Вы видите кучу каши о каких-то запросах, базах, каких-то защитах, шифрованиях и тд. Все вместе прямо сейчас вам не понятно. Но разобравшись поэтапно в каждом из них вы уже можете написать простую регистрацию. Потом ваш сайт поломали к чертям, потому что при написании регистрации вы вообще не думали о безопасности. Вам дали по шапке и вот теперь новый опыт, в след раз все вещи вы будете стараться защитить.

Уже имея опыт работы с базой (так как вы писали модуль регистрации), вы, формально, можете поковыряться и сделать возможность добавлять в базу новости на сайт, а потом их выводить на этом же сайте. И внезапно, вы уже понимаете как реализовать кривой-косой блог.

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

P.S. Как говорилось людьми выше, есть такой инструмент как "поиск гугл", на худой конец "товаращи по цеху" помогут.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 6
zoonman
@zoonman
⋆⋆⋆⋆⋆
Разработчики черпают информацию из нескольких основных принципов
  • декомпозиция - разбиение больших частей на составные части. Например: нужно сделать гостевую книгу. В гостевой книге есть страница, которая отображает записи и есть та, через которую они добавляются. Т.е. первый уровень декомпозиции - страница отобразить записи и страница добавить запись. Далее каждая страница бьется дальше. Например отображение - где-то надо записи хранить, значит у нас будет база данных, как-то отображать, значит будет какой-то шаблон для страницы. Раз записи повторяются, то у всех записей будет одинаковый шаблон отображения. Данный принцип применятся до тех пор, пока не достигается конечная глубина, после которой становится очевидна тривиальность реализации. Если представить все эти шаги разбиений в виде дерева - мы получим дерево декомпозиции.
  • системный подход - когда будущее приложение разбивается на подсистемы (это как декомпозиция, но с другой стороны), например подстема отображения записей, подсистема хранения записей и т.д.

Приведенные выше принципы результат последовательного изучения информатики, программирования и проектирования систем. Каждый разработчик проходит через стадии, на которых он не знает, как реализовать или решить ту или иную проблему, поэтому он всегда находится в непрерывном изучении, как технологий, языков программирования, так и подходов к разработке, и, помимо этого, он изучает предметную область.
Имея разносторонний набор знаний человек прибегает к синтезу, в результате которого появляется некоторое обобщенное представление решения той или иной задачи. Как правило этот синтез является неопосредованным актом интеллектуальной деятельности (тупо человек не думает особо, а решение всплывает как бы само собой). Хотя на самом деле это результат высшей интеллектуальной деятельности.
Чтобы перейти от "я не могу это сделать" к "я справился" необходимо изучить опыт других людей, решавших подобные проблемы в прошлом и ознакомиться с тем, что они изучали - какие книги читали, какие науки постигали, курсы или обучение в университете (колледже). Не следует пренебрегать формальным обучением, оно закладывает базу, с котором можно развиваться впоследствии.
Обучение помогает приобрести некоторый опыт в решении задач и сформировать подходы к их решению.
После обучения следуют начинать работать по специальности, не перебирать места, а идти в любое место и набираться опыта. Опыт поможет сформировать представление о реальном положении вещей и том, как правильно применять полученные знания на практике. В общем, чем больше вы работаете, тем больше решений прийдется создать и тем более сложные задачи вы сможете решать.
Не стремитесь сразу браться за сложные задачи, начните с простых, тех, которые как вам кажется, вы сможете решить. И работайте.
Все приходит постепенно. Просто нужно движение. Учитесь, пробуйте применять изученное. И так по кругу. А потом сами не заметите, как спрогрессируете.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Да нихрена разработчики не знают, если цепочка короткая они спрашивают у заказчика, если длинная то там есть бизнес аналитики которые смог тысяч раз спрашивают у заказчика
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Нужно представлять: как происходит весь процесс шаг-за-шагом на верхнем уровне абстракции - в виде шагов или блок-схемы.

Это приходит со временем, с постепенным пониманием технологий взаимодействия (всей цепочки событий при исполнении кода) и инструмента реализации нужного функционала - языка программирования (+библиотек, и т.д.).

Банально, задача: сделать регистрацию.
Сразу вопрос: как PHP узнаёт: зареген я или нет?
И вот отсюда - начинается гугление и чтение документации. (т.е. получение знаний)
Затем - кодирование (получение опыта).

И т.д. для любой поставленной задачи.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
тебе повезло - сейчас все знают из Гугла, раньше приходилось знать из книг (да-да, сертификат Микрософта ценися больше)
сам Гугл знает от британских ученых

ну а британским ученым тоже повезло - https://arxiv.org/ + Стековерфло тоже не без Интернета живут
Ответ написан
Комментировать
profesor08
@profesor08
Либо из личного опыта, либо черпают знания из чужого опыта.
Ответ написан
Есть задача, есть проверенные/распространенные/популярные паттерны проектирования. Берем и применяем. Если задача более менее нестандартная, смотришь что должно быть результатом работы кода, прикидываешь что нужно получить на вход и как преобразовать это в выходные данные или состояние. Начинаешь писать. Когда есть первый рабочий код — это прототип, а в голове уже план/понимание как переписать его более понятным/быстрым/масштабируемым/переиспользуемым/безопасным/etc.

Если долго залипать в теорию и best practice, можно долго топтаться на месте. Джаст ду ит, как говорится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы