Есть опыт работы 2 года программистом в одной фирме и 4 года самостоятельной работы.
За время работы с другими программистами в конторе научился у них хорошему, но не слишком многому, поскольку они тоже не всё умели и не всё знали о том, как правильно писать ПО.
То есть были в той фирме проблемы с проектированием, тестированием, взаимодействием разработчиков и т.п., в общем работали "на коленке".
Сейчас в одиночку разрабатываю одну программу, время на разработку/самообучение ничем не ограничивается.
Объем исходников в настоящий момент 600 кб.
Программа работоспособна, свои функции выполняет, успешно эксплуатируется.
Язык С++.
Сейчас глядя на программу считаю, что написано она плохо, "на коленке", не профессионально, неверно структурирована, неправильно разбита на объекты или вообще не разбита там где надо бы разбить и т.п.
Чувствую себя человеком, который знает язык программирования, но не умеет его правильно применять и не организовал нормально процесс разработки.
Как следствие ощущаю нежелание (иногда и неспособность) вносить жизненно важные изменения изменения в программу, особенно если эти изменения не очень хорошо ложатся на написанный код.
Какие-то фрагменты программы написаны хорошо (мне так кажется), но в целом вся программа требует переписывания.
Я пытался переписывать программу заново, но даже с опытом разработки этой же самой программы, с хорошим представление о предметной области, со знанием подводных камней новая версия получается не намного лучше старой.
Надо решить как изменить организацию труда, принципы разработки, чтобы уменьшить количество проблем с программой, вернуть над ней контроль.
Вижу два варианта.
1) Оторваться от работы и почитать книжки.
Тут есть проблемы и сомнения...
а) Надо выбрать про что вообще читать — про ООП, или про рефакторинг, или про организацию разработки, или ещё о чем-нибудь. Собираюсь ознакомиться со всеми озвученными темами, но если вы подскажете порядок в котором надо читать это необъятное море страниц, то буду благодарен.
б) При попытке чтения часто выясняется, что книжка написана водянисто. (Видать, авторам хочется кушать, и они увеличивают объемы пространными разговорами.)
Читать такие книги тяжело. Возможно, вреда от них больше чем пользы, поскольку потратив много времени и сил на изучение сотен страниц остаешься опустошенным, пропадает энтузиазм — и узнал мало и измучился.
в) Самое плохое то, что написанное в книге является неким абстрактным знанием, которое надо еще и уметь применять правильно на практике, а в этом то и моя основная проблема.
Но по идее должны быть полезные мне книги про разработку, написанные хорошими педагогами, легко читаемые, понятные, конкретные... Подсказывайте какие!
2) Можно устроиться на работу в профессиональную контору. Там-то на примере специалистов можно будет набраться хорошему, попробовать разные техники программирования и находиться под контролем опытных товарищей. Код-ревью там точно возможен. Но у этого варианта есть и громадные издержки. Во первых контору, работа в которой мне будет максимально полезна, надо ещё найти. Второе — работа в конторе сопровождается огромными затратами времени и сил: год или несколько лет придется работать 5 дней в неделю на по 8 часов. Кажется очевидным, что для таких усилий можно найти лучшее применение.
Может быть я немного сбивчиво написал, буду дописывать и дорассказывать по мере необходимости...
Высказывайте свои соображения...
Ясно что серебряной пули нет, однако надеюсь, что разговор окажется полезным...