Darshan Hiranandani - How do I choose the right framework for my project?

Darshan Hiranandani 0 Reputation points
2024-03-01T09:47:52.33+00:00

Hey everyone, I'm Darshan Hiranandani

One of the critical decisions we face as developers is selecting the right framework for our projects.

How do you approach this decision-making process? What factors do you consider when choosing a framework? Share your experiences and insights to help fellow members navigate this important aspect of development!

Looking forward to hearing your perspectives.

.NET
.NET
Microsoft Technologies based on the .NET software framework.
3,396 questions
ASP.NET Core
ASP.NET Core
A set of technologies in the .NET Framework for building web applications and XML web services.
4,187 questions
ASP.NET
ASP.NET
A set of technologies in the .NET Framework for building web applications and XML web services.
3,267 questions
{count} votes

2 answers

Sort by: Most helpful
  1. Albert Kallal 4,651 Reputation points
    2024-03-02T00:23:35.8833333+00:00

    Well, it turns out in most cases, you often don’t have that choice!

     

    I mean, walk into an existing company, and start to do some work for them. These days, they probably have 10+ years of systems and development ALREADY in place.

    In other words, if they been using SQL server for all their applications, then you can be quite sure that tomorrow such a company not going to adopt or allow YOU to choose say PostgreSQL or say MySQL.

    So, it really depends on what kind of work you being asked to do. In other words, in the vast majority of work cases, the software development stack will already have been chosen for you.

    The other issue of course is your given experience.  You can’t just out of the blue “decide” to adopt some technology stack, since they take years to really “master” such software tools.

    So, say you going to develop a project, but are free to choose the software stack?

    So, one should in fact “categorise” the level of software skill you have. While there is not a formal define of skill levels, we do have some references such as:

     

    "The Seven Stages of Expertise in Software Engineering", American Programmer, July-Aug 1990, from Page-Jones, Meilir.

     

    From above, they note these classifications:

    Stage 1 Innocent (never heard of the product)

    Stage 2 Aware (Has read an article about X)

    Stage 3 Apprentice (has attended a three-day seminar)

    Stage 4 Practitioner (ready to use X on a real project)

    Stage 5 Journeyman (uses X naturally and automatically in his job)

    Stage 6 Master (has internalized X, knows when to break the rules)

    Stage 7 Expert (writes books, gives lectures, looks for ways to extend x)

     

    So, you should NEVER attempt building a project with say only stage 3 or lower above. Now, on that team, you might be only at say stage 4, but you need some member, or designer that is at least stage 5 or 6.

    So, if the framework is your choice (which as I point out in most cases it is not), then of course choosing the framework that you have the most experience with makes the most sense.

    The other hope? The project is small, and not too complex. Thus, you can achieve success with a relative low skill level assuming the project scope is simple.

    And from a design point of view, yes, some frameworks are not appropriate for a given project.

    Even simple concepts such as using a NoSQL database. That now means you are using natural keys for the database in place of say surrogate keys. In fact, having spent about 10 years using NoSQL systems, I wound up on my first project writing some code to produce, maintain, and create surrogate (auto number) primary key values for our software. And one big reason was our previous software experience was building systems that assumed and used surrogate keys for the database. So, walk into a new land, and you find many assumptions made as a developer don’t apply to the new platform. Hence, the learning curve.

     

    So, in the case that that you have great experience with framework X, or Y or Z? Then that should be your top choice when you have such a choice.

    However, as I pointed out, it depends on the type of software application you being asked to write, or are you walking into a company to create some software for them? As noted, in such cases, you don’t have a choice, and will in near all cases have to use the tools and software stacks they currently use.

     

    So, most companies have created boatloads of software and all kinds of business logic at significant costs, and thus you can’t throw out such software.

    So, I’m for example working on a large MS-Access application. We estimate with ease that a re-write of that software would cost about 1 million dollars.  Hence, we migrated the Access database parts to SQL server. Thus, they continue to use the Access applicaton for the “front end”.

    Now that the data is SQL server based, then we can (and are) adding web based, and all kinds of interfaces to that database.

    And we built some .net business objects. So, now the web portal site, MS-Access, and even some .net console applications now all share this common business logic object.

     

    Hence, all of the applications can now use common code, and we moving towards one common code base for most code (of course written in .net).

    So, one amazing thing about .net and Visual Studio? It is perhaps one of the greatest software platforms ever created. What tool like Visual studio lets you:

    Build console applications.

    Build web-based applications.

    Build COM objects for Office and MS-Access?

    Build and write software for Android?

    The fact that we have a mix of vb.net, c#, web based, desktop based, Android (Maui) based and more? And all written using .net?

    Well, I can say that adopting the .net land has allowed for preserving and capturing large software investments, and I can’t think of any other system other then .net that would be up to such a task.

     

    So, while in a most cases you can’t choose the framework?

    Well, when you can, then of course choose a tool set in which you have the highest skill level. You can’t really start a complex project without a better then stage 3 experience and knowledge (using the above skill level list).

    So, when you freely can make a choice, then hands down the choice should be the tools you know best.

    As a human, I can’t learn everything in our industry since the number of tools are too many, and worse yet, it can take a few years to really master a given platform. And I don’t recommend starting a project without those several years of experience.

    Given that you can’t choose any old platform or framework when doing work for an existing organization?

    Then the platform you should learn will be based on your friends and connections, or potential business in your area that have already made such choices for you.  And thus, what software stack will vary by your location and what most business in your area is using now. 

     

    Say in the choices for you in your area is game development? Then in most cases, the .net framework not the best choice. However, even then, such companies do have lots of business software and even web sites that support their games.

    What software systems is your local government using? If that is your best chance for work, then I would learn and study those systems they are using. Note again, how the choice is not really yours, is it?

     

    So, what is the best choice for someone? Well, everyone’s choice is going to be different, since everyone not wearing my shoes.

    In effect there is no real answer to your question. It going to depend on if you working on existing software, or you are 100% free to choose the tools to build the software you being asked to build.

     

    As noted, when you can make such software tool choices then using tools that you know best tends to be the best choice.

    You don’t have 6 months or a year to learn X or Y or Z for a new project, and thus you quite much have to go with what you currently know best.

    However, having stated the above, of course the architecture matters here. I mean, if all you know is vb.net for desktop, then that skill level not going to translate say into building web-based applications. So what are your best opportunities?

    Are they for games, desktop software, web based etc.?

    Each one of these choices will dictate what software tools you should learn. So, while MS-Access is not appropriate for building web-based applications?

    Well, boatloads of companies have Access applications, and they often need help. So, Access + strong SQL server skills is a winning combo in such cases.

    In fact, every Access application I worked with in the last 10 years? My first job and task was to migrate the data out of Access and into SQL server. We kept the existing Access applications as the front end, but now the data resides in SQL server.

    And with data in SQL server, then writing say web-based interfaces or a customer web portal based on that data is now possible.  

    And even using SQL server? Did I have a choice? No, not really, since the companies already were running SQL server.

    However, since I have boatloads of experience with SQL server, then it would not make sense to choose some other database system anyway. (the learning curve issues would increase cost and time to “choose” another database system).

     

    This post is already a bit long, and perhaps somewhat off topic for this forum, but the above is quite much my decision-making process. As noted, such decisions for what platform one should use is going to be quite much different for everyone.

    This is akin to telling everyone what flavor of Ice cream they should choose – choose the one you like best!

    However, I will say that .net is incredible, and it not because say Visual Studio is best in class (it is!!!), but it is the Swiss army knife of choices I have by playing in .net land. From office add-ins, building COM objects, building desktop application, web based, console based and more?

    The land of .net is the place to be since there really no area that Visual Studio and its project choices can’t cover if you looking to build software for a business.

    And now with .net core? Well, now my console software and more can run on Linux computers, so once again, the reach and swath of .net continues to grow.

     

    I hope the above gives you some insights to how one goes about choosing a given framework.

     

     

    0 comments No comments

  2. Bruce (SqlWork.com) 56,686 Reputation points
    2024-03-02T17:54:22.5933333+00:00

    Ideally the framework should be chosen after a complete architectural design has been completed and the requirements of the framework are known. Then the framework that best matches the required features can be chosen.

    As suggested above, often you are not free to choose, or there are limitations, like this is Java shop, or this is windows shop. Does it have to support existing hardware, operating systems, computer languages, etc.

    before choosing you should have a good understanding of design patterns and which ones the framework supports. Also a good understanding of how the framework support scaling.

    0 comments No comments