Как понять что и как гуглить новичку при изучении программирования с нуля?
Всем привет!
Я хочу спросить у людей, которые не первый год работают программистами, на любом из языков программирования!
Я посмотрев пару видосов и прочитав несколько статей о том "Как писать программы, стадии создания проектов, этапы разработки" я понял следующее:
1. Понять проблему, что делает программа, что на входе и что на выходе, как прогамму видит пользователь
2. Формулирование требований к программе со стороны выдуманного "ЗАКАЗЧИКА"
3. Построение архитектуры проекта ( UML, псевдокод)
4. Декомпозиция
5. Начинаем программировать по кусочкам и собирает пазл ориентируясь по архитектуре UML проекта
6. Пишем тесты
Так вот я по такому принципу и начал делать, программист с опытом в 7 лет на java сказал что тебе не надо гуглить а нужно самому как сможешь написать шахматы, хотябы плохо, так я и начал сам, но впал в ступор уже на шаге создания игрового поля( не понимал как или в виде чего представить само поле и фигуры, как сделать перемещение) и я увидел одно решение, в разумной мере думать о решении, алгоритме, а затем прогуглить скажем, как создать игровове поле на основе массивов, и так далее, взять все задачи которые я поставил, анализировать, есть ли у меня знания или идея как это сделать, если смог придумать решение(хоть и плохое) подумать еще и приминить, а вот что делать если и близко не понимаю как сделать то или инное действие, скажем в архитектуре, есть некая сущность которая будет делать то то, а идея как сделать такое или хотя бы что то похожее, к примеру, есть крестики нолики, есть шахматы, есть тетрис, есть судоку и я понимаю теперь загуглив как с массивами наполнить поле, как примерно сделать змейку или судоку! Верно ли что нужно гуглить ставить задачи и пытаться решить проблему но перед этим подумать самому но в разумной степени???
Было дело, что во 2-3 главе учебника Head first java я просидел 5 часов что бы выполнить упражнения "Головоломка у бассейна" кто знает, там дополнительное задание было вывести другое число и выполнить это можно было только зная что объект присвоенный знаком равно не становиться копией а просто 2 ссылки на 1 объект и не загуглив коментарий на форуме я бы не понял что переменные cat1.age + cat2.age при условии что cat1 = cat2 будут ссылать на один объект и их переменные будут одним целым для 2 экземпляров класса!
Как гуглить и программировать с умом, где граница что пора спросить у гугла или ютуба "Гугл как это ... зделать?"
По науке ступор длится 23 минуты.
Несколько ступоров подряд, соответственно, дольше.
Правда, если больше недели, то что-то явно не так.
А если и 5-и минут не прошло, то всё нормально, так и должно быть.
Ну а так просто нужно время. Чем больше времени тратишь, тем лучше запоминаешь. Даже если это мелочь, но просидел над ней пару часов, то запомнишь на всю жизнь, то есть польза на лицо. Главное, как можно больше думать и решать самому, пусть даже и подсмотрев ответ через время.
Просто я не видел ещё ни одного теоретика, который шарит больше практика...
НО, видел больше практиков, которые на словах "не в зуб ногой", но, если поставить задачу и "отойти"...то они её берут и решают!
Просто ставь себе сам задачу...и решай пока не дойдёшь до результата!
Далее усложняй...и т.д. ...
Ну и при этом, когда решаешь какую-то "задачу", прогугли на эту тему какие-то "мировые практики"...И, если в голову ничего "элегантнее" не пришло, то воспроизводи "мировую практику" для совей задачи...ЕСЛИ в голову пришло лучшее решение, чем ты где-либо "нагуглил"...применяй его...как-то так...
Ну, правда, прежде, чем понять лучшее это решение или нет - тоже надо пройти определённый путь...
Adamos, Ну я и говорю, что такое чаще))
Я сам много где работал по принципу "идите в лес со своими собеседованиями...лучше поставьте задачу и посмотрите как я её буду решать"...
Во всех случаях "сходу" устраивался))
Щас, правда, сам собеседую людей бывает...и никогда не "валю" какими-то "умными" фразами...
А тупо...есть задача...какое Вы представляете решение этой задачи? И, если Вы на данный момент не знаете, как решить данную задачу, то какие будут Ваши действия, чтобы это преодолеть...
Пока у вас нет опыта решения банальных задач, вы не сможете начать выполнять свои 6 пунктов.
Сведите задачу к тому куску слона, который реально можете проглотить, и когда он воплотится в код - только тогда пытайтесь хвататься за соседний.
Не можете представить себе все взаимосвязи в шахматах? Отложите шахматы, сделайте судоку и змейку, только не примерно, а так, чтобы оно работало. Потом беритесь за задачи, в которых эту банальную часть вы уже сможете решить, это упростит решение остального.
Что вы можете, прочитав учебник по грамматике языка, выстроить работоспособную иерархию классов - и не надейтесь. Грабли ждут. Но гуглить и выспрашивать на перекрестках - бесполезно. Самому - носом в опилки, как говаривал Карандаш.
Книги - это хорошо, но потом. Программист с 7-летним опытом - это сильно потом!
Я тоже хотел по книгам, но здесь мне посоветовали курс на stepik.org. И это очень правильный совет! В книгах есть упражнения, но это не то. Курс - это дозированная теория + МНОГО задач. Т.е. каждую тему ты рассматриваешь на практике многократно и с разных сторон. Твоё решение проверяется тестовой системой, ты можешь его обсудить с другими участниками в комментариях.
Ты учишься разбирать задачи - от простых к более сложным. На курсе тебе дают далеко не всю теорию - много приходится искать самому и это тоже правильно.
В итоге у тебя набита рука на:
- понимание задачи;
- составление алгоритма;
- запись его в виде кода;
- отладку программы - это крайне важно!
- поиск необходимого в интернете;
- использование IDE.
После этого можно читать книги. Они заполнят пробелы: "Ого, я этим пользуюсь, а оказывается вот оно что!". Ты будешь понимать прочитанное т.к. многие вещи ты уже знаешь, а также знаешь как устроены вещи, которых ты ещё не знаешь.
А программистом надо общаться уже потом - когда у тебя мозг перестроится и вы начнёте общаться на одном языке :)
Карьерные перспективы у меня - полный шлак. Меня не возьмут из-за отсутствия смузи и подворотов, а также возраста. Из поползновений - написано хамское резюме, которым можно троллить тёток в кадрах.
Хотя, конечно, было бы интересно зайти посмотреть как у вас там всё устроено.
Из личных достижений: шахматы не писал и не буду, но почти написал Color Lines, но т.к. писал её в самом начале своих занятий, там гов... монолит почти. Начал было рефакторить на правильные объекты, но понял что проще переписать заново, используя текущий опыт. Бросил пока, может потом займусь, переделаю.
Что касается "типичного" для Java применения - этого вашего вэб-бэкэнда, то написать его пока не готов, но придумал себе учебную задачу и уже знаю из чего она будет состоять. Т.е. вопроса "что гуглить" передо мной не стоит - это я знаю и именно благодаря курсам и "длинным" задачам на 10-20 шагов.
Добью курс - займусь. Буду читать то что отложено в "Читать" и реализовывать куски. Пока накидываю ТЗ.
По срокам - учусь почти год, правда с перерывами (но последние 5 мес - каждый день без выходных).
Такие дела.
AVKor, ваще холодный как яйца майора Пронина. Вместо того чтобы пытаться меня ловить на злоупотреблениях, лучше бы дали свой рецепт "что загуглить чтобы стать программистом". А вопрошающий выберет что ему по нраву.
Если шахматы сделать сложно, напишите сперва helloworld
потом усложняйте
Массив это правильно, у вас просто непонимание что массив с данными о фигурах и визуальная картинка - разные вещи.