Programming

Software Engineering at Google - Chapter 1 - What is Software Engineering

Software Engineering at Google - Chapter 1 - What is Software Engineering

Translations: RU

Our IT books club has started reading new book - about Software Engineering at Google - processes, culture, and tools that help Google create and maintain high-quality software. First chapter is about Software Engineering in general:

  • What is Software Engineering vs Software Development/Programming?
  • Three principles Google consider:
    • Time and Change
    • Scale and Growth
    • Trade-offs and Costs
  • How these three principles are applied to Software Engineering and how it is different from Software Development/Programming

Interesting opening chapter of the book:

Clean Architecture - PART IV - Component Principles

Clean Architecture - PART IV - Component Principles

Translations: RU

The book club of our company has chosen a new wonderful book for reading:

Robert Martin - Clean Architecture - a Craftsman’s Guide to Software Structure and Design

Fourth part of the book is about principles of combining components into software systems.

This part is more interesting. It contains:

  • Overview of components history: Relocatability, Linkers
  • Three principles of Component Cohesion
    • REP: The Reuse/Release Equivalence Principle
    • CCP: The Common Closure Principle
    • CRP: The Common Reuse Principle
  • Three principles of Components Coupling
    • ADP: The Acyclic Dependencies Principle
    • SDP: The Stable Dependencies Principle
    • SAP: The Stable Abstractions Principle

I especially enjoyed this chapter because of presented metrics that could be used to measure(!) good software design (more precisely, how do you follow some design principles)

Clean Architecture - PART III - Design Principles

Clean Architecture - PART III - Design Principles

Translations: RU

The book club of our company has chosen a new wonderful book for reading:

Robert Martin - Clean Architecture - a Craftsman’s Guide to Software Structure and Design

👍

Third part of the book is about SOLID principles

SOLID
  • Single Responsibility Principle: A module should be responsible to one, and only one, actor.
  • Open-Closed Principle: A software artifact should be open for extension but closed for modification
  • Liskov Substitution Principle: S is a subtype of T if instead of instance of T we can always use an instance of S
  • Interface Segregation Principle: use interfaces to reduce dependency upon changes
  • Dependency Inversion Principle: avoid dependencies on volatile concrete elements

I didn’t learn anything new from here (but I am in software engineering for 20+ years already ;). However, this is still a good summarization of key design principles. And it’s worth to remember about them.

Comparison of Front-end frameworks: Angular, React, Vue

Comparison of Front-end frameworks: Angular, React, Vue

Translations: RU

When you are starting a new software solution need to select a technology for Frontend. There are currently three leading technologies: Angular, React, and Vue.

But how do you choose from them?

Our team has experience with all of them, but usually the choice is made on the basis “who is available from the team and what they prefer”.

I wanted a deeper Pros and Cons comparison, and I found it in great short Udemy course :

Clean Architecture - PART II - Starting with the Bricks: Programming Paradigms

Clean Architecture - PART II - Starting with the Bricks: Programming Paradigms

Translations: RU

The book club of our company has chosen a new wonderful book for reading:

Robert Martin - Clean Architecture - a Craftsman’s Guide to Software Structure and Design

👍

The book is superficial so far. Here’s an overview of the second part:

There are three programming paradigms:

  • Structured programming - is discipline imposed upon direct transfer of control.
  • Object-oriented programming - is discipline imposed upon indirect transfer of control.
  • Functional programming - is discipline imposed upon variable assignment

All three paradigms are about what NOT TO DO.

Clean Architecture - PART I - Introduction

Clean Architecture - PART I - Introduction

Translations: RU

The book club of our company has chosen a new wonderful book for reading:

Robert Martin - Clean Architecture - a Craftsman’s Guide to Software Structure and Design

👍

Here’s an overview of the first part:

  • The goal of software architecture
    • to minimize the human resources required to build and maintain the required system.
  • Two values of software
    • Behaviour (function) - to satisfy stakeholders’ requirements
    • Structure (architecture) - difficulty of making change should be proportional to the scope, not to the “shape” of the change
  • Ease of change is more important!
    • Software Developer should fight 🤺 for it with other stakeholders!
Part I - Introduction

Download full mind map (PDF)

Python call async from sync

Python call async from sync

Translations: RU

There is a known issue in Python - you have to choose between sync and async code models.

And if you are using async code you can call sync code but from that code you CAN’T call async code again.

Why does this problem occur? The event loop used by the async code is already stuck waiting for the result from the sync code. And if you want to call async code now, you cannot reuse the same event loop.