Preface
For a long time I was focused on hyper-high-level programming languages like C#, Python or web scripts like JS or PHP. My motivation was pure clear – why I need to focus on technical details of implementation when business requires product?
Years of experience in Unity slightly shacked this my conviction – some of “production-ready solutions” (implemented as Unity packages) was payware, and the price of some of them was sometimes very irreasonable. I.e., in many cases it appeared to be cheaper to implement own solution than spent $25-$100 of my own money for a package I will use once and probably never reuse after this.
Unconsciously I felt that something in this is very incorrect. My studies of astrodynamics and navigation confirmed this opinion. By my deep conviction, true astrogator must be able to find a ways in any possible conditions and situations.
Same, by sense, said Nathaniel Bowditch, in the very beginning of his book:
The navigator uses the methods and
Nathaniel Bowditch, “AMERICAN
techniques best suited to the vessel, its equipment, and conditions at hand.
PRACTICAL NAVIGATOR
AN EPITOME OF NAVIGATION”
I.e., in any conditions we have at hands. Independently from stupidity of AI, incompatible software modules and license limitations.
To be able to do this you must know the principles and methods of astrogation, must to have hard skills (so much hated by all managers and startupers). My previous rocket science experience also multiple times confirmed this.
So, summarizing above, I for a long time had a feel that we all doing something wrong in our software development… But, still being a Unity developer, it was too hard to break the habit…
Problem
It was evening late September 2023. My friends Rebecca and Anna looked at me with a question in their eyes. Python app for plotting orthodrome route didn’t work. I was extremely proud of this app, I just told to Rebecca about our (with Anna) circumpolar flight simulation, about Great Circle shorthest path, and wanted to show an app… But Termux on my Asus phone returned very long and incomprehensible error message, something about Numpy, Astropy and versions.
The app didn’t work. 2 years ago it worked well. I clearly remembered it, Anna clearly remembered it. It brought us over virtual sky, over polar wastes and oceans, home. This result was recorded in my report. Git showed no changes in sources. But it didn’t work.
Reason
Since March 2021 till September 2023 Termux and Python versions was updated number of times.
Third-party Python modules I used in my app (Astropy for celestial ephemerides, Numpy for Astropy and vector calculations) were also updated.
So, in Termux, Python was updated and Numpy was updated, but Astropy was not available.
Rollback of Termux to previous version was impossible, because archived versions from 2021, suddenly, was not available. Earliest version available was about a year ago (like, summer 2022), and already had no Astropy module.
On PC (Win 10, Python 3.11.4), on a try to update Astropy, pip reported about incompatibility of it with Numpy. Same time, downgrade to Python version 3.9 (which was used at 2021 during development of navigation apps) was not possible – my laptop was used for my business (Unity development), for volunteering (in Geoscan Group), and for private study project (astrodynamics algorithm library) so I was not able to risk to ruin all of this just for tests.
Insight
We solved the problem – deployed Python 3.9 on Anna’s laptop, and ran all nav apps there. Inconvenient and not elegant – but it worked.
But this hit me hard.
Important app, contained algorithms, which, theoretically, could be urgently needed in life-critical situations, was not able to do its job because of incompatibility of third-party service modules.
All of our software and the process of its development appeared to be like I said above – inconvenient and not elegant.
And ineffective! Because with such approach we (like Sisyphus) are doomed to repeat and repeat our job, eternally rewriting our code!
And don’t fuckin’ say that the “process itself” is important! This is excuse of onanists.
Other view
During this time I studied LUA. And this studies helped me to watch on our software and on our industry in very different way.
What do we really doing during our job?
“Senior programmers” would cautiously say: “uhhhm… abstractions… ahhm… inheritance… bhhm… SOLID principles… patterns… errm…”
Different “architects” would proudly answer to me: “we, blah-blah, building… blah, structures… blah, systems… blah, so on… so on, blah-blah”.
CTOs, AGILE specialists and other chairwarmers will briefly throw: “product… clean code… methodics… innovations…”
Nope.
All of you, freaks, actually, sorting bytes in memory of computer. Nothing more, nothing less. Typically – in very inefficient ways.
Your OOP, classes, inheritance, abstractions – just a crutches, helping to express very sophisticated and unnatural concepts to very primitive machine. This is only an over-complicated and computationally heavy wrapper, allows for common, typically not-so-smart person to formalize data for machine processing.
Your modularity, SOLID principles, patterns, architectures, TDD, etc. are just another crutches to format bad, over-complicated logic in a way, allowing to keep it in mind at least somehow.
Your AGILE methods, advanced programming methods and all other manager’s fiction are just sophisticated methods of exploiting people in more effective way.
Your products and innovations are for 90% lie. Just count, how, in last 10 years, IT improved our life? Yes, there was number of improvements. But did it worth spent efforts? Did we start to live better, wealthier, healthier, safer? Any answer would be at least questionable…
What to do?
My answer: learn to code better.
Reach the purpose of project – not “architecture” or “iteratively improving product”.
Understand the subject – not the method.
Create something useful – not “another social network startup with AI videos”.
If you woldn’t – IT will be ruined. We are on the edge of a crisis.
