Programmers always write software for a specific field. For example, accounting software relies on accounting rules, and a website for watching TV shows relies on TV industry concepts such as seasons or episodes. The same goes for other fields: booking flights and hotels, finding tours, buying and selling cars.
Understanding the domain for which you're writing a program is just as important as being able to program. Fields can be complex, like accounting or engineering manufacturing. You do not need to know it thoroughly, but a general understanding is still required.
Let's look at Hexlet since you know its key concepts — courses, lessons, professions, tests, code reviews, quizzes, course participants, and projects. There are two hundred entities — concepts in the code on Hexlet.
Entities are often in relationships with one another:
- Professions consist of courses
- Courses consist of lessons
- Lessons consist of theory blocks, quizzes, and exercises
- Quizzes aggregate questions
- Questions obtain answers
These connections have specific names:
- One-to-many or o2m — one lesson can have one course, but one course contains many lessons
- Many-to-many or m2m — many users can take one course, and one user can take many courses