50 Tech Lead Jokes
I was promoted to tech lead. My IDE has not been opened in three weeks. It still has unsaved changes from the promotion week.
I opened a PR a month ago. It has been rebased twice by people on my team. The PR is now their PR. They did not ask. They were right not to ask.
My calendar has 14 meetings on Tuesday. My IC said they had a quick question. I told them to put time on my calendar. They did. The slot is in November.
I drew an architecture diagram. I put it in a doc. The doc has been opened twice in six months. Once by me. Once by a recruiter.
Someone asked who owns the auth service. The wiki said me. I have never touched the auth service. The wiki is now correct, retroactively.
I gave feedback in a 1:1. The IC interpreted it as a directive. I had meant it as a suggestion. They shipped it. It was the wrong thing. I had been wrong. They had been listening.
I am the tech lead. The manager runs the standup. The PM runs the planning. The staff engineer runs the architecture. I run the slack channel.
I made one technical decision this quarter. It was a decision to defer a technical decision. The team approved. The deferred decision is now its own quarterly OKR.
I wrote an RFC. Three people commented. None of them were on my team. Two of them disagreed with each other. The third corrected my markdown.
Someone asked me to review their PR. I reviewed it three days later. They had self-approved and merged. The bug is in production. I left a comment anyway. I want the record.
My team shipped a feature without me. It was the best feature we shipped this quarter. I was on PTO. I have been considering more PTO.
I have a 30 minute calendar block called focus time. It is the only meeting nobody else can move. It is also the only block I move myself, twice a week.
I attended a meeting. The meeting was scheduled because I had attended the previous meeting. The previous meeting was scheduled because I had attended the meeting before that. I have been in this thread for fourteen months. Nobody else has.
I tried to write code on a Friday afternoon. A Slack DM arrived. A second DM arrived. A third. By 4pm I had written one line. The line was a comment. The comment was sorry.
I made a one-line change to fix a bug. The team had been arguing about the bug for two days. I did not tell them. I pushed the fix as a hotfix. The argument continued for two more days.
I have not been on call in 18 months. The pager rotation has my name on it. The runbook has my name on it. The on-call channel has my name on it. The on-call has never paged me.
I asked my IC how a system worked. They explained it. The explanation was correct. I had designed the system three years ago. I did not say anything. I took notes.
I drew a diagram on the whiteboard. A week later it was still there. The cleaner had been told not to erase whiteboards. The diagram is now policy. I had drawn it during a brainstorm.
My team has three competing visions for the architecture. I agree with all of them. They cannot all be right. I have been hedging for six months. The architecture has not moved.
Someone asked me for a decision. I said let me think about it. I thought about it. I came back two weeks later. They had decided. The decision was fine.
I joined a design review I had not been invited to. I did not say anything. I sent one Slack message to the author afterward. The design changed the next day. This is the most efficient I have ever been.
I tried to refactor a service on a Sunday. Monday I had four meetings about the refactor. By Friday the refactor was on someone else's plate. They shipped it. They got promoted. I am still happy for them. Mostly.
I told a junior they could own a project. They owned it. They shipped it. They presented it at all-hands. The VP asked who had mentored them. The junior said they had figured it out themselves. They were right.
I am the tech lead and the senior engineer. My title says one. My calendar says the other. My direct deposit says neither.
I asked for headcount. I got headcount. The hiring took six months. The new hire ramped in three. The roadmap had moved twice in that time. The new hire is now working on the third roadmap. I am tired.
I have a roadmap for next quarter. I also have a roadmap for next quarter from last quarter. They are different. Both are signed off. Nobody has noticed.
I once wrote a doc that said this is not a decision document. A VP cited it as the decision document. I have not been able to retract it. It is now the decision document. I have learned to put disclaimers in the title.
I gave a brown bag talk on the architecture. Two people came. One was my manager. One was eating lunch. The slides are on the wiki. The wiki search does not index them.
I have a personal kanban board. It has 47 cards. Three are in done. The other 44 are in doing. The board has not been moved since last spring.
I told my manager I wanted to write more code. They said great, you can lead the platform initiative. I am now leading the platform initiative. I have not written code.
The principal engineer reviewed my RFC. They left one comment. The comment said see me. I saw them. They had a tangentially related concern from 2019. The RFC is now blocked on the 2019 concern. The 2019 concern was about a different system.
I am the technical point of contact for three other teams. Each of them thinks I am dedicated to them. They are right. I am dedicated to each of them. I have nothing left for my own team.
I have stopped writing code. I have started writing docs about code other people will write. The docs are longer than the code would have been. The code would have been done by now.
I once wrote a one-pager. It became a four-pager. It became a doc. It became a quarterly. It became a working group. The working group has a charter. I miss the one-pager.
My team shipped a migration. I had drawn the diagram. They had written every line. The retro thanked me by name. I did not deserve it. I did not correct it. The retro is now in the wiki.
I scheduled a 1:1 with every direct. My direct has more 1:1s than I do, because I am their tech lead and someone else is their manager. They are running two streams of feedback. I am running zero.
I asked a peer tech lead how they handled growth. They said they had stopped reading Slack. I asked which channels. They said all of them. I tried it for a week. I had eight unread DMs from the VP.
I run a weekly sync with the platform team. The sync is on Thursdays. I have not contributed to the agenda in six months. They have not noticed. I will keep going.
My manager asked what I shipped this quarter. I said I had unblocked seven engineers. He asked again. I said I had written one doc. He asked again. I said three lines of code. He nodded. The performance review writes itself.
I once tried to pair on a feature with an IC. They were faster than me at every step. They were also kinder than me about it. I stopped pairing. I started reviewing. The reviews are kind too.
My laptop has 47 open tabs. Three of them are dashboards. Forty are docs. Four are PRs I will not review today. I have stopped closing tabs. Tabs are now my filing system.
I am the only person who knows how the legacy billing service works. I also do not know how the legacy billing service works. I just know it the least badly. That is the qualification.
I joined an interview loop. The candidate asked what I worked on. I said I led a team. They asked what the team worked on. I said many things. The candidate asked a more specific question. I gave a less specific answer. They got the offer. They turned us down.
I have a 6-month plan. I also have a 6-month plan from 6 months ago. The two share zero items. Both were correct at the time. Neither has been audited.
I once told a junior the system was simple. They believed me. They shipped a change in a day. The change broke six services. The system had been simple, in 2019. We have been adding to it since.
I keep a doc called things I would change if I had time. The doc is 12 pages. The dates on the entries go back to 2021. I have not crossed any item off. The doc is, itself, a thing I would change if I had time.
I once shipped a feature in an afternoon. It felt incredible. My manager told me it was not what tech leads should be doing. He was right. I am still chasing the feeling.
I attended a leadership offsite. The agenda had a slot called free time. The free time was a working session. The working session produced an OKR. The OKR is now mine.
I asked my IC to write a design doc. They wrote it in a day. It was better than the doc I would have written in a week. I approved it and went back to my calendar. I do not know what I do anymore. The team is fine.
I am the tech lead. I have not pushed code in two months. The team has shipped four features. The roadmap is on track. The architecture is sound. The team is happy. I am not sure what to do with my hands.
Why tech lead humor finds the same nerve every time
The tech lead role is the in-between rung that doesn't exist on most ladders but exists in every codebase. You're still measured on engineering output, but most of your day is meetings, RFC reviews, calendar triage, and pulling someone else's PR over the finish line. The first time you realize you haven't written code in a month is a small grief. The second time is a familiar one.
The jokes land because the role's contradictions are not solvable. You're supposed to be technical enough to make architectural calls but available enough to unblock four engineers a day. You're supposed to mentor without micromanaging, ship without becoming a single point of failure, and stay in the IDE without falling behind on roadmap conversations. The role's whole identity is balance, and nobody is in balance. The humor is the relief valve.
See also
- 65 Senior Developer Jokes Only Senior Engineers Will Get: the rung just below, with more time in the IDE.
- 60 Code Review Jokes for People Drowning in LGTM Comments: the queue the tech lead never finishes.
- 50 Full Stack Developer Jokes for People Doing Both Jobs: the tech lead's previous life, two jobs in one.
- 50 Junior Developer Jokes Every Junior Has Lived: the engineers the lead is unblocking all day.
- 70 JavaScript Jokes Every JS Developer Has Lived: the codebase the lead used to know line by line.
- 50 QA Tester Jokes Every Tester Has Lived: the safety net that catches what the lead is too busy to notice.
- 55 Bug Tracking Jokes for People Whose Ticket Is Still Open: the queue the lead keeps promising to triage on Friday.
Sources
Authoritative references this article was fact-checked against.
- StaffEng, Will Larsonstaffeng.com
- The Manager's Path, Camille Fournier, O'Reillyoreilly.com

