Mark Ku's Blog
Open in ChatGPTOpen in Claude

歡迎收聽 Mark 的技術雜談,我是主持人璦廷。在軟體開發的路上,你是否覺得從初階跨越到資深工程師,就像面對一道難以跨越的鴻溝呢? 台灣的開發環境常因為講求速度,讓許多人誤以為年資就等於資深,忽略了專業的深度。這不僅讓公司累積技術債,更讓許多好不容易培養起來的中階開發者,因為看不到晉升機會而流失。 讓我們來看看作者提出的解法。文章建議在初階與資深之間,明確增設中階開發者的職級階梯。這個重點值得注意,因為它打破了傳統的二分法。 具體來說,初階工程師負責穩穩完成任務;中階工程師則開始能提出解決方案、主導小型專案並帶領新人;經過這些歷練,最終晉升為能拆解模糊目標、做出技術取捨的資深工程師。這樣的架構微調,能幫助每個人勾勒出清晰的職涯藍圖,讓招聘進來的人才了解自己的責任與目標。 總結來說,建立細緻的職級制度,是留住對的人才與維持系統健康的關鍵。在人工智慧快速改變軟體業的今天,技術能力的要求不斷提升,你的團隊是否也已經為中階人才,鋪好持續成長的階梯了呢?

Podcast ConversationAI dialogue version of this article · Mandarin audio
Audio for this article is powered by VoAIVoAI

Preface

In Taiwan's job market — partly because of its small and shallow scale — a common attitude takes hold: as long as the website works and features ship fast enough, that's good enough. Some engineers develop a mistaken belief that years on the job automatically make them "senior." No one ever told them that seniority implies genuine depth, not just task completion. They may never have been challenged, and they have no clear picture of what a Senior Engineer actually needs to be.

Reference: Definition of a Senior Engineer (Inside.com article)

Link

Based on the following reasons, I proposed a small adjustment to our existing org structure and discussed it with my manager

  • To retain the right talent and give them a real platform to grow within the company
  • To help newly hired engineers with some experience understand their responsibilities and goals
  • To give everyone a visible career path
  • As someone who leads people, I need to be able to sketch out a career roadmap for my team members
  • The capabilities required to become a Senior engineer take significant time to develop
  • When a team is perpetually filled with juniors or members who stop growing, complex business features cannot be owned, technical debt piles up endlessly, and the codebase becomes a condemned building — fixing one thing breaks another. The system can no longer support business growth.

Proposed Solution

In the past, the only distinction was Junior vs. Senior — a binary split that creates an obvious gap. A strong mid-level developer who gets trained up sees no clear promotion opportunity and leaves.

My suggestion: introduce a Middle Developer tier (Web Developer II) between Junior and Senior. This creates a continuous ladder — one where developers can practice and acquire the skills needed for Senior level. Promotion to the next level requires demonstrating those capabilities.

I adapted this from a post shared by a community member on Bahamut: Link

Job Levels

Junior Developer — Web Developer I

A newcomer to the software industry with solid foundational knowledge of software engineering. Can reliably deliver assigned tasks and new features but tends not to focus on performance. Needs to discuss direction with more senior teammates in unfamiliar areas, and regularly asks for help when stuck.

Middle Developer — Web Developer II

An engineer with meaningful experience who brings their own ideas to assigned features and requirements. At this stage, the pursuit of perfection can occasionally lead to over-engineering. They typically propose multiple solutions to a problem and want to discuss the tradeoffs with more senior colleagues before choosing one. Within their own team, they can handle a variety of tasks and answer questions from more junior engineers. They may start mentoring new hires (Buddy role), resolve production issues independently, and are capable of bootstrapping small projects end-to-end while tackling the various challenges that arise. In critical situations, they still seek input from senior engineers.

Senior Developer

A core pillar of the team. Can quickly learn and propose solutions in any unfamiliar domain or project. Capable of breaking down ambiguous goals and leading the team to achieve them. Makes informed technology choices by evaluating tradeoffs in context. Can independently acquire needed knowledge from documentation, sample projects, and tutorials, then distill it into practical solutions. Provides technical leadership and makes significant decisions that shape the direction of technology or product. Represents their team in cross-functional meetings and makes decisions on the spot. At this level, there is also the opportunity to step into a management role and lead a team to drive meaningful business impact.

Staff / Principal Developer

Has deep expertise in specific technical domains and is consulted by upper management on complex technical decisions for large projects. Possesses knowledge and capabilities that are difficult to replace. Serves as the core technical lead on critical products. On the management side, leads a sub-team that plays an indispensable role within a larger organization, clearly articulates the future direction for that team, and guides everyone step by step toward that vision.

Roles

  • Team Lead
  • Technical PM

Note: In our previous large team, PMs were a mix of technical and non-technical backgrounds.

If the company grows large enough someday, there could also be:

  • Business Analyst (requirements gathering, business analysis)
  • Solution Architect
  • DBA
  • etc.

Closing Note

By the way, we're still looking for full-stack and front-end engineers — feel free to reach out.

White gaming PC with purple RGB lighting and IBUYPOWER neon sign
White gaming PC with purple RGB lighting and IBUYPOWER neon sign

References

Software Engineer titles and responsibilities at overseas companies

Fun video — Behind every successful project is a warm-hearted Senior Engineer

Author

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。Read More

Found this useful?

The author's free tools, daily podcasts and newsletter are all here.

Mark Ku · This article is licensed under CC BY 4.0. Credit the author and link back to the original when reusing it.

Comments

Subscribe to Newsletter

Subscribe to get new posts delivered instantly — never miss a tech share.

By submitting, you agree to receive emails. You can anytime.

Popular Posts

View all
Mark Ku
··602

Oracle Cloud Always Free Tier: Linux Host and Static IP for a $0 Cloud Solution

Oracle Cloud Always Free Tier: Linux Host and Static IP for a $0 Cloud Solution
Mark Ku
··490

Say Goodbye to Postman's Fee Trap! A Hands-on Guide to Bruno, the Open-Source Git-Native API Testing Powerhouse.

Say Goodbye to Postman's Fee Trap! A Hands-on Guide to Bruno, the Open-Source Git-Native API Testing Powerhouse.
Mark Ku
··333

A Free, Open-Source, Notion-like Knowledge Base — A Complete Guide to Deploying and Backing Up Outline Wiki

A Free, Open-Source, Notion-like Knowledge Base — A Complete Guide to Deploying and Backing Up Outline Wiki
Mark Ku
··264

Training Your Own AI Voice: Hardware Requirements, Open-Source Model Comparison, and LoRA Fine-Tuning

Training Your Own AI Voice: Hardware Requirements, Open-Source Model Comparison, and LoRA Fine-Tuning
Mark Ku
··221

Building an Efficient API Management Platform: Deploying Kong Gateway from Scratch - Part 1

Building an Efficient API Management Platform: Deploying Kong Gateway from Scratch - Part 1
Mark Ku
··215

Setting Up Samba on Ubuntu to Share Folders with Windows 11

Setting Up Samba on Ubuntu to Share Folders with Windows 11

Readers also read

Thoughts on Software Engineer Promotions

Mark Ku

·17 min read·14

Performance and Trust in the Workplace

Mark Ku

·8 min read·13

A Retrospective and Reflection on Management Work

Mark Ku

·15 min read·6

On Software Engineer Career Development

Mark Ku

·27 min read