5 Principles to Write SOLID Code (Examples in Python)

A guide to write better code with the help of the SOLID Design Principles, illustrated by Python examples. 5 Principles to write SOLID Code: Single Responsibility Principle, Open/Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle

What is the context in object-oriented programming?

What is the context in object-oriented programming? This question changed my view on object-oriented programming forever. It was a few years ago when I accidentally found the answer I hadn’t even sought. Eventually, however, it was surprisingly simple, yet enlightening.

My Reply To: The Case Against OOP Is Wildly Overstated

Where am I going with this? Like all principles, the idea of Object-Oriented Programming (OOP) originated as a way to guide programmers on how to solve a particular problem, not as the only way of solving all problems.

The Case Against OOP is Wildly Overstated

You can’t rule the development world for decades without attracting some enemies. And object-oriented programming, which provides the conceptual underpinning for dozens of languages old and new, certainly has some enemies.

Exception Handling with Examples

Exception handling is common to most programming languages, and the mechanism and behaviors are similar in most languages: try\catch\finally. It is well documented. We are not going to discuss that.

The Principles of Planning and Implementing Microservices

Get practical and actionable insights into what you need to know to plan and implement microservices effectively.

Using a Graph Database with Microservices

Microservices architecture doesn’t require an introduction. It has been widely adopted in recent years by many companies in various domains and sizes. Some companies have redesigned their monolith architecture and broke it up to microservices, while others have built it up from the ground up as a pure microservices architecture.

What exactly is a name? — Part I: The Quest

We all agree: a good name is always the most important thing. Let’s find them. There are only two hard things in Computer Science: cache invalidation and naming things.

Generic MessageQueue Framework

Message Queues play an important role in large-scale solutions, as the project becomes more and more sophisticated — micro-services are added and we become dependant of the message-queue functionality.

The Era of Opinionated Productivity Software: Superhuman, Roam, What’s Next?

Productivity software is indispensable for all of us. Dedicated tools for creating spreadsheets, writing down notes, managing our to-dos etc. ensure that we are productive in our professions. Incumbent vendors (e.g. Microsoft, Google) have dominated this space for many years — yet, there is a chance for new players to enter the stage.

Microservices — not a silver bullet

Learn about basics of microservices architecture and considerations before opting for it.

Clean Architecture — A must-read Software Design Book for Developers

Hello Guys, today, I am very excited to talk about another useful software architecture book (Clean Architecture: A Craftsman’s Guide to…

Effective Full-text search: go simple

Full-text search should not slow down your application. Learn the basics and understand that the solution is not always just code! Then you probably faced with the problem caused by LIKE ‘%...%'.

A Value by Any Other Name

A Value by Any Other Name - We cover assignment, name resolution and scopes. Once and for all - how does it work in Python?

To Be, or Not to Be

To Be, or Not to Be - We talk about if statements—even though you probably get the gist, there’s still a lot to say, from syntax to software design.

Loopin’ Around

Loopin’ Around - We take a look at loops-but do so from a Pythonic point of view, as Guido intended.

Functions at Last

Functions at Last - We discuss functions -all the different signatures they can have, and the different ways they can be invoked.

To Functions, and Beyond!

To Functions, and Beyond! We consider functions as objects — and develop the decorator design pattern on top of that, in all its glory.

Function Internals 1

Function Internals 1- This time, we delve into the function’s less familiar features—and even disassemble it, and take a first look at its bytecode.

The Cost of Wrong Abstractions

The Cost of Wrong Abstractions - Why rushing to abstract duplicated logic can cost us more than keeping it.