CQRS stands for "Command Query Responsibility Segregation". The idea is an extension of the single responsibility principle applied to services:
Command and Query are responsibilities of a system. By single responsibility principle, each of these responsibilities should be separate in the system.
"How tho?" As with all design principles: giving the definition does not teach how to apply the principle. :)
There are a lot of technologies that enable CQRS and these are worth an overview. I want to focus on the conceptual and logical first. The critical aspect of segregating command and query is useful even in design.
For instance, a useful question: "Does this change the state of the system?". This likely resembles asking about purity to functional programmers. Yep, same idea :) Just applied early and often in the design. We should aim for a clear answer: Yes or no. If there isn't a clear answer then that likely indicates a poor separation of command and query.
Is this an interesting topic for anybody else?
Soft skills are as critical as technical skills for a software engineer. No one works in isolation. Each person has to deal with teammates, colleagues, managers, etc. Therefore team interpersonal skills are essential too. Soft skills include things like good communication, honesty, teamwork, integrity, organization, empathy, etc.