Read more about the article Releasing Legacy Code Confidently
Photo by Caleb Woods on Unsplash

Releasing Legacy Code Confidently

If you own a piece of legacy code, you might be crossing your fingers every time you release a new version. Silently hoping that nothing will go wrong like last time. I'll tell you it doesn't have to be that way. The way out of this mess can be long and difficult, but the situation can be improved. Here are some tips. Automated Tests How can you know that the latest version of your application works as expected? How are you testing the version that you want to deploy? If the answer is that you're mainly testing…

Read more about the article Am I Using a Legacy Programming Language?
Photo by Mark Rasmuson on Unsplash

Am I Using a Legacy Programming Language?

Things move fast in the software development world. Technologies come and go faster than in most other industries. Programming languages tend to stay a little longer, but at a certain point in time, you might find yourself with a legacy programming language. How can you recognize this, and how should you react? What Is a Programming Language? Software is developed by writing code in a language that humans can understand. This code is then translated into instructions that the computer can understand. Like "normal" languages (e.g. English or French), a programming language evolves and has a community…

Read more about the article Legacy Code and Security
Photo by shotinraww on Unsplash

Legacy Code and Security

One aspect of legacy code that is often forgotten is security. Discussions about legacy code usually center around things like maintainability, testability, cost of development and cost of running. Not so much about the security implications. Yet it is becoming an increasingly important issue that companies shouldn't ignore. If you've missed my article on what legacy code is, let me briefly repeat the four points I made. Legacy code is code: with little automated testswith automated tests of bad qualitythat uses older technologythat is generally of bad quality making it hard for developers to change things without…

Read more about the article Can I Write Tests?
Photo by Harshal S. Hirve on Unsplash

Can I Write Tests?

I've previously established that you need to automate your tests, even (especially!) in legacy projects. I've also covered on how to get your developers to write tests. But maybe you're wondering if you or some other non-technical person can help write the tests. Luckily, there is a way, and I would even recommend it highly. Types of Tests First, let's briefly cover the types of tests again. Broadly speaking, the following type of tests exist: unit tests: to quickly test small pieces of code in isolation, mainly for developersintegration tests: to test the integration between different pieces…

Read more about the article Can I Add Tests To My Legacy Project?
Photo by Samuel Zeller on Unsplash

Can I Add Tests To My Legacy Project?

So you've acknowledged you're stuck with a piece of legacy code. One of the things that might be missing are automated tests. Is it possible to add tests to this application retroactively? That is, write tests for features that have already been implemented? Short answer: yes! Long answer: read on... The Situation There is a Chinese proverb: "The best moment to plant a tree was 20 years ago. The second best moment is now." Keep that in mind as we look at the current situation. Let's say your application has little to no automated tests. I've already…

Read more about the article Which Automated Tests Do I Need?
Photo by Jeremy Bishop on Unsplash

Which Automated Tests Do I Need?

In my previous post, I explained why you need automated tests. It's cheaper, and more fail-safe. But not all tests are equal. And there is a place for each type of test. In this post, I will try to explain the basic types of automated tests in software development and lay out their use cases with advantages and disadvantages. Unit Tests Most developers are introduced to automated tests through unit tests. The role of unit tests is to test a single unit of code. What exactly is understood by a unit of code isn't clear. But a…

Read more about the article Why Do I Need Automated Tests?
Photo by rawpixel on Unsplash

Why Do I Need Automated Tests?

Automated tests come in all shapes and sizes, but the main idea behind it is that you can run a suite of tests on your software by clicking a button. This suite of tests then provides certain input to pieces of your software and verifies that the output is what it should be. It serves as an easy health-check of your application. One could say that writing software like this is a more scientific way of writing software. Instead of assuming the software is doing what it should, we set up a hypothesis and prove it right.…

Read more about the article What Is Technical Debt?
Photo by Jonathan Brinkhorst on Unsplash

What Is Technical Debt?

Have your developers ever mentioned technical debt? Or are you wondering if you have technical debt? Are you interested in doing something about it? Is it even necessary to do something about it? Let's first have a look at what technical debt is. Wikipedia defines technical debt as: Technical debt (also known as design debt or code debt) is a concept in software development that reflects the implied cost of additional rework caused by choosing an easy solution now instead of using a better approach that would take longer.Wikipedia This is in fact a great definition. When…

Read more about the article What Is Legacy Code?
Photo by Anastasia Dulgier on Unsplash

What Is Legacy Code?

Do you often hear your developers talking about legacy code? Most likely in a negative fashion? Let's take a moment to look at what legacy code is and what developers mean when they mention it. Definition There is no "official" definition of legacy code. Michael Feathers defines it as "code without tests" in his book "Working Effectively with Legacy Code." Others talk about "code inherited from others," or applications that run on unsupported platforms. I believe that neither of these definitions are what most developers mean when they talk about legacy code. While these can be characteristics…


End of content

No more pages to load