<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>全端｜林鼎淵 Dean Lin</title>
    <link>https://deanlin.net/tags/%E5%85%A8%E7%AB%AF/</link>
    <image><url>https://deanlin.net/images/author_hu_aa256fc934e9a932.jpg</url><title>全端｜林鼎淵 Dean Lin</title><link>https://deanlin.net/tags/%E5%85%A8%E7%AB%AF/</link><width>144</width><height>144</height></image>
    <description>林鼎淵（Dean Lin）的部落格：生成式 AI 企業內訓講師、外商資安公司軟體專家、7 本書作者。400 多篇文章用白話分享生成式 AI 實戰、Claude Code 與 Vibe Coding 教學、團隊合作與職場成長。</description>
    <generator>Hugo</generator>
    <language>zh-tw</language>
    <copyright>© 2020–2026 林鼎淵 Dean Lin</copyright>
    <lastBuildDate>Fri, 26 Nov 2021 17:29:46 +0800</lastBuildDate>
    <atom:link href="https://deanlin.net/tags/%E5%85%A8%E7%AB%AF/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>談談 Pair Programing —下班有約系列文</title>
      <link>https://deanlin.net/blog/202111/pair-programming/</link>
      <pubDate>Fri, 26 Nov 2021 17:29:46 +0800</pubDate>
      <guid>https://deanlin.net/blog/202111/pair-programming/</guid>
      <dc:creator>林鼎淵</dc:creator>
      <category>團隊合作</category>
      <description>前幾天跟一位給了我很多幫助的學長一起吃晚餐，因為同為資訊工程領域，所以聊天的話題也不免轉移到程式方面；其中談到 Pair Programing 的話題時，我覺得學長的見解很棒，因此趁記憶猶新時記錄下來，也許未來筆者也會在自己的公司試行看看。</description>
      <media:content url="https://deanlin.net/blog/202111/pair-programming/images/pair-programming-og_hu_4223d4a2ecf3389c.jpg" medium="image" type="image/jpeg" width="1200" height="675" />
      <content:encoded><![CDATA[<p>前幾天跟一位給了我很多幫助的學長一起吃晚餐，因為同為資訊工程領域，所以聊天的話題也不免轉移到程式方面；其中談到 Pair Programing 的話題時，我覺得學長的見解很棒，因此趁記憶猶新時記錄下來，也許未來筆者也會在自己的公司試行看看。</p>
<p><img src="https://deanlin.net/blog/202111/pair-programming/images/pair-programming-01.webp" width="1400" height="787" alt="談談 Pair Programing —下班有約系列文（圖 1）" fetchpriority="high" decoding="async"></p>
<pre tabindex="0"><code>文章大綱
一、 Code Review 這件事
  ➤ 時機點
  ➤ 由誰來 Review？
二、 網頁一開始並沒有前後端之分
  ➤ 在過去，每個人都是全端
  ➤ 分前後端，是為讓專業更專業
  ➤ 網頁工程師應該都要是全端
三、 談談 Pair Programing
  ➤ 什麼是 Pair Programing？
  ➤ 更好的 Code Review 機制
  ➤ 讓團隊每個人都變成全端
  ➤ 可能會遇到的問題
</code></pre><h2 id="一-code-review-這件事">一、 Code Review 這件事<a class="h-anchor" href="#%e4%b8%80-code-review-%e9%80%99%e4%bb%b6%e4%ba%8b" aria-label="這個段落的連結"></a></h2>
<h3 id="-時機點">時機點<a class="h-anchor" href="#-%e6%99%82%e6%a9%9f%e9%bb%9e" aria-label="這個段落的連結"></a></h3>
<p>筆者通常是在 Git Commit、Merge Request 的時機去做 Code Review 這件事，因為過去做的習以為常，所以沒有去思考這樣做到底有沒有意義。</p>
<p>跟學長討論的過程中，我們發現在這個時間點做 Code Review，往往只能看到<code>很片面的程式邏輯</code>，因此通常僅能對 Coding Style 提出建議，對整體專案的架構幫助並不大；而且通常只有在新同事入職時會認真看，過一段時間後就會放鬆然後隨便了。</p>
<h3 id="-由誰來-review">由誰來 Review？<a class="h-anchor" href="#-%e7%94%b1%e8%aa%b0%e4%be%86-review" aria-label="這個段落的連結"></a></h3>
<p>往往是由在公司待比較久的資深工程師來做這件事情，從邏輯上看起來沒有什麼問題；但實際上資深工程師給出的建議，在很多時候新人是無法理解原因的，他只是根據建議做修改，<code>並沒有了解為什麼要這樣做，所以下次可能還是會犯相同的錯誤</code>。</p>
<p>我們不能期待一個新人在剛入職時，就有向前輩提出問題、追根究底的勇氣；但前輩看到他一再犯下相同的錯誤時會去想：「我不是已經交了他很多次了，為什麼還是學不會？」</p>
<p>如果讀者也有相同的經驗，也許我們自己要做一些調整。</p>
<hr>
<h2 id="二-網頁一開始並沒有前後端之分">二、 網頁一開始並沒有前後端之分<a class="h-anchor" href="#%e4%ba%8c-%e7%b6%b2%e9%a0%81%e4%b8%80%e9%96%8b%e5%a7%8b%e4%b8%a6%e6%b2%92%e6%9c%89%e5%89%8d%e5%be%8c%e7%ab%af%e4%b9%8b%e5%88%86" aria-label="這個段落的連結"></a></h2>
<h3 id="-在過去每個人都是全端">在過去，每個人都是全端<a class="h-anchor" href="#-%e5%9c%a8%e9%81%8e%e5%8e%bb%e6%af%8f%e5%80%8b%e4%ba%ba%e9%83%bd%e6%98%af%e5%85%a8%e7%ab%af" aria-label="這個段落的連結"></a></h3>
<p>在十幾年前，網頁並沒有明確的將工作劃分成前後端，當時的工程師基本上同時具備網頁切版、資料庫設計、伺服器架設…等技能。</p>
<h3 id="-分前後端是為讓專業更專業">分前後端，是為讓專業更專業<a class="h-anchor" href="#-%e5%88%86%e5%89%8d%e5%be%8c%e7%ab%af%e6%98%af%e7%82%ba%e8%ae%93%e5%b0%88%e6%a5%ad%e6%9b%b4%e5%b0%88%e6%a5%ad" aria-label="這個段落的連結"></a></h3>
<p>隨著網頁技術的蓬勃發展，每年都會推出大量的新技術，一個工程師很難在各個領域都即時跟上；也因此工作的內容有更明確的劃分，像是前後端分離、Devops、UIUX…等概念與技術也應運而生。</p>
<h3 id="-網頁工程師應該都要是全端">網頁工程師應該都要是全端<a class="h-anchor" href="#-%e7%b6%b2%e9%a0%81%e5%b7%a5%e7%a8%8b%e5%b8%ab%e6%87%89%e8%a9%b2%e9%83%bd%e8%a6%81%e6%98%af%e5%85%a8%e7%ab%af" aria-label="這個段落的連結"></a></h3>
<p>無論工作的內容是前端還是後端，筆者個人認為都應該要具備全端的知識水平；你不用在全部領域都做到專家的等級，但至少你要能夠看得懂對方寫的 Code，並具備基礎的維護能力。</p>
<hr>
<h2 id="三-談談-pair-programing">三、 談談 Pair Programing<a class="h-anchor" href="#%e4%b8%89-%e8%ab%87%e8%ab%87-pair-programing" aria-label="這個段落的連結"></a></h2>
<h3 id="-什麼是-pair-programing">什麼是 Pair Programing？<a class="h-anchor" href="#-%e4%bb%80%e9%ba%bc%e6%98%af-pair-programing" aria-label="這個段落的連結"></a></h3>
<p>這是雙方看同一個螢幕，經過彼此交流來共同開發的一個機制；筆者曾經寫一篇文章說明過去 Pair Programing 遇到的問題、有什麼工具可以讓我們在 Pair Programing 有更高的效率，有興趣的朋友可以參考：<a href="https://deanlin.net/blog/202106/vscode-live-share-pair-programming/">連結</a>。</p>
<h3 id="-更好的-code-review-機制">更好的 Code Review 機制<a class="h-anchor" href="#-%e6%9b%b4%e5%a5%bd%e7%9a%84-code-review-%e6%a9%9f%e5%88%b6" aria-label="這個段落的連結"></a></h3>
<p>比起等對方寫好後來做 Code Review，Pair Programing 可以<code>更即時</code>的知道對方是從哪個角度出發來寫這個程式的。</p>
<p>剛入職的同事如果是透過 Pair Programing 來做開發，他可以更快速地融入團隊，並在短時間內將技術提升至團隊平均開發水平；這個過程中前輩也能對新人的技術有更高的掌握度，並作出合適的提點。</p>
<h3 id="-讓團隊每個人都變成全端">讓團隊每個人都變成全端<a class="h-anchor" href="#-%e8%ae%93%e5%9c%98%e9%9a%8a%e6%af%8f%e5%80%8b%e4%ba%ba%e9%83%bd%e8%ae%8a%e6%88%90%e5%85%a8%e7%ab%af" aria-label="這個段落的連結"></a></h3>
<p>在談話的過程中，學長認為前後端的劃分雖然有必要；<code>但不管是前端還是後端，應該都要具備全端的能力</code>，因此我向學長問道：「可是很多人就是以前端/後端工程師的身份入職，他們真的對另外一個領域完全不熟悉啊；先不論他們是否願意學習，就算願意學習，他們手上的專案也會 Delay，這些成本也要納入考量吧？」</p>
<p>關於這個問題，學長的觀點是這樣的：「不管前後端，程式的邏輯都是一樣的，只是應用的地方不同而已；學習的成本一定有，但沒有你想像的那麼高，原則上 1 個禮拜就能夠具備基礎的開發能力；先跟老闆溝通好，專案 Delay 一個禮拜沒你想的那麼嚴重。」</p>
<p>聽到變成全端的時間成本，我真的不太理解為何會這麼短，於是我拋出問題：「一個禮拜？不可能吧？這怎麼可能做到？有更具體的做法嗎？」</p>
<p>面對我的質疑，學長回答是：「我這邊是用 Pair Programing 達成的，兩個工程師輪流寫，強迫他跨出舒適圈；這個舒適圈一但跨出，旁邊又有一個可以隨時解惑的老師，相信我，人類的學習潛能遠比你認知的還要強大。」</p>
<blockquote>
<p>上面是學長在自己公司實踐的成果，筆者尚未在自己的公司實踐；但我相信這個作法一定可以提升團隊整體的程式水平以及歸屬感。</p>
</blockquote>
<h3 id="-可能會遇到的問題">可能會遇到的問題<a class="h-anchor" href="#-%e5%8f%af%e8%83%bd%e6%9c%83%e9%81%87%e5%88%b0%e7%9a%84%e5%95%8f%e9%a1%8c" aria-label="這個段落的連結"></a></h3>
<ol>
<li><strong>沒有合適的教練</strong><br>就算有工程師願意學，也需要團隊裡面有人願意一起陪練；最佳的陪練就是「資深全端工程師」，因為他前後端都懂，所以在面對問題時可以更全面地給出解答，<code>但能做到並願意這樣做的人，市場上應該不會太多</code>。</li>
<li><strong>時間成本、成效因人而異</strong><br>每個人的資質與領悟力不同，對原本領域的鑽研深度也不一樣；這些個體化的差異可能會讓你在推行這個政策的時候結果不如預期。</li>
</ol>
<hr>
<blockquote class="pullquote"><p>文章僅是提出不同的觀點以及作法，是否適合自己的團隊、具體如何導入；筆者認為需要自己去評估，如果你有自己的想法或不同的見解，也歡迎在底下留言。</p>
</blockquote>
<p><strong>如果你對目前的職涯感到迷茫，想從不同視角檢視自己的選擇，相信《<a href="https://www.tenlong.com.tw/products/9786264142083">工程師下班有約</a>》這本書能為你帶來靈感與啟發：</strong></p>
<figure class="figure"><img src="https://deanlin.net/blog/202111/pair-programming/images/pair-programming-02.webp" width="1400" height="319" alt="林鼎淵著作《工程師下班有約：企業內訓講師帶你認清職涯真相！》" loading="lazy" decoding="async">
  <figcaption><a href="https://www.tenlong.com.tw/products/9786264142083">https://www.tenlong.com.tw/products/9786264142083</a></figcaption>
</figure>

<pre tabindex="0"><code>下班有約系列文
▋ [前端]新手工程師容易卡住的問題
▋ [前端＆後端]工程師常犯的錯誤
▋ 讓開發團隊更好協作的方式
▋ 談談 Pair Programing(本篇)
▋ 談談工程師的話語權
▋ 出社會後，新鮮人要及早知道的 5 件事
▋ 面試的性向測驗竟然準到讓人心裡發寒？
▋ 反其道而行的任務分配
▋ 現在的 Daily Scrum 真的適合團隊嗎？
▋ 用低成本也能請到好員工？資深 HR 不想告訴你的秘密！
</code></pre>]]></content:encoded>
    </item>
  </channel>
</rss>
