…on LinkedIn

ASP Ajax vs j-Query for UI development

How to develop an application from scratch using Design Patterns and Best Practices

Interview on MVVM

What would be best way of combining several different data sources for your program?

What’s the best way to persist ‘logged in user’ information?

When to use dependency injection


How to develop an application from scratch using Design Patterns and Best Practices

[ Abdullah Khan | C# Developers / Architects ]

What are the best Books or Knowledge base available online to help me learn designing a solution from scratch using some of the Best Coding Standards and Design Patterns. I aspire to become an architect and any feedback would help me further my knowledge.

Thanks in Advance.

I completely agree with the opinion of most of our fellows, especially when it comes to experience (“practice”, after all) and environment. I also think we can think of Design Patterns as a [“high-level”, business, clean/lean] kind of “refactoring” mindset. Thus, although we can and should start with some basic “standards” and _principles_ upfront, I also consider a Best Practice to deal with it as a iterative, progressive methodology (and/or discipline).

Two other things are equally crucial. As @Kile mentioned, consider [1] the KISS (Keep It Simple, Stupid) principle [always and everywhere]; along with [2] the environment – business needs (and constraints), drivers (enablers), strategic plans etc. – dimension(s). Always consider the next two or three upper (and lower?) layers of context. After all, “context is king”, still. At the end of the day, content is actually weak and meaningless (and potentially dangerous) without it [if not impossible].

PoC, Mock, Stub, TDD, BDD, ATDD, etc. Applying these techniques should not be considered only at development/construction time; they should also be a “D”esign (and architecture, modeling, etc.) base-concern. Also, consider a (mature) compliance, maturity model; as well as a (common, ubiquitous, if possible) decision-making model.

And always be ready and prepared to start it all over again, “from scratch”. There is no silver-bullet; nor a ready-to-use, monolithic, ubiquitous solution. Stay clean, lean, “agile”; and ready. Always [conceptually, logically, technically; strategically, tactically] considering both: the tree AND the forest (and the forest’s context). In addition, never forget to keep them all always aligned, consistent and coherent – and simple (lean)…

This is a never-ending process. It just [appears to] begin. Here is where science meets art; and mastery comes from commitment and persistence. Try/catch and increment/integrate, continuously. Then evolve, by starting it all over again, from the very first step. Never forgetting neither the basics (building blocks) nor the learned lessons.

Recap: experience, context and strategic (high-level, long-term) view [perspective], Fail-fast, prototype, experiment. Think big, act small. One project: one team, one language. Commit, Align, Review, Evolve, continuously.

CARE, and enjoy (of course).

And don’t worry (be happy).

That’s how I see it, and I hope I have helped, somehow.

I see mentoring (and/or coaching) as just another [also valuable, I agree] resource, tool, input.

Unfortunately, nevertheless, it does NOT exclude nor substitute the need and the value of [1] theoretical background, [2] a progressive and coherent “load” of study (training, PoCs, HandsOnLabs, etc.) and [3] a corresponding amount of practice (on real world projects).

All of these, summed, can be termed as “experience”. In the OOP jargon, mentoring “extends” experience, not the other way around. Experience does not (necessarily) “inherit from” mentoring; although it can be (also) “composed by” it [Decorator Design Pattern?].

But that’s just my thoughts, of course.

Capparelli [ mar 2014 ]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: