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

Context

As the organization expands into new countries, the development team I lead is expected to grow significantly. With more people comes a recurring pattern: the same management friction keeps surfacing. Past generations may have relied on unspoken mutual understanding, but that approach is becoming increasingly difficult to sustain. I have come to realize that without writing down the team's norms, operating principles, and leadership expectations, collaboration problems will keep multiplying.

The Culture We Want to Build

  • We expect members to do things well, not just get them done. If you need more time, say so.
  • We accept imperfection — but every time you finish something, reflect on how to do it better next time. Be better tomorrow than you were today.
  • Mistakes are acceptable; we all make them. When you do make one, try to propose how to prevent the team from repeating it.
  • When you come with a problem, think first and tell your teammates what you have already tried. Every question should be a starting point, not a dead end.
  • Be proactive. Sync your status with teammates as much as possible, and enjoy sharing what you learn.
  • Encourage different perspectives and respect every teammate's opinion.
  • Team performance comes before individual performance.
  • Doing your job well is the baseline. Everything beyond that is what counts as performance.
  • If you are unhappy with the current situation, let's talk. Better yet, bring some clues or potential solutions to the discussion.
  • Our pace is fast. Beyond coding, there are many other responsibilities — communication, requirements clarification, analysis. Everyone is busy. You will often need to untangle unclear problems and propose solutions. When servers go down, you are expected to help resolve them. The work is tough, the standards are high, feedback will be direct, and there is plenty of challenge — but also plenty to learn. If this way of working does not suit you, you are always free to choose otherwise.

Work Discipline

  • Overtime is generally discouraged, but do not cause others to work overtime either. Respect this comfortable working environment — do what needs to be done when it needs to be done, and keep things reasonable.
  • If you arrive a few minutes late, leave a few minutes late. That is fair to the team and others, unless you have a specific situation you have cleared with your manager.
  • We use time estimates, and in most situations we do not want engineering quality to be cut for the sake of time. The flexibility exists to handle unexpected situations — please value it. Engineers at many other companies are chased by deadlines every day. If there is no sense of time and responsibility, estimates will need to come back.
  • Remote work is a company-granted flexibility based on mutual trust. If performance suffers or work attitude is poor, a manager can require you to return to the office at any time.
  • We dislike micromanagement, but we cannot accept hiding information. Speak up directly. The more transparent you are, the more trust you earn — which translates to more freedom and autonomy. The opposite leads to more scrutiny.

Communication

Have you ever asked yourself: if everyone just does their own job, why bother communicating at all?

Modern business is a team sport. Any single person's expertise is limited. If you want your skills to create real value, you need the support of others. Communication at work is ultimately about getting things done — helping each other understand constraints, reaching consensus, and securing the resources needed to solve problems.

Openness to Feedback

No one here is criticizing your code or making personal attacks. The reality is that in most careers, very few people will ever take the time to tell you what you need to improve. If you do not know what to fix, you will keep running into the same problems regardless of how many jobs you change — and the team suffers when work is done poorly. Nobody wants to inherit unmaintainable code or work alongside someone who does not communicate well.

When someone gives you feedback, try not to take it as an attack on your work or your identity. Flip it around: this is exactly how you find out how to get better. Be genuinely open to it.

If you receive feedback like this, the more professional response is:

  • Think about whether this change is in the team's interest.
  • Then: what should the next action be?

When a Proposal Gets Rejected

When a suggestion is not adopted or a proposal is shot down, it is usually because the approach was wrong, the preparation was insufficient, the thinking was incomplete, or the timing was off. Beyond identifying the problem, you can also help find executable details and think about how to reduce the friction of the proposal. Ask yourself: if everyone at a company only raised problems and no one worked out the execution details, could anything actually move forward?

Code Review, Retrospectives, and Refactoring

Whoever reviews your code — once you have made the changes, always go back to that person to close the loop. That matters a lot.

It is also a good habit to periodically revisit code you wrote in the past. You can raise a refactoring request, create a ticket, and discuss scheduling it with your manager. When requirements are tight you may write code that is hard to maintain — in those cases, open a ticket to record the debt and revisit it later.

Alignment and Adaptability

The theoretically optimal solution is often not the most appropriate one. Official documentation or a single perspective may not account for other dimensions: legacy systems, historical context, resource constraints, team dynamics, time, or leadership expectations — these are all real constraints.

Because teammates have different experience levels and backgrounds, different decisions are made in different contexts. During your growth, you will encounter decisions that do not make sense at the time but become clearer with experience. If you cannot take full responsibility for the overall outcome, and if you do not yet have enough experience in a particular area to fully understand someone else's reasoning, then for now, set it aside, try to adapt, learn it — and then come back and discuss.

Managers will listen to and consider everyone's views, but the manager's role is to be accountable for the team's overall results as assigned by the company. On major issues, the person ultimately responsible for the outcome should have the final say on critical decisions. This is something we need to understand and respect on both sides.

Any Single Skill Is Just a Starting Point

When applying to any company, your compensation is determined by what problems you can help the company solve, your level of expertise, and your work ethic.

When you are just starting out, there is a lot to learn: frontend, backend, team collaboration, communication, project management, testing, CI/CD, system debugging, operations, and managing up. If you only master one skill, your career runway will be short and your development will be constrained.

For example, if the company wants to expand to a new country and needs someone to be the owner of that market, you can say it is not your job and you have no interest in learning it — but then that promotion and raise opportunity is not yours to compete for. Mastering one specialty is important, but a company does not generate revenue from a single skill alone. Limiting yourself to one skill limits your influence in the business. Think of yourself as a company: if you only have one revenue stream, you are also limiting your own possibilities.

The Uncertainty of Software Development Requirements

In any organization, the further down you are, the clearer the work tends to be. The higher the role, the less clear — and the lower the success rate. More experienced developers need to be capable of clarifying and solving ambiguous requirements and problems. Not everything will be spelled out clearly. In software development especially, the same written words often mean different things to different people.

Performance

Junior developers are expected to focus on getting familiar with the work environment and doing their assigned tasks well. More experienced developers, however, are not measured purely on completing assigned code tasks.

  • 60% core development — daily development work (efficiency, quality, team collaboration, importance of owned project items).
  • 40% extra contribution — communication, coordination, requirements clarification, proposals, mentoring new members, helping the team grow, refactoring, introducing new technology to solve problems, identifying and resolving team-wide issues, leading projects, and additional contributions.

Note: Seniority by years of service does not equal seniority by capability. Capability is not limited to technical expertise — what we care about more is maturity in how you approach work, think through problems, and handle interpersonal dynamics.

Team Positioning

What does the team lack? What hard problems does the company have that align with what you want to develop?

Often, as a company grows to a certain stage, new roles emerge organically. The key question is: when the moment arrives, do you see it — and can you seize it?

Every opportunity comes bundled with work you enjoy and work you do not. Sometimes you cannot choose. During business hours you have the same time as everyone else. If you only learn during work hours, that is generally not enough.

Growth

Opportunities are always there. The question is whether you are mature enough to claim them.

  • Can you solve more of your manager's problems and help the company hit more of its goals?
  • Is there enough trust and alignment that things can be handed to you without worry?

Additional Benefits and Perks

Some additional benefits are tied to your performance and the level of trust you have built — they are not one-size-fits-all. The difference in contribution and trust means the difference in perks. All of them need to be earned over time by demonstrating yourself. When you perform at the same high level, you are also welcome to negotiate for them directly.

  • Opportunities to interview candidates or onboard new members
  • Inclusion in meetings on major strategic topics or direction decisions
  • Leading projects
  • Work-from-home days allocated based on annual performance reviews
  • Additional leave for performance that exceeds expectations
  • Project bonuses for major deliveries
  • US business trips — this is not a perk, it is a responsibility. Think carefully about what value you can bring to the team if you go.

Note: We look at long-term, sustained, consistent performance — not isolated high points.

Systems Thinking

In large systems, you will often notice that a bug you fixed before has come back. The root cause was never truly addressed, even though fixing root causes tends to be expensive. For this reason, we expect more experienced developers to invest more time in thinking through problems so that issues do not resurface. For proposals on complex problems, please provide at least two solution approaches (short-term, mid-term, long-term):

  • Quick fix — solves the immediate problem with low cost and effort; likely to recur.
  • Leverage fix — invest a bit more time each iteration so the problem does not happen again in the medium to long term.
  • Root cause fix — high investment cost, harder to achieve.

Task Urgency

By Task Type

Business-impacting bugs > Feature requirements > General bugs > Optimizations

By Task Nature

Urgent

Issues that block checkout or cause billing errors — potential financial losses, or tasks explicitly flagged by leadership — must be addressed immediately.

Important (Planned)

Items like Lighthouse improvements or Black Friday pages — follow the plan.

Not Important, Not Urgent

Refactoring, optimization, etc. — do during downtime.

Neither Important nor Urgent

Skip entirely, or handle only when truly free.

Fairness

In team collaboration, unfair situations come up often. But if you are only focused on whether things are fair, a lot of work will not get done. You can only pick up and run with what is in front of you, and the environment always has constraints. If you cannot push others forward through skill and influence, you work with what you have, and do what can be done. At that point it comes down to who cares more about the outcome — and whether fairness matters more to you than creating the value itself.

Note: If I do not move until the opposition moves, and my allies do not move until I move, everyone just stays stuck.

Underperformance and Removal

When we bring someone onto the team, we expect them to share the workload, align with team direction, and grow together. But it is not uncommon to encounter someone who is passive, refuses to take feedback, and shows no improvement after communication. In those cases, a performance improvement plan (PIP) will be initiated. Anyone who receives a formal warning or PIP will receive zero year-end bonus for that year and will have work-from-home privileges suspended until performance improves.

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
重新打造軟體開發文化 - 透明化團隊規則及默契 - Mark Ku's Tech Notes