Skip to main content
Alvin QuachFull Stack Developer
HomeProjectsExperienceBlog
HomeProjectsExperienceBlog
alvinquach

Full Stack Developer building systems that respect complexity.

Open to opportunities

Projects

  • All Projects
  • Lacoda Capital Holdings
  • Hoop Almanac
  • SculptQL

Knowledge

  • Blog
  • Experience
  • Interview Prep

Connect

  • Contact
  • LinkedIn
  • GitHub
  • X

Resources

  • Resume
© 2026All rights reserved.
Back to Projects

Kevin Lam Portfolio

Personal brand website for a B2B sales executive transitioning into tech sales

Lead Developer & Mentor
Team of 1
3 weeks
Next.js
TypeScript
TailwindCSS
Tina CMS
Live Site

The Problem

Situation

Kevin Lam, a B2B sales executive with 8+ years of experience, wanted to transition into tech sales and needed a professional online presence to stand out to recruiters. He had an existing WordPress site that was slow and difficult to update, plus an MIS background from San Jose State University. This became a dual opportunity: migrate his portfolio from WordPress to a modern stack while pair programming with him through every feature—giving him both a polished product and renewed technical confidence to discuss in interviews.

My Goal

Migrate Kevin's portfolio from WordPress to Next.js, expanding it with detailed case studies, analytics integration, and a deployment strategy he could maintain. Use pair programming to rebuild his technical fundamentals while integrating Tina CMS—chosen specifically because it doesn't require learning a query language like GROQ or GraphQL, making it easier for Kevin to manage content independently.

My Approach

1

Conducted discovery sessions to understand Kevin's career goals, target audience (tech recruiters), and current site pain points with WordPress

2

Migrated existing content from WordPress, restructuring it for better storytelling and SEO

3

Pair programmed project initialization with Next.js and TypeScript, walking through ecosystem changes since his college days

4

Designed personal brand visual identity collaboratively, teaching component-based thinking in React

5

Built responsive layouts with Tailwind CSS, connecting utility-first CSS to his HTML/CSS background

6

Integrated Tina CMS for content management—no query language needed, just visual editing and Git-backed content that Kevin could manage independently

7

Implemented PostHog for user behavior analytics and Google Analytics for traffic insights

8

Created compelling case studies showcasing his sales achievements with metrics-driven storytelling

9

Set up deployment pipeline on Vercel with preview environments, explaining CI/CD workflows

10

Configured custom domain, SSL, and performance monitoring

11

Built documentation so Kevin could continue maintaining and updating the site independently

12

Supported Kevin through consulting discovery calls and stakeholder negotiations for his sales work

The Outcome

Kevin received 3x more recruiter outreach within first month of launch

Site ranks on first page of Google for 'Kevin Lam sales' and related searches

Kevin regained confidence in technical discussions, able to speak credibly about web technologies in interviews

PageSpeed score of 98 demonstrates technical quality to recruiters viewing source

Kevin can now update content and make minor code changes independently

Project became a talking point in interviews, showcasing Kevin's initiative and technical aptitude

Project Roadmap

MVP, stretch goals, and future vision

Project Roadmap

Development phases and milestones

100%
1/1 complete
1

Portfolio Website

MVP

Personal portfolio website for Kevin Lam

Completed
Website Launch

Complete portfolio website with project showcases

Completed
In Progress
Planned

Interview Questions

Common questions about this project, answered in STAR format

Q1

Tell me about a time you helped someone learn a new skill.

leadership
SSituation
Kevin Lam, a B2B sales professional, wanted to transition to tech sales and needed a portfolio website. He had an MIS degree from San Jose State but hadn't coded in years—his knowledge of C++, HTML, and JavaScript was rusty and the ecosystem had changed dramatically.
TTask
Build Kevin's portfolio site while simultaneously reteaching him modern web development, so he'd have both a polished product and renewed technical credibility for interviews.
AActions
  • →Assessed Kevin's existing knowledge from his MIS background to find anchors—his C++ experience made TypeScript's static typing intuitive
  • →Used pair programming with Kevin driving so he actively coded rather than watched
  • →Drew explicit parallels between his San Jose State coursework and modern concepts
  • →Started with familiar territory (HTML/CSS) before introducing React and Next.js
  • →Celebrated small wins to rebuild confidence
  • →Created personalized documentation so Kevin could maintain the site independently
RResult
Kevin launched a professional portfolio that increased recruiter outreach 3x. More importantly, he regained technical confidence and can now discuss web technologies credibly in tech sales interviews. He maintains the site himself, adding case studies and making updates without assistance.

Key Takeaway: Effective teaching meets people where they are. Kevin wasn't a beginner—he had dormant knowledge from his MIS degree that needed reactivation, not replacement. Connecting new concepts to existing mental models accelerates learning dramatically.

Q2

Describe a project where the process was as important as the outcome.

behavioral
SSituation
Kevin needed a portfolio website to support his career transition to tech sales. But he also wanted to re-engage with his technical background—an MIS degree from San Jose State and years of coding knowledge that had gone unused.
TTask
Deliver a high-quality portfolio website while ensuring the development process rebuilt Kevin's programming skills and confidence.
AActions
  • →Framed the project as a learning journey, not just a deliverable
  • →Pair programmed every feature with Kevin driving
  • →Explained not just 'how' but 'why' for every decision
  • →Let Kevin struggle productively before offering solutions
  • →Conducted retrospectives to adjust teaching approach
  • →Built documentation together so the learning extended beyond our sessions
RResult
The website exceeded quality expectations—PageSpeed 98, first-page Google rankings, 3x recruiter outreach. Kevin can now maintain and extend the site himself, and confidently discusses web technologies in interviews. The project became a talking point demonstrating his initiative.

Key Takeaway: Sometimes the journey matters more than the destination. A website I could have built in a week became a month-long mentorship that delivered lasting value far beyond the final product.

Q3

How do you adapt your communication style for different audiences?

behavioral
SSituation
I was teaching web development to Kevin, a sales executive with an MIS degree from San Jose State who hadn't coded professionally in years. He understood technology conceptually but was rusty on implementation details and unfamiliar with the modern JavaScript ecosystem.
TTask
Explain complex technical concepts in a way that connected to Kevin's existing knowledge and sales-oriented thinking, rather than overwhelming him with jargon.
AActions
  • →Started by understanding Kevin's mental models—what did he remember from his MIS coursework?
  • →Used those memories as anchors: 'TypeScript interfaces are like C++ structs'
  • →Avoided unnecessary jargon, explaining technical terms when important
  • →Leveraged Kevin's sales training—framed decisions as value propositions
  • →Drew diagrams to make abstract concepts visual and concrete
  • →Asked questions to check understanding rather than assuming
RResult
Kevin progressed from 'I haven't coded in years' to independently building and maintaining React components. He can now hold technical conversations with engineering teams, which strengthens his tech sales positioning. The communication patterns I developed working with Kevin have improved how I explain technical concepts to all non-engineering stakeholders.

Key Takeaway: Great communication isn't dumbing things down—it's finding the right translation layer. Kevin was smart; he just needed concepts connected to what he already knew from his MIS background. Everyone has existing knowledge you can build on.

Technical Decisions

Quick answers to 'Why did you choose X?' questions

Q1Why teach Next.js/TypeScript to someone returning to coding rather than simpler tools?

Kevin wanted to speak credibly about technology in tech sales interviews. Learning the current industry standard—not a simplified alternative—gave him relevant talking points. Plus, TypeScript's static typing connected well to his C/C++ background from San Jose State, making it easier to learn than dynamic JavaScript.

Q2How did you structure pair programming sessions for someone rebuilding fundamentals?

Used driver-navigator with Kevin driving most of the time. Started each session reviewing what we'd built previously, explained the goal for the session, then coded together with lots of 'what do you think should happen here?' questions. Ended with Kevin summarizing key concepts. This kept him active rather than passive.

Q3Why use Tina CMS for a personal portfolio instead of hardcoding content?

Two reasons: First, it taught Kevin about headless CMS architecture without requiring him to learn a query language like GROQ or GraphQL—Tina CMS uses a simpler approach where content is stored as Markdown/JSON files in the Git repo. Second, it meant Kevin could update his achievements, add new case studies, and maintain the site without touching code, which was important for long-term independence.

Q4How did you handle the disconnect between Kevin's MIS coursework and modern practices?

Created explicit bridges to his San Jose State background: 'Remember classes in C++? Components are similar—encapsulated, reusable units.' Avoided jargon when possible, and when I used it, immediately explained it. Focused on concepts over syntax—once Kevin understood the 'why', the 'how' followed more easily.

Q5How did you ensure Kevin could maintain the site after the project ended?

Built progressively simpler documentation as we went—not technical docs, but 'how to do X' guides written for Kevin specifically. Had him make real updates during our sessions so the process became familiar. Tina CMS's visual editing mode made this intuitive—Kevin could click directly on content to edit it. Kept the codebase simple enough that Kevin could read and understand it.

Key Trade-offs

Every decision has costs — here's how I thought through them

Teach modern stack (Next.js/TypeScript) vs. simpler tools like WordPress

Gained

  • +Kevin learned industry-relevant technologies he can discuss in interviews
  • +Site performs excellently with PageSpeed 98
  • +Kevin understands modern development workflows and tooling

Gave Up

  • −Longer learning curve than a drag-and-drop builder
  • −Project took more time than a WordPress site would have
  • −Kevin needs to remember more concepts for future maintenance

Why Worth It

Kevin's goal wasn't just a website—it was to re-engage with technology. Learning current best practices made his technical background a talking point rather than a footnote.

Pair program on everything vs. build it for Kevin and explain afterward

Gained

  • +Kevin genuinely understands how his site works
  • +He can make changes and troubleshoot independently
  • +Rebuilt his coding confidence through hands-on practice

Gave Up

  • −Project took 3-4x longer than if I'd built it solo
  • −Some features took multiple attempts as Kevin learned
  • −More coordination needed to align our schedules for pair sessions

Why Worth It

The website was a vehicle for learning, not just a deliverable. Kevin's renewed technical confidence is more valuable than a faster launch.

Custom design vs. using a template or theme

Gained

  • +Kevin learned design principles and component architecture
  • +Site is unique and perfectly tailored to his personal brand
  • +Understanding the structure helps Kevin maintain it

Gave Up

  • −Slower than dropping in a template
  • −More design decisions to make together
  • −Required building components from scratch

Why Worth It

Building from scratch taught Kevin how pieces fit together. Templates hide complexity; we wanted to understand it.

Tina CMS vs. simpler content management (Markdown files, Notion)

Gained

  • +Kevin learned about content modeling and headless architecture
  • +No query language to learn—Tina uses Git-backed content
  • +Visual editing mode makes updates intuitive
  • +Content stored as files in the repo for version control

Gave Up

  • −More setup complexity than flat files
  • −Another system to learn and remember
  • −Slight learning curve for content editing

Why Worth It

Understanding CMS architecture gives Kevin credibility when discussing content platforms with prospects. The learning investment pays dividends in his sales conversations.

Challenges & Solutions

The hardest problems I solved on this project

1Kevin had MIS background from San Jose State but years of gap—modern JavaScript ecosystem was overwhelming

Approach

Started with concepts he knew from his MIS coursework (HTML/CSS, basic programming logic) and built bridges to modern equivalents

Solution

Drew parallels: 'TypeScript interfaces are like the structs you learned in C', 'npm is like package managers you might remember'. Pair programmed everything so he saw concepts in context rather than abstract tutorials

Lesson: Rusty developers aren't beginners—they have mental models to build on. Honor their existing knowledge while updating it.

2No existing brand guidelines or professional photos to work with

Approach

Conducted a mini brand workshop, teaching Kevin about personal branding for tech while gathering design direction

Solution

Created a simple but professional design system together. Used high-quality stock imagery strategically while planning for future professional photos

Lesson: Constraints drive creativity. Limited assets forced us to focus on typography, whitespace, and content quality.

3Balancing Kevin's learning pace with getting a polished product launched

Approach

Identified which parts were best for learning vs. where I should lead to maintain quality and momentum

Solution

Kevin drove on components and content areas where mistakes were recoverable; I led on architecture and critical path items while explaining decisions

Lesson: Mentorship on real projects requires intentional task allocation—not everything is equally suited for learning.

4Presenting Kevin's sales metrics impressively without coming across as boastful

Approach

Drew on Kevin's sales training—he understood the difference between bragging and demonstrating value

Solution

Framed achievements in terms of business impact with specific numbers, letting metrics speak for themselves. Used testimonials to add third-party validation

Lesson: Sales professionals often have better instincts about self-presentation than developers—leverage their expertise.

What I Learned

  • →Developers returning to coding after years away have muscle memory that returns quickly once you find the right anchors
  • →Connecting new concepts to prior knowledge accelerates learning—Kevin's C++ background made TypeScript typing intuitive
  • →Non-technical professionals bring valuable perspectives—Kevin's sales mindset improved how we presented achievements
  • →Pair programming builds both technical skills and teaching abilities on both sides
  • →Migration projects are great learning opportunities because you can compare the old approach to the new
  • →Teaching someone their own portfolio creates personal investment that drives faster learning
  • →Analytics setup is a great teaching moment—it connects code to real business outcomes Kevin understands from sales

Want to discuss this project?

Get in TouchView More Projects