There are two main elements that are needed when creating an amazing software solution:
How and why you define code in different classes.
The actual code you create within your classes.