This was inspired by my question to Mark Miller on Quora regarding software as semantic modeling. One of the blog posts which he gives me as response was "The computer as medium", areas which ticks me was "Expanding the idea".
When I read it it feels like exactly my thoughts on the subject which I tossing around in my head, but yours for sure was very structured and logical. I do not have discipline to write my thoughts on the subjects which is interesting to me, but looks like now it is a time for that. I will try to explain my thoughts on the subject first, and then I could criticize it, since it is why they still floating in my mind. I have a feeling that they are wrong in some small details. My style would be more like written thesises how I view the problem.
1. Software development is business development initiative.
2. Software development very often is exercise in the automation of existing business processes which are human oriented. or developing assistive technologies which are helping existing personell produce better output. Sometimes software is just copying working culture with all inefficiencies in it. My former boss like to tell me, "We automate bardak". I learn later to not follow that path, but I still see that pattern in a lot of government projects in post-USSR countries. Create of effective software system hard on that market, since if stakeholders does not understand how some more effective system operate, it is possible implement that subsystem only up to understanding of this particular person.
3. During working with business oriented people, it was hard fill the understanding gap between technical talk and business talk. I end up with taking analogies from real world which are well known to my interlocutor. I usually describe software model using interactions from real-world which has similar constraints, at least I think so. When I trying to select model, I select models which when reduced could have same number of important actors, and if interactions could be described using math, the analogy process will produce similar equations. At least this is my hope. I do not think in equations for sure, but if different systems has small number of parameters which controlled in similar manner and with similar boundaries it will behave in similar way. Again this may be my wishful thinking.
4. People are dumb. What I actually mean is that people operating software system has limited capacity for learning. Individual people has different learning capabilities. This is mean that you could not have design of the system which could not be absorbed in reasonable time by key stakeholder, otherwise you will have tensions during design phase which effective "understanding" slow down to manageable for participants speed. In worst case you will have you will have organizational problems later on, if "slow" stakeholder has not enough political weight in organization.
5. People are dumb (2). People make mistakes. So design of software process should accommodate for errors, and allow for their corrections. I personally see 2 solutions for that - make process foolproof, and make process understandable by business process operators so they would fix errors themselves. This forces me to become interested in Control Theory, but I do not yet reach that destination.
Below would be more conclusions driven in one specific direction, based on previous observations.
6. When organization reach some size, all software in it become less relevant and just supplement existing business operations. And likely you could not improve software process without affecting the business process, and better control whole business process, to not disrupt it operations, and as such software is just minor part of human-computer interactions.
7. For business there was no problem to think about humans as resources. I do not want to follow that simplistic view, but rather slightly expand it. People is just another computational device with different characteristics for processing and IO. I do not think about it from ideological view, but rather in seek for the framework which could describe humans and computers in uniform fashion, to be able to form from these components models for existing business processes and their side-effects. If you have idea what discipline study that, it would be interesting to look onto that.
8. Given how much I talk about people in the description of software engineering, if apply engineering approach, it more likely lead to SociologyEngineering and EconomyEngineering. Because either people, or money. This is unpleasantly gives me associations with Post-Truth(ability to government influence opinions on mass scale), Hype Driven Software (self-fulfilling prophecies) + Uber-issues(where gig-economy influence how people work). This is maybe already SocioCAD (Facebook experiments) and EcononomyCAD(Fight for Unicorns by VC).
This does not answer other important areas of software which more sane, for example professional software.
9. This software more operated and developed in different way, in a way which more closer to my personal ideals, where more knowledge is put in the software system and system become more and more sophisticated over time, capturing a lot of domain knowledge in the system.
10. Such software is more complex and targeted to more sophisticated audience. It follows different practices and may allow himself to be more complex then regular business software. Want to note, that some business software become more sophisticated if there culture in the company which could maintain that level of sophistication.
Now I completely off the rails, as usually then start collecting my thoughts, so what's below closer to metaphysical discussion then reasonable thoughts.
11. Questions now for me is that software if it is a medium, is like exoskeleton for computational/thought processes inside humans, i.e. it is expanded ability of humans to thought, or it is more like a tool. I will try to explain what's the difference. All of that is living on a spectrum for me. Different world objects treated by people differently in how far they appear as part of human, and if they are living organisms, or non-living objects.
12. What if we can make software operate like prosthetic, or software always would be a tool which is no way cannot augment our thought process.
13. In addition to #7, would be good to think about mathematical model which could describe as a spectrum following objects: self, humans in the tribe, intelligent living objects (pets and enemies), non-living object, processes in the nature.
14. What's I trying to bring in this post is that software limitations could be actually limitations of human hardware which should be accounted in the design of software and as it loops again to #8 with SocioCAD idea.
Now since I regain my ability to return back to original discussion on using software as semantic modelling, I would like to ask questions:
15. Let's assume that using software we find way to model some semantic, how this would be different from existing way to model world using words and books. One difference which I see is that these kind of "books" allow knowledge to be directly applied to real-world. This is drastically different from way people use books.
16. If modelling semantic using software would be able to have side-effect in real-world why most people would not see software are real-world object? In the business world I already see software seen as some sort of effective machine tool which helps doing business.
17. I see how software could be seen as some sort of meta-science where we could attempt to describe or model how some industries works, and then based on that applied models create smaller off-springs which would be more manageable for specific organizations, but is there any domain experts which can do that kind of work in the world. We have example right now when global organizations create classification data, and then these data mutated in the industry according to understanding of the people who use data. I'm talking specifically about medicine, based on my experience,but this is should be applied to any domain where a lot of people working.
18. How your semantic modelling would account for probabilistic business processes, like these to which AI could be applied?
19. Semantic of what software should model?
20. When model would be created, what kind of factors this model would be able to predict? Money? Real-world effect in terms of products created? Utilization of people? Requirements for the users of software?
21. And more importantly, why Software Languages not just mere languages with specific population and culture associated with people speaking in that languages?
22. What if children can become bi-lingual where second language would be software language?
When I read it it feels like exactly my thoughts on the subject which I tossing around in my head, but yours for sure was very structured and logical. I do not have discipline to write my thoughts on the subjects which is interesting to me, but looks like now it is a time for that. I will try to explain my thoughts on the subject first, and then I could criticize it, since it is why they still floating in my mind. I have a feeling that they are wrong in some small details. My style would be more like written thesises how I view the problem.
1. Software development is business development initiative.
2. Software development very often is exercise in the automation of existing business processes which are human oriented. or developing assistive technologies which are helping existing personell produce better output. Sometimes software is just copying working culture with all inefficiencies in it. My former boss like to tell me, "We automate bardak". I learn later to not follow that path, but I still see that pattern in a lot of government projects in post-USSR countries. Create of effective software system hard on that market, since if stakeholders does not understand how some more effective system operate, it is possible implement that subsystem only up to understanding of this particular person.
3. During working with business oriented people, it was hard fill the understanding gap between technical talk and business talk. I end up with taking analogies from real world which are well known to my interlocutor. I usually describe software model using interactions from real-world which has similar constraints, at least I think so. When I trying to select model, I select models which when reduced could have same number of important actors, and if interactions could be described using math, the analogy process will produce similar equations. At least this is my hope. I do not think in equations for sure, but if different systems has small number of parameters which controlled in similar manner and with similar boundaries it will behave in similar way. Again this may be my wishful thinking.
4. People are dumb. What I actually mean is that people operating software system has limited capacity for learning. Individual people has different learning capabilities. This is mean that you could not have design of the system which could not be absorbed in reasonable time by key stakeholder, otherwise you will have tensions during design phase which effective "understanding" slow down to manageable for participants speed. In worst case you will have you will have organizational problems later on, if "slow" stakeholder has not enough political weight in organization.
5. People are dumb (2). People make mistakes. So design of software process should accommodate for errors, and allow for their corrections. I personally see 2 solutions for that - make process foolproof, and make process understandable by business process operators so they would fix errors themselves. This forces me to become interested in Control Theory, but I do not yet reach that destination.
Below would be more conclusions driven in one specific direction, based on previous observations.
6. When organization reach some size, all software in it become less relevant and just supplement existing business operations. And likely you could not improve software process without affecting the business process, and better control whole business process, to not disrupt it operations, and as such software is just minor part of human-computer interactions.
7. For business there was no problem to think about humans as resources. I do not want to follow that simplistic view, but rather slightly expand it. People is just another computational device with different characteristics for processing and IO. I do not think about it from ideological view, but rather in seek for the framework which could describe humans and computers in uniform fashion, to be able to form from these components models for existing business processes and their side-effects. If you have idea what discipline study that, it would be interesting to look onto that.
8. Given how much I talk about people in the description of software engineering, if apply engineering approach, it more likely lead to SociologyEngineering and EconomyEngineering. Because either people, or money. This is unpleasantly gives me associations with Post-Truth(ability to government influence opinions on mass scale), Hype Driven Software (self-fulfilling prophecies) + Uber-issues(where gig-economy influence how people work). This is maybe already SocioCAD (Facebook experiments) and EcononomyCAD(Fight for Unicorns by VC).
This does not answer other important areas of software which more sane, for example professional software.
9. This software more operated and developed in different way, in a way which more closer to my personal ideals, where more knowledge is put in the software system and system become more and more sophisticated over time, capturing a lot of domain knowledge in the system.
10. Such software is more complex and targeted to more sophisticated audience. It follows different practices and may allow himself to be more complex then regular business software. Want to note, that some business software become more sophisticated if there culture in the company which could maintain that level of sophistication.
Now I completely off the rails, as usually then start collecting my thoughts, so what's below closer to metaphysical discussion then reasonable thoughts.
11. Questions now for me is that software if it is a medium, is like exoskeleton for computational/thought processes inside humans, i.e. it is expanded ability of humans to thought, or it is more like a tool. I will try to explain what's the difference. All of that is living on a spectrum for me. Different world objects treated by people differently in how far they appear as part of human, and if they are living organisms, or non-living objects.
12. What if we can make software operate like prosthetic, or software always would be a tool which is no way cannot augment our thought process.
13. In addition to #7, would be good to think about mathematical model which could describe as a spectrum following objects: self, humans in the tribe, intelligent living objects (pets and enemies), non-living object, processes in the nature.
14. What's I trying to bring in this post is that software limitations could be actually limitations of human hardware which should be accounted in the design of software and as it loops again to #8 with SocioCAD idea.
Now since I regain my ability to return back to original discussion on using software as semantic modelling, I would like to ask questions:
15. Let's assume that using software we find way to model some semantic, how this would be different from existing way to model world using words and books. One difference which I see is that these kind of "books" allow knowledge to be directly applied to real-world. This is drastically different from way people use books.
16. If modelling semantic using software would be able to have side-effect in real-world why most people would not see software are real-world object? In the business world I already see software seen as some sort of effective machine tool which helps doing business.
17. I see how software could be seen as some sort of meta-science where we could attempt to describe or model how some industries works, and then based on that applied models create smaller off-springs which would be more manageable for specific organizations, but is there any domain experts which can do that kind of work in the world. We have example right now when global organizations create classification data, and then these data mutated in the industry according to understanding of the people who use data. I'm talking specifically about medicine, based on my experience,but this is should be applied to any domain where a lot of people working.
18. How your semantic modelling would account for probabilistic business processes, like these to which AI could be applied?
19. Semantic of what software should model?
20. When model would be created, what kind of factors this model would be able to predict? Money? Real-world effect in terms of products created? Utilization of people? Requirements for the users of software?
21. And more importantly, why Software Languages not just mere languages with specific population and culture associated with people speaking in that languages?
22. What if children can become bi-lingual where second language would be software language?