Open close principle is a software design concept that tends to make a software design flexible enough for extension yet closed for modification. In other words adding new feature(s) to an existing source code is done by adding new classes rather than changing the core source code and structure.

Let’s try to implement a SoundProducer that outputs the sound of a Guitar in a way that violates the open close principle (see the next diagram). Now, in order to support a new musical instrument (Piano); we will have to change the main SoundProducer class to play the new instrument sound, and then after a short while the Flute came, and then the Clarinet, and then the Oboe, and …etc. The more instruments to support the more likely the SoundProducer class will change.

A good design will make the SoundProducer closed for modification, yet opened for extension (see the next diagram) and this by making the SoundProducer depend on abstraction (Instrument), now adding a new instrument (feature) will be done only by adding a new class extending the abstract Instrument class and implement its abstract method playSound without any changes done on the main SoundProducer class.


Well, for most of us this question is very hard to answer and in order to answer correctly we need first to define what it means to be responsible.

Responsible people fulfill their obligations at home, at work, and toward the community. They recognize that they are accountable for their actions. So when they make a mistake, they admit it, apologize, and strive to make amends. Responsible people are always honest, dependable, helpful, fair, respectful and caring. Responsibility is present in every single action they take; it is their life style or in other words, it is a theme that they can’t leave behind at any time.

As we see responsibility might add lots of burdens on our shoulders, so what are we gaining in return? Many of us will ask: “Why should I be responsible?”

A responsible person gains a self-confidence which is the main key to success, enjoy a better life, enjoy people respect and trust and have a fruitful carrier path. A responsible person gains a recognition within his community and is treated as a leader, unlike the irresponsible person who is treated like a baby who can’t be away for an hour without checking in with Mom. The irresponsible is mainly treated as gear in a machine with no creativity or sense of achievement and all of his work is nothing more than a routine.

You have the right to choose which of them you want to be, but for your information it is something easy to learn and implement, you just have to take the first step and you will see enormous results of success, go on and you will learn how to set the base of being responsible.

First of all you should understand that responsibility is earned?

You have to prove yourself in the small tasks in order to be assigned to bigger ones, it is like a stair, you can’t reach its top without climbing each single step. You should start by yourself, you should be responsible for the tasks you assign to yourself. How many times you committed to go to the Gym and you didn’t, how many times you committed to read a book and you didn’t, and even more how many times you committed to spend the week end in a useful thing and ended up laying down on your bed till 5 pm. You have to be responsible for your daily actions in order to be a responsible person.

Stop making excuses:

The easiest way to convince yourself that a given task is not your responsibility is by making excuses, you always blame the external factors, “I didn’t do it because bla bla bla”, you are simply saying “I AM NOT RESPONSIBLE”, you feel comfortable when you do this because you don’t want to blame yourself, because in your sub-conscience the easiest way to solve a problem is to convince yourself that the problem has no resolution, but the truth is that if you really want to do something you will find a way to do it, if you don’t, you will find an excuse. Stop making excuses and start saying I am responsible.

Admit your mistakes:

From my own point of view this is the hardest one to implement as it requires self-confidence. you should know that all of us make mistakes, we are humans not angels, but the clever ones should learn from their mistakes not to make them again, how you can learn from your mistakes when you don’t even agree that they are mistakes, when you admit your mistakes you face yourself to truly know the root cause, mistakes are the portals of discovery, this is the only way you will learn and gain experience.



Yes, responsibility matters, being responsible will help you to achieve your goals, fulfil your dreams and live a better life. All you have to do is to understand that responsibility is earned, you have to stop making excuses and finally admit your mistakes to learn from them.



Project closure meetings are sometimes forgotten after a project ends, reasons vary from over-happiness (or rage!) by the results, to getting the resources involved in new projects or tasks. However, I consider the closure meetings are the most important meetings in the project lifecycle. They set directions for the company/department, highlight opportunities to grow in technical ways and magnify events and sources of problems that can be avoided in the future projects.

Closure meeting should be conducted whether the project ended successfully or even if it was stopped in the middle due to any circumstances.

Important aspects to discuss in the closure meetings:
1-Start by reviewing the history of the project; how things went from the beginning to the end. Passing through analysis, implementation and testing. Talk about the dates, delays if any, just put titles to refresh the gray cells of the project staff. You can also recall how important actions affected the client satisfaction(or dissatisfaction).
2-Discuss problems and issues have taken place during the project. If it is a project that wasn’t completed, discuss the reasons, and how you can avoid these issues/problems in future projects.
3-Discuss the project schedule, effort and budget, and see how you could stick to the plans (Actuals vs. Planned analysis). Analyze if the plans and estimations were accurate or stuffed, how they affected the project resources and delivery of the project.
4-Discuss process improvement for any project function (Project management, analysis, QC, QA, Development).
5-Discuss new technologies/tools that can be added to the organization portfolio.
6-Discuss lessons learned. It’ll be great if you have a lessons learned sheet accessible to all the project members during the project life cycle.
7-Recognize the team members who did excellent performance or took good decisions … So they know that their work makes a difference, that increases the motivation of the team members.

Finally, come with an Action items sheet, and EXECUTE THEM! Get any approvals you want on them and communicate their importance. The action items coming out of a project closure meeting is the most important action items list in the company, because they are the Global items whenever done, they give a push to the company/department, individual resources and process.