there are a lot of other things I need to learn like creating unit tests, learning about efficiency, design patterns…etc.
That’s true. And it will still be true when you’re decades into a successful development career. Continuous learning is a great part of our trade.
Like what kind of operations to put on the front end versus the backend/server.
There’s a Wheel of Reincarnation in our trade. It turns about once a decade or so. At one extreme it has thin clients and thick servers. In today’s lingo that means “server rendering”. In these cases the experience you deliver to the user’s web browser is mostly HTML and CSS, with just enough JS to get the job done. At the other extreme it means a thick client and a thinner server. React apps, where there’s lots of logic in the client (the “React front end” in today’s lingo) are a great example of this structure. The server sides of React apps tend to be APIs that handle the data and business logic.
So what you learn here at FCC has its code divided between client and server. The way operations are allocated between client and server will change as the Wheel turns.
But one thing doesn’t change much: Data – your organization’s data – lives on servers. And the volume of data in most orgs, by now, is vast. It’s many orders of magnitude larger than you could possibly load into even a very complex client. So, searching / selecting data for your user will always be a server function.
Like data and what’s more efficient.
It’s said there are two hard questions in Computer Science: naming things and caching things. Both of those are data-efficiency problems. It’s good you understand that data efficiency is hard. Because it is, and it will remain so.
I.e., if I want to make a web scraper to add something else to a user’s profile … whether it would be horribly inefficient to put that on the backend.
Think of it this way. When you put code on the front end you’re sticking your user with the power bill to run your app. When you put it on the back end you’re paying the power bill yourself. But when you pay the power bill, you gain control over the environment.
Scraping a web site from another web site’s client can run into CORS trouble. Look it up.
Things like testing server loads and simulating tons of users on my server
Ahh, load testing. Maybe that’s even harder than naming and caching. Place I worked recently had a customer insisting they would load test our servers. It turned out they spun up ten thousand EC2 virtual machines on AWS to do that, and it cost them more than US$100K. We did fine in the load test, except for the second where they hit us with 5.000 concurrent requests to log in to our app. It was generous of them to invest that much in load testing: it helped us improve our stuff, a lot.
Again, it’s great you understand this is hard.
making calls to the database and going about making something more optimized for handling that.
There’s a whole professional field called “database administrator” dedicated to solving that problem day to day. And, another called “database designer” or “database programmer.”
I feel like I consistently struggle with reading comprehension, whether it’s docs or algorithm challenge explanations.
You’re not alone. Everybody struggles with this stuff.
When do you sit back and realize that you’re just not good at something and accept it?
You have reached the point in your learning where you are starting to understand the scope of what you don’t know. That’s great. It is a HUGE milestone for you. You’re starting to do “systems thinking” about your programming problems. That ability is rare and valuable.
Please don’t take it as a sign you should give up, because the opposite is true. Keep going.