emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Ответ Jimmy Bogard по поводу того, может ли CQRS-Команда возвращать результат: 📝 "It might seem rather strange that commands always have a result, but it’s much, much easier to deal with side effects of commands through return parameters than through some…
Скомпилировал все сообщения на тему "Может ли CQRS-команда возвращать результат" в отдельную статью: https://emacsway.github.io/ru/cqrs-command-and-result/
Статья получилась достаточно тяжелой, и для подавляющего большинства специалистов такая детализация рассмотрения этого вопроса вряд ли требуется (всегда можно сослаться, например, на мнение Jimmy Bogard, чтобы аргументировать свою позицию в процессе работы).
Но если кто-то хочет получить глубокое понимание этого вопроса, то статья будет полезной.
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming #OOP #CQRS #CQS
Статья получилась достаточно тяжелой, и для подавляющего большинства специалистов такая детализация рассмотрения этого вопроса вряд ли требуется (всегда можно сослаться, например, на мнение Jimmy Bogard, чтобы аргументировать свою позицию в процессе работы).
Но если кто-то хочет получить глубокое понимание этого вопроса, то статья будет полезной.
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming #OOP #CQRS #CQS
emacsway.github.io
Может ли CQRS-команда возвращать результат? — @emacsway's blog
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Несколько интересных сообщений про AsyncAPI: #Microservices #DistributedSystems #DDD #SoftwareArchitecture
Код-генератор, трансформирующий AsyncAPI в Golang-код:
- https://github.com/asyncapi/go-template
- https://github.com/asyncapi/generator
Очень гармонично сочетается с генератором Golang кода по OpenAPI и C4-model:
- https://news.1rj.ru/str/emacsway_log/170
#Microservices #Golang #DistributedSystems
- https://github.com/asyncapi/go-template
- https://github.com/asyncapi/generator
Очень гармонично сочетается с генератором Golang кода по OpenAPI и C4-model:
- https://news.1rj.ru/str/emacsway_log/170
#Microservices #Golang #DistributedSystems
GitHub
GitHub - asyncapi/go-watermill-template: Go template for the AsyncAPI Generator using Watermill module
Go template for the AsyncAPI Generator using Watermill module - asyncapi/go-watermill-template
Не смог не поделиться. Истину говорит:
Forwarded from Gennadiy Kruglov
Если хочешь чтобы донатили, открой канал на Тик-Ток)) За умные мысли донатить не будут, делиться ими - твоя потребность)
Когда ты делишься умными мыслями, ты снимаешь тяжесть с себя и возлагаешь её на других)
Когда ты делишься умными мыслями, ты снимаешь тяжесть с себя и возлагаешь её на других)
Forwarded from SWE notes
Для тех кто считает что jsonb в postgresql может заменить монгу, очень рекомендую ознакомиться со статьёй ниже об особенностях его работы и хранения
#postgresql #jsonb
https://scalegrid.io/blog/using-jsonb-in-postgresql-how-to-effectively-store-index-json-data-in-postgresql/
#postgresql #jsonb
https://scalegrid.io/blog/using-jsonb-in-postgresql-how-to-effectively-store-index-json-data-in-postgresql/
ScaleGrid
JSONB PostgreSQL: How To Store & Index JSON Data
In this post, we are going to show you tips and techniques on how to effectively store and index JSON data in PostgreSQL. Learn more about JSONB in Postgres.
Еще один интересный и лаконичный документ (всего 19 страниц) от Dean Leffingwell на тему разрешения противоречий между бизнес- и техническими интересами (на странице 11) в частности, и об управлении требованиями в масштабируемом Agile в целом:
https://scalingsoftwareagility.files.wordpress.com/2007/03/a-lean-and-scalable-requirements-information-model-for-agile-enterprises-pdf.pdf
#Management #Agile
https://scalingsoftwareagility.files.wordpress.com/2007/03/a-lean-and-scalable-requirements-information-model-for-agile-enterprises-pdf.pdf
#Management #Agile
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Еще один интересный и лаконичный документ (всего 19 страниц) от Dean Leffingwell на тему разрешения противоречий между бизнес- и техническими интересами (на странице 11) в частности, и об управлении требованиями в масштабируемом Agile в целом: https://sca…
Просматривал вчера книгу этого же автора:
- "Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise" by Dean Leffingwell.
Она вышла в печать в том же году, в котором он выпустил первый релиз SAFe.
Без сомнений, эта книга окажется полезной для тех, кого интересует вопрос интеграции аналитической и архитектурной работы в Agile-разработку. Она освещает не только работу с требованиями, но и предлагает процессы, модель которых, на мой взгляд, очень хорошо подходит для случая, когда Scrum/Nexus/LeSS - уже мало, а SAFe - пока еще слишком много. Но уже назрела ситуация, когда Product Owner-а в единственном лице не хватает для возросшего количества команд, и нужно каким-то образом интегрировать штат аналитиков и архитекторов в процесс разработки.
На мой взгляд, предложенная Dean Leffingwell модель может гармонично дополнять Scrum, как это делает, например, Disciplined agile delivery (DAD).
В отличии от популярного мнения о том, что аналитики и архитекторы должны быть частью команды реализации, Dean Leffingwell убедительно обосновывает, что они должны быть частью системной команды, которая выполняет этапы работы, предшествующие реализации, а также работу по интеграции автономных команд.
📝 "At the system level, however, architecture is often coordinated among system architects and business analysts who are responsible for determining the overall structure (components and services) of the system, as well as the system-level use cases and performance criteria that are to be imposed on the system as a whole. For this reason, it is likely that the agile team has a key interface to one or more architects who may live outside the team. (We’ll discuss this in depth in Chapter 20.)"
- Agile Software Requirements Lean Requirements Practices for Teams, Programs, and the Enterprise (Agile Software Development Series) by Dean Leffingwell
Этот подход в точности повторяет предложение Харлана Миллза, известное как "Метод хирурга" ( https://news.1rj.ru/str/emacsway_log/322 ), и идеально ложится на DDD и микросервисную архитектуру. Вряд ли можно придумать что-то более подходящее для микросервисных Scrum-проектов малых и средних размеров. Это своего рода "детёныш" SAFe (в прямом и переносном смыслах). Хотя, есть мнение, что современный SAFe не так уж и велик для S-Sized команд, см.:
- "Six SAFe Practices for S-Sized"
https://www.scaledagileframework.com/guidance-six-safe-practices-for-s-sized-teams/
Кстати, SAFe предоставляет четыре конфигурации из коробки, где самая минималистичная - это Essential SAFe:
https://www.scaledagileframework.com/essential-safe/
Говоря о проблемах масштабирования Agile-команд, мне очень интересной показалась ещё одна его книга, которая вышла 4-мя годами ранее:
- "Scaling Software Agility: Best Practices for Large Enterprises" by Dean Leffingwell
Ну и коль столько было сказано про SAFe, то, наверное, имеет смысл упомянуть и книгу:
- "SAFe® 5.0 Distilled: Achieving Business Agility with the Scaled Agile Framework®" by Richard Knaster, Dean Leffingwell
#Agile #Management #SoftwareArchitecture #DDD #Microservices
- "Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise" by Dean Leffingwell.
Она вышла в печать в том же году, в котором он выпустил первый релиз SAFe.
Без сомнений, эта книга окажется полезной для тех, кого интересует вопрос интеграции аналитической и архитектурной работы в Agile-разработку. Она освещает не только работу с требованиями, но и предлагает процессы, модель которых, на мой взгляд, очень хорошо подходит для случая, когда Scrum/Nexus/LeSS - уже мало, а SAFe - пока еще слишком много. Но уже назрела ситуация, когда Product Owner-а в единственном лице не хватает для возросшего количества команд, и нужно каким-то образом интегрировать штат аналитиков и архитекторов в процесс разработки.
На мой взгляд, предложенная Dean Leffingwell модель может гармонично дополнять Scrum, как это делает, например, Disciplined agile delivery (DAD).
В отличии от популярного мнения о том, что аналитики и архитекторы должны быть частью команды реализации, Dean Leffingwell убедительно обосновывает, что они должны быть частью системной команды, которая выполняет этапы работы, предшествующие реализации, а также работу по интеграции автономных команд.
📝 "At the system level, however, architecture is often coordinated among system architects and business analysts who are responsible for determining the overall structure (components and services) of the system, as well as the system-level use cases and performance criteria that are to be imposed on the system as a whole. For this reason, it is likely that the agile team has a key interface to one or more architects who may live outside the team. (We’ll discuss this in depth in Chapter 20.)"
- Agile Software Requirements Lean Requirements Practices for Teams, Programs, and the Enterprise (Agile Software Development Series) by Dean Leffingwell
Этот подход в точности повторяет предложение Харлана Миллза, известное как "Метод хирурга" ( https://news.1rj.ru/str/emacsway_log/322 ), и идеально ложится на DDD и микросервисную архитектуру. Вряд ли можно придумать что-то более подходящее для микросервисных Scrum-проектов малых и средних размеров. Это своего рода "детёныш" SAFe (в прямом и переносном смыслах). Хотя, есть мнение, что современный SAFe не так уж и велик для S-Sized команд, см.:
- "Six SAFe Practices for S-Sized"
https://www.scaledagileframework.com/guidance-six-safe-practices-for-s-sized-teams/
Кстати, SAFe предоставляет четыре конфигурации из коробки, где самая минималистичная - это Essential SAFe:
https://www.scaledagileframework.com/essential-safe/
Говоря о проблемах масштабирования Agile-команд, мне очень интересной показалась ещё одна его книга, которая вышла 4-мя годами ранее:
- "Scaling Software Agility: Best Practices for Large Enterprises" by Dean Leffingwell
Ну и коль столько было сказано про SAFe, то, наверное, имеет смысл упомянуть и книгу:
- "SAFe® 5.0 Distilled: Achieving Business Agility with the Scaled Agile Framework®" by Richard Knaster, Dean Leffingwell
#Agile #Management #SoftwareArchitecture #DDD #Microservices
Forwarded from Go Дайджест
Transactional outbox 📤
https://engineering.razorpay.com/achieving-reliable-dual-writes-in-distributed-systems-cb9ff3b9bfc1
https://engineering.razorpay.com/achieving-reliable-dual-writes-in-distributed-systems-cb9ff3b9bfc1
Medium
Achieving reliable dual writes in distributed systems
Wondering how to reliably and atomically perform a database write along with dual writes to external systems? Read on…
Свежая и неплохая статья об архитекторской деятельности:
https://habr.com/ru/company/yota/blog/551566/
#SoftwareArchitecture
https://habr.com/ru/company/yota/blog/551566/
#SoftwareArchitecture
Хабр
– А у нас нет мышей! – А мы заведём… Какая польза от архитектора решений
Приветствую, хабровчане. В далёком 1998-м я поступил в вуз на инженера-программиста и ещё в первом семестре реализовал свой первый коммерческий программный проек...
📝 "Каждый хочет, чтобы правда была на его стороне, но не каждый хочет быть на стороне правды." (Ричард Уэйтли)
📝 "Everyone wishes to have truth on his side, but not everyone wishes to be on the side of the truth." (Richard Whately)
#SoftSkills #DecisionMaking #Career
📝 "Everyone wishes to have truth on his side, but not everyone wishes to be on the side of the truth." (Richard Whately)
#SoftSkills #DecisionMaking #Career
Цикл статей Gregor Hohpe о презентационных навыках. На прошлой неделе вышла пятая статья цикла.
- Making Complex Topics Stick (Part 1: Content). Ethos, Logos, and Pathos have to be built-in, not tacked on.
https://architectelevator.com/strategy/complex-topics-stick/
- Making Complex Topics Stick (Part 2: Composition). A list of ingredients doesn’t make a recipe. You need to know the right dosage.
https://architectelevator.com/strategy/logos-ethos-pathos/
- Making Complex Topics Stick (Part 3: Delivery). How to overcome the first curse of speaking: linearity.
https://architectelevator.com/strategy/presenting-like-architect/
- Making Complex Topics Stick (Part 4: Multiplexing). Weaving multiple threads into a single presentation.
https://architectelevator.com/strategy/presenting-multiplex/
- Making Complex Topics Stick (Part 5: Waveforms). Weaving two threads into a single presentation.
https://architectelevator.com/strategy/presenting-waveform/
- The Second Curse of Speaking (Complex Topics, Part 6). A Steady Rhythm Keeps Your Listeners On Track
https://architectelevator.com/strategy/presenting-second-curse/
- Present like a DJ! Rhythm, Mixing, Transitions, Waveforms, Improvisation (Complex Topics, Part 7)
https://architectelevator.com/strategy/presenting-like-djing/
P.S.: Если кто еще не знает, то по презентационным паттернам есть книга другого известного автора по архитектуре:
- "Presentation patterns: techniques for crafting better presentations" by Neal Ford, Matthew McCullough, Nathaniel Schutta
#SoftwareArchitecture #Career #SoftSkills #Management
- Making Complex Topics Stick (Part 1: Content). Ethos, Logos, and Pathos have to be built-in, not tacked on.
https://architectelevator.com/strategy/complex-topics-stick/
- Making Complex Topics Stick (Part 2: Composition). A list of ingredients doesn’t make a recipe. You need to know the right dosage.
https://architectelevator.com/strategy/logos-ethos-pathos/
- Making Complex Topics Stick (Part 3: Delivery). How to overcome the first curse of speaking: linearity.
https://architectelevator.com/strategy/presenting-like-architect/
- Making Complex Topics Stick (Part 4: Multiplexing). Weaving multiple threads into a single presentation.
https://architectelevator.com/strategy/presenting-multiplex/
- Making Complex Topics Stick (Part 5: Waveforms). Weaving two threads into a single presentation.
https://architectelevator.com/strategy/presenting-waveform/
- The Second Curse of Speaking (Complex Topics, Part 6). A Steady Rhythm Keeps Your Listeners On Track
https://architectelevator.com/strategy/presenting-second-curse/
- Present like a DJ! Rhythm, Mixing, Transitions, Waveforms, Improvisation (Complex Topics, Part 7)
https://architectelevator.com/strategy/presenting-like-djing/
P.S.: Если кто еще не знает, то по презентационным паттернам есть книга другого известного автора по архитектуре:
- "Presentation patterns: techniques for crafting better presentations" by Neal Ford, Matthew McCullough, Nathaniel Schutta
#SoftwareArchitecture #Career #SoftSkills #Management
The Architect Elevator
Making Complex Topics Stick (Part 1: Content)
Ethos, Logos, and Pathos have to be built-in, not tacked on.
"Domain Services: The Next (small) Evolution of Microservices" by Nick Tune
https://medium.com/nick-tune-tech-strategy-blog/domain-services-the-next-small-evolution-of-microservices-f217fc388191
#Microservices #DDD
https://medium.com/nick-tune-tech-strategy-blog/domain-services-the-next-small-evolution-of-microservices-f217fc388191
#Microservices #DDD
"Tensions when Designing Evolvable Bounded Contexts" by Mathias Verraes
Bounded Contexts and their interfaces are governed by fundamental tensions that affect our design
https://verraes.net/2021/04/tensions-when-designing-evolvable-bounded-contexts/
#DDD
Bounded Contexts and their interfaces are governed by fundamental tensions that affect our design
https://verraes.net/2021/04/tensions-when-designing-evolvable-bounded-contexts/
#DDD
Mathias Verraes' Blog
Tensions when Designing Evolvable Bounded Contexts
Bounded Contexts and their interfaces are governed by fundamental tensions that affect our design
Mike Cohn, один из наиболее авторитетных авторов в области Agile и Estimation, а также автор "concept of Test Pyramid", выкладывает в открытый доступ (но с ограниченным сроком действия) видео на острые и чувствительные темы индустрии:
"Watch Now: Training on Story Points for a Limited Time"
https://www.mountaingoatsoftware.com/blog/watch-now-training-on-story-points-for-a-limited-time
"Watch Now: What to Do When Teams and Stakeholders Want Perfect Estimates"
https://www.mountaingoatsoftware.com/blog/watch-now-what-to-do-when-teams-and-stakeholders-want-perfect-estimates
"Watch Now: How to Stop People Problems from Hurting Your Estimates"
https://www.mountaingoatsoftware.com/blog/watch-now-how-to-stop-people-problems-from-hurting-your-estimates
#Agile #Career #Management
"Watch Now: Training on Story Points for a Limited Time"
https://www.mountaingoatsoftware.com/blog/watch-now-training-on-story-points-for-a-limited-time
"Watch Now: What to Do When Teams and Stakeholders Want Perfect Estimates"
https://www.mountaingoatsoftware.com/blog/watch-now-what-to-do-when-teams-and-stakeholders-want-perfect-estimates
"Watch Now: How to Stop People Problems from Hurting Your Estimates"
https://www.mountaingoatsoftware.com/blog/watch-now-how-to-stop-people-problems-from-hurting-your-estimates
#Agile #Career #Management
📝 "Microservices are an architectural style that is also currently in fashion; monoliths are an architectural style that is also currently out of fashion.
But do remember this: all fashions come and go."
- Grady Booch
https://twitter.com/Grady_Booch/status/1382001888359370756?s=19
#Microservices
But do remember this: all fashions come and go."
- Grady Booch
https://twitter.com/Grady_Booch/status/1382001888359370756?s=19
#Microservices
Twitter
Grady Booch
Microservices are an architectural style that is also currently in fashion; monoliths are an architectural style that is also currently out of fashion. But do remember this: all fashions come and go.
И еще одна очень крутая книга попала в мое поле зрения на тему Soft Skills, от известного автора в области психологии, системного мышления и антропологии разработки программного обеспечения, на работы которого ссылаются в своих книгах такие светила, как Kent Beck:
- "Becoming a Technical Leader" by Gerald Weinberg
https://www.goodreads.com/book/show/714344.Becoming_a_Technical_Leader
Другие две его известные книги:
- "Systems Thinking. Quality Software Management. New York: Dorset House." by Gerald M. Weinberg, 1992, ISBN: 0932633226
- "An Introduction to General Systems Thinking" by Gerald M. Weinberg
#SoftSkills #Career
- "Becoming a Technical Leader" by Gerald Weinberg
https://www.goodreads.com/book/show/714344.Becoming_a_Technical_Leader
Другие две его известные книги:
- "Systems Thinking. Quality Software Management. New York: Dorset House." by Gerald M. Weinberg, 1992, ISBN: 0932633226
- "An Introduction to General Systems Thinking" by Gerald M. Weinberg
#SoftSkills #Career
Goodreads
Becoming a Technical Leader: An Organic Problem-Solving…
Becoming a Technical Leader is a personalized guide to …
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
В продолжение статьи "Роль архитектуры в масштабировании команд, DDD и микросервисах" - https://dckms.github.io/system-architecture/emacsway/it/team-topologies/harlan-mills%27-proposal.html Превосходство Monolith First заключается в том, что он удешевляет…
Бегло просмотрел книгу:
"Team Topologies: Organizing Business and Technology Teams for Fast Flow" by Matthew Skelton
https://www.goodreads.com/book/show/44135420-team-topologies
, и оказался впечатлен. Книга хорошо раскрывает тему, которую я рассматривал в этом канале, по поводу роли архитектуры и архитектора в топологии и масштабировании команд:
https://news.1rj.ru/str/emacsway_log/321
Thanks to @gradea за эту книгу:
https://news.1rj.ru/str/dddevotion/160
"Team Topologies: Organizing Business and Technology Teams for Fast Flow" by Matthew Skelton
https://www.goodreads.com/book/show/44135420-team-topologies
, и оказался впечатлен. Книга хорошо раскрывает тему, которую я рассматривал в этом канале, по поводу роли архитектуры и архитектора в топологии и масштабировании команд:
https://news.1rj.ru/str/emacsway_log/321
Thanks to @gradea за эту книгу:
https://news.1rj.ru/str/dddevotion/160
Goodreads
Team Topologies: Organizing Business and Technology Tea…
Effective software teams are essential for any organiza…
Forwarded from Архитектура ИТ-решений
Я и не подозревал о существовании такой штуки, как Руководство по стилю SQL от Саймона Холивелла https://www.sqlstyle.guide/ - странице, объединяющей различные рекомендации по именованию таблиц, столбцов, хранимых процедур, алиасов и оформлению SQL-запросов
Вы можете использовать эти рекомендаций, форкнуть их или создать свои собственные, - пишет автор - главное, чтобы вы выбрали стиль и придерживались егоwww.sqlstyle.guide
SQL style guide by Simon Holywell
A consistent code style guide for SQL to ensure legible and maintainable projects
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Статьи на частые вопросы по DDD: - "What is domain logic?" by Vladimir Khorikov - "Domain services vs Application services" by Vladimir Khorikov - "Domain model isolation" by Vladimir Khorikov - "Email uniqueness as an aggregate invariant" by Vladimir Khorikov…
Я регулярно упоминаю статью "Clarified CQRS" by Udi Dahan, которая играет критически важное значение в багаже знаний разработчика.
На Хабре появился перевод этой статьи:
https://m.habr.com/ru/post/545128/
Ну и вообще, парень перевел ряд важных статей:
https://m.habr.com/ru/users/ArkadiyXIII/posts/
, в частности три известные статьи V.Vernon о конструировании агрегатов:
1) https://m.habr.com/ru/post/543424/
2) https://m.habr.com/ru/post/543654/
3) https://m.habr.com/ru/post/544514/
, и конспект книги Sam Newman по распилу монолита:
1) https://m.habr.com/ru/post/548054/
2) https://m.habr.com/ru/post/548592/
3) https://m.habr.com/ru/post/549272/
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture
На Хабре появился перевод этой статьи:
https://m.habr.com/ru/post/545128/
Ну и вообще, парень перевел ряд важных статей:
https://m.habr.com/ru/users/ArkadiyXIII/posts/
, в частности три известные статьи V.Vernon о конструировании агрегатов:
1) https://m.habr.com/ru/post/543424/
2) https://m.habr.com/ru/post/543654/
3) https://m.habr.com/ru/post/544514/
, и конспект книги Sam Newman по распилу монолита:
1) https://m.habr.com/ru/post/548054/
2) https://m.habr.com/ru/post/548592/
3) https://m.habr.com/ru/post/549272/
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Топовая новость в мире Golang & DDD. Авторы Watermill и целого ряда статей на тему DDD & Golang подготовили электронную книгу на основе своих статей, и приступили к созданию мини-курса обучения. 📝 "we prepared the e-book "Go With Domain: Building Modern Business…
Похоже, что DDD пользуется в Golang растущей популярностью:
📝 "It's 20 days after our e-book was released and it almost hit 1500 downloads today."
https://twitter.com/roblaszczak/status/1382697162375622662?s=09
https://threedots.tech/go-with-the-domain/
#DDD #Golang
📝 "It's 20 days after our e-book was released and it almost hit 1500 downloads today."
https://twitter.com/roblaszczak/status/1382697162375622662?s=09
https://threedots.tech/go-with-the-domain/
#DDD #Golang
Twitter
Robert Laszczak
It's 20 days after our e-book was released and it almost hit 1500 downloads today. Isn't it a great time to give it a new cover? 👽🛸threedots.tech/go-with-the-do…
Forwarded from Maxim Smirnov
Закипает рынок ИТ-труда. В FB-ке об этом пишут, да и вот здесь: https://www.forbes.ru/karera-i-svoy-biznes/426519-idet-zhestkiy-hanting-pochemu-v-rossii-rezko-vyrosli-spros-na-it
Forbes.ru
«Идет жесткий хантинг»: почему в России резко выросли спрос на IT-специалистов и их зарплаты
В начале 2021 года в IT-индустрии возник явный дисбаланс спроса и предложения на рынке труда. Разработчики, дата-аналитики и интернет-маркетологи стали гораздо востребованнее в результате пандемии, когда бизнес стал массово мигрировать в онлайн. Forbes рассказывает…