From CSE Graduate to Your First Software Engineering Job
Job, timing and learning are one loop that traps graduates. How to run learning, applications and interview practice in parallel, what to stop learning, how junior technical interviews are structured, how to practise patterns and speak your thinking aloud, plus a twelve week plan and a reflection template.
Tauseef Fayyaz

The three word answer that says a lot
A computer science graduate sent me a short message: "Need to know about future career." When I asked what they were aiming for, they said software engineer. Their top challenges were three words long: job, timing, learning. And the thing they found most difficult right now was giving interviews.
Short messages like this are often the most honest ones. There is no long story because the person is tired, a little anxious, and not sure where to start. So let me do the unpacking for them, and for everyone reading this who recognises the feeling.
Those three words describe one loop that traps a lot of graduates. You need a job, so you apply. Interviews go badly, so you decide you need to learn more first. Learning takes time, so you stop applying. Months pass, the gap grows, and the pressure makes the next interview even harder. Breaking that loop is the whole game.
My honest read
You do not have a knowledge problem as much as a sequencing problem. Most graduates try to learn everything, then apply, then interview. The ones who get hired run all three at once, in small doses, and let each one feed the others.
The second thing: being bad at interviews is normal and fixable. An interview is a performance skill layered on top of a technical skill. Plenty of capable engineers freeze in interviews because they have never practised the performance part. You would not expect to give a good presentation without rehearsing it. Interviews are the same.
Run learning, applying and interviewing in parallel
Here is the shift I want you to make. Instead of phases, think in a weekly mix.
| Activity | Share of your week | Why |
|---|---|---|
| Targeted learning and problem practice | About 40 percent | Builds the base, but capped so it cannot eat everything |
| Building or polishing one project | About 20 percent | Gives you something real to talk about |
| Applications, referrals and outreach | About 25 percent | Keeps the pipeline full so interviews keep arriving |
| Mock interviews and reflection | About 15 percent | Trains the performance skill directly |
If you only do the first row, you will feel busy and stay unemployed. If you only do the third row, you will get interviews and fail them. The mix is the point.
What to learn, and what to stop
Graduates lose months learning things that do not move them closer to a first job. Be ruthless.
Keep learning:
- One programming language well enough to solve problems without looking up syntax
- Core data structures and algorithms, organised by pattern rather than by random problem
- The basics of how the web and databases work: HTTP, REST APIs, SQL, indexes
- Git properly, because you will use it on day one
- One framework in the area you are applying for, with one real project built in it
Stop, for now:
- Switching languages because of a video that says another one is better
- Collecting certificates that nobody asks for
- Advanced topics like distributed systems internals or Kubernetes, unless the roles you apply for demand them
- Solving hundreds of random problems with no structure
If you want a checklist of the basics, The Fundamentals Worth Learning as a Software Engineer covers it, and How to Start Your Career as a Software Engineer gives the bigger picture.
Build an application pipeline, not a pile of applications
Sending hundreds of identical applications through job portals and waiting is the least effective way to get a first job. Think of it as a pipeline with several inputs.
- Referrals. The highest converting channel for most graduates. Reach out to alumni from your university, seniors you studied with, and engineers you have interacted with online. Ask about the team first, then ask whether they would be comfortable referring you.
- LinkedIn, used actively. Apply to roles, but also message the recruiter or hiring manager with two lines about why you fit. Keep your profile aligned with your resume.
- Company career pages directly. Many companies post graduate and junior roles on their own site before they appear anywhere else. Keep a list of 30 to 50 target companies and check them weekly. For companies hiring in Pakistan, the company directory shows how many of them hire and where to apply.
- Local and startup networks. Smaller companies and startups often hire graduates faster and give more responsibility early. Community events and developer groups are where many of these roles are shared first.
- Remote and international roles, where realistic. They exist, but competition is intense and many require experience or work authorisation. Treat them as a bonus channel, not your main plan, for your first role.
Track everything in a simple sheet: company, role, date, channel, status, next action. I explain why this matters in A Job Search Is a Pipeline, Not a Performance, and the mechanics of applying well are in How to Apply for Software Engineering Jobs.
How technical interviews for junior roles are usually structured
Knowing what is coming removes half the fear. The exact process varies by company, but most junior software engineering interviews combine some of these stages.
| Stage | What it looks like | What they are really checking |
|---|---|---|
| Online assessment | Timed coding problems on a platform, sometimes with multiple choice questions | Can you solve standard problems correctly under time pressure |
| Data structures and algorithms round | Live problem solving with an interviewer, often in a shared editor | How you think, communicate and handle hints |
| Practical or machine coding round | Build a small feature or component in a fixed time | Can you write clean, working, organised code |
| Basic system design (sometimes, lighter for juniors) | Talk through how you would design a simple service or app | Do you understand how the pieces of an application fit together |
| Project deep dive | Questions about a project on your resume | Did you actually build it, and do you understand your own decisions |
| Behavioural round | Questions about teamwork, conflict, failure and learning | Will you be good to work with and able to grow |
Notice how many of these rounds are not purely about knowing the answer. They are about thinking out loud, explaining decisions and staying calm. That is exactly the part most graduates never practise.
Practise patterns, not hundreds of problems
Solving 500 random problems feels productive and often is not. Most interview problems are variations on a smaller set of patterns: two pointers, sliding window, hashing, binary search, stacks, BFS and DFS, recursion and backtracking, heaps, and basic dynamic programming.
A better approach:
- Learn one pattern at a time. Understand when it applies and why.
- Solve four or five problems that use it, starting easy.
- If you are stuck for more than 30 to 40 minutes, read the solution, understand it, then solve a similar problem yourself without looking.
- Revisit old problems a week later and solve them again from scratch.
I wrote about recognising patterns in Fifteen Problem Shapes and the Move That Solves Each, and choosing the right structure in Choosing a Data Structure Is Choosing What to Make Cheap. Curated lists such as Blind 75 or NeetCode 150 are good starting sets because they cover the common patterns without hundreds of repeats.
Train the performance part deliberately
This is where the "giving interviews is hardest" problem actually gets solved.
Speak your thinking out loud, every time
When you practise alone, narrate. Say what you understand about the problem, the brute force idea, why it is slow, and what you will try next. It feels strange at first. In a real interview, silence is what makes interviewers nervous, and clear narration earns you hints and partial credit even when you do not finish.
A simple structure to follow in every problem:
- Repeat the problem in your own words and ask clarifying questions
- Walk through a small example by hand
- State a brute force approach and its complexity
- Improve it and explain why the improvement works
- Code it cleanly
- Test it with your example and an edge case
Do mock interviews with peers
Find two or three friends who are also job hunting and interview each other weekly. Take turns being the interviewer. Being the interviewer teaches you a surprising amount about what good answers look like. Free peer mock platforms exist too, but a regular group you trust is often more consistent.
Prepare your stories with STAR
For behavioural questions, prepare five or six stories from university projects, internships, teamwork or even difficult assignments. Structure each one as:
- Situation: the context in one or two sentences
- Task: what you were responsible for
- Action: what you specifically did
- Result: what happened, and what you learned
Good stories to prepare: a technical problem you solved, a time you disagreed with a teammate, a time you failed or missed a deadline, something you learned quickly, and the project you are proudest of.
Handle nerves like a skill, not a character flaw
- Do more interviews, not fewer. Nerves drop with exposure. Early interviews at companies you care less about are valuable practice.
- Before starting, take a slow breath and write the problem down in your own words. It gives your brain a task.
- If you blank, say so calmly: "Let me think about this for a moment." Then go back to a small example.
- Remember the interviewer usually wants you to do well. They need to hire someone.
A twelve week plan while you job hunt
| Weeks | Learning and practice | Project | Applications | Interview practice |
|---|---|---|---|---|
| 1 to 2 | Arrays, strings, hashing, two pointers | Pick one project and define scope | Fix resume and LinkedIn, list 40 target companies | Record yourself solving two problems aloud |
| 3 to 4 | Sliding window, stacks, binary search | Build the core feature | 10 applications a week, 5 referral requests | First peer mock interview |
| 5 to 6 | Linked lists, trees, recursion | Add authentication, database, deployment | Keep the weekly target, follow up on old ones | Weekly mock, write STAR stories |
| 7 to 8 | Graphs, BFS and DFS, heaps | Write a clear README and deploy | Add startups and local companies | Mock plus one practice machine coding task |
| 9 to 10 | Basic dynamic programming, revision of weak patterns | Polish, fix bugs, add tests | Target roles where your project is relevant | Basic system design practice on simple apps |
| 11 to 12 | Timed mixed problem sets | Prepare to explain every decision | Keep pipeline full, chase referrals | Full mock loops, reflect after every real interview |
Adjust the pace to your situation. The point is that every row has something in every column.
A post interview reflection template
After every interview, within an hour, write down the answers to these questions. This single habit turns failed interviews into progress.
- What questions or problems were asked?
- Where did I feel confident?
- Where did I get stuck, and was it knowledge, approach or nerves?
- Did I explain my thinking clearly, or go silent?
- What would I do differently if I got the same question tomorrow?
- What is one thing I will practise this week because of this interview?
After five or six interviews, patterns appear. Maybe you always struggle with trees, or always rush into code without examples. Now you know exactly what to work on.
Common mistakes I see graduates make
- Waiting to feel ready before applying. You will not feel ready. Apply while you prepare.
- Only applying cold. Referrals and direct outreach convert far better for most graduates.
- Memorising solutions. Interviewers change details, and memorised answers fall apart. Understand the pattern.
- Treating every rejection as a verdict. Rejections are mostly noise at the start. Look for patterns across many, not meaning in one.
- Going quiet in interviews. Talk through your thinking, even when unsure.
- Burning out. Rest days are part of the plan. A tired brain performs badly in interviews.
If you remember one thing
Job, timing and learning are not three separate problems. They are one loop, and you break it by doing all three every week in small, steady amounts, then reflecting after every interview. Graduates who do this consistently usually find that interviews get easier long before they feel like experts.
Ask your own question
I collect the questions people send me, anonymised, and answer them in detail in the career questions library. If you are in a similar spot, you will probably find something close to your situation there.
If you want to talk through your own plan, you can book a free 1:1 session with me for career guidance and honest feedback.
Student or want early access to the Sefism member area? Join the waitlist.
Stay in touch
- LinkedIn: my main place for posts on careers, roadmaps and what I learn from mentoring.
- X (Twitter): short, daily takes on software engineering.
- Instagram: a more personal side of the journey.
- Topmate: book a free 1:1 session to talk through your situation.
- Sefism Discord: ask questions and practise with other developers who are job hunting too.
- Sefism YouTube: walkthroughs and talks on careers and engineering.
Cover photo by Vitaly Gariev on Unsplash
Comments (0)
Comments are closed for now.
No comments yet.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.
Hand-picked courses, roadmaps, guides and tools.
Realistically scoped final-year project ideas.
Career questions people ask, answered in full.
Who hires in Pakistan, how they hire, and what it pays.
Where to study computing: admissions, tests and programmes.