This article is part of a series meant to help professionals and people new to the hobby make their first steps and answer some of the questions we inevitably encounter when discovering new technology. If you’re an experienced technologist, feel free to skip the intro and jump directly to the article that interests you the most.
Why bother?#
It is the first question that comes to mind when thinking about creating your own self-hosted homelab. When I was first introduced to the homelab hobby a few years ago by my more experienced colleagues, this question plagued my mind for weeks. Do I really want to spend my weekends working on these systems instead of acquiring less technical hobbies to distance myself from the tech life for at least a few days each week? If you are anything like me, the answer is an astounding YES!
Most of us got into this field because we love exploring the unknown, tinkering, and experimenting with new technology. It’s not the technical aspects of our jobs that we’re actively trying to avoid, it’s the deadlines, reports, meetings about meetings and status updates… Building your very own playground allows you to learn and experiment with no supervision, strict guidelines, or constant peer reviews after changing a single line of code. It is your own world where you are allowed to create, explore, or destroy as you please with no consequences.
If you are just starting your career and feel overwhelmed by numerous products, frameworks, and tools coming out every day, this is your key to developing those skills and gaining some confidence in the process. No online course, Youtube tutorial, or step-by-step guide will make you an expert. All that can help you get the basics. But, developing skills requires hours of practice and solving inevitable problems. How many times have you followed a tutorial a few years after it was released? You realize that the command you copy-pasted no longer works. The method shown in the video is no longer supported. THIS IS FINE!
― Douglas Adams, The Hitchhiker’s Guide to the Galaxy
Why not cloud?#
Most technical specialists working for various organizations are used to deploying their infrastructure in the cloud using SDKs and Terraform providers meticulously crafted by the cloud companies to reduce the friction for developers and lock you into their ecosystem. Don’t get me wrong, I like the accessibility and ease of use provided by those platforms. But, as professionals, we must understand the technology instead of mindlessly tweaking values in config files. People trust us, as professionals, to help them navigate the tech world and make the best decisions based on our experience. That said, you don’t need to be an expert in every field. But, you must not blindly delegate your duties without knowing the context or trade-offs. But, as an engineer, you are responsible for it. You will be liable should anything go wrong. Another aspect is security. Do you really know how your data is being stored? Do you have full understanding of the complex network ecosystem maintained by your cloud provider? Most of us do not have this level of expertise. This is why it’s important to build the foundation and understand how those systems work without training wheels. We’ll get to cloud deployments in future articles, only to realize that you already know most it. Enough! Time to get off my soap box…
― Douglas Adams, The Hitchhiker’s Guide to the Galaxy
What if I’ve never done this before?#
We all have to start somewhere and you’re not an exception! If you feel lost or alienated after hearing your coworkers or influencers discuss a technology you’ve never encountered before, it’s okay to feel behind, but don’t let this discourage you. To address it, we must approach new problems with a slightly different mindset. You’re not the last person to discover this new framework or tool. There will be people after you who are as lost as you are right now. There are millions, if not billions, of projects you’ve never heard of in your life. All are interesting and unique; some even groundbreaking. You are an astronaut, discovering new planets and species. You are not a caveman, transported into this new technological world. Be curious, ask questions, and go break something! Just not in production… When you stumble upon a new project, don’t rush into getting distracted from your current task. This will only make you feel more overwhelmed. Read the first page, understand the problem it solves, and if you’re still interested, take a note. Even better, add it to your backlog or reading list! We only have so much time, so it’s perfectly fine if you come back to it a year later or if the project falls off your list because it was replaced by something else. You can’t do it all, so prioritize what’s important to you instead of mindlessly falling for the next hot technology on the market.
Help! It’s not working#
Of course it’s not, it’s your first time. Don’t get bogged down trying to repeatedly solve the exact same problem day after day, don’t get frustrated and most importantly - Don’t Panic. See what I did here, I know it’s silly. You don’t have to tell me this… Once you go through this process hundreds of times, you will develop your own unique way of dealing with these problems, but for now follow these steps.
Step 1 - Take a break!#
I know you’re eager to solve this problem you’ve worked on for a couple of hours. But, wasting more time won’t help. You’ll just get exhausted and extremely frustrated. Instead, leave it for a while and switch to something entirely different. If you’ve spent an hour, do some chores, go for a walk, or spend some time doing whatever brings you joy. If you’ve already wasted half of a weekend smashing your keyboard and exercising in profanity - sleep on it. Leave it for a few days, weeks, or even months. You will be surprised how fast you can solve the problem next time.
Step 2 - Retrace all the steps#
Try following the same steps as last time, questioning every decision and trying to understand the logic behind them. If unsure, go read more about it, search online and watch some tutorials. You want to get a good understanding of the problem and technology you’re dealing with.
Step 3 - Tear it down and start from scratch#
I know it sounds insane; you’ve already put in so much time working on this project. This is a chance to break it down into the smallest components that can be tested independently and follow the notes you’ve been taking all this time. Oh, you didn’t… Zoiks! I knew you wouldn’t listen to me until you see the error of your ways. I never listened; why should you? Now is the time to repeat all steps, take notes, and write down all your assumptions or questions.
Step 4 - Rinse and repeat#
If you haven’t already solved your problem, repeat the same sequence of steps. Research the topic, ask questions, browse forums. Most importantly - don’t get discouraged. We’ve all been there! Some problems may take years to resolve or a very special eureka moment we all get once in a blue moon.
― Douglas Adams, The Hitchhiker’s Guide to the Galaxy
Time for a deep dive#
Now you’re ready for all that technical nonsense I’ve prepared for you. Don’t skip any steps unless you already feel confident and can reproduce them with your eyes closed. You never know if you encounter something new, even if you are already familiar with the topic. Good luck!