程序員

1970年，德國阿亨的阿亨工業大學學生學習程式設計
程序員（Programmer，Computer Programmer或Coder；程式師），可以指在程序設計某個專業領域中的專業人士，或是從事軟體撰寫，程序開發、維護的專業人員。但一般Coder特指進行編寫代碼的編碼員。
一個程序員最常使用的編程語言（如彙編語言、COBOL、C、C++、C#、JavaScript、Lisp、Python）可以加在“程序員”這個詞前面用來修飾。
涉及編程的一系列職業，如（軟件）開發人員、網絡開發人員、流動應用程式開發人員、嵌入式韌體開發人員、軟件工程師、電腦科學家、遊戲程序師、遊戲開發人員和software analyst，通常還需要一系列其他類似的技能。用程序員這個詞來指代這些職位，有時被認為是一種侮辱性的簡化，甚至是貶損。

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

**工作範圍**
本節的一些內容來自《 職業前景手冊 date=20061225101539 》，2006-07版，該手冊作為美國政府的一部作品進入公有領域。
計算機程序員編寫、測試、調試和維護被稱為計算機程序的詳細指令，計算機必須遵循這些指令來執行它們的功能。程序員還構思、設計和測試用計算機解決問題的邏輯結構。編程領域的許多技術創新——先進的計算技術、複雜的新語言和編程工具——重新定義了程序員的角色，提升了當今許多編程工作。職位名稱和描述可能會有所不同，取決於組織。
程序員在許多環境中工作，包括企業信息技術（“IT”）部門、大型軟件公司、小型服務公司和各種規模的政府實體。許多專業程序員也以獨立承包人的身份在客戶現場為諮詢公司工作。程序員通常不需要有從業執照就可以工作，但他們一般都會持有專業認證。編程被廣泛認為是一個專業（但有些權威機構不同意這個看法，他們認為只有那些法律上規定要有從業執照的職業才能叫做專業）。
程序員的工作差別很大，這取決於他們為之編寫程序的業務類型。例如，更新財務記錄所涉及的指示，與飛行模擬器中訓練飛行員時模擬在飛機上的狀況所需的指示大不相同。簡單的程序可以在幾個小時內完成，更復雜的程序可能需要一年以上的工作，而其他的程序則永遠不會被認為是“完善的”，而是隻要繼續使用就會不斷進行改進。在大多數情況下，幾個程序員在高級程序員的監督下作為一個團隊一起工作。
編寫JavaScript的軟件工程師
程序員根據主要由高級程序員和系統分析員確定的規範編寫程序。在設計過程完成後，程序員的工作就是將設計轉換成計算機可以遵循的一系列邏輯指令。程序員用眾多編程語言中的一種來編寫這些指令。根據用途的不同，會使用不同的編程語言。例如，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的說法，系統設計、軟件開發和編程之間的差異更加明顯。在當前的市場環境中，程序員和開發人員之間已經存在隔離，因為實現程序的人和設計類結構或層次結構的人是不一樣的。開發人員成為software architect或系統架構師（即設計大型軟件系統的多層體系結構或組件交互的架構師）後，差異會更大。

**軟件類型**
軟件開發公司的程序員可以直接與來自不同領域的專家合作來開發軟件，包括為特定客戶設計的程序或通用的套裝軟件，從電子遊戲到教育軟件，再到用於桌面出版和財務規劃的程序。套裝軟件的編程是計算機服務行業增長最快的部分之一。一些公司或組織，即使是小公司，也建立了自己的IT團隊，以確保內部軟件的設計和開發能夠滿足內部最終用戶非常特殊的需求，特別是在現有軟件不適合或成本太高的情況下。研究中心的情況就是如此。
在一些組織中，特別是小型組織中，通常被稱為程序員分析師的人同時負責系統分析和實際的編程工作。從大型機環境過渡到主要基於個人電腦（PC）的環境，模糊了曾經嚴格的程序員和用戶之間的區別。越來越多的熟練的終端用戶正在接管許多以前由程序員執行的任務。例如，越來越多地使用套裝軟件，如電子表格和數據庫管理軟件包，讓用戶可以編寫簡單的程序來訪問數據和執行計算。
此外，互聯網的興起使得Web開發成為編程領域的一個重要組成部分。目前，更多的軟件應用程序是網絡應用程序，任何人都可以使用網頁瀏覽器。這類應用程序的例子包括Google搜索服務、Outlook.com電子郵件服務和Flickr照片分享服務。
編程編輯器，也稱為源代碼編輯器，是專門為編寫程序源代碼的程序員或開發人員設計的文本編輯器。這些編輯器中的大多數都含有對程序員有用的特性，可能包括語法突顯、自動縮進、自動完成、括號匹配、語法檢查以及允許插件。這些特性幫助用戶進行編碼、調試和測試。
集成開發環境（Integrated Development Environment），簡稱IDE，是程序員廣泛使用的一種，集合了源代碼編輯器、編譯器、版本控制等功能的應用程序，常見的有Microsoft Visual Studio，InteliJ IDEA等等。

**參考文獻**

**相關職業**
 系統管理員（SA）- 系統設計師（SD）- 數據庫管理員（DBA）- 應用分析師（AA）- 技術支持（TS）

**外部鏈接**
 識別優秀程序員的關鍵要素- 程序員不為人知的事實