Scroll to top
© 2020 OCTOCODE

4 essential tools to increase the quality of your solutions


octocode - May 6, 2021 - 0 comments

Each of us knows that to work as a programmer we need basic tools such as a code editor, a  configured development environment, etc. However, it is very rare to find in the Internet  information about tools that support our work. 

I don’t mean time measurement (e.g. Toggl) or task management (e.g. JIRA). I mean more about  tools that help us take care of the quality of the delivered solution. 

What is quality? 

Some time ago I had the pleasure of meeting with Andrzej Krzywda (Arkency.com). During our  conversation Andrzej said a very interesting thing, which I will try to quote: 

Developers often say when selling their services that they will deliver great quality, but fail to  explain what that quality is. 

After a long while, it occurred to me that in 2012 I was convincing clients myself that I would  deliver a great quality software service. Fortunately, no one asked me then what that quality was.  Back then I would have had no idea how to answer that question. Today, with more experience I am able to pick up the gauntlet and say what is my definition of software quality. 

If you think that software quality is beautiful code – you are wrong. Nobody cares whether you used this or that solution. Nobody but your team will ever see your code. So what is the quality of your  solution? You have to look at what you do through the lens of the product. As a programmer, you  are creating a product. What are the characteristics of a good product? This question is probably  easier to answer. Stability of operation, high availability and speed of performed operations. To this  you can add predictability and short time of removing failures (you can never avoid them). 

To be able to meet these evaluation criteria it is worth using tools that will help you measure the  relevant indicators. 

Monitoring 

Using a monitoring system you can see in black and white how your system is behaving. With  Grafana, for example, you can build advanced graphs that will show you 

• number of users using your application 

• number of errors from log files 

• number of requests / min 

• average response times 

Of course what you display on the graphs is your choice. You will choose the metrics that are  important to you. The most important thing is that by displaying them on a separate monitor you  can see almost in real time what is happening with your system.

Automatic deployment 

I have been thinking for a long time whether this item should be on this list. However, after talking  to a few people I decided that it’s a good idea. Many people still update their applications manually.  It’s hard for me to imagine uploading tens of thousands of files to a server at a time when  automating this process can cost $5 / msc. 

With automation you can avoid problems with deploying a new version such as: 

• an internet/power outage that caused only part of the project to be updated; • overwriting environment variables so that your project connects to a test database; • publishing untested changes. 

If you don’t know how to automate application deployment process, there will be a tutorial on my  YouTube channel soon. I will show you how to configure and use the free Jenkins CI tool. In the  meantime, if you don’t know the difference between CI and CD, I also invite you to my insta  stories, where I explain this subtle difference. 

https://www.instagram.com/stories/highlights/18105309376142458/

Alert platform 

Imagine that you are looking after your client’s online store. It’s Friday. Your client has scheduled an evening webinar where they give attendees discount codes that they can only use until the morning. 

The webinar is over and your client can’t wait until tomorrow morning to check the night’s sales  report. However, he wakes up in the morning and sees that no new orders have come in. He  becomes depressed. He decides that his products are a total flop. But it turns out that the problem  wasn’t the products or the webinar, it was the shopping process not working. The script was  throwing errors for all people who wanted to buy with the newly added discount code. 

Could this situation have been avoided? Errors do happen. However, you could have minimized the  loss. All you need to do is integrate your system with an error notification tool. An example of such  a solution could be VictorOps, for example. It’s a tool that sends an email or calls you at the phone  number you provide if a specific failure occurs. 

Code Quality Measurement 

Everyone makes mistakes. Typos, missing imported dependencies or using undefined variable. Of  course we are protected against many of these errors by automated tests, which I hope you write in  your projects. For programmers in love with standards, the ISO/IEC 25010 standard was created,  which describes the characteristics of “good code”.

Of course, we also have appropriate tools that can analyze code against these standards. One such  tool, for example, is SonarQube. This is an application that we can integrate into our CI/CD process and run it, for example, every time we make a push to our branch. This is so interesting solution that analysis can also show so called security vulnerability. You can use Sonar by installing it using  docker image. It is also available in AWS marketplace. This is a great solution if you keep your  infrastructure just on Amazon. 

If we already talk about Amazon, just as a curiosity I encourage you to check AWS service called  CodeGuru. It is a tool that with the help of artificial intelligence can do Code Review. Interestingly,  it supposedly doesn’t just give you information about errors, but can also suggest better solutions. I  haven’t tested this service yet, so if you know something more about it please leave a comment 🙂 

Let me know in the comments if you use any of the described solutions. Do you care about the  quality of your solutions and what that quality means to you.

Related posts

Post a Comment

Your email address will not be published. Required fields are marked *