It's just a Barn.
Tags: codequality, softwaredevelopment
Published: 2017-12-22 02:47:35

---
title: It's just a Barn.
published: true
description: You may know a lot of things, but THAT thing that you don't know can bring huge headaches to the future you.
tags: Code Quality, Software Development
---

(Extreme Drama ahead)
So, let start with a story. All your life you lived in a farm and if there is something that a farm teaches you, is that you can do it yourself. With all that knowledge you consider yourself great builder, in the past you built an amazing tree house for your kids and they loved it. 

Now your old barn needs a replacement, the new barn will host every animal on your farm. Since you are a great builder, you take the challenge and build the barn by yourself. Design, execution and delivery are your tasks. 

TODO:
> Design:  
- The barn will be over wood posts because are strong enough, the barn is not that heavy.
- For the inner structure it will use a metal rods, with less beams and pillars it will be lighter and we can do that since metal is stronger than wood.
- The barn cover will use PVC siding, light, maintenance free and cheap.
- For the roof we will use Zinc Tiles, polymer ones wouldn't resist the winter.

> Execution:  
- You start by burying the wood posts. Everything goes according as planned.
- After that you build the inner metal structure, it takes some time because metal is harder to work with but a good weld you manage to keep everything in place.
- You start covering the barn with your PVC siding when a storm interrupts your work. You go inside and wait it passes. The next day you realize that all your metal structure got wet (because you prioritized the siding over the roof) and with the passing of the days a superficial but visible rust appears all over your new structure. Never mind, it's harmless because it's the rust is superficial and can't destroy the structure.
- You finally got to the roof. Your barn is ready!

> Delivery:  
- You move all your animals from the old barn to the brand new one! After that you dismantle the old barn and make (a lot) of fire wood for the incoming winter.
- Everyone is happy.

## Winter has come 
#### Insert Game Of Thrones dramatic music

In winter you start noticing that with strong storms, the water hits the roof too hard and since it's Zinc (metallic) tiles a loud sound is made. Your animals get terrified on every strong storm. You had no idea that water could hit a roof that hard and decide to replace the roof with a stronger (and quieter) material.

After solving that minor incident, time passes and your barn survives the hard winters. You still think, i am a great builder!

Your barn was doomed since the beginning. Your wood posts started rotting, until now they were able to sustain the light barn, but the water made some (huge) damage over the years. You consider disassembling the barn to replace the wood posts with concrete ones that are not that expensive. BUT (remember the metal structure?) it's all welded up, so disassembling will take even more time. You (luckily have spare time) and decide to perform the ~~refactor~~ ups, the repair of your barn until you notice that you have no place to store all your animals and will die outside in the winter.

The problem with Software Development is that anyone can code, anyone can build a barn. You can have a code with some rust, no one is perfect; you can have a noisy code that is not that efficient, but when you get clients stepping all over your rotted wood posts things start getting unstable and finally they will run away before everything falls down.

Everyone knows that there is something called `Code Quality` but not everyone knows that metal tiles make loud noises under strong rain. Clean code is a phrase (i hope) very familiar with most Software Developers but architecture, performance, scalability, testing and refactoring may not. 

### So be ~~barned~~ warned
If you think that "it's just code" do something for your future you (and co-workers) and investigate the topic. You will not regret building with concrete in the right occasions and with wood in others.

(Extreme drama aside)
What do you think about knowing that Code Quality is important and spending extra-time refactoring that piece of code?