Development Philosophies 🧩

Development Philosophies 🧩

#SoftwareDevelopment

Do you know what Software development Philosophies are and how they are used in building software? Well, let's check out what they mean and how they are used to build efficient and reliable Software.

Software Development Philosophies is generally a list of software engineering approaches, styles, and methodologies. It also contains programming paradigms, single practices, principles, and laws.

Software Development Methodology💻

A Software development methodology is a structured approach used in developing a software project. ie., a process (or a series of processes) by which engineers design, implement and test new computer programs. These methodologies use different other philosophies such as principles, paradigms, and laws in the process.

For example:-

  • Such as Waterfall using Behaviour Driven Development (BDD). OR

  • Kanban using Test Driven Development.

NOTE: In reality the choices of the combinations are decided by considering various factors.

Why choose a methodology? 🤔

In general, while doing any task or a piece of work, following a structural approach helps in the long run. Let's say we want to build a chair and jumping directly into the task without knowing any information doesn't do any good. The result might be satisfactory or not. And if the result isn't satisfactory, what if the end product goes beyond what can be fixed? Well, it's just a chair. We can build another one. Now let us change our viewpoint from a chair to a 💰million dollar software program💻. Can we really able to discard broken software and create a new one? We don't want any risk, right? That's the reason we choose a methodology. This doesn't guarantee that the end product will be 100% reliable, efficient and ideal. But this helps us to build a product that is as ideal and reliable as possible.

A methodology helps us in knowing requirements and accessing one's capability and available resources, helping in keeping track of the progress of work. It also helps us in following a time frame by allocation of specific duration for different works.

Methodologies help in making work easy and efficient by considering things such as
Planning, Collaboration, Documentation, Testing, Iterative Development, Continuous Improvement, Risk Management, and Communication.

Choosing a methodology or principles for a project is done very carefully. It's not like we can use any philosophy for any project. There are certain factors to be considered as mentioned before.

How to choose a Methodology❓

There are several factors that influence the choice of methodology for a particular project. such as

  1. Size and Complexity of the project.

  2. Availability of resources.

  3. Goals and objectives of the Project.

  4. Team skills and experience.

  5. Stakeholder needs and expectations.

  6. Project Environment.

These are only some of the factors. Each project has specific characteristics that are taken into consideration while choosing. In some situations, based on evaluations, a particular methodology might seem perfect for a project. In some cases, evaluating some part of factors indicate a methodology as appropriate, while the level of another part of factors might suggest a different methodology as a suitable one. In the Second case, the best solution is to combine those methodologies and use them together to develop the software. In both cases, choosing the appropriate methodology is important for the project to be released successfully, on time, and within budget.

A project can use a methodology or combination of methodologies and also include different philosophies such as

  • processes such as Behaviour Driven Development (BDD), Bug Driven Development (BgDD), Domain Driven Development, Test Driven Development (TDD), etc.

  • paradigms such as Object-oriented programming, Functional Programming, Procedural programming, Reactive Programming, etc.

  • laws or principles or guidelines such as KISS (Keep it simple, stupid), DRY (Don't Repeat Yourself), YAGNI (You aren't gonna need it), etc.

  • and some other coding conventions and Anti-patterns etc.

Well, that's all for now. Let's look at how the different methodologies work and how they differ in structure at some other times. Do let me know some of the interesting rules or guidelines you follow while coding. Thankyou👋