Key performance indicators for the development team leads, and how to measure them in Azure DevOps.

The development team lead is obviously a very important link in the software development lifecycle. You’d expect them to not only be technically equipped, but also have man management skills.
While specifying and delivering technical solutions is great part of their job, making sure the rest of the team learns, improves and works towards the collective goal is of same importance. They should also be responsible and look into the project health.
As such an important part, a great care has to be taken for them — but also their performance needs to be somehow measured.

What will you measure…


Retry all network calls from your front-end to make the app more resilient and reliable

Photo by Denny Müller on Unsplash

The front-end applications we build mostly rely on active internet connection, in order to access the server and get or post data. Once the data is retrieved, we can do a bunch of stuff locally, such as animations, transitions, validations and so on. We are so used on reliable internet connection, that we often disregard the fact that the network call we do from our front-end to the server-side is maybe the most unreliable part of the application. We need to treat it as such, because it can fail at any time (rarely, but it can).
It could happen that the…


Extend the Application Insights’ distributed tracing by background jobs or integration events telemetry correlation

Application Insights is a great tool for monitoring your system. Configuring is really easy too — since it’s a Microsoft product, you only need to click “Add Application Insights” in Visual Studio, and you’re all set up. You will start getting all kinds of logs from application exceptions up to hosting machine CPU performance.

You get this with absolutely no custom code

One really cool stuff with Application Insights is that distributed tracing is enabled by default. …


Record your architectural and technical decisions for further reference, and have the new team members up to date from day one

Photo by Maarten Deckers on Unsplash

ADR is spoken of and documented well in other places, so I won’t spend much time talking about it. Just shortly, ADR is the process of storing the project’s architectural thinking and decisions for further reference. This further reference can be new members joining the team, existing members constantly fighting the patterns in the code, coming across similar problem later down the line etc. Team members should be convinced by the decision record as to why some alternatives were not entertained and why certain decision was made. Also, they should be aware that there is no right or wrong way…


Do-and-forget general progress loader that will automatically and consistently show throughout your angular application

Loading progress bar.
Loading progress bar.
Photo by Mike van den Bos on Unsplash

While the backend has a job of making sure the business logic is followed, the front end has a job of making sure the user can easily find what he’s looking for and finish their task. For that to work out, the user needs to look into consistent views and pages that look same or similar throughout your app. Call-to-action buttons need to look the same and be positioned in the same place, tables need to look and feel similar, details view as well. Your job as a front end developer is to make sure of this — and that’s…


With a real world use case.

I believe you already know about static analyzers — they analyze your code while you type it, and are able to give you errors or warnings before you even build, along with quick fixes.
They can warn you about simple fixes, such as when using statement is unnecessary, up to ones that can logically analyze your code and warn you about possible bugs, such as using possible null object or when you can simplify some of your code.
Analyzers are usually added as NuGet packages to your projects, but could also be added as extensions to Visual Studio. …


Simple concept that goes for both web and mobile that will not break the UI regardless of the image dimensions, and will keep the image’s aspect ratio.

Photo by Markus Spiske on Unsplash

As a web or mobile developer, you regularly need to present some kind of image on the UI. Sometimes it’s an asset that does not change (yet), sometimes it is the user that uploads the image — in which case you can expect any size ranging from favicon to billboard. Regardless, as a good engineer you need to take care that whatever the image resolution, the UI will not break if the image is changed in the future, with one with a different resolution. Because it will be changed. …


Use the ‘yarn audit' command in your CI pipeline and block the integration if there are security risks

Yarn audit output.
Yarn audit output.

You might have heard about the audit command in yarn. It essentially reports the NPM packages and their dependencies in your angular application that have a known security risk.
Now it would be nice if we take care and update those packages, so our application would not be exposed, as usually security issues are patched in a newer version of the package. Most of the attacks that are happening are not some Hollywood hackers that hack the system. …


Fail your CI build if there are any NuGet packages out of date in your project with dotnet-outdated.

If for some reason you cannot or don’t want to set up an automatic update of your NuGet packages, there is also a reporting option possible. You will know which packages are out of date, and you can additionally choose to fail your CI build so the developers will need to update them before the pull request is integrated. This, of course, is viable for smaller teams. You could also have a weekly build, and maybe produce weekly task for NuGet package updates without blocking any code integrations.

For this, we will use dotnet outdated - a dotnet core tool…


Whether you are starting a greenfield or working on a legacy project, you can start receiving pull requests with NuGet package updates automatically, integrated in your CI pipeline with NuKeeper.

Command line output
Command line output

We never updated the NuGet packages on one of the projects I’ve been working on. The project did its job, there was no need to. And then, on one innocent morning, we read about a serious vulnerability of a package we used - attackers could execute arbitrary code through that. A security patch was available in the newest version of the package. We immediately had to prioritize updating that NuGet package, which was not updated in 5 years. One of the developers in the team spent the whole sprint updating to the newest version, and the whole team spent even…

Boris Donev

As a technical team lead of several startup projects, I've come across different issues which I'll try to document and maybe help someone else.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store