Комментарии 114
А как этот ваш SOSAL будет работать в парадигме GOVNO (https://govno.works/)? Противоречий не возникнет?)
Как-то режет ухо название...
Вот-вот, надо было LASOS.
По-гречески это значит ошибка.
Одобряю.
Теги: SOLID DRY KISS SOSAL
Давайте сразу договоримся: Мизулиной это не показывать. А то потом запретят это ваше пограммирование от греха подальше.
Занятный троллинг
Все ок. Единственная просьба - не развивайте ваши эксперименты с абревеатурой. Далеко можно зайти.
Тебе нравится социально-осознанный код? SOSAL?
Обожаю хабр!
Возможно стоит пошевелить аббревиатуру и использовать LASSO?
предлагаю вариант ZASRAL:
Z: Zero-loyalty to bugs
A: Agility
S: SOLID driven development
R: Retrospective after every sprint
A: Agility one more
L: Logic-driven decision making
вторая "A": Architecture-centered planning
важно подчеркнуть важность гибкости, поэтому agility два раза)
тогда надо переходить к AAAA+
Колеги, мы должны быть гибче,
Как того требует agile.
Счас доктор удалит вам рёбра.
Мне жаль.
© tabletki
Можно сменить гендер у аббревиатуры и будет Z.A.S.R.A.L.A. Заодно и двойная гибкость поместится.
Звучит очень круто! Возьму себе на заметку
Методология ZASRAL: Современный подход к разработке программного обеспечения
В мире разработки программного обеспечения постоянно появляются новые подходы, методологии и философии, стремящиеся повысить эффективность команд, минимизировать ошибки и улучшить конечный продукт. Одним из нестандартных, но при этом концептуально мощных подходов является методология ZASRAL. Несмотря на вызывающую аббревиатуру, принципы, заложенные в ZASRAL, представляют собой продуманный и прагматичный набор ориентиров, способных выстроить надежный и адаптивный процесс разработки.
Разберём каждую из составляющих ZASRAL:
Z: Zero-loyalty to bugs (Нулевая лояльность к багам)
Первый и, возможно, самый важный принцип — это абсолютная нетерпимость к багам. В команде, работающей по ZASRAL, баги не считаются «допустимыми издержками» или «чем-то, что исправим потом». Они рассматриваются как долговые обязательства, мешающие движению вперёд. Подход "zero-loyalty" означает:
мгновенное реагирование на выявленные дефекты;
отказ от компромиссов при наличии известных проблем;
профилактику багов через тестирование, код-ревью и соблюдение стандартов.
A: Agility (Гибкость)
Гибкость — основа современной разработки. В контексте ZASRAL это означает:
адаптивное планирование;
быструю реакцию на изменения в требованиях;
активную обратную связь между заказчиком и командой;
минимизацию бюрократии и сосредоточенность на ценности, поставляемой пользователю.
S: SOLID-driven development (Разработка, основанная на принципах SOLID)
Принципы SOLID — краеугольный камень качественной архитектуры:
S: Принцип единственной ответственности (Single Responsibility Principle);
O: Принцип открытости/закрытости (Open/Closed Principle);
L: Принцип подстановки Барбары Лисков (Liskov Substitution Principle);
I: Принцип разделения интерфейсов (Interface Segregation Principle);
D: Принцип инверсии зависимостей (Dependency Inversion Principle).
Следование SOLID позволяет создавать поддерживаемый, масштабируемый и понятный код, минимизируя технический долг.
R: Retrospective after every sprint (Ретроспектива после каждого спринта)
Ретроспектива — инструмент командной эволюции. Команды, работающие по ZASRAL, обязательно проводят ретроспективу по завершении каждого спринта:
выявляют узкие места в процессе;
обсуждают, что можно улучшить;
принимают конкретные действия для следующего цикла;
укрепляют командную культуру и взаимопонимание.
A: Agility one more (Гибкость снова)
Повторение принципа гибкости подчеркивает её ключевую роль в философии ZASRAL. Это не ошибка и не тавтология — это намеренное усиление акцента. В условиях быстро меняющегося рынка недостаточно быть гибкими один раз — нужно быть гибкими постоянно. Гибкость не как эпизод, а как повседневная практика.
L: Logic-driven decision making (Принятие решений, основанное на логике)
Последний принцип — осознанное принятие решений. Это означает:
избегание эмоциональных или политизированных решений;
использование данных, анализа и здравого смысла;
прозрачность в аргументации;
рациональность в выборе технологий, инструментов и процессов.
Вывод
ZASRAL — это не просто игра слов, а яркое и запоминающееся обозначение набора фундаментальных принципов, которые могут стать основой зрелого, гибкого и ориентированного на качество процесса разработки. Этот подход подходит тем командам, которые готовы быть честными с собой, быстро адаптироваться, уважать архитектуру и не бояться смотреть в лицо собственным ошибкам. В конце концов, иногда, чтобы создать нечто великое, нужно позволить себе быть немного ZASRAL.
Звучит очень необычно и революционно, жду статью!
Конечно! Ниже — минимальное Go-приложение, следующее принципам ZASRAL. Это REST API, предоставляющее работу со списком задач (TODO list), написанное с соблюдением SOLID, минимальными багами (и тестами!), логичным делением ответственности, возможностью быстрой адаптации (Agility), и комментариями, указывающими на ретроспективные точки.
🧱 Структура проекта
zasral-todo/
├── main.go
├── handler/
│ └── todo_handler.go
├── service/
│ └── todo_service.go
├── model/
│ └── todo.go
├── repository/
│ └── memory_repo.go
└── test/
└── todo_test.go
main.go
package main
import (
"log"
"net/http"
"zasral-todo/handler"
"zasral-todo/repository"
"zasral-todo/service"
)
func main() {
repo := repository.NewInMemoryRepo()
srv := service.NewTodoService(repo)
h := handler.NewTodoHandler(srv)
http.HandleFunc("/todos", h.HandleTodos)
log.Println("Server started on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
model/todo.go
package model
type Todo struct {
ID int `json:"id"`
Text string `json:"text"`
Done bool `json:"done"`
}
repository/memory_repo.go
package repository
import (
"sync"
"zasral-todo/model"
)
type InMemoryRepo struct {
mu sync.Mutex
todos []model.Todo
nextID int
}
func NewInMemoryRepo() *InMemoryRepo {
return &InMemoryRepo{}
}
func (r *InMemoryRepo) Add(todo model.Todo) model.Todo {
r.mu.Lock()
defer r.mu.Unlock()
todo.ID = r.nextID
r.nextID++
r.todos = append(r.todos, todo)
return todo
}
func (r *InMemoryRepo) List() []model.Todo {
r.mu.Lock()
defer r.mu.Unlock()
return append([]model.Todo(nil), r.todos...)
}
service/todo_service.go
package service
import "zasral-todo/model"
// Интерфейс для абстракции над хранилищем (D — Dependency Inversion)
type Repo interface {
Add(todo model.Todo) model.Todo
List() []model.Todo
}
type TodoService struct {
repo Repo
}
func NewTodoService(r Repo) *TodoService {
return &TodoService{repo: r}
}
func (s *TodoService) CreateTodo(text string) model.Todo {
return s.repo.Add(model.Todo{Text: text})
}
func (s *TodoService) GetAll() []model.Todo {
return s.repo.List()
}
handler/todo_handler.go
package handler
import (
"encoding/json"
"net/http"
"zasral-todo/service"
)
type TodoHandler struct {
service *service.TodoService
}
func NewTodoHandler(s *service.TodoService) *TodoHandler {
return &TodoHandler{service: s}
}
func (h *TodoHandler) HandleTodos(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
todos := h.service.GetAll()
json.NewEncoder(w).Encode(todos)
case http.MethodPost:
var input struct {
Text string `json:"text"`
}
if err := json.NewDecoder(r.Body).Decode(&input); err != nil || input.Text == "" {
http.Error(w, "invalid input", http.StatusBadRequest)
return
}
todo := h.service.CreateTodo(input.Text)
json.NewEncoder(w).Encode(todo)
default:
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
}
}
test/todo_test.go
package test
import (
"testing"
"zasral-todo/repository"
"zasral-todo/service"
)
func TestCreateTodo(t *testing.T) {
repo := repository.NewInMemoryRepo()
srv := service.NewTodoService(repo)
todo := srv.CreateTodo("Test ZASRAL")
if todo.ID != 0 {
t.Errorf("Expected ID 0, got %d", todo.ID)
}
if todo.Text != "Test ZASRAL" {
t.Errorf("Text mismatch")
}
}
Как ZASRAL здесь соблюдён:
Принцип Как реализован Z: Zero-loyalty to bugs Минимальные проверки входных данных, покрытие тестами A: Agility Простая архитектура, легко масштабируемая S: SOLID Чёткие разделения обязанностей: handler, service, repo R: Retrospective Можно внедрить TODO-комментарии // TODO: обсудить улучшения после спринта
A (again) Простая замена бэкенда, легко адаптировать L: Logic-driven decisions Все решения обоснованы: thread safety через sync.Mutex
, DI через интерфейс
Хочешь расширить — легко подключается база данных, логгирование, валидация, тестирование API.
И всё-таки с TYT.BCE.HACPEM
вас даже рядом не стояло!
Мне нравится этот подход. Спасибо!
А как же:
Z - zero defects
A - agile inspired
S - structured
S - scalable
A - automated
L - learn
ZASRAL:
ZASRAL assimilation strongly rewards adaptive learning
Attention stimulation rapidly aproaches life zen
Syncretic research activities liken zoomed acceleration
Reallife aptitude leverages zero-arbitration strategies
Artificial lifeforms zoned artfully supporting replication
Lasting zest application suppresses reactionary antipatterns
LASOS :)
Как считаете, паттерн PIDOR соответствует принципам SOSAL?
Ржу с названия SOSAL и комментария про паттерн PIDOR.
SOSAL? Звучит хорошо, мне нравится
— ты по чему специалист?
— по сосал.
Опять под видом хитрых методологий и заумных аббревиатур, нам подсовывают то, что каждый разработчик умеет со старта.
Не знаю, не знаю, я в айти вливался просто программируя на Турбо-Паскале, без всяких там SOSAL.
O, я тоже его помню, его чудесные окошки... Расписание для преподавателей на военной кафедре писал с ним.
У меня дипломная работа была считалка на фортране с уравнениями максвелла, умножитель частоты гигагерцового диапазона, и фасад на паскале с 3д визуализацией. Мой первый IBM PC 16MHz, 1MB RAM,40 MB HDD seagate (классика) пилил каждый шажок 40 минут (пара месяцев ушло). Зато честный диплом и даже близко к реальному устройству получилось (что редкость, но там куча железа и один диод был, самодельный).
А кто из присутствующих втыкал иголки в контактные площадки (из золота) самодельных диодов (под микроскопом)? Надо мной, бедным студентом, поиздевались тогда, дали задачу заточить стальную иголку толщиной меньше волоса (она гнется как вареная макаронина). Хорошо что не заставили шилом в кремниевой пластине "дырки" выбивать... Вопрос по ТРИЗ - как заточить иголку тоньше волоса?
Вопрос по ТРИЗ - как заточить иголку тоньше волоса?
На ум приходит только электрофорез, подносить анод с торца от будущего острия так, чтобы ближний его край был точкой, с которой электроны вылетают с наибольшей энергией, тогда в этом месте атомы металла также будут отрываться, уменьшая толщину переднего края иглы. Не факт правда, что вообще сработает как задумано.
ванна с электролитом и далее:
вариант деструктивный - с помощью растворения
вариант конструктивный - с помощью осаждения
меняется только полярность =)
Примерно так, под наклоном касаешься проволочкой кислоты...
Еще был "прокатный стан", на нем фабричные тарелки доводили до нужной точности. Берлинский университет за одну такую тарелку отдал 10 тыс марок - делали мелкий радиотелескоп. Алюминиевая чаша 2м диаметром с правильной геометрией. Сначала прокат, затем микрофрезеровка.
Тогда удивился тому как создается оттиск надписи - бумага подкладывается под тарелку и вдавливается в алюминий при прокате, создается оттиск.
Интересный был проект, местного радиотелескопа, студентом не понимал - приемник в жидком гелии, снаружи жидкий азот, два контура.
Еще халтура для голландцев была - СВЧ печка, если не ошибаюсь, 150квт, для сушки леса на конвейере. До 4 процентов влажности доводили за час. Главное не пересушить, а то получится снаружи целое бревно а внутри уголь.
Ионное травление в вакууме. Как собсна эти иголки и делают для STEM. Вот взял и все опошлил)
во времена трубо паскакаля, этот их "ойти" ещё не придумали. названия не было, а индустрия была.
Отличное руководство. Покажу его коллегам и спрошу как они к этому относятся
А как этот ваш SOSAL будет работать в парадигме GOVNO (https://govno.works/)? Противоречий не возникнет?)
Подход GOVNO более подробно раскрывает принципы подхода SOSAL, а точнее Socially-Conscious Code и Open by Default. Я считаю, что комбинация подходов GOVNO и SOSAL поспособствует увеличению производительности и росту дружественных отношений в коллективе. Я бы назвал такую комбинацию SOSAL GOVNO ❤.
SOSAL описывает эти принципы в достаточно общем виде, чтобы каждый мог адаптировать SOSAL под себя, и поэтому команды только выигрывают от таких комбинаций.
Подозреваю, в полной мере эффект от симбиоза данных подходов наблюдается в задачах рефакторинга легаси кода.
Такое ощущение что аббревиатуры писали русские, нарочно просто так точно не придумать.
Такое ощущение что аббревиатуры писали русские, нарочно просто так точно не придумать.
В западных колледжах изучают русскую классическую литературу. Возможно, это делается для того, чтобы студенты-бакалавры и магистры должны понимать про себя «Тварь я дрожащая или право имею».

© 2025 GOVNO Project. All rights reserved. how@govno.works
Адрес для контактов просто потрясающий.
Да.
Зачем этот SOSAL, когда уже есть более простой и понятный LIZAL (Loose Interface, Zero Abstraction Layer)?
Определенно стоит более детально проработать принципы и опубликовать на англоязычную аудиторию.
Эта статья каким-то смутным образом перекликается с утренней новостью об использовании рыб семейства лососевых в косметологии. Гм
Выход либидо в IT...
-- SOSAL GOVNO PIDOR?
-- Нет, ZASRAL.
DROCHILL
D — Develop
R — Reliable
O — Objects
CHILL — and Chill
для кодеров на таком принципе есть даже собственный замок: https://ru.wikipedia.org/wiki/Дрочил
Я ещё ВДУЛ не получил. И ДАЛВРОТ тоже пока не удалось.
Visual development user level
Визуальная разработка на уровне пользователя
D - Digital (цифра)
A - Analog (аналог)
L - Law (закон)
V - Virtualizable (виртуализируемый)
R - Rapid (быстрый)
O - Open-source (открытый исходный код)
T - Traceable (отслеживаемый)
Данный подход означает, что программирование должно соответствовать законодательству и быть отслеживаемым всем международным сообществом, а код должен быть открытым. При этом как разработка, так и сам продукт должны быть быстрыми и действующими. Применять можно как при разработке цифровых продуктов, так и аналоговых. Также у продукта должна быть возможность виртуализации, которая заключается в переносе принципа действия из одной среды в другую
Видал сасун? Вот он какой! ©
"Enhanced mind", "Balanced complexity", "AI agents based", "Language for dummies" - скоро все на нем писать будем.
В порядке социальной ориентированности также предлагается сеньоров переименовать в DUNGEON MASTER, миддлов в LEATHER MAN. Опять же это соответствует принципам DEI.
Тогда вот вам настоящее время:
можно еще перевести "soft path" на японский язык в google translate, оставив
только начало и конец (первый и последний символ).
ДА!
SOSAL: Современный социальный подход к программированию
Статья с таким заголовком и содержанием, которое лишено особой новизны, становится первым в выборке "лучшее за сутки".
Шутка может и неплохая, но... Не 1 апреля. Не пятница (а всего лишь вторник). Может быть немного жаркая погода...
Друзья, оснащайте свои рабочие места системами управления климата! А то похоже многие устали и перегрелись.
P.I.S.Y.A. — Pragmatic, Inclusive, Sustainable, Yielding, Adaptive
Идеология PISYA фокусируется на создании кода и процессов, удобных не только для компьютеров, но и для живых людей: коллег, будущих читателей, участников команды и конечных пользователей.
P — Pragmatic
Прагматичность важнее догм. Не каждая абстракция нужна, не каждый паттерн уместен. Делай то, что работает здесь и сейчас, с прицелом на здравый компромисс между качеством и сроками.
I — Inclusive
Код должен быть доступен всем членам команды. Независимо от уровня опыта, языка, культуры. Инклюзивный код — это простой, комментированный и структурированный код, без высокомерия и «магии».
S — Sustainable
Проект должен быть поддерживаем. Писать легко, поддерживать сложно. Стандарты, документация, тесты и умеренная сложность — залог жизнеспособности системы.
Y — Yielding
Гибкий код — лучший код. Умей уступать: требованиям, обратной связи, реалиям бизнеса. Стойкость хороша, но избыточное упрямство ломает проект.
A — Adaptive
Изменения — не угроза, а норма. Архитектура должна легко меняться, чтобы не мешать росту. Не бойся выкинуть старое ради лучшего.
🔧 PISYA — это не про понты, а про людей. Пиши код не ради себя — пиши так, чтобы другим не хотелось переписать всё завтра.
Два вопроса:
Лояльны ли компании из ОБОСРАЛСЯ* к SOSAL?
Является ли использование pydroid нарушением принципов SOSAL?
*
Озон, Билайн, Окко, Сбер, Рамблер, Авито, ЛамодаТех, Сколково, Яндекс
SOSAL является молодым подходом, и поэтому большинство компаний ещё о нём не знают, но я уверен что он будет им по душе, по крайней мере не будет лишним.
Я не знаком с проектом pydroid, так что рекомендую вам сверить его с каждым из принципов подхода SOSAL и поделиться с нами, но я очень надеюсь что этот проект подходит.
активно продвигают, я слышал
Следует поинтересоваться у коллег из Google, Amazon, Apple, Microsoft, Meta, Netflix, Oracle.
Зря иронизируете кстати, в одной западной компании пару месяцев в разделе программ повышения квалификации в списках, которые делал русскоязычный работник, аббревиатуры двух курсов - Zero Advertisement Exploitation и Basic Operations Knowledge везде стояли рядом, пока на это не указал новый сотрудник, знавший русский.
У разработчиков и IT-гиков очень тонкий юмор, и порой сложно понять, где серьёзные мысли, а где толстый троллинг
Начинаю применять. Захожу и спрашиваю: SOSAL? Он отвечает: SOSAL!
Ждем презентации на подкасте подлодка с более.. гмх.. глубоким раскрытием тезисов
Автор если и SOSAL, то сильно не имплементировал. Чисто так, по злому и без удовольствия попрограммировал и всё.
SOSAL: Современный социальный подход к программированию