Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vibecoding 101 @ Esade
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Nicolas Grenié
January 22, 2026
Technology
53
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vibecoding 101 @ Esade
Vibecoding masterclass given at Esade on Jan 21 2026 with Esade Entrepreneurship club
Nicolas Grenié
January 22, 2026
More Decks by Nicolas Grenié
See All by Nicolas Grenié
How we turned PMs into vibecoders
picsoung
0
57
Developers are the new buyers: why developer experience matters
picsoung
0
120
The GPT Odyssey: When Code becomes Conversations
picsoung
0
77
Desarrolla un GPT: Lecciones y Aprendizajes
picsoung
0
31
Empowering Customer Success Operations With No-code Flows
picsoung
0
90
How developer relations can boost your partnerships program
picsoung
0
66
Developers love webhooks, you should too
picsoung
0
150
Duct tape of entrepreneurs
picsoung
0
95
API 101, What, Where, When
picsoung
0
93
Other Decks in Technology
See All in Technology
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
110
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
5
1.4k
FDE という解 ― 暗黙知と明示知をつなぐ、伴走型エンジニアリング ―
otanet
0
150
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
950
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
950
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
110
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
650
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
2
630
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
1.9k
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
520
RAG を使わないという選択肢
tatsutaka
1
220
Bedrock AgentCore RuntimeでAuth0 Changelog調査AIをアップグレードした話
t5u8a5a
1
110
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
We Are The Robots
honzajavorek
0
250
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
420
Designing for Performance
lara
611
70k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Paper Plane (Part 1)
katiecoart
PRO
0
8.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
エンジニアに許された特別な時間の終わり
watany
107
250k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Transcript
Vibecoding 101 ESADE Jan. 2026 Nicolas Grenié Developer
Advocate @picsoung
Nicolas Grenié Developer Advocate SLNG.ai @picsoung
None
40k+ icons 15k users #2 ProductHunt Top 5 Lovable
Shipped 2000$ of revenue
Other projects Contractiontrack.com imsometal.com my-bingo-card.com
Goal: Jump in the world of building Remove jargon
How does an app work?
It’s has to be written in code Different programming languages
for different things
None
None
None
Client Server Applications
Client Server Applications
Client Server Applications
You first develop locally Then you deploy for the world
to see
Application Programming Interface @picsoung @picsoung
@picsoung @picsoung UI
UI @picsoung @picsoung
What is going to happen? @picsoung @picsoung
@picsoung @picsoung
👋 You have GIF? @picsoung @picsoung
👍 Sure, here @picsoung @picsoung
That was an API 🎉 @picsoung @picsoung
@picsoung @picsoung APIs Are servers Talking to other servers
@picsoung
Examples @picsoung
@picsoung
@picsoung
@picsoung
Programming is like ordering at Chipotle @picsoung
There is an API for that! @picsoung
Let’s Call Some APIs @picsoung
https://api.imgflip.com Memes API! @picsoung
Memes API! @picsoung
Step 1: Read documentation @picsoung
Step 2: Call the API In the browser In the
terminal Using an App
🎁 Debug APIs outside of your code
JSON data format @picsoung { "success": true, "data": { "memes":
[ { "id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } }
@picsoung response = { "success": true, "data": { "memes": [
{ "id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.success { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data.memes { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data.memes[0] { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data.memes[0].url { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
Security? @picsoung
@picsoung API Key oAuth
Advantage for API provider @picsoung Who is calling the API
Charging for API usage Turn off bad users Restrict access to your own data
Let’s try @picsoung Boilerplate Solution
oAuth @picsoung
Oauth Scopes @picsoung
Webhook @picsoung
Webhook @picsoung Ping me when something happens
Vibecoding vs. AI assisted coding? @picsoung
@picsoung vibecode
@picsoung
@picsoung
@picsoung Describe the app and its features
@picsoung One stop prompt Iterative process
@picsoung Use ChatGPT to write the PRD (Product Requirements Document)
@picsoung Or images
@picsoung
@picsoung
@picsoung
@picsoung
@picsoung
@picsoung look at the current UI for the prompt enhancer,
It feels cramped. Help me simplify it, remove clutter.
@picsoung
Share documentation and code snippets @picsoung
AI is an intern Treat it as such @picsoung
Challenges @picsoung
SEO @picsoung
SEO @picsoung Ask to create sitemap.xml robots.txt Llms.txt Opengraph tags
Backend @picsoung
@picsoung 100 credits ($25 worth) Code: ESADE