Lack of responsibility
This is the second post about what is wrong with software development. In the previous one, I wrote about bad managers who don’t understand their role in software production process. That leads to low quality of code base and product, waste of potential of technical teams and lack of satisfaction from a job done.
With great power comes great responsibility!
Today I would like to take a look at our profession from a bigger picture. Technology is progressing very fast. We engineers can use our knowledge and skills in many different ways. Are we always using them to do the right things? This post is inspired by my life experience and what we all can read about Silicon Valley nowadays. Let’s go through some responsibilities related to our industry and profession.
Responsibility on the organization level
According to the American law, the only goal of a corporation is to increase stakeholders value. Think about it for a second. Company founders say that they want to make the world a better place, but their investors in any moment can say - “making the world a better place doesn’t bring us more money”.
Every software related company offers some product, most often in a form of a web or mobile application. The product to be successful should offer some value. The product is written by us, engineers. Now comes a question: Does an application you are working on really solves your users’ problem? Does it bring them value? Or maybe the main role of your product is to squeeze money from your users (directly or indirectly) and bring bigger profit for your boss? Of course, the best situation is when both sides are satisfied. Our product brings value to customers, they are happy and willing to pay for it, our company is profiting. We use new funds to increase the value of product even more and the wheel is spinning. Win-win situation.
Unfortunately, there are a lot of companies, especially startups, which don’t care about anything else than their own evaluation for investors. They take shortcuts, break laws and risk their users or clients well-being. They are driven by meaningless indicators and fake numbers only to attract even more venture capital. This way a new technology bubble is created. It will pop one day for sure. We can identify here lack of responsibility of organizations to their users, clients, and investors.
Responsibility on management level
We have a startup that wants to conquer the market. Let’s say it’s a middle size online shop selling physical goods. The business model is simple: they sell goods for money. Easy as that. They have an online system where they keep their customers data, preferences, order history and payment data. They have a technical department of 80 people coming from different countries. They are backed by some venture capital company. Now, let’s consider different responsibilities in the hands of the company management.
- responsibility to their clients: their personal data have to be safe and secured and orders have to be delivered.
- responsibility to their employees: many of employees relocated from other countries to contribute to the company success. They invest their time and skills to build what management expects.
- responsibility to investors: they put their money to build this company.
How does it often look like in reality? This is coming from what I’ve seen or heard from colleagues working in other tech companies.
- a software is developed in chaotic fashion. Management doesn’t understand the importance of following best practices and cuts corners. Beside product of low quality, this may lead to security issues like a leak of clients personal or payment data.
- management forces unrealistic expectations and unnecessary pressure on their employees. This leads to stress, loss of health, unhappiness. Management doesn’t understand that rested, happy and motivated people can perform way better.
- the lack of a long-term strategy means that employees are either hired or dismissed. You moved for the job from the other end of the world, brought your family with you, only to find out after six months that you are no longer needed. How do you feel now?
- projects are run for months or years, then killed, because there was never a need for them.
- company money are wasted on licenses for unused software or unnecessary hardware. The company pays for tens of servers to run its inefficient system.
All above are examples for lack of responsibility on different management levels. What is the worst, they almost always get away with it.
Information Technology is a young industry. We don’t need to pass any official certification to be allowed to do our jobs: neither engineers nor managers. In most of the situations, that is good. It enables us to experiment, make mistakes, learn from them and move forward. That is one of the ways to improve. But what if mistakes are big enough to negatively impact a company, users, or other colleagues? In other, older professions like a medical doctor or construction engineer, you cannot just make a mistake. Every error can cost someones else life.
Having said so, in my whole carrier I met only one person who I believe should not be allowed to work in IT. He was a CTO and I worked with him for a few years. In fact, I started to ignore and avoid him after first 3 months as that was the only way to build anything in that company. He was neither a technical person nor a people manager. I think the only skill he had was how to bullshit board and investors to keep his position. I could give you many examples of his incompetence, but that’s not the point here. My point is that those people will go and ruin another company. They are not taking any responsibility for their actions.
Your professional responsibility, or what you can do!
Finally, we are getting to what we, average engineers, can do to prevent all previously mentioned issues. Now we are talking about what is a software engineer responsibility.
First, we must have some work ethics. For example:
- we always do our job the best we can, with good intentions, according to our skills, knowledge, and expertise,
- we leave source code in better condition than we found it,
- we develop our products with a user-centered mindset,
- we deliver solutions which are best for our clients.
What follows, we should be able to say No in a situation when we are asked to do something inappropriate.
- management is pushing to finish a project earlier by cutting corners on user data security - what do you say? - No!
- during planning you hear that we will skip unit tests this sprint to deliver more features - No!
- management reassigned you to a new project which goal is to suck money from naive users - No!
We are the engineers. In our hands, we have skills to create. There are unlimited possibilities of what we can create. Let’s use technology responsible. Do not work for companies which don’t care about their employees, environment or users. Pick your projects and workplaces consciously, not based on salary. Be a craftsman, a professional, and always be responsible for your work.