Design violations

I am a developer with 4 years experience in .Net coding, and have never cared about template design in my carreer. Recently, I was invited to an interview with one of the major experts in the field of information technology, spent 5 rounds (problem solving, programming, logical thinking, 2 rounds of technical interviews) and did not offer a job.

The feedback I received from them does not comply with the principles of design, although they are satisfied with my technical and logical reasoning skills. Does it make me think that knowing design patterns is the only way to solve problems?

Although I never used most of the design patterns in my coding, I always tried to implement the basic principles of OOPS

I could use these principles to develop a system that is loosely coupled and open to improvements and easy to maintain. Ultimately, these are the basic designs of all design patterns.

But my problem is to find the right template for the right problem. I know that this knowledge will not come just by reading all the books published in the templates and design practices. this knowledge is associated with the experience of building various systems.

Are there any options for using pattern matching . And your suggestion for learning design principles?

Greetings

+7
language-agnostic c # design-patterns
source share
6 answers

Although I think that it cannot hurt to make him more familiar with design patterns, I want to make sure that your question will not combine two things. You said that the feedback you received was that your ability to apply design principles was weak, and you came to the conclusion that you need to study design patterns. But it is different.

A design pattern is a repeating pattern that you see in many different domains. For example, in architecture you see an example of a “courtyard” in many buildings of different types. In programming, you see patterns such as “a class that can only have one instance” or “a small piece of code that glues this with it” in many different programs.

But principles are not models. A pattern is a concrete, repeating view of a design; principle is the idea that underlies what makes a design suitable for users of an artifact created.

For example, the principle of designing the JScript language is to "forgive small mistakes." If you create a date object on November 31, it will silently fix this until December 1 instead of giving an error. There is no "small error forgiveness pattern." Fulfillment of a design error is a design principle - when we have a choice of how to develop a specific function, we will examine how it meets all the principles, some of which are contradictory, and use them to guide the design of the function.

This is not a C # design principle; in fact, the opposite is the C # design principle. Design principles are not good or bad in themselves; they are guidelines for what makes the design suitable for a targeted set of users.

Writing code without understanding the patterns means that there are no tools on the toolbar to facilitate common tasks. Writing code without understanding design principles means writing code that is inconsistent, hard to understand, and contrary to the needs of its users. Both are important, but they are very different.

+15
source share

Design patterns are called patterns because they continue to be displayed over and over in many independent programs, and not because they are used to combine programs in the same way that the squares are sewn together to make a blanket. They can help solve a software problem, but they themselves are not a solution.

+8
source share

Even if you use C #, I would suggest going through some of the template books. First would be GoF - Design Pattens . Then try reading some Enterprise Design Template book. When you read, you will recognize (or see) the pattern. This is usually the moment "Aha."

You will also learn the same from your own code. Knowing the patterns will help you in good design. This helps in understanding the patterns, because you will immediately remember the pattern when a problem arises.

The programming principles you have indicated are good, and DO follow them. However, they are more at the class level. Moving higher to system design, templates will be more useful.

Most importantly, templates give you a vocabulary for discussing design ideas with the whole team.

+5
source share

I'm sure you used some design patterns if you have been programming for 4 years, although you may not suspect that you did.

The design template will teach you how to solve some problems that have already passed, and found a solution for this. and finally documented this for us.

If you want to learn design patterns, you can start with "Head First Design Patterns", this is a great book.

+4
source share

I'm not sure if you really need design templates. You probably need a more general understanding of design. It will be difficult to give more advice on this subject without additional information.

Design patterns (like GoF) work best with a particular coding style. Imagine that your classes are not like things, but like people. Imagine that these people then communicate with each other, something like sending notes either through inter-industry mail or something like that.

In general, these people’s communication methods and message flow patterns are pretty close to GoF design patterns. Templates that do not match this are usually “helpers” that are needed to write applications that fit this model.

+2
source share

Try this book, it is funny and gives you not only how to implement the template, but also when to do it.

http://www.amazon.com/First-Design-Patterns-Elisabeth-Freeman/dp/0596007124

+2
source share

All Articles