Universality in Software Development07/24/2016

The current state of software development is primitive if you look at the intention of creating a universal standard for future software developers. In some ways we can compare the constant flux of these new JavaScript frameworks to how early human languages developed.

Before the phonetic alphabet, early humans used symbols such as hieroglyphs to record information. Although they were useful at the time, they weren't universal because as their knowledge increased, it would become more difficult to create new symbols to represent terms which often resulted in symbols that mean completely different things to be mashed together to represent some new idea.

It was the same with the early creation of numbers, where Roman numerals were developed with the intention of keeping track of trade shipments. They were useful for that purpose but when you try to use them for abstract mathematical concepts, Roman numerals are not universal enough to accommodate larger ideas. This is primarily why the Indian and Arabic numeral system was adopted as the standard. The numeral system that we still use today is more universal than it's primitive counterparts which were designed for a specific purpose.

Software Development in a way is experiencing a similar phenomenon, although at a much faster pace. The influx of new JavaScript frameworks has been a topic of great controversy within the JavaScript community. Software development and programming in general has always been flexible, after all they all lead to the same source of binary numbers when the machine receives them.

JavaScript's flexibility can also seem like a problem if you had to adopt a new framework every one or two years. The interesting thing is that sometimes, big name frameworks like Angular and React may not even be the best tools for the job. Often times there are other frameworks or packages out there that might be easier to use or solve a specific type of problem. You can also create your own framework picking out the best parts of what already exists.

Angular is a good example of not striving for universality when creating frameworks. The announcement of Angular 2 brought the news that angular 1 apps would require heavy refactoring in order to migrate versions. Node on the other hand is a great example striving to reach universality. Seems like a lot of the front-end frameworks, being relatively new are still catching up to a more defined standard.

My colleague Husam Machlovi pointed out once that frameworks were becoming selling points that developers can put on their resume. I could see some truth in that statement. I can't deny the value of being able to create a framework or even contribute to one. To me, frameworks were created with the intention of helping the developer community reach some kind of standard, React and Angular 2 going with the component model seem to be on the right track. But I also can't pretend to ignore the company interest in such a market.

As long as frameworks remain open source I believe the intention of achieving some kind of universality will remain alive in JavaScript. An open source environment seems to be a great model for the evolution of better ways to solve problems. What needs to be figured out is how to create a system of development that can universally adapt to receive new concepts in a way that numbers and letters are used to process and record information.

Although software development is a rapidly evolving field, a focus on easier adaptability should still be considered just to make transitions to new models easier for the developer. If all the new javascript frameworks are like different hieroglyphs we need to focus on making them more like letters so that when they get grouped together, they can adapt in infinite ways rather than only working in a strict and static manner.

Questions Raised

In the context of JavaScript front end development, why are there so many frameworks instead of a defined universal standard of development?

Are modern JavaScript frameworks overtly complex or do they sacrifice a short learning curve to make development easier in the long term?

How many of these frameworks exist for the ease of use of the developer versus how much of a difference users will notice with their experience using the final product?

How would you create a transparent open source framework that is both universal in its application across systems and secure enough to create enterprise level products?

Have Big Dreams?

We can achieve so much more when we work together! Feel free to follow me on social media so we can exchange memes.