We Must Demand Quality In Software And In Ourselves

If you have read any of my articles on this site, you will know that my big passions in software engineering lately have been code quality and performance. In today’s world, both subjects are vitally important for any project to be successful. A while ago, when speaking at conferences, this is one of the slides I showed at the end of each presentation.

We Must Demand Quality in Software and In Ourselves

In this article, I discuss three subjects; demand quality in apps you use, demand quality in yourself (improve skills to grow professionally), and finally demand quality in the apps you write. Demanding a certain level of quality in yourself as well as apps that you use and develop will ultimately result in important growth as a professional, resulting in higher-paying jobs. Getting paid what you are work is my goal and for that reason, I write about these subjects, along with loving what you do. Plus, users will love to use these apps and other developers will find it a pleasure to work on new features.

Demand Software Quality in Apps You Use!

I have been writing and using software apps for most of my life, so when I encounter a poorly written app, I get so frustrated. My frustrations focus on three main problems; they are buggy, don’t meet the user’s needs, and companies unwilling to make the app or service better. The more I use software like this, the shorter my fuse is before I get frustrated. What makes matters worse, is that I’m a software engineer. I know how well-designed apps are written. I know how to talk to users so I can deliver great software. I know if apps are architected correctly, adding new features or fixing bugs is extremely easy for developers. For developers, there is nothing worse than having to work on a poorly written buggy app.

But more importantly, this is something I have told companies in the past…

Once you upset a user of your app, they will find an alternative!

At one company I worked at, I warned them of major design flaws 5 months before the release of the software. I warned them they would lose customers due to performance issues. They didn’t believe me! Unfortunately, after the release of the app, that’s what exactly happened. They started losing their customer base and had difficulty attracting new customers. When this team tried to fix the performance issues, they got worse!

In today’s software world, companies need to realize that users have many, many choices on what app they want to use. Companies, especially the larger ones seem to forget this. Or perhaps, their managers are more worried about meeting the schedule than delivering quality!

A quality (professional) developer has a responsibility to deliver only the best quality apps and make noise (bringing up issues and feature ideas), and let these software companies know what is broken, what features we want, or what we don’t like!

There are many ways to do this. You can contact customer support or Tweet it to the company. I have found that for many companies, just posting a tweet is the best since my comment is public and the crews that monitor tweets are usually quick to respond. They can offer immediate help or give you a link to contact customer support.

Amazon is a perfect example of this. Their response time is excellent. Sometimes getting help in minutes, not days like customer support. Sadly, Microsoft is not good at offering support like this. When I tweet about Microsoft products, I know that they will most likely not be seen, so I hope others will offer help or can serve as a warning.

Also, all companies need to make it very simple to send issues or feature ideas right from the app. Most apps I use do a very poor job at this. Some companies go out of their way to make it difficult to contact them. Submitting issues to Visual Studio is very simple and they have a web page where you can see the status and they send you an email about it. I wished all apps made it this easy, even other apps from Microsoft. All of Microsoft should use the same system. The only wish I have is for the emails from Microsoft not to end up in the “Other” tab in Outlook that I do not check regularly.

Demand Software Quality in the Apps You Write!

Let us face it, users are number one since they pay the bills so we can keep our jobs. If we don’t meet their needs, they will find an alternative. I see so many apps out there that don’t do this. Even when I am at a doctor’s office, store, etc., I ask the person I am talking to how they like their software. I rarely get a positive response. This is what I have always felt my job is as a software engineer…

My job as a software engineer is to make the user’s workflow (in what they are trying to do) better.

Recently, I was discussing with a friend and explained this concept to him. As software engineers, we need to make a user’s job easier by making their workflow as fast as possible. I suggested to my friend, that a great way to improve the user experience is to immediately display a status or success message instead of waiting for slow database results. Any process that does not immediately need to be reported back to the user, can be done asynchronously.

The user will appreciate this quickness for the website they are using, that any processing that does not need to happen immediately, should be done async or queued to be done later. This is exactly what Amazon does every time you make a purchase. Cloud services, such as Azure, can help us make this happen with a minimal amount of work.

At a recent contract I worked on, they had to call APIs from third parties that could take minutes to respond; I’m not exaggerating. Just imagine how bad of a user experience that is! There are a few simple ways to improve this. Why didn’t they cache or pre-cache the result from these calls?

One of the biggest issues I see with apps is they do not fulfill the user’s needs. Every company needs to get the users involved at the very beginning of the project. First by talking with them and then later showing them beta versions of the app. In every one of the most successful apps I’ve worked on, this is what happened. Even for one app, I showed up at the company at 5 am and spent most of the day talking to everyone from the manager on down so I could understand their workflow on how they shipped products. I’m now a patented inventor because of that app!

Sadly, getting the users involved in the process is either not done or not done well. At one company I worked at, I told the CEO I wanted to spend time with the users, but he didn’t see any value in this. This is crucial to the success of the project and the foundation of the Agile development framework. If I don’t fully understand the user’s needs, how can I create an app they will love?

The second part of quality in the apps you write is the actual code quality and the quality of the frameworks that the app is using. For me, coding standards are always the first place to start. Without good, written standards, I guarantee the code will be what we call “spaghetti code” that is difficult to understand and change. Therefore in 2005 I released and continue to update my book “Rock Your Code: Coding Standards for Microsoft .NET”. My goal with this book and my others is to help make code quality better for .NET applications. At some of the companies I worked for, it becomes the standard. Unfortunately, most companies I work for have no standards or very poor ones.

We Must Demand Quality in Software and In Ourselves

Once your team has a standard, every developer must use it. To make sure they do, performing code analysis during the build is critically important. These days, this is done with .NET analyzers that are configured using the .editorConfig file. Projects should not be deployed anywhere until the minimal number of violations is met. There should be zero errors of course!

One thing that helps me in delivering quality code is using a great refactoring tool such as the free extension CodeRush for Visual Studio from DevExpress.com. Tools like CodeRush suggest changes to your code based on the latest standards. You can choose to accept or ignore these suggestions. I learn new tricks just by reviewing code this way. Your team can also configure these suggestions to fit your custom standards. Once you use a tool like this for a while, you begin to learn these standards and you will just start coding like that. Just be careful that you don’t deviate from standards too much since it will make it harder for new developers to understand.

All teams should have a “Code Quality Zar”. This person should have a lot of experience in delivering quality code and has been through the development life cycle many times. They should oversee the overall quality of the project. They should participate in all code reviews. They should oversee the coding standards. They should be involved in the bug triage process and more. Since every developer is different, leaving this up to individual developers is problematic. With timelines shrinking more and more, quality will not happen unless someone is paying attention to it.

If code quality is not a high priority, the effort to add features and fix bugs will get worse and worse. Sometimes ending up in a re-write of the project which will be very costly and take time. Users don’t like to wait.

Demand Quality in Yourself!

Lastly, code quality must start with you demanding quality in yourself. You will make or break the quality of the apps your team writes. If you are waiting for your company to spearhead this, then you will be waiting forever. You must make it happen! There are many ways to help you in your code quality journey.

Let us start with the company you are working for. We work in a career that is in constant change and you must keep up. You should seek out companies that will pay for your continuing education. This funding keeps getting cut at more and more companies so make sure you ask questions about it during the interview process. If they don’t offer it, that is a big red flag letting you know they don’t care about your growth in your career. Some companies go out of their way to discourage this since they are worried that you will leave the company once you gain more education.

Also, find a company that will pay for you to travel to a software engineering conference. This is another sign they want you to grow and learn. Conferences are the best place to get exposed in a short amount of time to a lot of new information that will end up helping the product you are working on. In many of the full-time jobs that I accept, I have them write in my employment agreement that they must send me to at least two conferences a year. Now that I am a Microsoft MVP, the Microsoft MVP Summit is one of those conferences. I know that the Microsoft MVP Summit is the best conference anyone could go to. Make sure to contact any conference you go to and demand sessions on code quality.

When you go to a conference, make sure you network with other software engineers! I cannot stress this enough! I usually learn more from talking to people than I do in the conference sessions. I know many of us do not like to do that, but you need to find a way to break out of that while you are at the conference. This includes any of the parties that surround the conference. Network, network, and network some more!

There are many free events you can attend too. User groups are a great place to learn code quality since most of the presenters will be developers just like you, dealing with real-world problems. Seek out your local group, attend as many meetings as you can, and volunteer to help the group too.

Community-run conferences are another great place to learn, usually for free or very low cost. Again, most of the presenters will be from your local area. Programming is very different from area to area, even country to country, so learning from locals is priceless! These conferences can be Code Camp, Global Azure Bootcamp, SQL Saturday, and more.

Unfortunately, I have a hard time finding sessions dedicated to code quality, especially at the big costly conferences. On top of that, I cannot find a conference dedicated to code quality. That’s why in 2020, along with C# Corner Live, I started the Code Quality Conference (virtual). The first year had over 72,000 viewers which proved to me there is a desire for these types of conferences. That’s why we are bringing it back on August 19, 2022! It’s free so I hope you will attend. The link for this conference is in the Summary section.

Summary

As I stated at the beginning of this article, problems (development issues) don’t change unless you make noise or if you don’t make it a priority to incorporate quality in everything you do. When you do, you can’t beat the feeling you get when you deliver a quality app that the users love. For me, if the users love the app, I feel that I have succeeded!

I hope you will keep an eye out for more articles on this subject since I will be releasing many more. If you need a “Code Quality Zar”, I am available to help your team. If you have any comments, please make them below.

Articles & Videos



McCarter Consulting
Software architecture, code & app performance, code quality, Microsoft .NET & mentoring. Available!