The longer a software product exists and is being actively developed, the more changes are going to affect its development.
The kinds of changes are various, ranging from new technology, new development tools, new development paradigms and trends, to changing requirements and solutions, or complete shift of focus.
I’ll just summarize some of these changes that may apply to my projects (and probably yours as well):
Old | New | |
Framework | ASP.Net | ASP.Net MVC |
PostBack | Ajax, In-page update | |
Client-side scripting | Ajax Control Toolkit | jQuery |
Javascript | TypeScript | |
Data Access | SqlCommand (aspx, C#) | Data Access Layer |
XML Generation | StringBuilder | XSD, xsd, XmlSerializer |
Parser | DIY NIH | Antlr |
Focus (e.g. VSSlnVis) | Graphical representation of dependencies | Textual analysis of solutions and projects |
(e.g. dbscript) | Generate C# constants, Generate CREATE scripts | database versioning, documentation and deployment |
Patterns? | Anti-Patterns, God Objects, Spaghetti | Patterns, Lasagna, Ravioli |
If your project finds itself in a sort of identity crisis, then don’t worry. Companies and organizations bigger than yours often recognize the need to re-write:
KDE did it, Mozilla did it, phpBB did it, and Google just forked Webkit into Blink to be used in Chrome.
So I came to the conclusion that to increase maintainability and extensibility of the programs and projects that I still update (some more frequently, others less), I need to rework their code.
As I prefer my principle of the least technological requirements, I am still not sure whether to stick with .Net 2 for my WinForms apps, or whether .Net 4 is already acceptable (i.e. does not require the user to separately install specific versions of .Net).
Please leave a comment with your ideas 😉