This is a very common question. Many people talk about Methodologies, Processes, Techniques, and Frameworks but these concepts are not always well-defined. In fact, people are often using the same term for different concepts, which causes a lot of confusion.
I believe that this lesson can contribute to forming your concept of what a framework is and help you think about how to obtain greater reuse of solutions from architectures based on frameworks. You can watch it in the following video or read the transcript below.
Why I created this video
A lot of people have difficulty understanding what is a Framework.
Is a framework the same as a methodology?
Is a framework different from a specific implementation?
What is that, after all?
Well, I recently published a video in Portuguese explaining what is a framework and giving some examples that a lot of people who saw it told me that it was very useful for them to understand this important concept, and I thought I should do that in English too.
I believe that at the end of this video these concept is going to be clear to you so you can understand “Is Scrum a framework or not?”
You’ll be able to figure it out by yourself.
Concept of Framework
A framework is an incomplete implementation of something. A structure that has a missing piece, and that missing piece is my specific part. A framework is used to build something by reuse. A full implementation, but with a missing part: my special missing part. My difference.
Well, let’s come back to the meaning of the word “frame-work”.
Frame means “an open case or structure made for admitting, enclosing, or supporting something”.
Like in this case a piece of art, like the Monalisa, or well… something else. Doesn’t matter. The frame was not made for a specific piece of art, but for any piece of art that you can insert into it.
The second word in frame-work is “work”.
And let’s understand work here from three different perspectives.
We’ll talk about Frameworks in software applications, business, and in methodology, which is the subject of this video.
Frameworks for software application development
In software application development there are two different approaches to reusing code. In the traditional development approach, you build your application as a source code that automates a set of steps, or a set of tasks. During those tasks, I see the possibility (or the opportunity) to reuse other codes I have made in the past, or that some other people have made. We call those codes “libraries”, so I can reuse code already made, tested, and valuable in my application.
When you’re developing software applications based on frameworks, this framework is a source code reusable. Something that you can use to create a lot of applications.
This source code has a set of tasks automated by the framework. It has in itself a lot of libraries that the framework calls to automate those tasks and, some of those tasks are not automated by the framework but by my application. So the framework calls my application when it needs the special thing that my application does. My differential in the way the framework works, in the workflow.
Some people say that developing applications based on the frameworks uses the Hollywood principle.
The Hollywood principle: “Don’t call us. We call you.”
It means that the framework calls your application instead of your application calling libraries.
Of course, your application must be constrained by what the framework does.
Technology constraints. If you are creating a website, there’s a framework
specific to that. But if you’re creating a game, there are specific frameworks and constraints for that kind of game you’re building. For each type of application we want to build, there must be a general framework for that.
Frameworks for business development
If you are not a software developer and this example is not very suitable for you, let me explain it to you using business as another perspective.
Imagine I’m developing a store using a traditional development. My business is going to be a store on the street and I have to attract the audience and provide a parking lot for people to park their cars. I have to be worried about safety, bathrooms, infrastructure, everything, and, of course, selling my products.
This is the traditional development. I have to worry about all those aspects.
If I want to develop a business based on frameworks, it would be like creating a store in a mall. In a mall, all those tasks like attracting the audience, parking, safety, bathroom, and infrastructure are provided by the mall infrastructure.
What the mall doesn’t do is sell my products, because that’s my specialty. That’s where I aggregate value, so I can create my store inside of a mall and focus on the differential of my business.
All those common parts are reusable and they are default. They are generic. My products and the way I sell my products are my specific part of the business.
Of course, I have to respect the rules and the constraints of the mall. The time for opening and closing, how many people can enter my store at a specific time, the use of masks and safety instructions… everything is constrained by the framework, but I may focus my work, or my efforts on my specialty.
Concept of Methodology
Well, now that you understood the definition of a framework and the concept of a framework, let’s compare it with another concept: “methodology”.
A methodology may be seen as “a body of methods, rules, and postulates employed by a discipline: a particular procedure or a set of procedures”.
A methodology employed those methods and rules to find a result or an objective. There are different methodologies for different objectives. There’s the scientific research methodology, teaching methodology, software development methodology, demand management methodology…
For each objective, there’s a different methodology and each organization has its own methodology. It’s very specific.
Usually, a methodology is composed of a set of processes and a set of products that are created during those processes. Those products may be deliverables or intermediate deliverables that are produced during the process.
A methodology also defines roles and responsibilities for people who are going to create those products or validate/verify those products. And a methodology usually also defines tools and techniques that those roles are going to use to create or validate those products during those processes.
A good methodology should answer all those questions. I mean, it should define processes, products, roles, responsibilities, tools, and techniques for the people who work in an organization to know what they have to do to achieve their objective.
A methodology is something specific for any company. That means that you should create your methodology. Or your company should create its own methodology to find its objectives.
But, how to create a methodology? You can create a methodology based
on a framework.
Frameworks for methodology development
A framework for methodologies is an incomplete implementation of a methodology. It’s something generic.
It defines a set of tasks but there are some missing pieces. Or they are defined in a macro view.
It also defines the products that must be built, but it has some space for you to detail how those products are going to be.
It defines roles, but a lot of times, those roles are very macro and you can specialize those roles.
And it also defines some techniques but not all of them and some of them are very wide.
Let’s take for example the Scrum framework.
It defines a set of events like the planning, the review, the respective, the daily… but there are spaces inside of those events for you to create your own events, or for you to arrange how those events should happen.
It defines outputs (or products) like backlog items and selected backlog items for a sprint, but those are very widely defined.
You can define what techniques you should use to create your backlog items. Like user stories, job stories, use cases, prototypes… The tools and techniques
you’re going to use must be defined by your organization.
Scrum also defines roles and responsibilities but one of those roles, developers, is very widely defined. In your organization, you may specialize those developers into coders, database designers, UX designers, analysts… Whatever is suitable for your organization and your objectives.
I, myself, could create a methodology for video development on YouTube and use Scrum as a framework. And the details of techniques, tools, and roles would probably be different from yours but maintaining the framework and specializing in what is specific for my part, or my business.
Well, I hope at this point the concept of Framework may be more clear to you. Find more content here in this website or on my channel on YouTube.
It’s a pleasure to be with you.
Do not reinvent the wheel. Reuse good ideas with frameworks.