The Greatest Unsolved Problem in the Digital Era

Thank you very much for inviting me to speak today. It is an honor and a privilege to be able to contribute to your event with some words that I hope, will trigger some positive thoughts and bring some new ideas to your brain.

About Myself

Just a few words about myself. My name is Adrian Kosmaczewski, I am a software developer currently working as a Developer Relations person and conference speaker.

In my 22 years of professional software engineering experience I wore many hats. Up until last year I worked for a decade as a mobile app developer, publishing apps for iOS and Android from 2008 to 2018. I was actually one of the first few iOS developers in Switzerland. Before that I was an ASP.NET developer, and even before that I was doing just plain ASP pages with VBScript, at a time when the word “Netscape” actually meant something.

I am also a writer, having published a certain amount of books about software engineering. Currently I am the co-author of De Programmatica Ipsum, a monthly magazine where I explore with my colleague Graham Lee the human side of software engineering.


You have come from all over the world (quite literally, as a matter of fact) to think about the future of Digitalization. Today we talked a lot about things like the “Internet of Things,” “Blockchain,” “Disruption,” “Machine Learning” and “Artificial Intelligence,” “Big Data” and many other buzzwords.

Quite exciting, is not it? I am pretty sure you have plenty of ideas, suggestions, projects you would like to offer your customers – and also treats you want to offer yourselves! We in this industry we are curious, always looking for new things to learn and new solutions to create.

Yet, before we close this event, I would like to talk about the context of those ideas. I would like to call your attention to the outer world, the one we are changing with our ideas. The one we do not always see as we write code, deploy our containers or upload our mobile applications.

The Purpose Of A Corporation

A few days ago, Graham Lee, my partner in crime at De Programmatica Ipsum, sent me this link from the “Business Roundtable,” an “association of chief executive officers of America’s leading companies working to promote a thriving U.S. economy and expanded opportunity for all Americans through sound public policy.”

Here is a quote from the announcement:

WASHINGTON – Business Roundtable today announced the release of a new Statement on the Purpose of a Corporation signed by 181 CEOs who commit to lead their companies for the benefit of all stakeholders – customers, employees, suppliers, communities and shareholders.

Since 1978, Business Roundtable has periodically issued Principles of Corporate Governance. Each version of the document issued since 1997 has endorsed principles of shareholder primacy – that corporations exist principally to serve shareholders. With today’s announcement, the new Statement supersedes previous statements and outlines a modern standard for corporate responsibility.

So this is where the whole “shareholder value” thing comes from. You might have heard about it in the past; that corporations should care first and foremost, all other things being equal, about “shareholder value.”

The World Is Literally Burning

As I am talking in front of you, thousands of square kilometers in the Amazonas are being destroyed to, precisely, bring value to the shareholders of large producers and exporters of meat, soy, gold, copper, and other raw materials abundant in those regions.

At the same time injecting hundreds of millions of tons of CO2 in the atmosphere, and killing the trees that are supposed to absorb it at the same time.

Creating a lot of value for shareholders.

Leading the world in a path that might take this planet to look more and more like Venus in the near future.

What can we do? As it turns out, there is a lot we can do.

Software Is Complex

Let me go back to what we do. We, software professionals. We know that software is essentially complex. Our business, which is to create software systems for private and public customers, is getting more and more complex every year. Sometimes even every day.

We have tighter deadlines. Higher expectations from our customers. A technology landscape that is constantly moving forward. Ideas which were good ideas five years ago quickly become legacy ideas. Lots of “beta” software to try to integrate. Bug reports. Releases. Feedback loops. Standup meetings. Agile this and agile that.

And then there is the technology itself, which is constantly shaking the floor under our feet. We just cannot stay put. We have to learn every 6 months about something new. We have to sign up for tutorials, watch webinars, attend conferences, sign up for newsletters or subscribe to RSS feeds, all in the name of staying relevant in the market.

As far as I am concerned, in my 22 years of professional software development experience, I went from Netscape to J2EE to Ruby on Rails to Node.js to Github to Stack Overflow to Mobile apps to Docker containers to Kubernetes to… whatever comes next.

There is a lot of noise out there. Can you hear the buzzing of your Twitter feed? Do you feel the guilt of not being able to follow all the things you are interested in? Do you hear that? That noise is actually blinding us from the real issues of our world.

And blinded by that noise, we have created the wrong type of software.

We haven’t paid attention.

Some Good Changes

There is, thankfully, a great deal of good things that have happened in technology in the past 22 years.

We have an incredible choice of programming languages, IDEs, tools, debuggers, network management tools. Of course not all of them work at the same level of quality, but in average I can say that they are much, much, incredibly much better than they used to be 22 years ago; and they will get better in the future for sure.

In spite of all the security risks online, cheaper SSL certificates means that we can ensure a decent level of privacy and confidentiality in our communications, and in turn, platforms like iOS make HTTPS communications mandatory. People are slowly adopting password managers, of which there are many and with very affordable prices. Many new devices, like high-end Android phones, Mac computers and iOS devices, are encrypted by default, making them more secure and reliable in the face of nosy governments and online threats.

Tools like Kubernetes make the cloud portable; you can run your cloud-first applications (written following the 12 factors) in your Linux, Mac or Windows laptop, on AWS, on Google Cloud, on Azure, and have those microservices up and running as fast as possible.

There is a plethora of open source code that is ready to be used. Did I say plethora? It is an amazing amount of software that is available out there. Actually there is too much software. So much that it is becoming increasingly difficult to be able to decide what to use, when and where.

And even more incredibly, we have access to all of that information wherever and whenever we want. We have small computers in our wrists and pockets with internet access. Think about this last phrase.

There is Wikipedia, Github, and Stack Overflow, which did not exist 22 years ago; these days you can tap on the collective wisdom of tens of millions of software developers in the world, all connected and sharing information about how to develop software.

What have we done with those tools?

Some Bad News

Paraphrasing a famous phrase, I think we have not done the right thing, even if we might have done the thing right.

Climate change, to begin with. I have already talked about that.

Then there are human rights violations. Some countries are openly making MITM attacks on their citizens. Was not private correspondence a right in modern democracy?

Then the state of gender inequality across the world. Women earning in average 60 to 70% of what men earn for the same work. And let us not talk about the “me too” movement, and the realization that the lives of most women are a nightmare, particularly in our industry.

The raise of far-right governments all over the world, even in so-called “democracies,” only catering for the needs of a select few, usually young, rich white men.

The negation of science and the rise of obscurantism, shown by the raise in popularity of absolutely inane ideas, such as the “flat Earth,” religious absolutism considered canon, or even worse, the reaction against the use of vaccines on kids.

Companies like Uber, AirBnB, Just Eat and many others are “disrupting” markets, leaving people homeless, jobless, eroding social conquests like paid holidays or healthcare, impoverishing our communities?

What is the world coming to?

All of the problems enumerated above are being carried like gunpowder through the platforms that we create. We, software engineers and software businessmen and software consultants and architects, we are all helping those ideas to spread.

We have a duty. We have a moral duty towards Mankind to make an ethical choice, and to take better decisions. We must build better systems, and sometimes, we have to choose not to build some systems.

The Wrong Solution

The solution is not to become more digital for the sake of it. That is the wrong solution. We need, if anything, to stop supporting ideas that do not take into account the needs of the whole world.

And very often, we need less digitalization than we think. Or, at least, we need to think if the digital solutions we come up with are the right ones.

Are we building the right software? Are we? I am seriously asking this question.

We need to start caring about each other. I say “start” and I mean it; I do not think we have written software to support and grow the right side of the equation. We have, if anything, made corporations and rich men even richer. And in return, those corporations are actually destroying the planet.

We need more than to stop caring about “shareholder value;” we need to take care of this planet, because it is the only one we have.

The Greatest Unsolved Problem

So all of this brings me to the core of my talk.

Some of us in this room are software engineers. Some others are architects. There are also consultants. Testing engineers. Quality engineers. Project managers. Business analysts. Security specialists. Many of us in this room are “agile” champions (whatever that means). We recommend tools and solutions to our customers. We setup, develop and administer systems running in small IoT devices, smartphones, or the largest cloud providers in the world.

We use our skills to provide the best possible solution at the best possible price, in the best possible deadlines. Not an easy task, but one that we repeat day after day after day. We learn continuosly, we ask ourselves whether we are good at what we are. We suffer “impostor syndrome” every day.

And through our work, software has, indeed, eaten the world. Every company is now a software company.

We are the ones who have to start solving the greatest issues of our time. We are the ones who have the power and the intelligence and the knowledge required to solve the great problems.

Because we are the ones who know about software. We are the ones who are building the Digital Era as we speak.

And because we are the ones who know, we are the ones who can. And because we can, we must pay attention.

The greatest unsolved problem in the Digital Era, and the answer to the question in the title of this talk, is ethics. As an industry, we are simply not doing what we should be doing. And as a result, the state of the world degrades every minute.

Compared to other industries, we earn very good salaries in general. What are we doing with that money? Traveling more by plane? Buying a new car? Buying a new computer? I say we must install more solar panels. I say we must travel more by train. I say we must stop going on holidays on the other side of the world. Stop eating meat. Let us vote more responsibly with our pockets.

We have to take better decisions. We have to teach our customers to take ethical decisions. We have to be champions of ethics. The greatest unsolved problem in the Digital Era is that we are not providing value to the right shareholders.

We have to take into account accessibility in our apps. Did you know that 25% of mankind (that is almost 2 billion people) have some kind of severe visual impairment such as color blindness? Are we designing systems for them?

What about inclusion? Is the language in your apps and your web forms inclusive? Do you take into account non-binary, transgender, and LGBTQ groups into account?

What about the “Uberization” of “disrupted” industries? What about the workers in those industries? Do we realize the mess AirBnB, Uber, Just Eat and other companies are creating in the social tissue of our society? The number of families thrown into despair, poverty, even homelessness, so that a few companies in Wall Street might raise a billion or two in a flawed IPO?

And what about power consumption? Do you optimize your mobile applications to get the best the most “floating point operations per watt”? Business requirements in the age of climate change MUST include these metrics; you must test your applications in dedicated devices, to see how much batteries “suffer” when your applications are running. For example Apple provides excellent Instruments probes that allow you to verify this information during testing. Use them! Do the same evaluation of your Docker containers.

We happily decide to write yet another Electron app, although a native app would consume less energy and memory, and hence, would release less heat into the atmosphere. But no, shareholder value and all that always come to the forefront of the discussion: it is “cheaper” to create a crappy app that will burn your lap, instead of a set of efficient, targeted, coherent native apps that are much more efficient.

Writing efficient code these days is not only about having O(n log n) algorithms in the best cases; it is about not injecting more heat in the atmosphere than needed. That is the key issue.

An Oath For IT Professionals

In an article I wrote in De Programmatica Ipsum a few months ago, I proposed an oath for IT industry professionals. The title of the article is “Primum Non Nocere.” Do you know what it means? It is a Latin phrase that means “first, to do no harm.”

Non-maleficence, which is derived from the maxim, is one of the principal precepts of bioethics that all medical students are taught in school and is a fundamental principle throughout the world. Another way to state it is that, “given an existing problem, it may be better not to do something, or even to do nothing, than to risk causing more harm than good.” It reminds physicians to consider the possible harm that any intervention might do.

I chose this title for my talk, because I think we need to apply the same principles to the making of the Digital World.

Here it is in its entirety:

I swear to fulfill, to the best of my ability and judgment, this covenant:

I will respect the hard-won scientific gains of those software developers and engineers in whose steps I walk, and gladly share such knowledge as is mine with those who are to follow.

I will apply, for the benefit of society, all measures that are required, avoiding those twin traps of overengineering and releasing untested code.

I will remember that there is art to programming as well as science, and that warmth, sympathy, and understanding may outweigh the knowledge of the developer or the skills of the sysadmin.

I will not be ashamed to say “I know not,” nor will I fail to call in my colleagues when the skills of another are needed for the proper resolution of a problem.

I will respect the privacy of my users, for their lives are not disclosed to me that the world may know. Most especially must I tread with care in matters of life and death. If it is given me to solve a problem, all thanks. But it may also be within my power to generate another one; this awesome responsibility must be faced with great humbleness and awareness of my own frailty. Above all, I must not play at God.

I will remember that I do not merely create a system or implement an algorithm, but I create systems for the highest benefit of society, who will have to use it and who will store their most confidential information within. My responsibility includes these related problems, if I am to solve adequately the problem at hand.

I will prevent early code optimization whenever I can, for readable code is preferable to fast code.

I will remember that I remain a member of society, with special obligations to all my fellow human beings, those experts in the field as well as those not initiated or knowledgeable in the matters of code and software.

If I do not violate this oath, may I enjoy science and art, respected while I live and remembered with affection thereafter. May I always act so as to preserve the finest traditions of my calling and may I long experience the joy of solving the most intricate problems I am faced with.

This oath is directly inspired by the current Hippocratic Oath used by medical doctors in the United States.


We live in dangerous times. The time to take ethical decisions about our future is now, because the next generation will hold us responsible for them. Actually, this next generation is already here; many of you I am sure, have kids and are rightfully worried about their prospects in the future.

Sadly, “thinking digital in a digital world” is more usually associated with form than content. Ethical behaviour and ethical thinking was already a common idea in the times of Plato, and they had an absolutely analog society back then.

Paraphrasing the Agile Manifesto, while there is value in form, we must value content more.

To put it in typical Scrum terms, we need to think beyond the Product Owner.

We need to think holistically. We need to take into account the needs of all those who are going to use our software, but we also need to take into account the needs of all those who will suffer the direct and secondary effects of our actions.

And in particular, we need to take care of the environment, because this planet is, as far as I know, the only one we have. Digital or not, there is no Planet B.

I do believe we can use our knowledge of the Digital world to start creating ethical, responsible, sustainable solutions for the next decade. I do believe in you, smart people with smart ideas and enthusiasm, to have used this fantastic day to come up with solutions and ideas that will not only bring you joy and will help you learn new things, and yes, also create lots of value for your company.

But most importantly, I believe you will be able to think ethically and to create solutions that benefit the whole of Mankind.

Remember that we are all shareholders in this planet. We need to create shareholder value for all Mankind.

Thank you very much for your attention.