| You may want to look at some static code analysis tools for 1 and 2: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_a... From my very limited understanding, the powerful ones are seemingly only in reach for large enterprises [1]. With regard to number 3, In C# and Java, resharper/IntelliJ has partially automated refactoring tools. I'm sure similar tools exist for other languages. However, I think going down this route is substantially more work unless you are inheriting a code base. I would aim to learn some of the design patterns basics[2], perhaps read "The Algorithm Design Manual" [3], and aim to have a clear idea of how to design your latest algorithm from the offset. [1] - http://semmle.com/solutions/what-we-do/index.html [2] - http://en.wikipedia.org/wiki/Design_Patterns [3] - http://www.amazon.co.uk/Algorithm-Design-Manual-Steven-Skien... |