Tuesday, February 7, 2023

Complexity in Software

Why building good software is hard? The simple answer is complexity. There has been a good classification introduced based in incidental/essential complexity - which is inherent to the problem to be solved, & accidental complexity. I believe many don't understand why accidental complexity arises. The usual suspect is technology; but that is hardly the case. 

To understand how accidental complexity arises, we must understand how we build software. There are several different things such as people, process, design, technology, tools, changes over time in the needs etc. We make choices in these areas. These choices may not be optimal and may sometimes be working against the need for reducing the complexity involved in the process of building software. These choices and how we use these choices create the accidental complexity.

Wednesday, December 9, 2020

The idiocy of the out and named parameters for methods in programming

I was programming in C# and someone had changed the name of out parameter. It ended breaking nearly 18 projects that used the parameter. The design choice looks so harmless; but when one thinks deeply from programming perspective using coupling as the measure - the aha moment suddenly arrives. One suddenly gains appreciation for the thinking of the guys who designed Java with so many intelligent and elegant choices. So many languages have come after that; but most fail to understand the spirit and even fail in copying the form.

Friday, November 3, 2017

Law of Accelerating Demise?????

Long time something to write about: The title is just a conjecture.

I had been a fan of "law of accelerating returns" as noted Ray Kurzweil because that explains very clearly the underlying force of technology feeding on itself with the help of creative humans to accelerate the pace of change that is perceptibly changing the context that we are living in.

Some days ago in Businessweek, I read an article on Fanuc (robotics machinery manufacturer in Japan) & then today I was reading the 6th Extinction and suddenly the thought struck me that the demise starts slowly, but would accelerate as the forces of change gain strength. Old will be replaced by new within no time.

My conjecture is that the changes brought about by the AI and robotics will rapidly invalidate and change many of the underpinning assumptions based on which the society of today is functioning such as people getting educated and finding employment. These people becoming consumers & supporting the financial growth (ever expanding pie). There would be more people & less employment opportunities, so the pie would start shrinking at some point in time. This would force businesses to automate more to maintain margins. This would shrink the pie further. There would be opportunities for very few people who are experts in the variety of domains to teach the "inorganic" systems how to become experts in the domains. So the law of accelerating returns in technology would lead to law of accelerating demise for the system that will be replaced by the technological innovations.


That again leads to one more interesting question.

Will governments of the world develop robot army? I believe the answer is Yes (we already see it in drones). Why is it so? The answer would be in game theory. If I don't do; I can't trust others not to do. (Prisoner's dilemma???). The second part is unlike Nuclear weapons which deter nations from use due to MAD (Mutually assured destruction), robot armies appear safe due to "smaller damage" and can also provide differentiated advantage to the nations that have them. 

What is that an individual should do? Plan your response :-).