Author Archives: Hayim Makabee

Unknown's avatar

About Hayim Makabee

Veteran software developer, enthusiastic programmer, author of a book on Object-Oriented Programming, co-founder and CEO at KashKlik, an innovative Influencer Marketing platform.

35 Agile Development Best Practices

How Agile are you? It seems that nowadays most software developers claim they are doing Agile. However, it is also a well-known fact that many teams are only following part of the practices that characterize Agile software development. In the … Continue reading →

Posted in Agile, Programming | Tagged , | 25 Comments

Avoiding Technical Debt: How to Accumulate Technical Savings

The metaphor of Technical Debt has been widely accepted as part of the current reality of software development. Programmers agree that they frequently need to make sacrifices in order to meet deadlines, and the consequences of these sacrifices are modules … Continue reading →

Posted in Adaptable Design, Refactoring, Software Evolution, Software Reuse, Technical Savings | Tagged , , , | 24 Comments

On Technical Debt and the Psychology of Risk Taking

I recently read the following message in a developers’ forum (rephrased here): “I’m facing a dilemma. I must deliver the product by the end of this quarter, but there are still many tests I would like to execute. The product … Continue reading →

Posted in Agile, Efficacy, Psychology of Programming, TDD | Tagged , , , | 27 Comments

The Etrog, Idealism and Concrete Choices

In the holiday of Succot, Jews make a blessing over the Four Species, including a special fruit called the Etrog. The Etrog is similar to a lemon, but it has a different shape and delicious smell. In the past the … Continue reading →

Posted in Efficacy, Jewish Sources | Tagged , | 8 Comments

Simplicity in Software Design: KISS, YAGNI and Occam’s Razor

“Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.” – Antoine de Saint-Exupery Simplicity is a desirable quality attribute in any software system. In this article I try to … Continue reading →

Posted in Agile, Software Architecture | Tagged , | 32 Comments

IASA Israel meeting – Daniel Gross on Architectural Description Languages

The International Association of Software Architects (IASA) in Israel organized a special event with the participation of Dr. Daniel Gross, who talked about “Architectural Description Languages”. Synopsis: In this talk Daniel reviews main findings of a recent international survey on … Continue reading →

Posted in IASA Israel, Software Architecture | Tagged , | Leave a comment

IASA Israel meeting – Hayim Makabee on Adaptable Design Up Front

The International Association of Software Architects (IASA) in Israel organized a special event with the participation of Hayim Makabee, who talked about “ADUF – Adaptable Design Up Front”. Synopsis: This talk tries to answer the question: “How much Design Up … Continue reading →

Posted in Adaptable Design, Agile, IASA Israel, Software Architecture, Software Evolution | Tagged , , , , | Leave a comment

Adaptable Design Up Front and the Open/Closed Principle

The Open/Closed principle is one of the SOLID principles of software design: “The Open/Closed Principle states that the design and writing of the code should be done in a way that new functionality should be added with minimum changes in … Continue reading →

Posted in Adaptable Design, Design Patterns, OOD, Software Architecture, Software Evolution | Tagged , , , , | 11 Comments

The Myth of Emergent Design and the Big Ball of Mud

Software developers following Agile methodologies often ask themselves how to adapt the traditional Design phase to an iterative software lifecycle. The basic question is how much design should be done before starting the implementation. There seems to be a consensus … Continue reading →

Posted in Adaptable Design, Agile, Refactoring, Software Architecture, Software Evolution | Tagged , , , , | 26 Comments

Meta-Decisions: Agreeing on the criteria before discussing the alternatives

In a working environment, meetings may consume lots of time. In general, the goal of meetings is to make decisions based on the input provided by several people. There are normally many different ways to solve a problem or address … Continue reading →

Posted in Efficacy, Software Architecture | Tagged , | 3 Comments