Like: letting managers tamper with the workflows, let commercial change data that were meant for invoicing, having to delegate specific authority to executant in a specific context that were not supposed to do their managers tasks, using floats instead of decimal....
And you know what ? Insanity in the organization reflects itself in specifications and thus in bugs. But with agile, I don't have the means to point out the problem is in the real world.
Giving to much power to a non authorized user in a complex context requires code that can bypass an initial separation of concerns. And these little shunt multiplies and gives a potential for a lot of problems :
- embezzlement;
- local exploit;
- inconsistency
But, specifications were there to protect the users and make sure what was delivered was even trying to do the job correctly in respect to practices and a lot of regulations.
Since software guarantee neither the conformity of results nor subscribe to any obligation of means, software industry is right now the far west for the one who have money to create arbitrary rents on shovels.
First era of computer industry we have been making quite successful at making a virtual automata taking documents and transform, store them, and make stats and propagate them to other automates.
This virtual clerk can be used to monitor people (like a punch clock), record a human activity that can through repetition be learned a derived 'best way to' the same tasks. It just can work tireless. And we cannot see what they are doing.
We have thus created stealth virtual clerks exchanging invisible information and being part of our real world and affecting it.
We have been selling it to everyone, so now, even governments citizens and every one have integrated the idea any tasks can be efficiently managed through opaque information passing and we can guarantee privacy.
Hence we have created an economy that can go faster and use more human resources inefficiently with diminishing returns for diminishing costs without being auditable. We created an incentive for global inefficiency.
Our economy is in a phase where in all our software we map the true complexity of any activities with deterministic process. Since computers are good at it, we created complex software for simple tasks (like leaving notes on chats instead of papers).
Our Virtual Clerk lack the most important thing human have : the capacity to adapt or recognize they could have failed their reason to be. They are virtually psychopath. And we actually forgot they were there.
They do more efficiently then humans task humans wouldn't do. They could execute an innate on the death row without a flinch with the most painless method encoded for the benefits of the dead to be. Resulting in a so called progress of humanity.
So with the disappearance of specifications large part of dark "works" are being done in the secrecy of the code and of the protocols. Like robots for manipulating markets.
Undetectable nor provable criminal activities, since the criminals are virtual and the information exchanged over secured layers. And no intention of wronging the society can be proven since the code does not tell the intended effects the author was envisioning. Elaborated invisible puppets, masking by multiplicity the true master and their intentions.
And we have a pseudo scientific revolution that makes us revert to the victorian era.
The belief in determinism. The one of the birth, and of a certain science of organization; the virtual positivism from Auguste Comte. The place of the engineer at the highest march of the society.
What is fun with my CTOs and colleague the most convinced they know everything about science, the less they understand probability. The keystone of modern science.
They even don't understand that no cause can travel faster than the speed light. Or that there is a limit to the precision we can have on measurements. Or the notion of irreversibility. Having more money seems to be helping having diplomas but may not help work hard to understand your academics.
Hence, I introduce bugs over bugs, or made software that I knew would fail deterministicly in some cases that were bound to happen. But, we had deadlines: c'est pour garder ton travail, tu comprends?
Bugs could be avoided. It is just we coders have been stripped of more and more responsibilities through the use of new management techniques using smartly softwares (ticketing, code versioning, kanban organizer....). Making it look like a fatality. Just open a ticket, that will go in the backlog and will die of boredom until we find a coder creatively putting more code at working around it (still not fixing the problem). We violate business rules of accountability? It is a non topic in a scrum meeting.
It is funny how the more our industry progress the more we have taken part in ripping other profession from the heart of their job (being able to take decisions based on information), the more it hurts to understand how it works when it happens to you. And sometimes we forgot software are just puppets. It is not actually a software that decides who change the states of tickets.
Also, computers lack of context, they suck at making decision in unknown circumstances when it is the most important time. But they enforce Role Playing Games of a virtual hierarchy that reverts the authority and responsibilities. We believe the fallacy of the interface that we don't have the right to change the priority of a bug and that we are not in charge. They have the intelligence of an automate often piloted by a human.
Put a robot in surveillance of a critical place when all citizens are sleeping and imagine that it does not see through its captors a threat (a lot of smoke coming fast at the horizon for instance). Maybe that could be very unfortunate.
Software are good at doing in same conditions, they sux to adapt by themselves they sux at understanding how they change their environment and therefore when they fail, they fail badly and rigidly.
The problem in automation with coupled loops of feedback (basically interconnected distributed software) is we already know this sux. We have numerous example of how it already failed in ventilation, gaz transport, electricy blackout ...
We generated uncontroled feedback loops. And the more we couple states, the hardest it is to detect, predict, fix or prevent them and maintain this.
Our modern problem of information based technology is that the automated controllers are opaque in their design and functioning. They cannot perceive, nor doubt themselves and they can be tampered. Hence, we put our lives under the tyranny of mindless automates copying efficiently eventually incorrect practices who can be tampered. They cannot see the problem in doing a task a million task per second for something that should be done once in a while. And thanks to the secrecy of our protocol and IP laws, no one can audit them. They do not see what is wrong in letting someone change the data in the middle.
We submit ourselves to stupid rules and beliefs enforced by our software. We believe that if an option is not in an interface, it does not exists. Software makes us stupid.
It is not normal that a huge corpus of knowledge from electronics and physics are systematically ignored predicting that we are heading for a massive unpredictable collapse (snowball effect from coupled amplifying feedback loops). Like when S3 fell sometimes, or github, or whatever cloud component. And our software affect the real world, from the grids to our tax payment and paycheck.
True engineering practices are barred from our work in the name of benefits. But who benefits from the failure of our systems?
Ourselves and since we decided to remove the need for formal and technical specifications we also removed any audit trail proving that we knew : there is no crime without evidences.
Letting an industry shape the economy with practices diverging from the norm of auditing (by removing any contractual obligations of either means or results) cannot converge towards better software.
An industry as a whole not seeing the problem cannot regulate itself. It is very dangerous that we let an industry substract itself from any common rules of accountability. Financially, fiscally commercially, legally ...
We are being psychopaths citizens coding an ecosystem of unstable psychopathic virtual clerks pupetted by code or operators acting in secrecy telling the whole world everything is fine: trust me I am an engineer. The fallacy of the title.
But real engineers DO make every efforts possible to keep track of what they were trying to build, for which reason they did what they did in regards of costs of failure and their model so they can anticipate and control their creations. True engineers can explain stuff simply. True engineers have authority on blocking buggy code to go to production. True engineers take decisions in arbitration with customer and its hierarchy. They don't only follow their hierarchy. They have legal liabilities to respect complex regulations that entrust them special authority that no boss can tamper. They speak the business language of customers and make sure their interest is ensured.
Quality is not writing unit or functional tests or nice looking interface or code. It is much more checking that what was made actually fit what was ordered and conform to the common rules and practices in regulation and also the terms of the contract. Engineers make sure the costing is sound, and would try to make sure the construction can be audited for the purpose of diagnostics, corrections, conformity to the norms and arbitration. They live normally by the contract. And write test if and only if it is cost efficient and/or useful in the process of operations.
Best engineers take a lot of care making sure their product don't have adverse effect on human, like aeronautical engineers.
Most coders are no engineers, because engineering is adverse to our business models of screwing up people with complex Terms of Use and delivering product that don't conform to their description with obfuscated complex billing models. How many so called engineers can tell the costs and price of their software and will be called on trial to certify the conformity of their work? None. If you never had the authority to plan and the legal liability over your production you are no engineers.
This new generation of coders are no engineers nor artists, nor craftsman. They are just high skilled underpaid clerks that avoid conflicts to keep a good position in a dysfunctional economy that they help to reinforce. The new IT industry create a large scale tool that can and will be used for fraud because we make it possible by lack of concern for corrections.
Waterfall maybe dead not for its costs but because it was efficient.
Staging phase used to be the moment where customers could refuse to pay for non conformities.
Design phase was the moment were engineers could make sure that they had enough resources to build what was planned in a correct way.
Nowadays, budget are thrown at the task of developing products with no clear cost analysis in regard to the need of the customers. We behave as if we have become natural monopolies or administration just caring about self sustaining ourselves selfishly and that we do not have any reasons to justify the cost of our own activities. Do we live on free money?
It is not our software that are crappy, it is the work organization that makes them crappy by incentivizing the wrong behaviors.
It is time government remember they regulate for the greater good of the people. And the tyranny should be from the humans on the tools for the benefits of the people and not solely for the benefits of a minority that gives itself a way to escape regulations and obligations sneakily.
Computers will by nature never result in transparency. Even less when using privacy. We have to put human beings back in control of this sector of the economy if we want to avoid a dark economy based on obfuscation by incompetence and complexity to rise.
Our future of IT will logically results in close to criminal behaviors. Like tax evasion. manipulation of markets, distortions of concurrence, appropriation of the creation of others, the non respect of legal obligations, distortions of market by asymmetrical informations (linked in, indeed, ...), opaque market.
It is really time for the bubble to explode. We need a lot of the wrong doers to leave this sector, and the market could take care of it by squeezing their liquidities.
Before regulating, it would be nice if the government stopped fueling the bubble with cheap money on the market. Because this situation is a direct consequence of the behaviors of central bank since 2007. The lever effects are still huge, favoring business that are giving a huge advantage on the one with capital (even as workers) over the one with practical knowledge. It is like a conflict of interest. The one benefiting of conservatism being given an unfair advantage and benefits over the control of innovation.
Modern software industry is actually just pure money laundering from the quantitative easing. It is basically a lot of your tax money given to your boss without any solid needs of justifications of any results over investment.
We are de facto creating the economical condition for the emergence of a kakocracy (kakos = bad, cratein = to rule) capturing at the detriment of the global economy an unfair share of value on the creation of wealth in world based on biasing systematically any competitions. (Market, tax)
It cannot end well. Pericles called this ploutocracy and said that whatever the system is (democracy, monarchy, tyrany) ploutocracy is the ennemy to any system, bringing systematic corruption.
Because letting the interest of a few direct the world without control will always favor the rogues that will emerge one day. We still fail the same, but with the amplification of potential incompetency backed by authority. Who watches the watchmen? Code doing tasks should be regulated and leave a trail of responsibility for their behaviors in case a code does something that results either in accidents or illegal activities.
Also money is the less reliable way to measure any virtue. Virtue comes from what we do, not who we were lucky to be. It comes from struggling because it is by failing we truly learn. Not in success. Successful unlucky individuals may rise to the top with true skills, giving the idea it is a promotion process. But the amount of works for the benefits of "objective" talent given the skew of the initial luck of being born wealthy is globally advantaging the wrong person at the good places with a result worse than random picking globally.
Yes the best of us will always have success in our system. But, at the cost of increasing antagonizing biases between remuneration and actual risks being taken.
We give incentive for building a system that fail, and Agile is one of the symptom. We build because we plan to have the money long enough and we don't care about the costs and that's all. It really smells of the symptom of an economy of grass hoper surviving from short term activitie in a global context of instability where we need ants (Esope/La Fontaine).
I doubt that in times of famine releasing huge population of glutton grass hopers on the crops is a good idea.
We need a regulation to make software auditable so people can trust our domain of activity the same way people trust planes. The pionneer era has to stop and we should prepare for a serious process of conforming to industry and legal standards in terms of design and control of the process and results based on real studies. We have to give evidence we made our best. We have to be prudent with the investment that were entrusted in our hands, because every dollars invested comes originally from the money of workers, small investors or retired persons. Spending carelessly the money of investors is a crime.
And code operating in regulated area should be given a status of a legal proxy with the exact same rules as the initial human regulated activities whose actions can have consequences and for which someone have to be held financially and legally responsible. There should be a legal matriculation of software guaranteeing their conformity in their functioning and any legal rules and that we can know at any moments who operated it and who gave the order to design it this way in a cheap way.
If we made a self driving car, I would call for every single self driving car to pass the same driving license as for human and put a contact device able to access in urgency the support team and its legal responsible physically and immediately. And if a car fail, I would like to have the certainty we can have ways to audit what happens and determine legal liabilities, fast. the legal consequences of the action of any software should be clearly established in any circumstances and their operators should always be reachable when they are operated.
If this is to costly to achieve, we should not get rid of waterfall and seriousness, but of the actors in the industry that cannot survive with basic sane legal and business obligations.