The Importance of Infrastructure Knowledge
"You devs just write your code and think everything is done. You don't understand what happens after." That was my CTO, he was complaining after we had fixed a virtual machine that had run out of storage space. How had it run out of storage space? Well, I had created multiple log channels, each one writing to their own daily log file, and just left them there to accumulate. I killed the VM by having hundreds of thousands of log files 1MB or less, whoops. When I was developing I didn't think about tidying up the files, even telling anyone about the log files, this little 170kb file won't harm anything right? Every process had it's own log channel and daily log file so if anything does go wrong someone could find out exactly what it was easily. I was happily making a mountain out of small stones blissfully unaware of the problem I was creating. Obviously, we need log files, but it hadn't occurred to me that they would take up space, and eventually use all the space and crash the VM. I had done logging without any clean up. It’s like installing a toilet with no plumbing and acting surprised when the room smells funny. This is why having infrastructure knowledge and skills is so valuable. It changes how you think about the entire process of development, I see things differently now. Having infrastructure knowledge means that I make better architectural decisions at the start of a project. It means I'm a better team mate understanding another's role and making their job easier. Most importantly, it means not walking in to work and having an important application down, everyone asking why, and being pressured to fix it ASAP. I have a cron job that zips and moves the log files so they can be deleted now, but I wish I had thought of that from the start. Don't work in a silo, see the big picture, it will save your day.