Career-transition advice often ends with some version of “believe in yourself.” That may be emotionally welcome, but it does not answer the question sitting in front of you:
Should I spend the next month learning more, applying for roles, building a project, or staying where I am?
The tension is not simply fear versus courage. You are being asked to make a consequential decision with incomplete evidence. Waiting for confidence does not fix that problem, because confidence is not a prerequisite you can reliably complete.
A better target is decision readiness: enough evidence to choose the next reversible step.
This tutorial builds a 14-day review loop using a GitHub repository, a small decision record, one working artifact, and feedback from another person. It will not decide your entire career. It will help you decide what to do next without turning networking into a request for permission.
The output of the loop
At the end of 14 days, you should have:
- One narrow career hypothesis.
- One artifact produced under a realistic constraint.
- One or more structured external observations.
- A written decision: continue, adjust, pause, or stop.
Notice what is absent: “Become certain that software is my destiny.”
Your decision might be as small as:
- Apply to three junior backend roles.
- Spend another sprint improving deployment skills.
- Test data engineering instead of frontend development.
- Keep the current job while running a second experiment.
- Stop pursuing this path because the daily work does not fit.
All of those are valid outcomes. The loop is designed to produce information, not a predetermined success story.
Step 1: Create a transition lab
Create a private GitHub repository if your notes contain employer, salary, or personal information. A public repository is useful only when you intentionally want the artifact to become part of your portfolio.
Use this structure:
transition-lab/
├── README.md
├── decisions/
│ └── 001-test-backend-work.md
├── evidence/
│ ├── job-sample.md
│ └── feedback.md
├── artifact/
└── .github/
├── ISSUE_TEMPLATE/
│ └── review.yml
└── workflows/
└── open-review.yml
Enter fullscreen mode Exit fullscreen mode
The repository is not a diary. It is an experiment log. Store observations that can change a decision, rather than every feeling or tutorial completed.
Step 2: Write a falsifiable career hypothesis
Create decisions/001-test-backend-work.md:
---
id: D-001
status: active
started: 2026-07-27
deadline: 2026-08-10
reversible: true
reviewer: unassigned
---
# Test whether backend application work is a useful next direction
## Hypothesis
I can build and explain a small HTTP service under a two-week constraint,
and I remain interested after debugging, testing, and deployment—not only
while following tutorials.
## Artifact
A deployed API with persistence, validation, tests, and a short README.
## Evidence I will collect
- Whether I can complete one vertical slice without copying a full tutorial
- Problems I can and cannot debug independently
- Review comments about correctness and maintainability
- Three role descriptions that request overlapping skills
- My reaction to the ordinary work: testing, logs, errors, and documentation
## Decision rule
- Continue: the work remains interesting and the largest gaps look trainable
- Adjust: I like part of the work, but the target role or learning plan is wrong
- Pause: current time or financial constraints make another sprint impractical
- Stop: the routine work is a poor fit, even when I can perform it
## Next decision
Choose one action that requires no more than four additional weeks.
Enter fullscreen mode Exit fullscreen mode
The wording matters. “Can I become a developer?” is too broad to test. “Can I build, debug, and explain this service?” produces observable evidence.
Do not use a reviewer’s opinion as the sole decision rule. A reviewer can inspect your artifact, but cannot determine your finances, risk tolerance, preferred working conditions, or interest.
Step 3: Build a job sample, not a showcase project
A showcase project tries to look impressive. A job sample reproduces a small piece of the work you are considering.
If you are testing backend development, include boring operational tasks:
- Input validation
- A database migration
- One integration test
- Error handling
- Setup documentation
- Deployment or a documented deployment plan
If you are testing frontend development, include accessibility, loading states, error states, and a small component test. For data work, include data cleaning, assumptions, validation, and a reproducible pipeline.
Time-box the artifact before choosing features:
Time budget: 8 hours across 14 days
Required: one complete vertical slice
Optional: authentication, visual polish, extra endpoints
Explicitly excluded: mobile client, billing, complex infrastructure
Enter fullscreen mode Exit fullscreen mode
This protects the experiment from a common failure mode: spending six weeks adding features because finishing would force a decision.
Step 4: Ask for observation, not reassurance
“Do you think I can work in tech?” places an impossible burden on another person. Ask questions tied to the artifact instead:
Context: I am testing whether backend work is a sensible next direction.
Artifact: <repository or deployment link>
Time request: 20 minutes before August 10.
Could you answer these two questions?
1. What is the first engineering weakness that would block this from being maintained?
2. Which skill gap should I test next rather than merely read about?
A brief response is useful, and it is completely fine to decline.
Enter fullscreen mode Exit fullscreen mode
This is networking as a bounded exchange, not a disguised request for a job or lifelong mentorship.
Create .github/ISSUE_TEMPLATE/review.yml so feedback arrives in a comparable format:
name: Artifact review
description: Record evidence for a transition decision
title: "Review: "
labels:
- transition-review
body:
- type: input
id: artifact
attributes:
label: Artifact
placeholder: Link to the code, demo, or document
validations:
required: true
- type: textarea
id: observation
attributes:
label: Observation
description: What did you see in the artifact?
validations:
required: true
- type: textarea
id: impact
attributes:
label: Why it matters
description: Explain the practical consequence of the observation.
validations:
required: true
- type: textarea
id: next-test
attributes:
label: Suggested next test
description: Propose a task that could confirm or challenge this feedback.
validations:
required: true
- type: dropdown
id: confidence
attributes:
label: Confidence
options:
- Low — based on limited context
- Medium — likely, but needs another test
- High — directly demonstrated by the artifact
validations:
required: true
Enter fullscreen mode Exit fullscreen mode
There is one indentation typo to avoid when copying YAML: description must align with name, not have a leading space. The valid opening is:
name: Artifact review
description: Record evidence for a transition decision
Enter fullscreen mode Exit fullscreen mode
Separating observation, impact, and next test reduces vague comments such as “looks good” or “you need more experience.” The confidence field also reminds both sides that a short review has limited scope.
Step 5: Make the review happen without relying on memory
A scheduled GitHub Action can open one review issue near the end of the experiment. It first checks for an existing open issue to avoid duplicates.
Create .github/workflows/open-review.yml:
name: Open transition review
on:
schedule:
- cron: "0 9 * * 1"
workflow_dispatch:
permissions:
issues: write
contents: read
jobs:
open-review:
runs-on: ubuntu-latest
steps:
- name: Create review issue when none is open
uses: actions/github-script@v7
with:
script: |
const { owner, repo } = context.repo;
const label = "transition-review";
const { data: issues } = await github.rest.issues.listForRepo({
owner,
repo,
state: "open",
labels: label
});
if (issues.length > 0) {
core.info("An open transition review already exists.");
return;
}
await github.rest.issues.create({
owner,
repo,
title: "Weekly transition evidence review",
labels: [label],
body: [
"## Decision under review",
"Link to the active decision record.",
"",
"## Artifact shipped",
"What can another person inspect?",
"",
"## Evidence that changed my view",
"List observations, not hours studied.",
"",
"## Missing evidence",
"What remains uncertain?",
"",
"## Next reversible decision",
"Continue, adjust, pause, or stop—and name the next action."
].join("\n")
});
Enter fullscreen mode Exit fullscreen mode
Scheduled workflows use UTC, can be delayed, and may be disabled in inactive repositories. Treat the Action as a reminder rather than critical infrastructure. You can always trigger it manually from the Actions tab.
Step 6: Hold a 25-minute evidence review
Use the same agenda whether the reviewer joins live or responds asynchronously:
Minutes Activity 0–5 Restate the decision and constraints 5–12 Demonstrate the artifact, including one failure path 12–18 Reviewer gives observations and asks questions 18–22 Separate demonstrated gaps from assumptions 22–25 Write the next reversible actionThe final action must have an owner and a date:
Decision: Adjust
Owner: me
Due: 2026-08-24
Action: Add one integration test and deploy the service, then apply to
three roles where the remaining requirements substantially overlap.
Enter fullscreen mode Exit fullscreen mode
Avoid ending with “keep learning.” Name what will be built, submitted, compared, or discussed.
Optional: collect feedback while someone is using the artifact
Repository reviews work well for code, but a deployed application can reveal a different class of evidence. A visitor may encounter confusing behavior and leave before opening a GitHub issue.
The general solution is to place a lightweight contact path inside the artifact and route messages somewhere you already check. Keep it optional, publish realistic availability, and copy decision-relevant observations into the repository. Chat should be an intake surface, not the permanent evidence store.
If you are operating the project as a maker or founder, Knocket is one implementation option. It provides a shareable contact page and an embeddable live-chat widget that can be installed with a script tag without a custom backend. Visitors do not need an account to start a chat. Messages can be routed to Telegram, and a quoted Telegram reply can be delivered back to the website visitor.
A minimal placement could look like this:
<main>
<!-- Your project UI -->
</main>
<!-- Add the installation script generated for your contact widget here. -->
Enter fullscreen mode Exit fullscreen mode
Use founder-led live chat only when you can answer without creating an implied always-online support promise. For a career experiment, a label such as “Found a confusing behavior? Leave a message” is more accurate than “Live support” if replies may be delayed.
Regardless of the tool, transfer useful evidence into evidence/feedback.md:
## Observation F-003
- Source: in-product conversation
- Context: visitor attempted the primary workflow on mobile
- Observed problem: validation error did not identify the invalid field
- Decision relevance: demonstrates an accessibility and error-design gap
- Next test: add field-level errors and test keyboard/screen-reader behavior
- Personal data retained: none
Enter fullscreen mode Exit fullscreen mode
Do not paste entire private conversations into a portfolio repository. Keep the minimum observation needed for the decision, remove personal information, and ask permission before publishing someone’s words.
Failure modes that distort the decision
Collecting praise instead of evidence
Friends may be supportive without being able to evaluate the work. Appreciation is valuable, but do not record encouragement as technical validation.
Correction: Ask for an observation tied to code, behavior, documentation, or a role requirement.
Choosing only irreversible next steps
“Quit my job and study full-time” combines financial risk, identity, and learning into one decision.
Correction: test smaller steps first: a two-week artifact, an informational conversation, a real application, or a part-time course.
Treating one reviewer as the market
A senior engineer may reject a pattern that another team commonly uses. A recruiter may understand hiring filters but not code quality.
Correction: label the scope of each source. Combine artifact feedback with actual role descriptions and your own constraints.
Turning feedback into gatekeeping
“You are not ready” is a conclusion without an operational definition.
Correction: ask what observable behavior is missing and what small task would demonstrate it.
Staying in preparation mode
Tutorial completion feels measurable, so it can replace exposure to evaluation.
Correction: every sprint must produce something another person can inspect or a real-world action such as an application.
Making chat the system of record
Useful comments disappear in chat history, while emotional comments receive disproportionate attention.
Correction: extract concise observations into the decision repository and record how each one affects the next test.
Waiting indefinitely for a reviewer
No response can feel like a verdict when it is usually just no response.
Correction: set a deadline, make declining easy, and proceed with a self-review if nobody is available. Reviewer availability is not evidence about your potential.
Verification checklist
Before closing the 14-day loop, verify that:
- [ ] The hypothesis tests a kind of work, not your worth as a person.
- [ ] The artifact includes at least one ordinary, unglamorous job task.
- [ ] The time budget and excluded scope were written in advance.
- [ ] Feedback distinguishes observations from conclusions.
- [ ] Private or identifying information is not stored unnecessarily.
- [ ] A reviewer’s opinion is not being treated as permission.
- [ ] The final decision is continue, adjust, pause, or stop.
- [ ] The next action has an owner, scope, and date.
- [ ] The next step is reversible enough for your current constraints.
The practical response to career-change fear is not to eliminate it before acting. It is to reduce the size of the decision, expose a realistic sample of the work, and preserve what you learn.
After 14 days, you may still feel uncertain. The difference is that your next decision can be based on an artifact, explicit constraints, and inspectable feedback rather than on whichever story or anxiety was most persuasive that day.
Disclosure: I work on Knocket, so treat it as one implementation example rather than a neutral recommendation.
답글 남기기