# Theories vs. Principles vs. Guidelines

Before moving on to the best practices and guidelines, I want to emphasize a bit on the word *"guideline"*.

In my final year of university, I took a class called [*CSCC10H3 Human-Computer Interaction*](https://utsc.calendar.utoronto.ca/course/cscc10h3) taught by [Professor Naureen Nizam](https://www.linkedin.com/in/naureen-nizam-phd-7643011) at the University of Toronto.

To be really honest, I didn't really pay much attention in that class, I only took this course in order to fulfill one of my upper-year computer science requirements. There was one lecture where I actually did take notes, and that lecture was about understanding the differences between **theories**, **principles**, and **guidelines**. Although that class that I took many years ago was on usability and interaction design, I will never forget what the differences between the three are.

Here are the key differences between theories, principles, and guidelines:

**Theories**: High-level widely applicable and predictive frameworks to draw on during design and evaluation.

**Principles**: Mid-level strategies or rules to analyze and compare design alternatives.

**Guidelines**: Low-level focused advice about good practices and cautions against dangers.

> Guidelines provide a shared language to promote consistency among multiple people in terminology usage. It is simply a set of recommendations that are there to create reliability and consistencies among a group of individuals.
>
> *-Naureen Nizam, Computer Science Professor at the University of Toronto*

It is important to realize that guidelines and principles are rule of thumbs, not widely adopted standards used by the masses. Therefore, the purpose of this chapter is to **propose a set of rules and recommendations from the significant trends in API design that we have seen emerge in the past couple of years**, and leverage them when it comes to designing and developing our own RESTful APIs.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.restfulnode.com/part-2/chapter-3/1-theories-vs-principles-vs-guidelines.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
