A 12-Week Plan for Changing Developer Jobs: Portfolio, Resume, Coding Tests and Offer Negotiation
Key takeaways
A practical guide for developers preparing for job changes after resignation. Presents a 3-month roadmap covering portfolio preparation, resume writing, technical interview preparation, coding tests, and salary negotiation based on real experiences.
Introduction
The process of deciding to resign and looking for a new company is both exciting and daunting. What people preparing for their first job change lose most is time: they rewrite the resume again and again without deciding what to do first, and only after a few failed interviews do they see what they should have prepared. Especially, job hunting after resignation is different from job hunting while employed. You have time flexibility but greater psychological pressure, and there’s burden about the employment gap. However, with proper preparation, you can actually seize better opportunities. In this article, I’ve organized a practical roadmap to get hired at your desired company within 3 months after resignation, organized by week so you can see what to prepare first.
Week 1: Rest and Direction Setting
Recovering from Burnout
Take 1-2 weeks to rest properly right after resignation. Starting preparation the day after you leave feels productive, but when you are burned out you cannot concentrate, and it shows in interviews as a lack of energy. Recommended Activities:
- Catch up on sleep
- Light exercise (walking, running)
- Read tech blogs you’ve been interested in (casually)
- Meet friends and chat
Setting Job Change Direction
After resting, clearly define what you want.
// Job change goal checklist
type JobGoal struct {
// Priority (1-5 points)
Salary int // Salary (how important?)
Technology int // Tech stack (want latest tech?)
WorkLifeBalance int // Work-life balance (no overtime?)
Culture int // Company culture (horizontal? autonomous?)
Growth int // Growth opportunity (lots to learn?)
Stability int // Stability (large corp? startup?)
}
// Example: My priorities
myGoal := JobGoal{
Salary: 4, // Important but not top priority
Technology: 5, // Latest tech stack most important
WorkLifeBalance: 3, // Somewhat important
Culture: 4, // Prefer horizontal culture
Growth: 5, // Growth opportunity very important
Stability: 2, // Stability less important
}
Having these priorities set will keep you from wavering when choosing companies. A common regret is choosing on salary alone and discovering a legacy stack or a culture that does not fit, which often leads to another move within a year.
Creating Target Company List
Create a list of 20-30 companies. Too few means no options, too many makes preparation scattered.
How to Find Companies:
- Wanted, Rocketpunch, Programmers job postings
- LinkedIn “Jobs” tab
- Directly visit career pages of services you’re interested in
- Developer communities (Blind, Disquiet) recommendations
Week 2-3: Portfolio Refinement
Organizing GitHub Profile
Interviewers check GitHub first. Questions like “I see on GitHub you’ve been studying Go recently?” are common, so what is pinned there becomes part of the conversation.
Checklist:
- Add profile photo (professional feel)
- Write bio (one-line identity)
- Create README.md (self-introduction + tech stack)
- Set pinned repositories (3-4 representative projects)
- Fill contribution graph (last 3 months activity) Pinned Project Selection Criteria:
- High-quality projects (README, tests, documentation)
- Latest tech stack (similar to target companies’ tech)
- Practical projects (solving real problems rather than toy projects)
Creating Representative Projects
If you have time, create 1-2 new projects. A project built during the job search is fine, as long as you can explain the decisions in it (why WebSocket, how you handle reconnects, what you measured). Project Ideas:
- REST API server (Express, Go Gin, FastAPI)
- Real-time chat (WebSocket, Redis)
- Data pipeline (Kafka, Airflow)
- Crawler + Dashboard (Puppeteer, React)
- CLI tool (Go, Rust) What’s Important:
- Code quality (linter, formatter, tests)
- README writing (installation, execution, architecture explanation)
- Commit messages (Conventional Commits)
- Branch strategy (feature, develop, main)
# Real-time Chat Server
## Tech Stack
- Backend: Go (Gin, WebSocket)
- Database: PostgreSQL, Redis
- Infrastructure: Docker, Kubernetes
## Key Features
- Real-time message transmission (WebSocket)
- Message persistence (PostgreSQL)
- Online user management (Redis)
- Load testing (10,000 concurrent connections)
## Architecture
[Architecture diagram image]
## How to Run
\`\`\`bash
docker-compose up -d
go run main.go
\`\`\`
## Performance Optimization
- Server-to-server message broadcast with Redis Pub/Sub
- Connection pool optimization
- Message batch processing
Week 4-5: Resume Writing and Applications
Resume Writing Essentials
Put only the essentials on 1 page. Interviewers skim resumes in 30 seconds. Structure (Recommended):
1. Name, contact, GitHub, blog
2. Brief introduction (2-3 lines)
3. Tech stack (only what you're proficient in)
4. Experience (most recent first, project-focused)
5. Education (briefly)
Experience Writing Tips
Before (Bad Example):
- Backend development
- API development and maintenance
- Bug fixes
After (Good Example):
- Payment API performance improvement: Response time 500ms → 50ms (10x improvement)
* Introduced Redis caching, optimized DB queries (solved N+1 problem)
* Stabilized processing of 1 billion KRW daily transactions
- Built real-time notification system (WebSocket, Redis Pub/Sub)
* Handled 10,000 concurrent users
* Achieved message delivery latency under 100ms
- Legacy code refactoring: Test coverage 0% → 80%
* Deployment time reduced from 30 min → 5 min
* Production bugs reduced from 10/month → 2/month
Key Points:
- Prove with numbers (performance, scale, results)
- Specify tech stack (Redis, WebSocket)
- Business impact (transaction volume, user count)
Application Strategy
Apply to 5-10 places simultaneously. Applying one at a time takes too long. Application Priority:
- Priority 1 (3-5 places): Companies you really want to join
- Priority 2 (5-7 places): Decent companies
- Priority 3 (5-10 places): For interview practice Tip: Interview with Priority 3 companies first. It’s advantageous to interview with Priority 1 companies after gaining interview experience.
Week 6-8: Coding Test Preparation
Efficient Preparation Method
2-3 hours a day for 3 weeks is enough. Most coding tests reuse a small set of patterns, so the key is focusing on the frequently appearing ones rather than trying to cover everything.
Essential Algorithms (Priority Order)
# 1. HashMap (most common)
# Problem: Two Sum
def twoSum(nums, target):
seen = {}
for i, num in enumerate(nums):
complement = target - num
if complement in seen:
return [seen[complement], i]
seen[num] = i
return []
# 2. Two Pointers
# Problem: Two sum in sorted array
def twoSumSorted(nums, target):
left, right = 0, len(nums) - 1
while left < right:
current = nums[left] + nums[right]
if current == target:
return [left, right]
elif current < target:
left += 1
else:
right -= 1
return []
# 3. Sliding Window
# Problem: Maximum subarray of length k
def maxSubArray(nums, k):
max_sum = sum(nums[:k])
current_sum = max_sum
for i in range(k, len(nums)):
current_sum += nums[i] - nums[i-k]
max_sum = max(max_sum, current_sum)
return max_sum
Practical Tips
Time Allocation:
- Week 1: Arrays, HashMap, Strings (basics)
- Week 2: Two Pointers, Sliding Window, Stack/Queue
- Week 3: DFS/BFS, DP (basic), Binary Search Platform Recommendations:
- Baekjoon: Korean companies (Naver, Kakao)
- LeetCode: Foreign companies (Google, Amazon)
- Programmers: SMEs, Startups Daily Routine:
09:00-10:00 2 easy problems (warm-up)
10:00-11:30 1-2 medium difficulty
14:00-15:00 1 hard problem (just attempt)
Evening Review wrong problems
Week 9-10: Technical Interview Preparation
Common Question Types
These are the question types that come up most often.
1. Project Experience
Question: “Explain the most difficult technical problem you faced and how you solved it.” Answer Structure (STAR):
- Situation: Describe the situation
- Task: Your role
- Action: Specific solution method
- Result: Results (with numbers) Example Answer:
[Situation]
As traffic increased, the payment API response time exceeded 500ms,
leading to increased customer complaints.
[Task]
As a backend developer, I was responsible for performance improvement.
[Action]
1. Identified bottleneck through profiling (DB queries took 80%)
2. Found N+1 query problem → Solved with JOIN
3. Cached frequently queried data in Redis (TTL 5 min)
4. Validated with load testing (Apache JMeter)
[Result]
- Response time: 500ms → 50ms (10x improvement)
- DB load: 70% reduction
- Stably processed 1 billion KRW daily transactions
2. Technical Depth Questions
Question: “Explain the difference between HTTP and HTTPS.” Bad Answer: “HTTPS has better security.” Good Answer:
HTTP is plaintext communication, vulnerable to man-in-the-middle attacks.
HTTPS encrypts with TLS/SSL and guarantees 3 things:
1. Confidentiality: Data encryption (AES-256, etc.)
2. Integrity: Prevents data tampering (HMAC)
3. Authentication: Server identity verification (certificates)
In practice, we get free certificates from Let's Encrypt,
configure SSL in Nginx, and set HSTS headers to force HTTPS redirection.
Tip: Explain in order: concept → how it works → practical experience.
3. Troubleshooting Questions
Question: “How do you respond when a production incident occurs?”
# Incident response process
def handle_production_incident():
# 1. Immediate response (within 5 min)
check_monitoring_dashboard() # Grafana, Datadog
check_error_logs() # Sentry, CloudWatch
check_recent_deployments() # Check recent deploys
# 2. Temporary measures (within 10 min)
if is_critical():
rollback_deployment() # Rollback to previous version
notify_team() # Notify team
# 3. Root cause analysis (within 1 hour)
analyze_logs()
reproduce_locally()
identify_root_cause()
# 4. Permanent fix (same day)
fix_bug()
add_tests()
deploy_fix()
# 5. Post-mortem (within 3 days)
write_postmortem()
improve_monitoring()
prevent_recurrence()
Example answer:
"I got a call at 2 AM because the payment API was down.
Looking at monitoring, the DB connection pool was exhausted,
and I found a bug in recently deployed code that wasn't properly returning connections.
I immediately rolled back to the previous version and restored service in 5 minutes,
then fixed the bug the next day and added connection monitoring alerts.
The same problem hasn't occurred since."
Week 11-12: Interviews and Negotiation
Interview Day Tips
30 Minutes Before Interview:
- Re-read company homepage, tech blog
- Re-read your resume (anticipate questions)
- Drink a glass of water (relax tension) During Interview:
- For questions you don’t know, honestly say “I’m not sure” (don’t lie)
- Understand the intent of questions (if stuck, confirm “Do you mean this?”)
- For whiteboard coding, explain your thought process out loud After Interview:
- Thank you email same evening (optional but good impression)
- Record interview questions (prepare for next interview)
Salary Negotiation
Negotiation Timing: When you receive an offer after the final interview Pre-negotiation Preparation:
- Research market salary (Wanted, Rocketpunch, Blind)
- Your current salary + desired increase rate
- Minimum acceptable amount (reject if lower) Negotiation Script Examples:
[When offered amount is low]
"Thank you for the offer.
Considering my experience and tech stack,
I understand the market average is around X.
Would it be possible to adjust to around Y?"
[When you have another offer]
"I received an offer of X from another company,
but I prefer your company.
Could you match a similar level?"
[Salary instead of stock options]
"I prefer increasing base salary over stock options.
Would it be possible to adjust stock options to salary?"
Negotiation Cautions:
- Don’t ask too high (within market rate +20%)
- Not aggressive (cooperative attitude)
- Suggest alternatives (if not salary, remote work, education budget, etc.)
Practical Tips
Interview Preparation Checklist
## Day Before Technical Interview
- [ ] Re-read my project code
- [ ] Skim official docs of frequently used tech stack
- [ ] Read company tech blog
- [ ] Check expected questions list
- [ ] Prepare clothes (business casual)
- [ ] Sleep early (at least 7 hours)
## Interview Day
- [ ] Arrive 30 minutes early
- [ ] Bring laptop, charger (for assignment interviews)
- [ ] 2 printed copies of resume
- [ ] Business cards (if you have)
- [ ] Questions list (for reverse questions)
## After Interview
- [ ] Thank you email (optional)
- [ ] Record interview questions
- [ ] Review weak areas
Common Mistakes
1. Lying on Resume
❌ "Proficient in React" (actually only watched tutorial)
✅ "React basics (TodoList project experience)"
2. Deciding Based Only on Salary
❌ Joined legacy company for 10M KRW more
→ Changed jobs again after 6 months (time wasted)
✅ Choose growth-enabling company even with slightly lower salary
→ Better opportunities after 1 year with improved skills
3. Pretending to Know in Interviews
❌ "Kubernetes? Yes, I know it well!" (actually don't know)
→ Can't answer deep questions → Loss of trust
✅ "I've used Docker but not Kubernetes yet.
However, I'm very interested and studying it."
Handling Employment Gap
Under 3 months: No problem. Just say “job hunting preparation period.” 3-6 months: Need to explain what you did during this time
- “Learning new tech stack (project link)”
- “Open source contributions (PR link)”
- “Personal project development (GitHub link)” Over 6 months: Explain honestly
- “Needed rest due to burnout”
- “Needed time for family matters”
- “Attempted startup but closed it” Important: Show that you weren’t completely idle during the gap. GitHub commits, blog posts, online course certificates, etc.
When You Receive Multiple Offers
Create Comparison Table:
| Item | Company A | Company B | Company C | Weight |
|------|-----------|-----------|-----------|--------|
| Salary | 7000 | 8000 | 7500 | x2 |
| Tech Stack | Go, K8s | Java, Spring | Python, Django | x3 |
| Work-Life | 9-6 | 10-7 | 9-6 | x2 |
| Growth | High | Medium | High | x3 |
| Commute | 30min | 1hr | Remote | x1 |
| Team Culture | Good | Average | Good | x2 |
Total: A(85), B(72), C(91) → Choose C
Check Before Deciding:
- Think about it for 3 days
- Consult with trusted senior/mentor
- Write pros and cons list
- Intuition matters too (feeling during interview)
Truth About Job Changes from Experience
Good Job Change vs Bad Job Change
Good Job Change (My 2nd change):
- Tech stack: Spring → Go + Kubernetes (desired tech)
- Salary: 20% increase
- Work-life: Improved (overtime 3x/week → almost none)
- Growth: Promoted to senior in 1 year Bad Job Change (My 1st change):
- Salary: 30% increase (good)
- Tech stack: Legacy (PHP 5.6, jQuery)
- Work-life: Worsened (increased overtime)
- Result: Changed jobs again after 6 months Lesson: Prioritize growth opportunity over salary. When skills improve, salary naturally follows.
Adaptation Tips After Job Change
First 3 Months:
- Ask many questions (it’s okay to not know)
- Actively participate in code reviews
- Understand team culture (lunch, meeting style)
- Create small achievements (bug fixes, documentation) After 6 Months:
- Proactively propose projects
- Tech sharing (internal seminars)
- Mentoring (help juniors)
Timeline Summary
| Week | Activity | Time Investment |
|------|----------|-----------------|
| 1 | Rest, direction setting | 1-2 hours/day |
| 2-3 | Portfolio refinement | 4-6 hours/day |
| 4-5 | Resume writing, applications | 3-4 hours/day |
| 6-8 | Coding test preparation | 2-3 hours/day |
| 9-10 | Technical interview prep | 3-4 hours/day |
| 11-12 | Interviews, negotiation | 2-3 interviews/week |
Recommended Resources
Coding Tests
- Baekjoon - Korean companies
- LeetCode - Foreign companies
- Programmers - SMEs
Technical Interviews
Salary Information
What to do after each interview, including the rejections
Several rejections before an offer are normal, and the twelve-week plan above assumes some. What changes the outcome is what you do in the hour after each interview: write down every question you could not answer well, what you actually said, and what a good answer would have contained. Most people find the same two or three gaps repeating — a system design trade-off they cannot explain, a project they describe in terms of tasks instead of decisions and results — and fixing those before the next interview is worth more than another week of general coding-test practice.
If you reach the interview weeks with no interviews booked, the problem is upstream: go back to the resume and portfolio weeks rather than applying to more companies with the same materials.
Related Articles
Frequently Asked Questions (FAQ)
Q. If I have two offers, should I simply take the one with the higher salary?
A. Not automatically. In this guide, the job change with the bigger raise (30%) landed on a legacy PHP 5.6 and jQuery stack with more overtime and led to another move within six months, while the one with a smaller raise (20%) brought the desired tech stack, better work-life balance and a senior promotion. Compare the tech stack, workload and growth path along with the number, and if you prefer the lower offer, you can use the other offer to ask for a similar level.