This is about the scams that are happening in the software industry and the victims who must pay for these scams. I’m sure there are scams in many other industries such as the auto repair industry, but the software industry is especially expensive for the victims. This is also about why people do not want to work smarter and choose to be without passion for their craftsmanship and instead choose to kiss up and follow orders because the people in charge have their own agendas to worry about.
Let me spoil the summary and the conclusion right here and if interested in the details, please read on because I will list a few ways on how to remedy some of these scams:
Scams in the software industry are allowed to happen because either the people responsible do not care or are simply too lazy to change because they know they are not being held accountable.
This post is my personal opinion and my experiences over the last 34 years in the software industry. For those who have stumbled upon my blog and are not involved somehow in the software industry for a living, there is a good chance that you are using software that was created by people where these scams have been successfully executed.
First, let me point out the victims in these scams. The victims are the end users of these software products and services. These customers are users in the consumer markets as well as the users in the corporate world. I will be concentrating on the users in the corporate world as well as the stake holders, the responsible parties that are paying the bills for something they thought is “quality software”. These are the victims and their stories.
The scam artists are the software developers (code monkeys, cheap code grunts, cowboy developers etc.), project managers & analysts (the bureaucrats), Database Administrators (the evil gatekeepers and control freaks), and especially the software architects who are not really software architects and are mostly responsible for these scams (the big fish).
In the last 34 years, it has become apparent to me that software is really all about people. When you deal with people on the consuming side of software, you have people who are excited or interested on what software can do for them. After all, the computer is generally used as a tool to be more productive and to get work done or the computer is used for entertainment purposes.
In the corporate world, companies create software internally to help the business to be productive and assist in the primary business goals. Companies also purchase third party software, but that is another type of scams and politics that I don’t want to go into right now. This would require another large post. I want to point out the scams that are happening in the corporate world when companies create software internally.
How would you feel if you buy a brand-new car and only after driving it for two months, the car is starting to break down daily or has constant problems? Imagine you are driving your car in an extremely busy, multi-lane highway and your brand-new car breaks down? Imagine your car breaks down on this busy highway and you are on your way to work to an important meeting with your customers? How would you feel? How would you feel knowing that “your” understanding of a “new” car means that it works and that it will work reliably for at least a few years to come? Well, no problem, you think, this might be an exception and bring the car in for repair because you have a warranty on your car. The warranty is only a small relief. What about the time and energy that you had to endure in order to get your car fixed that should have worked in the first place? What if it keeps happening over and over because the car manufacturer just doesn’t care on long term relationships with customers and especially having happy and repeat customers? In an open market with competition, that car manufacturer won’t last long because consumers will drive that company out of business and going for a higher quality car created by someone else.
My point is that the consumer of a car can see tangible problems, the car stopped and is no longer driving. In addition, the consumer has choices and can pick between competitors to get a higher quality car.
Let’s shift back to the corporate world and the users of internally created software. Users of software in the corporate world may contact the corporate help desk or some other support contact when there are issues with the software. When this happens, the support process is triggered and usually several people are involved to track and possibly correct the defect. In fact, the number of reported defects in the software or the amount of work involved to correct these defects may trigger more serious actions such as bigger changes and corrections to the software up to possibly redesigning the software.
When companies choose to create software internally, they do so with the resources and budgets available. These budgets are limited. So, companies are forced to make the best decisions possible under the given circumstances.
For example, the sales department discovered an opportunity to automate a manual process if they could just automate this manual process and therefore be more efficient and reduce waste. So, they start the process and communicate with the Information Technology (IT) department on what options are available to automate their manual process. The IT department does its due diligence and finds that there is no third-party software available for purchase and recommends to the sales department that the IT department can create this software for them. This is when the scams get born.
What follows is a chain of politics and the birth grounds of personal agendas, laziness, cluelessness, and most importantly carelessness.
The stakeholders at a company and especially the shareholders will pay for these scams and don’t even know it. A perfect scam. That is, a perfect scam until the company’s resources and budgets are being drained so much over time, that the IT department becomes a financial “burden” with a huge amount of waste to the company. The problem is that these scams are so perfect because companies cannot function nowadays without the help of technology. Companies are being held hostage by their IT departments. STOP THE INSANITY! Please read on, I will offer ways to remedy this.
The Scam Artists – Developers
In order to create software inside a company, companies employ developers who can program software. Many times, these developers are split between internal employees and external vendors. One side effect of the scams in the software industry is that the stakeholders of companies hire cheap labor and many times outsource the development to offshore companies because they can create the software much cheaper. This is an illusion and very short sided. The decision to hire offshore companies with their cheap labor are usually driven by the “expensive” employees that current IT departments employ. The waste that has accumulated over the years in a typical IT department is mostly the fault of these scams. So, the stakeholders and shareholders don’t have many options to reduce costs and the drag of these IT departments in the overall execution of a company. Remember that the stakeholders and shareholders are the victims here and only look at the options that are currently on the table. Offshore companies simply feed on this huge problem like parasites feed on their victims. In short, it’s business! It’s business for the offshore companies and more power to them to discover this opportunity. It is not the fault of these offshore companies; it is the fault of the people in charge in the corporate world to let these scams continue.
The analogy I would like to bring is the one of the cancer industry. Who do you think would benefit if all cancers are curable due to medication or even preventing in getting cancer due to a much healthier lifestyle and diet? Any cancer patient would benefit, of course. But, imagine the huge, multi-billion-dollar cancer industry? It surely is not in their best interest to find a cure for cancer patients. The same goes for these offshore companies. It is in their best interest to offer cheap labor to remedy the symptoms of the software industry scams in the short term but not the actual cause. The patients, the corporations, will be repeat customers because they cannot cure the cause (the scams) of the symptoms. Or, at least they have taken no actions in removing corporate waste in the software industry.
Developers are schooled and trained in different ways. But, most of the developers are trained based on what skills are currently needed. These developers pick their skills in the hopes to be marketable as best as possible. The same applies to developers who are employees or are hired by contracting companies and then placed into these companies.
How do you know that you have hired a great software developer? How do you know that you have a developer who cares what he/she creates and maintains? How do you know that this person has the company’s best interest in mind? How do you know that this developer cares so much so that he/she offers ideas on how to help the business by coming up with new ways of doing things in the IT industry?
Over the years, I’ve to come to know only a few types of developers:
- Developers who care only enough about the business as long as their job is secure and until they decide to jump ship (a natural response). This includes developers from offshore companies.
- Developers who do not care about the business and just follow orders and do as they are told (worst kind). They make efforts to appear to care but could give a rats behind. This includes the kiss ups.
- Developers who are so narrow minded and opinionated that they refuse to see the new way of doing things even it would hit them in their face.
- Developers who are so lazy and just try to cut corners wherever they can. They love the company of other lazy developers.
- Developers who really care about the business and the long term effects of their creations and offer ways to improve themselves and the processes (willing to learn new things and think out of the box).
You only want to hire and retain the fifth kind of developers. Fire the rest of them. But in order to know that you have developers of the fifth kind, please see my solutions below.
The Scam Artists – Project Managers and Analysts
If you had to lay off people in the IT department, who would you lay off first, developers or project managers and analysts? You would lay off the people who are not directly producing. Why do we have project managers and analysts in the software industry? That would be another great discussion and requires another large post but let’s just say that companies think they need them and that they might be useful to them. Let’s just assume that developers cannot think on their own and are simply disorganized individuals who must be told by the middle man (project managers and analysts). What a wonderful scam.
Let me explain why this is such a wonderful scam. Have you ever played the telephone game? For those who are not familiar with this game, it is very simple. There are three or more people with the first person whispering something in one ear standing next to the first person. The second person in turn tries to whisper the same thing to the third person standing next to the second person and so on. Almost every single time, the last person in the line will get some other meaning of what was originally said by the first person.
As a company, why would you increase the risk of developers not understanding the requirements and problems that the business is experiencing by adding middlemen? After all, it is the developers who are creating the software and not the project managers or analysts. Why would a company choose to play the telephone game when creating and maintaining expensive software? Why would a company keep developers away from the business? You can plug in your answer here: […]. They are all useless excuses.
It is an old school thinking that a company still needs project managers or analysts in the software industry. They have become obsolete. Companies who are truly embracing the agile software development process have discovered this with great success.
It’s even worse when companies say they are doing agile software development but have project managers as SCRUM masters. Project managers are dictating the developers on what to work on. What a nightmare of a failed agile process. What a waste of time and money for those companies. I would almost feel sorry.
Fire project managers and analysts today!
The Scam Artists – Database Administrators (DBAs)
Database administrates are one of the best disguised scam artists and only beaten by the master of all scam artists – The Software Architect!
There used to be a time, decades ago, when there was an actual need for database administrators. There was a time when “The Data” was the most important thing in the world. These data gate keepers are living in their very own world. They believe that it is all about the data, nothing else.
Let me first clarify one thing: there is a huge difference between data and information. The business wants and needs critical information on order to make the right decisions at the right time and to get the job done. The business in the corporate world does NOT want data, they want information.
Information is usually a collection of one or more data sources with all business rules applied BEFORE it can be used for decision making. This is so critical and has such a huge impact on the entire IT department and the entire software industry, I cannot stress it enough:
“NO DATA IS GIVEN TO THE BUSINESS UNTIL ALL BUSINESS RULES ARE APPLIED FIRST!”
Why? Because just like playing the telephone game, data is up for interpretation! It is that simple. Companies cannot afford to leave the interpretations up to individuals.
To make things worse, there is a huge database industry out there with a huge following of database tools that these third party companies want you to use and ideally being locked in for a long time. What a wonderful scam!
None of these databases or database tools help the business directly. Databases are useless unless you have software that business can use to make sense of information.
The fact is that are ways to store data and information in automated ways that make traditional SQL databases obsolete for most systems. These newer types of storage mechanisms are object databases and NoSQL solutions. These technologies have been around for years now but have been intentionally suppressed by DBA’s and developers alike because it could potentially threaten the job security for those involved. Cloud computing technologies are here to stay and will further displace outdated SQL databases. SQL database were created in a time (40+ years ago) when there was not much else out there. Today, polyglot persistence in the cloud provides perfect persistence based on the requirements. You fit persistence based on what is needed.
It’s time to fire the obsolete database administrators and save the companies from these leeches.
The Scam Artists – Software Architects
Out of all scam artists in the software industry, the software architect is the biggest fish to catch. Don’t get me wrong, companies do need software architects for many reasons. What I’m referring to are the software architects who are not actual software architects but are masters of disguise and perception. A true software architect can smell a fake one from far away. The sad fact is that there are more fake software architects then there are true software architects. The other sad fact is that the true software architects are not allowed to be able to point out the fake ones or to execute disciplinary actions against them unless you are a CTO or a Chief Software Architect (or both).
The reason why the fake software architects have such a negative impact in the corporate world requires further explanation.
First, what is a true software architect? There are different opinions out there and I’m offering my opinion based on my many years of experience in 11 different industries:
- A true software architect can do most of the development by him or herself if required. In short, a true software architect is a hands-on developer with a vision.
- A true software architect spends about half of his / her time with the end users and stakeholders. In short, a true software architect is the glue between the end user and the developer(s).
- A true software architect is a visionary person that can see ideas into reality. The visions that this architect has is aligned with the company’s goals and executions.
- A true software architect has sense of the business needs and can fit himself or herself in the business shoes.
- A true software architect can demo the software created before the users and stakeholders.
- A true software architect is willing to compromise when there are better solutions available that did not originally come from him or herself. In short, open to suggestions from other technical piers and willing to learn and try out new things.
- A true software architect is a master craftsman that has expertise for many technical areas and is versatile with different technologies.
- A true software architect is always exploring new ways and is willing to experiment
- A true software architect is willing to mentor software developers
- A true software architect has the best interest of the company in mind
- Ideally, a true software architect has 10+ years of experience in different industries because this will allow to discover commonalities across different domains and therefore create solutions that fit.
How are fake software architects born?
There are many ways this happens. Many times, developers get “promoted” to become software architects simply because they put in x numbers of years as senior developer. This alone is not bad but the problem comes when the developer was not really a great developer in the first place. Now, you have a software architect who influences entire projects and really has long term, financial impacts. Decisions by this fake architect have dramatic effects on the entire company and is a big contributor to the drag and waste that the software industry has today.
A true software architect is visionary. By following a vision that is aligned with the company’s goals and executions, a true software architect will be able to stick to his or her vision and be able to create a plan on how to get there.
In software, the architecture makes or breaks a software product or service. He is the glue between the components that need to operate smoothly. Would you want to build a house without an architecture? In software, some parts can be created in an agile method and are more dynamic and other parts are more closely aligned with the overall architecture and vision. Nothing is perfect and compromises will need to be made. However, the vision that the architect sets in place still works and must be followed with discipline.
Sometimes companies have many architects and/or technical leads. Each and everyone have their own opinions. Software architecture cannot be managed democratically. Software architecture teams where every software architect has the same decision authority do not work. It just doesn’t work and causes more chaos and confusion in the long run. It is good to have discussions in general and to keep communication open at all levels. However, there must be only one who makes the final decisions. In corporations this can be the Chief Technology Officer (not the CIO) or the Chief Software Architect. Many times, the CTO is the Chief Software Architect. It is important that the software architect and the Chief Technology Officer share the same visions. Also, what makes a true software architect also applies to the lead software architect either the CTO or Chief Software Architect.
So, how do you eliminate these scams? How do you create true value for the companies that need software to help with their business needs without being ripped off?
First things first, you need to fire Project Managers, Analysts, and DBA’s. Once you have lightened the load and saved a huge amount of money, you can start concentrating on improving your existing processes.
The most valuable assets that companies have are the people they employ. It is the pool of these knowledge experts that a company must concentrate on hiring the right personnel and more importantly how to retain them.
Your most valuable assets are your existing developers and architects. Concentrate on those and start filtering out the bad ones among them. The remaining excellent developers and star architects deserve a raise to start with because their responsibilities just increased. Increased responsibilities should come with fair compensation. Don’t be stingy now, you want to retain your excellent staff plus you have no excuses because you hopefully fired the non-producers mentioned above. How do you filter out non-producing developers and architects? That’s another large post on its own.
Improve the hiring process
When you interview candidates for developer or architect positions, make sure only your most senior developers and architects do the interviewing. Do not let “the whole team” interview new candidates.
Assign new candidates take home projects to create a solution for you. Give them at least five days to work on. These take-home projects could be related to your industry but don’t have to. You want to test the candidate if they can produce and what quality they can produce.
Don’t test candidates for technical questions over the phone or even worse, on the white board. You are not hiring medical staff that needs to save a patient and only have seconds or minutes to do so. Have you ever asked a book author or a musician to create their work in seconds? Software engineering is part creativity and part engineering. Unfortunately, most companies do not know this or don’t want to acknowledge this and treat developers and architects as numbers and as fully replaceable without any impacts. You can not force creativity and ideas. So, don’t treat developers and architects thinking that you can force creativity during a white board session or a technical phone screen.
Improve company long-term success
Do Domain-Driven Design (DDD)
Domain-Driven Design forces you to be much closer to the business of your company. This means all people involved will be learning about the core domain if your company. This is a good thing. All should know why you are in business and why you want to stay in business and especially grow the business. So, embrace DDD and apply it to your core business. However, use DDD only in your core business(es).
Do event storming
Event storming is a fantastic technique to learn about the core business what and especially when things happen inside the company. Event storming is low tech but hugely helpful to dive into DDD as well as event-based systems.
Develop true microservices
Design and develop true microservies and not look-a-like services or a big ball of mud out of service-oriented web services. Make microservices truly autonomous and don’t mess or access their persistence. Do not talk to microservices directly…
Use the Cloud, do cloud-native development only
Why are you introducing headaches by having to manage stuff like containers, Kubernetes, and traditional VMs of servers? Go serverless and reduce your points of failures in your architectures, manage less instead of more.
Don’t outsource – insource instead
You can not ever beat face-to-face communication. Especially when you are embracing DDD, all involved will learn much more about the business. Outsourcing to offshore companies never works in the long run. It is short-sided and won’t help the company to retain existing in-house talent. Your goal should be to retain excellence in-house and not trade-short term gains with slow death by a thousand needles.
Don’t be held hostage by consulting companies
Again, your most valuable assets are your existing high-quality developers and architects. Don’t think that consulting companies can get you over the hurdle. Nobody knows the business better than you do. Why do you think consulting companies know better? Makes no sense and it is a very short-sided view. Your business is what pays the bills not a consulting companies’ sales guy. Consultants can be helpful by training and offering expertise in certain areas but don’t keep consultants around for too long. You need to focus on having in-house expertise.
Improve work environment
Allow developers and architects access to production environments
You heard me right. When things brake in production, who do you think will need to fix it at the end? It won’t be your support folks. You hired smart, intelligent developers and architects. Give them the opportunity to be responsible and accountable. Don’t treat them like children. Give them the responsibility and you will see improvements in many areas. Nobody knows better about their creations than the developers and architects, nobody! Don’t take away their babies in production. They know best how to nurture them. When you have top talent at your staff, they will demonstrate if they care or not. If they care, they won’t let productions happen at 3 a.m. because they will most likely want to be able to sleep during the night. If it does happen, they will make sure it won’t happen again. You don’t need to lecture them.
Introduce DevOps mentality, don’t hire DevOps folks
Don’t hire dedicated DevOps people. DevOps is a mentality and not a job position. Your cloud-provider is the DevOps staff, not yours. You are paying for the services, utilize them. When you have dedicated DevOps folks, you will slow down your long-term gain as a company. Today’s developers and architects must embrace the cloud. With the cloud, developers and architects are much more intimate with cloud-providers services and therefore with operations than ever before.
Embrace a true agile environment
Agility is good. Don’t call it agile process when you are doing traditional processes disguised as agile. For example, don’t do stand-ups where they are just status reports to a manager of some sorts. Instead, let the team report to themselves and embrace teamwork. Have a true product owner from the business, nothing else will work. So many more things, so little space…
Recognize true achievements for individuals and for teams
Salary is important but that is not the most important thing for creators such as developers and architects. They seek the satisfaction of having their creations being used. They seek the interaction of the end-users saying “I love it”. That will make their day, I will promise you. This means that developers “need” to interact with end-users. DO NOT shield them from them. That is the worst thing you can do. While you are at it, say thank you for a job well done.
Provide a career path for developers
STOP! A career path for a developer or architect is not necessarily to go into management. STOP! They love what they do, which is “create things that people love using”. Being in management has nothing to do with this. So, provide deep career paths for developers and architects. This could be mean that you have many levels of developers and many levels of architects. Don’t limit them to be a developer I, II, or III. For example, a developer VII could outrank a manager and a director. Or, an architect V could outrank a VP, for example. If you value your developers and architects and their ideas and creations, you should respect and compensate them accordingly.
Don’t be a sweatshop – no co-operative seating arrangements
Respect your developers and architects and DO NOT force them to sit close together like they are in Kindergarten. Give them plenty of private space and if possible, their own offices. Microsoft can do it, why can’t you? If you don’t have the space, let me work from home more often. Don’t be like the dying Yahoo company and treat your creators and innovators like cattle. Don’t treat then like a sweatshop. You want quality not quantity. It’s not an “in thing” to do.
Allow to work from home
Have you ever told a book author that he or she MUST come to an office building in order to create their latest masterwork? You probably never did but just imagine? Think of your favorite music artist. Now imagine you told them they need to come to an office building to create all their new songs from now on. Do you think they would like that? I think not. One of your goals is to foster creativity because creating software is a creative process. Let that sink in!!! Ok, you are back. You measure your developers and architects on what is produced, very simple. Time is not included here. You are striving for the highest quality! Let your folks concentrate and give them the most comfortable place they can have to explore new ideas.
Allocate large training and conference budgets
We love technology! If a developer or architect comes to you and asks if they can attend a conference, for crying out loud, don’t give them the budget or time excuse! Be thankful that they show initiative to learn. Embrace that they even had interest in improving themselves! That is what you want! Foster it and don’t be nasty about it! Don’t demoralize, build people up!
Provide free, daily, high-quality food
As creative as developers and architects are, they all love excellent food. You can’t be productive on an empty stomach. Don’t give them crappy, cheap food. Offer them high quality food items for everyone and their diet restrictions. This will take care of a lot of worries for people and one less thing to worry about if you are at work. They will look forward to it. Improve mood and essentially lead to more productive creativity! Notice I said creativity and not the number of lines of code you can whip out in a minute! It’s simple, you want to foster a fantastic work environment, offer fantastic food every day and ideally for free. Don’t tell me that you can’t afford this because you can’t put a price on great ideas born by your staff.
Provide free beverages such as high-quality coffee, I mean high quality
Don’t offer those crappy coffee machines in your lunch areas. They taste awful. Only buy the best coffee and if you can, offer maned coffee shops inside your buildings. Again, I can guarantee you that ideas and creativity will follow. It’s a small investment.
Offer developers and architects fours weeks PTO to start with, then increase 1 week per year
Don’t ignore work-life balance! People will leave the company on that reason alone. There have been many studies that have shown where work-life balance will produce happier and more productive employees. Guess what, a developer’s wife has a lot more influence then his boss. Guess what, a developer’s kids mean much more than work (when it comes down to it). Why are you taking away the joy of life by taking away important time with family? This only produces stress. You don’t want to foster stress and instead want to foster happy and productive employees. Start out with four weeks of personal time off (PTO) for each developer and architect. Increase PTO time by one week for every year until a cap has been reached. Quality takes times. This applies to work and to the time the body and mind need to regenerate. Acknowledge that your employees have a life and don’t be stingy with PTO.
Work in small, two pizza sized teams
Communication is hard. Communicating with lots of people is harder. Even though developers and architects create, they still need to communicate with a lot of people. Embrace small two pizza sized teams no matter what needs to be created. This can be 3-5 people at a maximum. Anything larger, you will need to break them up. There are so many advantages but very little space to go into details here.
It used to be that IT departments were a burden or a necessary cost to the company. Don’t be that company. Today, software enables companies to explore more markets and be more competitive. Today, companies should ask IT departments “Can you create this software that allows us to do xyz ?”.
Developers and architects are enablers to the companies they work for. Without these high-quality assets, you will only slow down your growth more and more. You won’t be able to react quickly to market changes and to innovate. Keeping the existing bloat will only suffocate growth and you will lose all high-quality developers and architects over time.
So, remove the existing bloat and implement the above recommendations. I can almost guarantee that you and your company will improve in dramatic ways.
It really is all about the people and not the technology!