How to Save Time While Debugging

In this article from our small series for junior developers, we will focus on how to save time while debugging and what are the best practices of senior developers when fixing the errors.

The Stripe’s study from 2018 says that developers spend over 41% of their time on maintaining and debugging the code. Imagine, out of 20 working days in a month, a week and a half of time does not add value to the business. Let us give you some advice on how to lower this large chunk of time that could be spent on creating new features.

How to Maintain a Healthy Codebase While Shipping Fast

One of my greatest privileges building Stepsize has been hearing from hundreds of the best engineering teams in the world about how they ship software at pace while maintaining a healthy codebase.

That's right, these teams go faster because they manage technical debt properly. We're so used to the quality vs. cost trade-off that this statement sounds like a lie—you can't both be fast and maintain a healthy codebase.

For Secure Code, Maintainability Matters

Author Robert Collier said that "Success is the sum of small efforts repeated day in and day out." That's especially true when it comes to security. By now we all understand that securing your systems isn't as simple as installing a firewall and calling it a day. Instead, it's multiple actions and strategies in concert, implemented consistently over time. And believe it or not, one small but important strategy is simply writing code that's reliable (bug-free) and maintainable (easy to understand). Yes, I know that sounds too simple, and possibly even self-serving. So in this post, I'll lay out some of the evidence for how writing reliable and maintainable code means you're inherently writing more secure code.

Poor Maintainability Contributed To Heartbleed

To make the case for how maintainable code contributes to security, I'll start with the Heartbleed Bug. Remember that one? It was a serious vulnerability in OpenSSL that allowed attackers to steal sensitive information with a really trivial attack that XKCD illustrates beautifully. David A. Wheeler teaches a graduate course in secure development at George Mason University. He wrote an extensive analysis of the vulnerability. In it, he laid part of the blame on the difficulty of simply understanding the code involved: "Many of the static techniques for countering Heartbleed-like defects, including manual review, were thwarted because the OpenSSL code is just too complex. Code that is security-sensitive needs to be 'as simple as possible'."

Availability, Maintainability, Reliability: What’s the Difference?

We live in an era of reliability where users depend on having consistent access to services. When choosing between competing services, no feature is more important to users than reliability. But what does reliability mean?

To answer this question, we’ll break down reliability in terms of other metrics within reliability engineering: availability and maintainability. Distinguishing these terms isn’t a matter of semantics. Understanding the differences can help you better prioritize development efforts towards customer happiness.

Software Architecture Quality Attributes

Software projects are becoming complex, larger, more integrated, and are implemented by the use of several varieties of technologies. These various technologies need to be managed and organized to deliver a quality product. Quality attributes usually assessed and analyzed at the architecture level, not at the code level. And finally, software architecture has gained increasing visibility in the last years as the software industry has recognized the role of software architectures in maintaining high quality and ensuring high quality and sustainability of software products. 

However, there is still no consensus on how to measure various aspects of software architecture, therefore today I wanted to talk about software architecture metrics, but found out that in software architecture there are no standard metrics yet, this field is still very immature. However, some experts start talking about it, for example, I highly recommend you to attend Global Software Architecture Summit in Barcelona ( October, 1-2), where Alexander von Zitzewitz will talk about “Software Metrics for Architects”.

Design for Maintainability

There are many attributes to design for; however, to understand the beauty of programming, you must practice the techniques that come with Maintainability.

Let’s start with a few examples:

• When you want to add a logging feature in some layer/place and this will be achieved by modifying one place or couple of places.