Желательно иметь хотя бы твердую четверку по математике. Это как индикатор уже более или менее развитого логического мышления. Но желательно - совсем не значит обязательно. Есть примеры, когда и троечники вполне успешно изучали программирование.
Кажется, автору вопроса надо внимательно проработать книги:
1) Стив Макконнелл - "Совершенный код"
2) Мартин Фаулер и др. - "Рефакторинг. Улучшение существующего кода."
А по поводу "потом трудно вспомнить на чем я остановился, зачем введены те или или иные куски кода" - помогут системы управления версиями при условии комментирования изменений.
Когда работал в автокаде, обратил внимание на то, что стиль оформления с черным экраном и светлыми линиями был менее утомителен для глаз, чем белый экран и темные линии. Возможно, при программировании тоже темный экран будет для глаз лучше.