Хотелось бы затронуть основные ошибки разработчиков:
1) Стремление заранее предусмотреть быстродействие и работу на высоких нагрузках.
Сразу скажу, что с опытом пропадают все мысли про то, чтобы написать код так, чтобы он сразу работал пошустрее. Вернее страх, боязнь того, что все будет тормозить. Всегда можно ускорить код, покопавшись в нем с дебаггером, но нельзя сделать быстрее проект, которого нет из-за вечных стопах на оптимизационных мелочах.
2) Непродуманная безопасность.
Ускорить код позже значительно проще, чем пытаться понять где могла бы быть дырка. Но это мой субьективный взгяд, просто уже так сложилось, что я заранее предусматриваю безопасность и стараюсь о ней не забывать.
3) Идеальная структура кода.
Не думайте про объекты, интерфейсы и прочее ООП. Просто напишите так, чтобы оно работало. Прямо сейчас. Рефакторить код, вынося его в отдельные библиотеки можно позже. Лучше написать рабочий говно-код, чем не запустить проект из-за вечных копаний в мелочах - это же очевидно. Лично у меня десятки примеров таких гнилых, провалившихся, работ.
Ни один ветер не будет попутным для корабля без паруса. Думайте не про то, чтобы написать идеальный код, который оценят, а о том, чтобы запустить проект. Очень часто получается, что тысяча человеко-часов оказывается просранной зря из-за того, что проект опоздал с выходом на год или он изначально был никому не нужен.
Хотелось бы обобщить сказанное. Программируйте итерациями. На начальном этапе можно писать говно, но если проект набирает обороты, то заниматься им, оптимизировать быстродействие, улучшать код. Не забывайте про безопасность.