On Models
 
Models are simplifications and abstractions of some patterns in the world or some parts of the system.
We all think in models, be it consciously or unconsciously.

A better way of thinking is to transform your implicit models into explicit models and being able to control them. By controlling, I mean the ability to change the model and to apply the model in the fitting context.

To highlight the importance of models, we usually highlight these ideas:
1. Mental models are the essence of human thinking process. We all have some "thought structures" and "fundamental rules" in our heads that define our world view and mindset.
2. The essence of efficient communications is your ability to identify and peruse the mental models of your communication partner.
3. The most efficient learning happens when you can grasp and learn the superior mental models of your mentor.

Why do we use models? 

Our brain can not effectively hold and manipulate a big number of details. But we want to be able to understand, explain and predict the world around us.

There is one problem with all models: they are all wrong. Simple models can be useful without being "right," in an engineering sense.

The thing is: you do not need to have a perfect model to be able to use it (to make decisions or take actions based on the model).

The manifestation of models in Software Engineering is architecture and, obviously, business modelling. Those are two essential modelling skills you will need to acquire to grow over the level of mediocrity of our craft.

What is the difference between models and why you may choose one over another?

I would say that the best model for you is one that you can understand and use for making decisions and taking actions. Learning a new or a different model will enhance your resolution - your ability to see world in meaningful details.

An example of such differences in models is ShuHaRi and Dreyfus Model of Skill Acquisition. Both models describe how people learn new skills. ShuHaRi is older and more simplistic, but it still captures the essence of getting skills: a novice needs a set of rules to follow to get results, while a master needs a deeper philosophy and principles to enhance his mastery.

If you want to dive deeper in mental models, I would recommend taking this basics course. There is also a course on Coursera introducing you to some math-backed models. And here is a huge list of useful mental models.

If you want to see some mental models which are closer to our career, check this article.

Why are we talking about models at all? 

In Metadevelopment we will learn and introduce several models which will help you to become a better software engineer and a better lifestyle engineer.

Internally, we are using ShuHaRi and Dreyfus models to design the courses and make your learning simpler. The whole idea of Metadevelopment is based on crowdsourcing and helping each other to learn more efficiently.

We will talk about models a lot. You should understand that most of those models are not profound objective truth. They are just tools, applicable in various contexts and situations. But learning those ideas and seeing them from various sides will develop your critical and analytical thinking. Practicing and experimenting will open up new possibilities and better understanding of yourself.