1)
Я бы посоветовал прочитать «UNIX программное окружение» Б.Кернигана.
Дело в том что программист в первую очередь пользователь и только потом разработчик. Если он пользуется своими инструментами эффективно, то это будет сказываться на его результатах! В данной книге показано как лучше всего использовать командную строку, а она как известно, позволяет очень много автоматизировать.
2) После прочтения п.1. рекомендую «Искусство программирования для UNIX» Реймонда.
В этой книге показана практическая сторона дела. Когда надо оптимизировать? Какими вопросами задаваться при выборе между текстовой и двоичной формой представления данных? Когда прятать поток ошибок от пользователя а когда нет? Если прятать, то что выводить? и много много других ответов на вопросы которые возникают очень часто!!!
Смею заверить подходы используемые в UNIX-подобных системах можно успешно применять и в Windows. Я побольшей части сижу на Windows 7 и то чему научился из этих книг очень помогает мне сейчас!