emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc. – Telegram
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
3.48K subscribers
119 photos
15 videos
22 files
1.14K links
Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, Extreme Programming, SDLC, Agile, etc.

Chat: https://news.1rj.ru/str/emacsway_chat

Persistence: https://dckms.github.io/system-architecture/
Download Telegram
Архитектура ИТ-решений
Талант Кента Бека - автора экстремального программирования (XP), заключается в формулировании едва осознаваемых вещей понятными и простыми словами. Его очередная заметка: https://medium.com/@kentbeck_7670/monolith-services-theory-practice-617e4546a879
Это нужно выделить отдельно. Более простого объяснения более важных вещей в IT-индустрии я пока еще не встречал:

📝 "These were elucidated in the mid-70s by Yourdon & Constantine in "Structured Design" https://amzn.to/2GsuXvQ and haven’t changed.

Their argument goes like this:

1. We design software to reduce its cost.

2. The cost of software is ≈ the cost of changing the software.

3. The cost of changing the software is ≈ the cost of the expensive changes (power laws and all that).

4. The cost of the expensive changes is generated by cascading changes — if I change this then I have to change that and that, and if I change that then…

5. Coupling between elements of a design is this propensity for a change to propagate.

6. So, design ≈ cost ≈ change ≈ big change ≈ coupling. Transitively, software design ≈ managing coupling.

(This skips loads of interesting stuff, but I’m just trying to set up the argument for why rapid decomposition of a monolith into micro-services is counter-productive.)"

- "Monolith -> Services: Theory & Practice" by Kent Beck
https://medium.com/@kentbeck_7670/monolith-services-theory-practice-617e4546a879
Свеженькая статья на острую тему - " Are We Really Bad at Estimating?" by Mike Cohn:
- https://www.mountaingoatsoftware.com/blog/are-we-really-bad-at-estimating

Там есть ссылка на вот такой любопытный файлик (содержание которого уже не ново, но дает еще один угол зрения) - "Uncertainty Intervals versus Interval Uncertainty: An Alternative Method for Eliciting Effort Prediction Intervalsin Software Development Projects" by Jørgensen, M., Simula Research Laboratory:
- https://www.simula.no/sites/default/files/publications/files/promac-final2.pdf

#Agile
Forwarded from Никита Соболев
I have just released an article about Higher Kinded Types in Python! https://sobolevn.me/2020/10/higher-kinded-types-in-python

If you want to help our project, please share it 🙂
Уже не ново, но не теряет актуальности: https://www.youtube.com/watch?v=UoKlKx-3FcA
Самое интересное на 4:40 про геометрю...

#Юмор
This media is not supported in your browser
VIEW IN TELEGRAM
Интересная статья о том, как сделать систему отслеживания посетителей с распознаванием лиц у входной двери за 150$. Система написана на Python, думаю было бы круто написать перевод на JavaScript.   https://bit.ly/35HQutm (перевод - https://bit.ly/3ebvHlO)
#python #iot #article
Две статьи сравнивающие популярные фреймворки Vue и React.

1️⃣ What Vue.js Does Better Than React
🇬🇧 https://bit.ly/3oKmLc3

2️⃣ Vue vs React in 2020: Which Framework to Choose and When
🇬🇧https://bit.ly/3kFcDP5

#article #vue #react #frameworks
Дорожная карта по обучению перспективному направлению Artificial Intelligence.
🔗 https://github.com/AMAI-GmbH/AI-Expert-Roadmap
#learn #article #ai #github #repo
Не так давно, я услышал от одного очень крутого специалиста, автора книги Database Internals, термин "элитизм", который подсветил важные аспекты поведения специалиста (такие как сдержанность) в моей картине миропонимания. Мне кажется, что сегодня наблюдается дефицит этого понимания в профессиональном сообществе.

#Career
Этимология слова "рефакторинг" помогает лучше осознать его цели и лучше достигать их. К удивлению многих, этот термин не связан с "rewriting", и имеет более глубокий смысл управления сложностью.

📝 "Refactoring is a kind of reorganization. Technically, it comes from mathematics when you factor an expression into an equivalence - the factors are cleaner ways of expressing the same statement.

Refactoring implies equivalence; the beginning and end products must be functionally identical. You can view refactoring as a special case of reworking (see WhatIsReworking).
Practically, refactoring means making code clearer and cleaner and simpler and elegant. Or, in other words, clean up after yourself when you code. Examples would run the range from renaming a variable to introducing a method into a third-party class that you don’t have source for.

Refactoring is not rewriting, although many people think they are the same. There are many good reasons to distinguish them, such as regression test requirements and knowledge of system functionality. The technical difference between the two is that refactoring, as stated above, doesn’t change the functionality (or information content) of the system whereas rewriting does. Rewriting is reworking. See WhatIsReworking.

Refactoring is a good thing because complex expressions are typically built from simpler, more grokable components. Refactoring either exposes those simpler components or reduces them to the more efficient complex expression (depending on which way you are going).

For an example of efficiency, count the terms and operators: (x - 1) * (x + 1) = x^2 - 1. Four terms versus three. Three operators versus two. However, the left hand side expression is (arguably) simpler to understand because it uses simpler operations. Also, it provides you more information about the structure of the function f(x) = x^2 - 1, like the roots are +/- 1, that would be difficult to determine just by “looking” at the right hand side."
- “What Is Refactoring” on c2.com
http://wiki.c2.com/?WhatIsRefactoring

#SoftwareDesign #Agile #Refactoring