Mathematica can be much more than a scratchpad
My impression is that MathematicaMathematica is predominately used as a super graphical calculator, or as a programming language and sometimes as a mathematical word processor. Although it is in part all of these things, there is a more powerful usage paradigm for Mathematica. MathematicaMathematica stackexchange itself tends to be strongly oriented towards specific programming techniques and solutions.
The more powerful and broader technique is to think of MathematicaMathematica as a piece of paper on which you are developing and writing your mathematical ideas, organizing them, preserving knowledge in an active form, adding textual explanation and perhaps communicating with others through MathematicaMathematica itself. This requires familiarity with some of the larger aspects of MathematicaMathematica. These suggestions are focused toward new users who are either using MathematicaMathematica to learn mathematical material or want to develop new and perhaps specialized material.
Most beginners use the notebook interface - but just barely. They should learn how to use TitlesTitles, SectionsSections and TextText cells. If I was teaching a beginner I would have the first assignment be to write a short essay without any Input/OutputInput/Output cells at all. I would have them learn how to look at the underlying expression of cells, and how to use the ShowGroupOpenerShowGroupOpener option so a notebook could be collapsed to outline form.
Most subjects worthy of study or development require extended treatment. This means there may be multiple types of calculation or graphical or dynamic presentations. And multiple is usually simpler for a beginner with MathematicaMathematica. Notebooks will be more to the long than the short side.
New users should be encouraged to write their own routines when necessary. It certainly pays to make maximum use of built-inbuilt-in routines, and difficult to learn them all, but MathematicaMathematica is more like a meta-language from which you can construct useful routines in specific areas. Sometimes it is useful to write routines simply for convenience in usage. It's also worthwhile to think of routines as definitions, axioms, rules and specifications rather than as programs. Perhaps it is just a mindset but it is Mathematica and not C++. Routines can be put in a section at the beginning of a notebook. Again, I would teach new users how to write usage messages, SyntaxInformationSyntaxInformation[] statements, and define OptionsOptions[] and AttributesAttributes[] for routines. Most new users would probably prefer not to be bothered with this but it represents the difference between ephemeral material and permanent active useful aquired knowledge. Writing useful routines is probably the most difficult part. Using them in longish notebooks will always expose flaws in the initial design.
A new user working on a new project should create a folder for the project in the $UserBaseDirectory/Applications$UserBaseDirectory/Applications folder. This is THE place to gather material on a specific project. Then, if many useful routines have been created in the Routines sections of various notebooks, they could be moved to a package in the same Application folder. Again, it is not very difficult to write packages (especially if the routines have already been written and tested) and this makes the accumulated routines available to all notebooks. If one gets more advanced, style sheets and palettes can be added to the same application, along with an extended folder structure.
None of the things I have discussed here (except writing actual useful routines) is especially difficult to learn. It does provide a stable framework for using Mathematica and accumulating knowledge and experience. It is the present Mathematica paradigm.