← Back to Blog
Deep Dives·Jan 8, 2025·8 min read

Prompt Engineering Is Not a Real Job (But These Techniques Work)

Prompt engineer is a made-up title. But writing effective prompts? That's a real skill. Here's what actually works.

AIProductivityLLMsTips
JV

Jose Viscasillas

January 8, 2025 · 8 min read

Prompt Engineering Is Not a Real Job (But These Techniques Work)

If someone tells you they're a "prompt engineer" making $300k, they're either lying, selling a course, or both.

Prompt engineering as a dedicated role is peak AI hype. It's like calling yourself a "Google Search Specialist" in 2008. Yes, some people are better at searching than others. No, it's not a career.

But here's the thing—writing effective prompts is genuinely useful. The techniques work. You just don't need a job title for them.

Let me show you what actually matters, skip the snake oil, and give you patterns that improve AI output today.

Why "Prompt Engineering" Is Overhyped

The Job Title Problem

LinkedIn is full of "prompt engineers" and "AI whisperers." Most are:

  1. Marketers rebranding themselves
  2. Course sellers monetizing uncertainty
  3. Consultants charging for common sense

The dirty secret? Basic prompting techniques can be learned in an afternoon. The rest is domain expertise—which you already have if you're good at your actual job.

The Complexity Myth

Prompt engineering influencers make it sound like arcane magic:

  • "Use this special token sequence"
  • "Format your prompts in YAML"
  • "My proprietary 47-step framework"

The reality? Most prompt improvement comes from:

  1. Being specific
  2. Giving examples
  3. Structuring output
  4. Iterating

That's it. Four things. The rest is marginal gains and snake oil.

Models Get Better, Tricks Stop Working

Every "advanced technique" has a shelf life. GPT-3 needed elaborate prompting. GPT-4 figured out most things from plain English. Future models will need even less hand-holding.

Investing heavily in prompt tricks is like optimizing for IE6 in 2024.

What Actually Works (No Bullshit)

Here are the techniques that reliably improve output. No frameworks, no acronyms, no paid courses.

1. Be Specific (The Only Rule That Matters)

Bad:

text
Write a function to process data.

Good:

text
Write a TypeScript function that:
- Takes an array of user objects with {id: string, name: string, email: string}
- Filters out users without valid email addresses (must contain @ and domain)
- Returns the remaining users sorted alphabetically by name
- Handles empty arrays by returning []

The good prompt isn't "engineered." It's just specific. Every detail you include reduces ambiguity.

The test: If two reasonable people would interpret your prompt differently, it's not specific enough.

2. Show, Don't Tell (Examples Beat Explanations)

Instead of describing what you want, show it:

text
Convert these product names to URL slugs.

Examples:
"iPhone 15 Pro Max" → "iphone-15-pro-max"
"MacBook Air (M3, 2024)" → "macbook-air-m3-2024"
"USB-C Cable, 2m" → "usb-c-cable-2m"

Now convert:
"AirPods Pro (2nd Generation)"

The AI learns the pattern from examples better than from descriptions. This is called "few-shot prompting" in the literature, but it's just... giving examples.

3. Structure Your Output

If you want formatted output, specify the format:

text
Analyze this error message and respond in this JSON format:
{
  "error_type": "type of error",
  "likely_cause": "probable reason",
  "suggested_fix": "how to resolve it",
  "confidence": "high/medium/low"
}

Error: TypeError: Cannot read properties of undefined (reading 'map')

This gives you:

  • Consistent format across multiple calls
  • Parseable output for automation
  • Forced structure that prevents rambling

4. Set The Role (Sometimes)

Role-setting helps for specific domains:

text
You are a senior security engineer reviewing code for vulnerabilities.
Focus on: SQL injection, XSS, authentication bypasses.
Ignore: Code style, performance optimization, minor issues.

Review this code:
[code]

But don't overthink it. "You are an expert" is often unnecessary—the AI already tries to be competent. Role-setting helps when you need specific focus or expertise framing.

5. Chain of Thought (For Complex Problems)

For multi-step reasoning, ask the AI to show its work:

text
Calculate the total cost of this order, showing your reasoning step by step:

Items:
- 3x Widget A ($24.99 each)
- 2x Widget B ($15.50 each)
- Shipping: $12.99 if under $100, free otherwise
- Tax: 8.5%

Think through this step by step before giving the final answer.

This improves accuracy on math, logic, and multi-step problems. The AI makes fewer errors when it "thinks out loud."

6. Negative Instructions (What NOT To Do)

Sometimes specifying what to avoid is clearer:

text
Explain quantum computing to a high school student.

Don't:
- Use technical jargon without defining it
- Assume knowledge of advanced physics
- Give a university lecture
- Be condescending

Do:
- Use analogies to everyday things
- Keep it under 300 words
- Make it interesting

Constraints focus the output.

Patterns For Common Tasks

Code Generation

text
Write a [language] function that [does what].

Requirements:
- Input: [describe input types and examples]
- Output: [describe output types and examples]
- Edge cases: [list edge cases to handle]
- Constraints: [any limitations or requirements]

Include error handling for [specific cases].
Don't use [any libraries/patterns to avoid].

Debugging

text
This code has a bug. Help me find it.

Expected behavior: [what should happen]
Actual behavior: [what happens instead]
Error message (if any): [paste error]

[paste code]

What's wrong and how do I fix it?

Code Review

text
Review this code for:
1. Bugs and potential runtime errors
2. Security vulnerabilities
3. Performance issues
4. Readability improvements

For each issue, explain:
- What's wrong
- Why it matters
- How to fix it

[paste code]

Explanation

text
Explain [topic] in [X] levels of complexity:

1. Like I'm 5 (analogy/metaphor)
2. Like I'm a beginner programmer
3. Like I'm an experienced developer
4. Technical depth with implementation details

Refactoring

text
Refactor this code to:
- [specific improvement 1]
- [specific improvement 2]

Keep:
- [things that should stay the same]
- Function signatures unchanged
- Same public API

Show me the refactored code with comments explaining key changes.

[paste code]

The Techniques That Don't Work

1. Magic Words

"Please" and "thank you" don't improve output. The AI isn't sentient. It doesn't care about manners.

(I still say please. It's a habit. But it's not a technique.)

2. Threatening The AI

"If you make a mistake, I'll unsubscribe" or "This is very important for my job" don't improve accuracy. These went viral as hacks. They're not.

3. Elaborate Persona Prompts

"You are Professor Archibald von Codemeister, a 47-year veteran of systems programming who speaks only in haiku..."

Just ask for what you want. The elaborate setup doesn't help.

4. Token Optimization

Obsessing over exact wording to save tokens is premature optimization. Tokens are cheap. Clarity is expensive.

5. Jailbreaks for Normal Use

If you're trying to trick the AI into doing something, you're either:

  • Doing something sketchy
  • Fighting the tool instead of using it

Neither is productive.

The Iteration Loop (The Real Skill)

Here's what actually separates good AI users from bad ones: iteration.

text
1. Write initial prompt
2. Get output
3. Identify what's wrong
4. Modify prompt to address issue
5. Repeat until good enough

Most people stop at step 2 and blame the AI. The magic is in 3-5.

Example iteration:

V1: "Write tests for this function" Result: Generic tests, missing edge cases

V2: "Write comprehensive tests for this function including edge cases for null input, empty arrays, and type mismatches" Result: Better coverage, but using wrong test framework

V3: [V2 prompt] + "Use Vitest with TypeScript. Follow AAA pattern (Arrange, Act, Assert)." Result: Good tests, but could be more readable

V4: [V3 prompt] + "Add descriptive test names that explain the expected behavior." Result: Ship it.

Four iterations. Maybe 2 minutes total. Much better than the first attempt.

Building Prompts Into Tools

The best "prompt engineering" is invisible. Build prompts into your tools:

typescript
// In your code review bot
const codeReviewPrompt = (code: string, language: string) => `
Review this ${language} code for:
- Security vulnerabilities (especially SQL injection, XSS)
- Performance issues that would affect production
- Error handling gaps
- Type safety issues

For each issue found, provide:
1. Severity (critical/high/medium/low)
2. Line reference
3. The problem
4. Suggested fix

Code:
\`\`\`${language}
${code}
\`\`\`

Respond in JSON format:
{
  "issues": [
    {
      "severity": "high",
      "line": 15,
      "problem": "...",
      "fix": "..."
    }
  ],
  "summary": "Overall assessment"
}
`;

Now the "prompt engineering" is just product development.

The Bottom Line

Stop calling it prompt engineering. Call it "writing clear instructions" or "communicating effectively with AI."

The techniques that work:

  1. Be specific
  2. Give examples
  3. Structure output
  4. Iterate

The techniques that don't:

  1. Magic words and tricks
  2. Elaborate personas
  3. Threats and manipulation
  4. Over-optimization

The real skill isn't prompt engineering—it's knowing your domain well enough to describe what you need clearly. That's always been valuable. AI just gives it a new application.

And if someone offers to sell you a prompt engineering course for $2,000? Run.

---

Good prompting is clear communication. Clear communication has always been valuable. The rest is marketing.

JV

Written by Jose Viscasillas

Senior Software Engineer building video platforms at ON24. 21 years of coding experience. I write about React, TypeScript, AI, and developer tools.

Recommended Reads

📬

Subscribe to the Newsletter

New articles delivered to your inbox. No spam, unsubscribe anytime.

Join 500+ developers getting weekly insights on React, TypeScript, and building products.