For Software Developers
Which technologies will be used?
SoM is likely to use JavaScript for development. AI development might use some other technology, like Python.
At this point, I feel vanilla JavaScript may be preferred over JS frameworks like React.js. Web apps may be preferred over native apps. I know, vanilla JS and Web apps seem to be very unusual choice in today's age when compared with React.js and native apps. So these choices need to be investigated further.
Typescript may be used.
These decisions may change over time. Because of advancement in AI, many things are expected to change in the tech world in the next few years.
React vs Vanilla HTML/CSS/JS
I think many advantages of React do not apply to many web projects. Faster updates on a webpage which is made possible by virtual DOM is not a big advantage for a typical web project. Another big advantage of React is code organization, which can be made possible in vanilla HTML/CSS/JS using static site generators like The Middle Man or Jekyll. JS can be modularized using Classes available in ES6. CSS poses similar difficulty with both React and Vanilla projects.
React, when used with Redux, makes the whole state management quite a complex affair. It may be possible to do something similar with more ease in vanilla HTML/CSS/JS.
React does pose many advantages over HTML/CSS/JS. Although I am more bent towards HTML/CSS/JS but I am still not sure if it is actually a better choice. This is something to be explored.
Of course, the advantage of using plain HTML/CSS/JS is that it is an open technology, it is easier to learn, easier to develop, easier to debug, has better support for debug tools, has wider acceptance in long run, easier to hire people to do work, easier for new developers to learn, and it is unlikely to get outdated. In fact W3C is likely to update the standards regularly and browsers will keep on updating their implementations. In the past I have seen that W3C updates the standards time to time to incorporate new features and these features end up making popular libraries, like Jquery, less useful, because developers can use the JS API of the browser to do the same work.
Web apps vs native apps
Native apps are the smartphone apps we install using the appstores on the phone. Web apps OR PWAs are the ones which work on the browser. Native apps require a lot of time, effort and money to develop but they are much better than webapps, in terms of performance and functionality.
Native apps are winning this race but everyone knows that if webapps were even 80%-90% as good native apps, they would be greatly preferred because they are much easier to develop and people are resistant to install too many native apps on their phone.
We can try opening makemytrip.com on chrome browser on phone and compare it with makemytrip app on the phone. At first we may not notice a difference but actually when we try to do the whole booking, the native app is much easier to use. The perfomance of native app is much better. It is easier to scroll and it feels more fast. Web apps can be slightly sluggish.
Another big advantage of native apps is that they have access to webcam, filesystem, etc, and that is required by a number of apps.
Google is trying hard to help overcome these shortcomings of web apps. They enocourage browser developers (especially Apple) to support some additional features (like service workers) which can help overcome these shortcomings. It is generally believed that because of business reasons Apple is not ready to implement these changes. So, this push from Google is not a complete success. Google themselves have implemented a number of such things like serviceworkers on their own Android platform.
I feel webapps might be able to overcome some of the difficulties and become almost as good as native apps for some types of simple applications. I often think, if netflix works well on the browser on a laptop (windows or mac), and I do not feel a need for a native app for netflix or for other web platforms, why can't a web application work well on chrome browser on mobile without a need of a native android application? Is it because of performance of hardware on the laptop? The hardware on mobile is also not that bad. For this reason, and for many other reasons, I think web might catchup. I am not sure about this so I keep this question open ended.
No matter which direction the development decisions go towards, anyways SoM needs to develop for webbrowsers of laptop & computers. It is easier to extend such project to work on mobile devices also using the concepts of responsive design. If a need for native android/ios apps is felt, SoM can develop for that as well.
AI
No matter how much we think about what technology to choose, there are chance that AI advancement will change the technology landscape so much that our decisions about technology may become irrelevant.
New programming languages might be developed which might be much more high-level languages than Javascript, Python or Java. They might change the way we develop apps.
Even today, programming has become many times easier and quicker than before because developers are using AI based code generators which generate good quality code. This has made Software Development many times easier, than what it was before ChatGPT came. This is good for SoM because if software development becomes easier, SoM can spend more time on what SoM is for, and that is 'Spirituality'.
Bill Gates and may be others too speak about something called AI Agents. He say that in future we may have a ear bud connected to ear which will have a mic and will be connected to the phone through bluetooth. It will take voice instructions from the user and pass them to phone which will be in the user's pocket. The phone will find what user wants and return the data to the ear bud, which will speak it out inside the ear of the user. Most of times user may not need to use the phone.
Generally we use web based UIs or app UIs because that is the way we interact with the phone by tapping on different buttons. Because of new changes in AI and NLP (Natural Language Processing), technology has become much smarter in understanding the user and processing data. Now, computer systems can understand everything in plain english and can act on that as if there is a human assistant sitting inside the phone. ChatGPT is a good examples of this.
The assistant can book plane tickets, plan a trip, do all kinds of google searches & process that information, fill forms after taking user input in plain english, check emails, maintain a to do list, use social media, and a lot more. Bill Gates says that the only time the user will need to check the phone will be for accessing some visual data, like images or video. You can read more about his thoughts here.
I do not think this is Science fiction. Actually, this is possible not just in future, but today. Simpler versions of this are likely to be already under development. Such changes in technology ecosystem will bring a lot of changes in how users use a phone and technology in day-to-day use. Web and App UIs may go through drastic changes.
Opensource & writing good code
It is likely that at least some of the software products will be open sourced. It may help in many ways:
- People outside SoM will be able to contribute to the development.
- Fixing bugs and Software Development will in general become more collaborative.
- Other interested companies will be able to use the product, thus helping the world.
- It will increase the trust of the user in that software product and in SoM in general.
- Opensource goes well with the overall personality of SoM. SoM is likely to be more open, transparent, and collaborative in its ways.
When something is being developed for the human welfare, tech enthusiasts would agree that opensource is a natural choice. The only challenge is that SoM would not want other people and companies to use that product for anything negative.
But it is true that open sourcing an application brings other challenges as well. Code quality becomes important. The book "Clean Code" is one of the good books on this topic. I highly recommend reading it. Chapter 2, 3 and 4 are particularly helpful. Other good Software development practices will also be given importance for programming open source software.
The "Clean Code" book focusses on Java Programming Language, but this particular Github page explains how to apply "Clean Code" principles to Javascript. It is a much easier read compared to the book, but it is not a substitute for the book.
Usability of UI
I suggest reading this book: "Don't make me Think" by Steve Krug. It is an easy book to read, with a lot of pictures. You can finish it in a few hours. It is about user friendliness of websites and web apps. It is considered to be one of the best books on this topic.
This course is also good.
Design of Everyday Things is the best book in this field, but it is not an easy one to read. If you can read it, there is nothing like it.
AI Development
Development of AI based software is most important for all kinds of Software Development, whether it is something to improve rural education, or just a AI feature in a regular app. I am not an expert in this field but I use AI regularly in one way or the other.
I recommend these courses: https://www.coursera.org/instructor/andrewng. I did "Generative AI for Everyone" and it was good. The teacher, Andrew NG, is quite good and well-known.
There is a lot more in AI development which I need to learn.
I suggest using Generative AI regularly. You may also like to install software like GPT4all or a similar app on your local desktop and try different LLMs. That gives more exposure to LLMs.