As a consultant I was fortunate to participate in a wide variety of projects ranging from commercial software to startups, small companies, government agencies, and large enterprises. Each project is unique, but I made several observations that are true across the board.
Most projects start in a hurry due to time and budget constraints -- particularly projects with external consultants and contractors. Initial analysis is usually followed quickly by development. No time is set aside for establishing a basic application structure by exploring proven architectures, practices, frameworks, etc.
I also found that many companies don't share prior experiences and best practices between departments or projects. All is lost once a project completes. Each new project starts from scratch and requires repetition of work that has been done before.
Projects that do not take advantage of proven patterns, practices, frameworks, and architectures require a significant amount of (unproven) work and are at much greater risk of failure. Initially some deadlines are missed, but over time things get worse and worse, up to a point where the application is unworkable and developers are unproductive and super stressed. Not surprisingly, many of these projects end up getting cancelled or just flat out fail.
On some occasions I would be asked to come in and assess a project in trouble. Upon evaluation I found that from the very start there had been a lack of structure, architectural guidance, and direction, essentially setting the project onto a path of extra work, missed deadlines, and ultimately failure.
Many organizations don't realize that with the proper organization and guidance software development can be a relaxed, fun experience and result in awesome solutions and applications that end-users will enjoy. The good news is that it doesn't take rocket science to do it right.
In the early days, when I noticed these problems, I started assembling a collection of code, components, patterns, designs, architectures, practices, and techniques that I would carry from project to project. I called it 'my briefcase'. Half of it was code: reusable code, components, modules, and a framework -- the other half was virtual in the form of experiences, designs, and best practices, in my head.
As my briefcase matured, it provided a solid structure and foundation to numerous projects, all of which got off to a great start and were all successful. As a .NET architect and consultant, my clients benefited greatly from this valuable collection of proven patterns, practices, and architectures.
To share this experience and help other .NET Architects, I began to organize and document my briefcase and renamed it the .NET Design Pattern Framework.
Naming it -- or even explaining it -- was difficult because it is more than a collection of patterns and practices, more than a code framework, and more than architectural guidance. Essentially, it is a package that adds structure to a project, makes building .NET software simple and enjoyable, and creates applications that run better and faster.
When first released, the .NET Design Pattern Framework was an immediate hit. This confirmed my belief that there is a great need for real-world pattern and architectural guidance. Currently we have 14,000+ satisfied customers.
The .NET Design Pattern Framework has evolved since it was first released. Today it covers all well-known pattern and practices such as Gang of Four, Enterprise, MVC, MVP, MVVM, DAO, IOC/DI, N-Tier, Repository, Unit-of-Work, Active Record, CQRS, Data Access, Web API, and more. They are available in real-world reference applications supporting Winforms, WPF, Webforms, and ASP.NET MVC. Also included is a comprehensive ASP.NET MVC reference application called Art Shop which is a complete online store.
I am particularly proud of our latest release 4.5 which includes the SPARK platform. SPARK is a pattern-oriented RAD (Rapid Application Development) platform that allows .NET developers to build applications quickly and easily.
Applications built on SPARK are lightweight, yet their performance is impressive. SPARK, as a platform, tries to stay out of the way - it works behind the scenes. SPARK is highly accessible and easy-to-learn for any .NET developer.
Our PRO .NET Pattern Framework includes the SPARK code-generator which generates the complete Service, Business, and Data Layers. With these layers out of the way, developers can focus entirely on the Presentation Layer (the UI) and create wonderful experiences for their end-users. Again, SPARK stays out of the way allowing you to focus on that what makes your application unique.
See our customer story on the Stay4free.com web application for a real-world project that uses SPARK. Then, as the next step, give the .NET Design Pattern Framework and SPARK a try. I think you won't regret it.