August 21, 2024 03:11
One of the biggest issues about programming is that coding isn't enough. I love writing code, I love tackling a problem and writing a program that does a task I want, and figuring out how to optimize or have fun with it. However, programming is also about integrating tools together. Maybe you have some sort of backend running your code, or you're making some code which will embed in some other programming language, or you have to balance between multiple different apps.
And that sucks...
My biggest issue with all things like that is web dev. Because guess what? You wanna make a REST API? You wanna make a database integrated with that API? You wanna make a dynamic website that makes requests to that API that has access to the database? Guess what, doing all that is the easy part! Having all of that setup and running in your localhost is a smooth process, which follows by the absolute existential dread of figuring out how to make that public.
If you ever try to google "how to deploy" your app, all you will find is forum threads, reddit posts, blog articles, youtube videos, talking about things you've never heard before. Docker, AWS, EC2, ECS, CDN, Lambda, CDK, S3 buckets... And then you learn there's multiple companies you can choose to host your app in, and then you hear people's opinions... You will read at least a dozen different opinions about which service to go for, and for each option, there will be some other stranger telling you why it's a bad service.
I think this is one of the big reasons why I don't think I could ever "have a job" as a programmer. Because that's what I'll deal with. My ideal programming job in my dreams would be to literally only write code, but that doesn't exist, as far as I know. And it's also why I tend to stay away from web development, because that's the "area" of programming most harmed by this evil aura of feeling overwhelmed by so many options and none of them good enough.
Even to make this microblog, I had to go through a journey of how static site generators work and how it's not as simple as compiling all the files into a directory and uploading to a host (at least in the modern era of the internet), and so thankfully I knew already how to work with Github and how to use Cloudflare Pages to host a website ran in Zola (notice how I named three different services, one to host the files, one to host the website, one to compile my files into the website). And all of this is for an extremely simple static microblog.
I'm not even touching the fact that all these services that provide a way for you to deploy your app will always assume you understand what they're talking about. When you run your little app locally, all you have is your program compiled into an executable, running by your personal computer. Now to make it public, you gotta worry about which service, which tier, a lot of services separate storage, memory, CPU, into multiple separate mini-services for you to customize (and that just makes it even more dreadful for a beginner). And so you find yourself googling all this terminology, which leads to websites either using other terminology you don't understand to explain it, or they dumb it down way too much to the point where it's obvious and not helpful.
Naturally, I could just literally pick one service that looks good enough for what I want, but these services cost money, and it's already a pain to learn how to use one, so it has to make it count. I'm not trying to make the next big thing, I'm not even trying to make an actual good reliable API. I just wanted the barebones, maybe for like two or three dollars a month, just to see it alive and online.
My stance on webdev was the same as I first gave it a try, about two years ago. It sucks, it's not fun, it's not rewarding, it's dreadful, and getting something up and running does not make the journey worth it. And it's even worse because my journey with programming is completely the opposite. You can choose any programming language, find a nice little tutorial explaining the little bits until you have enough knowledge to make a "Hello world!", and then you learn how to do math and maybe make some code that computes fibonacci numbers. And then you learn about functions, and arrays, and try making a sort function. Then you keep going, and eventually you start having actual simple ideas of things you can actually code.
Sure, coding can be frustrating. But struggling with code is the exact same struggle the whole way through. You write some code, it doesn't do what you expect, you debug, you code something else, you debug, or maybe you want your code to do something and you have no clue how to do it. You could try googling it, but what I usually do is give up for the time being and just try learning more. Maybe I can tackle this problem with a more matured mind. It's not the same struggle as "yay, my code works, and it's perfect, so how do I make it run online?" and spending hours upon hours of browsing the internet to find out how and leaving empty-handed, feeling like you learned absolutely nothing.
I should probably go to sleep.