---
title: "A Retrospective and Reflection on Management Work"
description: "A Tech Lead's Self-Reflection: Documenting 2.5 years of practical approaches to handling incidents, improving the hiring process, coordinating work, conducting 1-on-1s, and managing up, with a candid reflection on my shortcomings."
canonical_url: "https://blog.markkulab.net/en/post/reviewing-management-tasks"
author: "Mark Ku"
author_url: "https://blog.markkulab.net/en/author/mark-ku"
site: "Mark Ku's Tech Notes"
date_published: "2024-11-10 20:01:35 +0800"
category: "Management"
tags: ["management", "leadership", "agile", "team", "career", "review"]
language: "en"
license: "CC BY 4.0"
license_url: "https://creativecommons.org/licenses/by/4.0/"
attribution: "when reusing or quoting, credit the author and link back to the original"
---

# A Retrospective and Reflection on Management Work

> **TL;DR** — 歡迎收聽 Mark 的技術雜談，我是璦廷。擔任技術主管，是不是常讓你覺得像一塊夾在專案與人事間的三明治呢？ 今天帶大家回顧一位技術主管兩年半來的真實管理筆記。面對突如其來的隕石級需求，他導入敏捷開發穩定團隊節奏。這個重點值得注意，他不只解決技術問題，更跨足改善招募流程、規劃工作分解結構來協調專案，甚至利用私人時間先行研究人工智慧與自動化行銷等新技術，再交接給團隊。 接下來，讓我們來看看他在帶人方面的用心。除了爭取調薪與遠距工作福利，他更透過一對一面談與規劃職涯路徑，凝聚團隊向心力。同時，他也坦誠反省自己的盲點：有時過度保護成員，反而剝奪了他們突破自我的機會；而把別人的工作全攬在身上，長期下來反而會掩蓋組織真實的缺口。 真正的管理，往往是在不斷的試錯中成長。聽完今天的分享，不妨也問問自己：在你的工作崗位上，是否也有需要學會放手讓團隊成長的時刻呢？我們下次見。

## Introduction
Honestly, being a tech lead is not easy. You not only have to do your own work well, but also manage people, plan projects, and work on those projects. You wear multiple hats, and like being the middle of a sandwich, you can easily get squeezed from both sides if you're not careful.

During work hours, you spend time on communication, coordination, and handling emergencies. After work and on weekends, you still have to spend time planning work and maintaining your professional skills.

So, I've taken some time to organize and reflect on the things I've done.

## Facing 'Meteor' Crises
When I joined the company two and a half years ago, it was right after the previous manager had retired and a group of engineers had also left. Everything was like a storm; new, urgent problems would pop up every week. Often, the work goals on Monday would be different from those on Friday. A super-high-priority project would appear out of nowhere every so often. To let others focus on their work, I always had to be on the front line, intercepting this storm of incidents. Since there was no one to coordinate, I had to negotiate with others on behalf of the team, even for unreasonable requests. Things got much better after I suggested adopting [Agile development](https://blog.markkulab.net/tag/agile/) and helped my US colleagues implement Jira. At least our two-week goals became stable, and unless there was an urgent need, everything else was scheduled for the next Sprint.

## Improving Recruitment Bottlenecks
To address the recruitment bottleneck, we didn't have a dedicated HR person at the time; an assistant handled HR duties part-time. I pulled them in to work on improvements with me, which included revising the company introduction and job descriptions on the 104 job board, replacing unclear images, and optimizing the recruitment copy and process.

## Improving the Developer Experience
[Since there's a lot to cover, I wrote a separate article about it+](https://blog.markkulab.net/improving-developer-experience/)

## Work Coordination
Often, users from different departments would request that we work on their tasks simultaneously. But with just a few of us, working on everything at once would slow us down. The constant context switching was painful, and everything felt rushed. For smaller tasks, if I could resolve them during my workday, I would help take care of them or find someone to assist. But when faced with larger projects, I would create a [WBS (Work Breakdown Structure)](https://blog.markkulab.net/talk-about-estimate-timetable-of-project/) to show stakeholders how long development would take, explaining that we couldn't do everything at once in a short period, and negotiated more reasonable delivery timelines.

## Filling in the Gaps
To ensure projects went live smoothly, I helped clarify and break down unclear tasks or requirements. When tasks were left undone or dropped, I stepped in to fill the gaps because I cared about the outcome.

## Recommending New Hires
In the past, it was common for one person to hold multiple roles in the organization. But as the scale of our work grew, one person, especially in a part-time capacity, could no longer handle all the responsibilities. Therefore, based on the workload and bottlenecks, I continuously recommended to management that we hire more staff: Engineers, an HR professional, a PM, and an MIS specialist.
## Technical Initiatives
My regular workload was already heavy, and on top of that, I often received urgent technical requests. I had to use my own time to do some preliminary research on the general approach and execution plan before delegating them to interested colleagues. Examples include: the architecture for the German website, marketing automation, GA4, AI, and 3D.

## Holding the Line
Along the way, I encountered some tricky situations. Many were small things I didn't really want to get involved in. But many small problems, if left unaddressed for too long, spread like the broken windows effect. In those moments, I would have a one-on-one conversation.
For example: repeatedly breaking the checkout system, work output not meeting expectations, being unreachable during work hours, taking leave on a deadline and dropping work on others, [issues with abnormal leave patterns](https://blog.markkulab.net/abnormal-leave-request/), and arriving late or leaving early without reason.

## Code Reviews / Work Reviews
When reviewing work, I had to find different ways to phrase feedback to avoid making team members feel uncomfortable.

## Ad-hoc 1-on-1s
I would periodically take colleagues out for a meal or to a coffee shop to chat, to understand what they cared about, what difficulties they were facing, and where they wanted to go in their careers. I'd find areas of alignment between the organization's needs and the member's goals, and then coordinate with my own manager. For example: when someone got married and moved farther away, I helped negotiate one WFH day per week for them. If someone wanted to work on a specific project, I did my best to assign them that work.

## Planning Career Paths
The new generation of developers needs a career [Roadmap](https://blog.markkulab.net/solving-the-middle-developer-career-dilemma/). This was something I proactively suggested to my boss after seeing examples online.

## Recommending Salary Increases
For team members with excellent performance or outstanding contributions, I proactively fought for their raises and promotions.
* Probationary period salary adjustments
* Year-end salary reviews
* Positional promotions

## Advocating for Team Benefits
* Secured extra perks, like attending a computer expo, which also served as a team-building activity.
* Arranged for extra vacation days for colleagues who successfully mentored new hires, based on results.
* Negotiated for additional WFH days based on a member's special contributions or performance.

## Managing Up
* Proactively syncing on work progress. I believe every manager has information anxiety; if a long time passes without an update, they might start wondering what we're doing all day.
* For cross-departmental issues, resource shortages during execution, or feedback from team members, I would discuss them with my superior to seek help.
* Often, the new generation of employees cares about different things. In the past, we would just do what we were told. Now, it takes a lot of time to communicate, clarify goals, and translate them into a language that younger team members understand.

## Areas Where I Feel I Fell Short
* When communicating with others, I sometimes replied too hastily. In reality, it would have been better to slow down, let things settle, and think a bit more.
* I was too protective of my team members. If I thought they couldn't do something, wouldn't do it well, or wouldn't like it, I might not assign it to them. Looking back, even failing is a form of growth, and I deprived them of opportunities for self-breakthrough.
* Taking on poorly done work that wasn't my responsibility. This is actually detrimental to the organization in the long run, as it allows the gaps to widen.
* I overlooked the influence of the environment. But perhaps due to my personality, there are some things I should have just turned a blind eye to.

---

## About this article and its author

Originally published on [Mark Ku's Tech Notes](https://blog.markkulab.net/en/post/reviewing-management-tasks)

License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) — when reusing or quoting, credit the author and link back to the original

### About the author

**[Mark Ku](https://blog.markkulab.net/en/author/mark-ku)** — Software Solution Provider

- 10+ years senior software engineer, now an AI Builder
- Focused on large-platform architecture — North-American e-commerce, AI SaaS subscription billing
- Combining AI Agents and automation to build evolvable product foundations

### Free tools built by the author

All of these are free to use:

- [Free PDF Sign Tool](https://blog.markkulab.net/en/tools/pdf-sign): Online PDF sign tool — draw, type, or upload a signature, then drag, resize, and download. Everything runs in your browser; nothing is uploaded.
- [VS Code Refactory](https://blog.markkulab.net/en/tools/refactory): Refactory is a VS Code refactoring extension: 34 actions plus a 37-rule code-smell inspection layer with a Code Health dashboard, across 18 languages, backed by 534 tests. It learns your repo's conventions: where interfaces live, where DI is registered, whether 'use client' belongs. It ranks files by git churn × complexity so you know what to fix first, and hands any smell to the Claude Code already on your machine. Free to use, and your source never leaves your computer.
- [DB-Kit Database Manager](https://blog.markkulab.net/en/tools/db-kit): DB-Kit is a lightweight, cross-platform database manager built with Tauri + Rust + React. Manage MySQL, MariaDB, PostgreSQL, SQL Server, Oracle, SQLite, MongoDB, Redis, Kafka, Elasticsearch and RabbitMQ from one consistent interface: passwords encrypted in the OS keychain, SSH tunnels, full CRUD, a visual query builder, stacked multi-statement result sets, cross-connection data transfer and compare/sync, Excel / CSV import & export, visualized execution plans, ER diagrams, scheduled backups, SQL stress testing with p50–p99 latency percentiles, a 15-rule SQL review engine, Kafka message browsing with monitoring & alerts, a bilingual UI (Traditional Chinese / English), a built-in AI assistant (natural-language SQL, AI review and tuning advice) and the dbk CLI. Free and open source (MIT), with installers for Windows, macOS and Linux.
- [VS Code Super Mermaid](https://blog.markkulab.net/en/tools/super-mermaid): Super Mermaid is a VS Code extension for beautiful Mermaid diagrams out of the box: auto-colored live preview, mouse pan & zoom, high-res PNG / SVG export, 21 templates and multiple themes. Free and open source (MIT).
- [React Super Mermaid](https://blog.markkulab.net/en/tools/react-super-mermaid): react-super-mermaid is an open-source React component library: render beautiful Mermaid diagrams with a single <MermaidViewer>, with built-in colorful / sketch themes, pan & zoom, in-diagram search, and high-res SVG / PNG export. Lightweight, SSR-safe, fully typed. Free and open source (MIT).
- [Jira / Confluence Super Mermaid](https://blog.markkulab.net/en/tools/jira-super-mermaid): An Atlassian Forge app: write Mermaid syntax directly inside a Jira issue or a Confluence page and get flowcharts, sequence diagrams, state machines and Gantt charts. 11 diagram types, SVG / PNG export, light and dark themes, full CJK support. Runs on Atlassian: your diagrams live in your own site and the app calls no third-party service. Free, coming soon to the Atlassian Marketplace.
- [Mermaid Live Preview](https://blog.markkulab.net/en/tools/mermaid-preview): Write Mermaid in your browser, see it render instantly, and share the whole diagram as a single link. No sign-up, nothing uploaded to a server, and mermaid.live share links work as-is.
- [React Intl Phone Number](https://blog.markkulab.net/en/tools/react-intl-phone-number): react-intl-phone-number is an open-source React component: framework-agnostic and antd-free, with E.164 in/out, a searchable flag / country-code dropdown, configurable validation levels (strict / mobile-strict / loose), themeable CSS, and i18n — phone logic powered by google-libphonenumber. Lightweight and fully typed. Free and open source (MIT).
- [Uptime Kuma Cluster](https://blog.markkulab.net/en/tools/uptime-kuma-cluster): Turn single-node Uptime Kuma into a highly available cluster: OpenResty + Lua smart load balancing, shared MariaDB state, health checks and automatic failover, plus cluster-management REST APIs. One Docker Compose command to start. Free and open source (MIT).
- [Special Education](https://blog.markkulab.net/en/education): Learning materials crafted for special education students

### Daily podcasts

- [Mark's Tech Insights — Daily AI News](https://blog.markkulab.net/en/category/tech-news): Daily curated AI and tech trends. Catch the latest developments via audio summaries — covering AI applications, software architecture, DevOps, and engineering practice. — RSS: https://blog.markkulab.net/feed.xml
- [AI股市蝦聊](https://blog.markkulab.net/en/category/ai-stock-chat): Every trading day, an AI-analyzed take on the Taiwan stock market, delivered as a two-host conversation covering the session and the next-day outlook. — RSS: https://blog.markkulab.net/ai-stock-chat/feed.xml
- [開源好物週報](https://blog.markkulab.net/en/category/open-source-weekly): A weekly two-host pick of free open-source tools surfaced from real Hacker News, GitHub, and Reddit buzz — what pain they solve and the fastest way to get started. — RSS: https://blog.markkulab.net/open-source-weekly/feed.xml

### Newsletter

[Subscribe to the newsletter](https://blog.markkulab.net/en/subscribe) — Be the first to know about new posts. No spam, unsubscribe anytime.
