Соглашусь с
Spetros, умение гуглить жизненоважный навык в программировании) 99% любых задач в том или ином виде уже решались до вас, по 70% уже есть хорошо расжованное описание, 50% есть еще и инструкции, поэтому если у вас не удается найти решение это либо плохо искали, либо неправильно поставлена задача.
По части второго в программировании нужно уметь разбивать задачу на части (подзадачи). То есть скажем задача найти подстроку во всех файлах папки, сходу не ясно как можно искать сразу во всех файлах, очевидно нужно искать в каждом по очереди, если файлы мелкие то все нормально, можно считать их целиком и потом спокойно делать в них поиск, но если они весом под 24Гб, в таком случае нужно читать файлы построчно и делать поиск подстроки в каждой отдельной строке и т.д.
Если "в голове" не получается построить полное решение конкретной подзадачи, нужно разбить ее на функциональные части и каждую из них решать как отдельную подзадачу. Вцелом любой, даже неимоверно сложный продукт с миллионом строк кода это лишь совокупность маленьких фрагментов, каждый из которых можно понять.