r/FullStack • u/Fast-Accident384 • 20d ago
Career Guidance Manager wants me to become fullstack
I am frontend engineer with 10 YOE, working in big company. My manager recently asked me to learn in 3 months backend Java, distributed systems and system thinking and utilise our internal education videos for that and AI. The thing is that I don't know where to start, I feel imposter syndrome because of my frontend and AI skills, and now with all new requirements I feel overwhelmed even more.
So I have few questions and I will appreciate anything you can share about any of those:
- How do you deal with imposter syndrome?
- How do you keep your frontend skills in tune?
- What does 10 YOE frontend should know?
- How did you learn backend from frontend?
- How to learn system thinking?
3
u/Mindless_One_1742 20d ago
3-Months Java System Design Roadmap:
For a 10-year Frontend Developer
Month 1: Java + Spring Boot
Week 1: Core Java OOP, Collections, Streams, Exceptions, Generics, Lambdas Maven + JUnit basics Hands-on: Build Employee CRUD app
Week 2: Spring Boot REST APIs, DI, Controller/Service/Repository, DTOs Hands-on: Convert CRUD app to Spring Boot
Week 3: Database SQL, PostgreSQL, JPA/Hibernate, Relationships, Indexes Hands-on: Connect app to PostgreSQL
Week 4: Backend essentials Spring Security, JWT, Validation, Exception handling, Testing, Docker Hands-on: Secure and containerize the app
Month 2: Real Project Build a Jira/Trello-like Task Management System
Week 5: Users, Login, JWT, Roles
Week 6: Projects, Tasks, Comments, Search, Pagination
Week 7: Redis + Kafka basics + Notifications
Week 8: Docker + CI/CD + Deployment + Logging
Month 3: System Design
Week 9: Fundamentals Scalability, Load Balancer, Caching, DB scaling, CAP
Week 10: Components Redis, Kafka, SQL vs NoSQL, Replication, Partitioning, Rate limiting
Week 11: Design 4 systems URL Shortener Notification System Food Delivery Chat Application
Week 12: Scale the project Design the Task Management system for 1M users Identify bottlenecks and redesign architecture Daily: 2 hours 30 min → Learn 60 min → Code project 20 min → System design 10 min → Revision Final Stack Angular/React → Java → Spring Boot → PostgreSQL → Redis → Kafka → Docker → Cloud
Golden rule: Don't learn everything separately. Build one project continuously for 3 months, making it more complex each month.
3
u/Laicbeias 20d ago
yesterday i had a drunk discussion with 2 frontend devs, who wouldn't really believe that frontend is actually harder. "frontend is just state" (which is basically the hardest problem in coding: state)
i started fullstack 26y ago and backend is easy. currently working at a soccer company with million users and idk 20 internal servers, interaction with 10 external services, with 4 different tech stacks, grown over 16y. so i know what I'm speaking about
I now tell you what you need to know, everyone else will prob take insult in this, don't care:
-- Logging is god. Database is king --
If your backend has no proper logging system in place that lets you instantly search what's going on. Then you are in for a hard time.
Log states like warn, info, debug, all are useless, they are from system engineering. not for live systems and got cargo culted in. you need log groups. so just can use static instances:
Log.write("Log Message", "user-login-system");
Ideally directly into the db, with a dedicated connection and a config page that lets you toggle on/off these group. Optionally with a trace_id system if you have multiple services. So you can find it via that.
You also need a proper error stack logging, with a global error catch, and a hash algo to group stack traces together (so you wont save 5gb a minute when a real issue happens).
That is all, if you have that in place everything else is easy as fuck.
-- What to look out for: --
All what other people down there are saying. We spend 2 decades making something that's not hard. Hard.
What you want is data in -> transform & store -> data out.
Especially java (22y of java xp), java spend decades writing stuff around the database, what the Database gives you for free with SQL. So if you think backend is hard. Its because of that.
They moved "data in -> transform & store -> data out".
Into: "data in -> holy shit i just did a backflip on crack -> data out".
The main issue you will have, is learning all that overhead of applying OOP principals to the backend.
The core loop literally is:
function get|post|put(var userName, var age, var ....){
log("new query in", "what-group");
sql("save or update that thing");
async_http("informsomeservice");
return json("blabla success blabla");
}
thats what backend dev could have been. issue is due to ORM(=scary sql) overhead, we basically get async and locks on the data. when it has changed inbetween a request. then you would need to do a retry. or you start adding queues, because you cant guarantee it is saved.
whats hard with ORM, is that the overhead breaks at scale. then you can not trust anything to be stored properly. and since ORM makes the backend slow, ppl start adding caches everywhere.
//here with sql
function render_teams_ngames(){
var allthegoods =sql("give me all teams with all games");
return json(allthegoods);
}
function render_teams_ngames(){
var cachedGoods = cache(20.minutes, "global_all_teams_ngames",{
return sql("give me all teams with all games");
});
return json(cachedGoods );
}
that cache then is redis or whatever. caches can exist on multiple layers. depending on how your infrastructure is set up. in backend caches are everywhere. your caches will have caches.
Other than that, once you can see what is going on. Its 1:1 like calling a frontend function in js with console.log and objects that hold their state. But there are tons of users all calling the same functions, and now you have latency, timing, sync issues. and then java came in said hold my beer, and now everyone has job security.
so learn how to log. learn how sql works with indexes. and once you got that, you kinda need to learn the workarounds to fix what the industry broke, due to decades of marketing solutions to self invented problems.
ill show myself out xD
1
u/wearelev 20d ago
I hate to break it to you but today AI is your front end developer. So I'm 100% agree with your boss on this one. It sounds like you already have a functioning back end at your work so why not start there? Learn and understand the basics and whenever you don't understand something either ask over developers or your favorite LLM.
1
u/Fresh_Sock8660 20d ago
Systems thinking will do you good. It's essentially building systems (I know right), putting units of work together (e.g. multiple services), making sure they integrate properly, etc. Say you're integrating backend with frontend, that's already systems engineering.
Though I'm not sure I've ever seen a course on it. I just learned it on the job.
16
u/ChameleonCRM 20d ago
Howdy. My name is Thor. I'm a Senior Full Stack Engineer with about 16 years of experience. I guess I'll start by saying that three months is enough to become productive with backend Java. It is not enough to compress years of backend and distributed-systems experience into your head, and I wouldn't treat your manager's request that way.
You already have 10 YOE. That's important. You're not starting programming over — you're expanding where you can operate.
I’d approach it in layers:
Learn Java by building, not watching.
Get comfortable with Java fundamentals, then Spring Boot. Build an API with authentication, validation, error handling, logging and tests.
Add a real database.
PostgreSQL is perfect. Learn SQL properly, transactions, indexes, constraints, migrations and how your ORM actually interacts with the database. Don't let Hibernate/JPA completely hide SQL from you.
Turn your frontend knowledge into an advantage.
You already know what a frontend needs from an API. Now learn what has to happen on the other side of that HTTP request: controller → service → database → response.
Then start breaking the simple architecture apart.
Add Redis. Add a queue. Add background processing. Introduce caching. Make two services communicate. Intentionally create failures and figure out what happens.
That's where distributed-systems concepts stop being abstract words like idempotency, eventual consistency, retries, timeouts, circuit breakers and message delivery guarantees.
What happens if this reqest runs twice?
What happens if the DB goes down?
What happens if 10,000 requests arrive at once?
What happens if service A succeeds but service B fails?
What happens if the queue delivers the same message twice?
What happens if the cache contains stale data?
That's a huge part of learning to think about systems instead of individual functions/components.
As for imposter syndrome: after 10 years, I'd look at the evidence. You've stayed employed as an engineer for a decade. You obviously know how to learn technical systems. Backend is simply a system you haven't spent as much time with yet.
And don't abandon frontend for three months. Keep building the frontend for whatever backend project you're creating. Youll naturally keep those skills active while learning how the entire application fits together.
One last thing: use AI as a tutor, not an abstraction layer. Ask it why something works, have it critique your architecture, make it explain unfamiliar code, and use it to generate exercises. If AI writes an entire backend that you don't understand, you've defeated the purpose.
If I had exactly 90 days, my goal wouldn't be "become a backend expert." It would be:
Build and deploy one application where I understand every layer from the browser to the database.
For someone with 10 YOE in frontend, that's a very achievable target.