码农

**程式設計師**（Programmer，Computer Programmer 或 Coder；程式師），可以指在程式設計某個專業領域中的專業人士，或是從事軟體撰寫，程式開發、維護的專業人員。但一般 Coder 特指進行編寫代碼的編碼員。

一個程式設計師最常使用的程式語言（如組合語言、COBOL、C、C++、C#、JavaScript、Lisp、Python）可以加在「程式設計師」這個詞前面用來修飾。

涉及編程的一系列職業，如（軟體）開發人員、網路開發人員、行動應用程式開發人員、嵌入式韌體開發人員、軟體工程師、電腦科學家、遊戲程式師、遊戲開發人員和軟體分析師，通常還需要一系列其他類似的技能。用**程式設計師**這個詞來指代這些職位，有時被認為是一種侮辱性的簡化，甚至是貶損。

## 歷史

英國著名詩人拜倫的女兒愛達・勒芙蕾絲曾設計了巴貝奇分析機上計算伯努利數的一個程式，她甚至還建立了遞迴和子程式的概念。由於愛達在程式設計上的突破性創新，她被稱為世界上第一位程式設計師，詳見電腦領域中的女性。

## 工作範圍

　
: _本節的一些內容來自《職業前景手冊 （頁面存檔備份，存於網際網路檔案館）》，2006-07 版，該手冊作為美國政府的一部作品進入公有領域。_

電腦程式員編寫、測試、除錯和維護被稱為電腦程式的詳細指令，電腦必須遵循這些指令來執行它們的功能。程式設計師還構思、設計和測試用電腦解決問題的邏輯結構。編程領域的許多技術創新 —— 先進的計算技術、複雜的新語言和編程工具 —— 重新定義了程式設計師的角色，提升了當今許多編程工作。職位名稱和描述可能會有所不同，取決於組織。

程式設計師在許多環境中工作，包括企業資訊科技（「IT」）部門、大型軟體公司、小型服務公司和各種規模的政府實體。許多專業程式設計師也以獨立承包人的身分在客戶現場為諮詢公司工作。程式設計師通常不需要有從業執照就可以工作，但他們一般都會持有專業認證。編程被廣泛認為是一個專業（但有些權威機構不同意這個看法，他們認為只有那些法律上規定要有從業執照的職業才能叫做專業）。

程式設計師的工作差別很大，這取決於他們為之編寫程式的業務類型。例如，更新財務記錄所涉及的指示，與飛行模擬器中訓練飛行員時類比在飛機上的狀況所需的指示大不相同。簡單的程式可以在幾個小時內完成，更複雜的程式可能需要一年以上的工作，而其他的程式則永遠不會被認為是「完善的」，而是只要繼續使用就會不斷進行改進。在大多數情況下，幾個程式設計師在進階程式設計師的監督下作為一個團隊一起工作。

程式設計師根據主要由進階程式設計師和系統分析員確定的規範編寫程式。在設計過程完成後，程式設計師的工作就是將設計轉換成電腦可以遵循的一系列邏輯指令。程式設計師用眾多程式語言中的一種來編寫這些指令。根據用途的不同，會使用不同的程式語言。例如，COBOL 通常用於通常在大型和中型電腦上執行的業務應用程式，而 Fortran 則用於科學和工程。C++ 和 Python 廣泛用於科學和商業應用程式。Java、C#、JS 與 PHP 是 Web 和商業應用程式的流行程式語言。程式設計師通常了解一種以上的程式語言，因為許多語言是相似的，他們通常可以相對容易地學習新的語言。在實際中，通常會用程式設計師們了解的語言來描述程式設計師，比如，**Java 程式設計師**，或者用他們所扮演的角色或他們的工作環境來描述：比如，**資料庫程式設計師**、**大型電腦程式設計師**、**Web 開發人員**等。

當修改組成程式的原始碼時，程式設計師需要讓其他程式設計師知道程式要執行的任務。他們通過插入注釋以及編寫文件，來讓其他人更容易理解程式。為了節省工作量，程式設計師經常使用基本代碼庫，這些庫可以針對特定的應用程式進行修改或自訂。這種方法可以產生更可靠和一致的程式，並通過消除一些重複性的步驟來提高程式設計師的生產力。

### 測試和除錯

程式設計師通過執行程式並尋找錯誤來測試程式。一旦確定了錯誤，程式設計師通常會進行適當的修正，然後重新檢查程式，直到錯誤（bug）的嚴重程度達到可接受的低水平。這個過程稱為測試和除錯。這些都是每個程式設計師工作的重要部分。程式設計師可以在程式的整個生命周期中繼續修復這些問題。更新、修復、修改和擴充現有程式有時稱為**維護編程**。程式設計師可能會編寫使用者指南和線上幫助，或者他們可能會與技術作者合作完成這些工作。

### 應用程式與系統編程

電腦程式員通常分為兩大類：應用程式員和系統程式設計師。應用程式員編寫程式來處理特定的工作，例如在組織內跟蹤庫存的程式。他們還可以修改現有的套裝軟體（packaged software），或客製化通常從獨立軟體供應商購買的通用應用程式。相比之下，系統程式設計師編寫程式來維護和控制電腦系統軟體，如作業系統和資料庫管理系統。這些工作人員對指令進行更改，這些指令決定了系統的網路、工作站和 CPU 如何處理給定的各種作業，以及如何與印表機和磁碟機等外圍裝置通信。

### 資格和技能

軟體開發人員需要在電腦技術的某些方面具有深厚的技術專長。有些職位需要相關領域的學位，如電腦科學、資訊科技、工程、編程或任何其他與 IT 相關的研究生學習。 一個理想的軟體開發人員是一個自我激勵的專業人員，在諸如 C++、C#、PHP、Java、C、JavaScript、Visual Basic、Python、Smalltalk 等關鍵程式語言上擁有動態的動手實踐經驗。

根據開發人員 Eric Sink 的說法，系統設計、軟體開發和編程之間的差異更加明顯。在當前的市場環境中，程式設計師和開發人員之間已經存在隔離，因為實現程式的人和設計類結構或階層的人是不一樣的。開發人員成為軟體架構師或系統架構師（即設計大型軟體系統的多層體系結構或組件互動的架構師）後，差異會更大。

### 軟體類型

軟體開發公司的程式設計師可以直接與來自不同領域的專家合作來開發軟體，包括為特定客戶設計的程式或通用的套裝軟體，從電子遊戲到教育軟體，再到用於桌面出版和財務規劃的程式。套裝軟體的編程是電腦服務行業增長最快的部分之一。一些公司或組織，即使是小公司，也建立了自己的 IT 團隊，以確保內部軟體的設計和開發能夠滿足內部終端使用者非常特殊的需求，特別是在現有軟體不適合或成本太高的情況下。研究中心的情況就是如此。

在一些組織中，特別是小型組織中，通常被稱為**程式設計師分析師**的人同時負責系統分析和實際的編程工作。從大型電腦環境過渡到主要基於個人電腦（PC）的環境，模糊了曾經嚴格的程式設計師和使用者之間的區別。越來越多的熟練的終端使用者正在接管許多以前由程式設計師執行的任務。例如，越來越多地使用套裝軟體，如電子試算表和資料庫管理軟體套件，讓使用者可以編寫簡單的程式來存取資料和執行計算。

此外，網際網路的興起使得 Web 開發成為編程領域的一個重要組成部分。目前，更多的軟體應用程式是網路應用程式，任何人都可以使用網頁瀏覽器。這類應用程式的例子包括 Google 搜尋服務、Outlook.com 電子郵件服務和 Flickr 相片分享服務。

編程編輯器，也稱為原始碼編輯器，是專門為編寫程式原始碼的程式設計師或開發人員設計的文字編輯器。這些編輯器中的大多數都含有對程式設計師有用的特性，可能包括語法突顯、自動縮排、自動完成、括號匹配、語法檢查以及允許外掛程式。這些特性幫助使用者進行編碼、除錯和測試。

## 參考文獻

## 相關職業

* 系統管理員（SA）
* 系統設計師（SD）
* 資料庫管理員（DBA）
* 應用分析師（AA）
* 技術支援（TS）

## 外部連結

* 辨識優秀程式設計師的關鍵要素（英文）
* 程式設計師不為人知的事實（英文）