When developing software, there are multiple rules that we can follow for the different stages while developing software. But there are a few that can help evaluate the whole development process and define new techniques to improve upon it.
These models and standards are meant to help on increasing productivity, reduce costs and improve speed. But there is no set of rules that can be used for every project, every team, or even every person. Currently, there exist different models that can help depending on each one’s cases.
CMMI V2.0 helps organizations quickly understand their current level of capability and performance in the context of their own business objectives and compared to similar organizations.CMMI Institute
This model, as Wikipedia says, was created by the Carnegie Mellon University, currently administered by the CMMI Institute. It helps classifies in different levels the maturity of an organization based on the behavior, productivity, and efficiency of the different processes.
- Initial: The organization is unpredictable; the organization takes decisions based on reactions to external agents.
- Managed: There is planning. Projects are performed, measured, and controlled.
- Defined: There are sets of standards across all the organization that set guides for existing projects and future projects.
- Quantitatively Managed: Organization is data-driven. This data help with the definition of objectives and the restructuration of needs.
- Optimizing: The organization is built on continuous improvement, and it can pivot and respond to opportunities and changes.
This model is a guide that can help an organization improve during its life. It’s not only focused on software development but also a more general guide for teams and companies to organize and learn.
Team Software Process (TSP) is a model focused on process, products, and teamwork in software engineering. This model focuses on team creation, prioritizing common goals, plans, and leadership. This model is an extension of the PSP, Personal Software Process.
PSP is a model focused on guiding developers on defining their own process, planning their own work, and managing their work quality. This model is focused on the individual, in contrast with TSP, which is on the team.
PSP is classified in levels:
- PSP0: This level has 3 phases: planning, development, and a post mortem. It has simple metrics like time spent and the size of a program. There is some kind of code standardization, and the developer records ideas for future improving their own process.
- PSP1: This level extends over the past level, adding estimations on future development. The accumulated data is used for these estimations, as well as for task scheduling.
- PSP2: This level focuses on quality, using reviews to prevent errors and problems in code. The design of specifications (and its review) is a tool used extensively at this level.
Once an individual has understood and is growing in these different levels, we can continue with the TSP. The whole data and information collected can help us in the general development of projects instead of just focusing on the atomic information.
Carnagie Mellon University has its complete course materials available online, so everyone can learn from it!
Let’s SPICE things up, the Software Process Improvement Capability Determination (also known as SPICE,
I don’t know where the E comes from), is a standard defined by ISO. This standard provides a set of rules for the development of an evaluation standard of the software process, it evaluates
As the other models I’ve already covered in this post, this has some kind of levels, that can be defined as:
Each level is evaluated in a NPLF scale (Not achieved, Partially achieved, Largely achieved, Fully achieved), and based on its evaluation a team is expected to improve from it.
Currently, this ISO rule has been replaced by ISO-33061:2021. Because it’s still a new norm, it’s mostly behind its paywall 😭
When I read this name, I thought that it was going to be Microsoft-related. In fact, it’s a model created by UNAM (Universidad Autónama de México) and is an acronym in Spanish: Modelo de Procesos para la Industria del Software; it can be roughly translated to Software Industry Process Model (Maybe can be called SoftProMo?). It’s important to understand that this model wasn’t created by the CS faculty in UNAM but by the economics and administration faculty.
This model is based on CMMI and ISO 15504 but is trying to redefine the areas that are considered not appropriate for small and medium software development companies.
This model can be understood as a vertical management administration (this decision can be understood of the way companies were mainly managed in Mexico early 2000s).
The ideal to for decisión making!Me, it sounded like a cool catchphrase
IDEAL stands for:
Identify the problem Define your goals Explore solutions Act on it Look back
This tool has the objective to help identify and solve problems by reducing stress by visualizing the whole description of the problem, its multiple solutions, and learning at the end of it.
I found this worksheet by the food allergy counselor that can be used as a template to implement the method.
An interesting thing about this methodology is that it is not specific to an area nor a number of people. It can be used by everyone in all kinds of situations!
My experience in all this
My experience on these models on improving productivity in projects has been from an outsider’s perspective. I’ve worked in Oracle and Facebook, and I’ve seen that data collection is essential to understand the metrics of everything. Still, I’ve never been on the side of trying to organize and improve productivity on the organization (I haven’t been that important yet).
Facebook, at its core, is a data-driven company, so compared with my experience from Oracle, Facebook is always analyzing user interactions, doing AB tests, and trying to understand how users interact with their products so the best course of action can be taken.
I can say that I’ve worked in these big organizations that are already at the highest levels of these models, and I think that there is no specific model they have implemented. Still, they have implemented what has been best for their goals and business model.
So for anyone reading all this, I think the best model is the weird mutation from all the rules from all models that suits the best for you.