Khác biệt giữa bản sửa đổi của “Nhà phát triển phần mềm”

Tính chất công việc
(→‎top: clean up, general fixes using AWB)
(Tính chất công việc)
{{Infobox occupation
|name=Lập trình viên máy tính
|image=File:Two women operating ENIAC (full resolution).jpg
|caption=[[Jean Bartik|Betty Jennings]] và [[Frances Spence|Fran Bilas]], một phần của nhóm lập trình [[ENIAC]] đầu tiên
|official_names= Lập trình viên
|type=[[Nghề nghiệp]]
|activity_sector=[[Công nghệ thông tin]], [[Công nghiệp phần mềm]]
|competencies=Viết và gỡ lỗi mã máy tính
|formation=Thay đổi từ học nghề sang cử nhân
}}
'''Nhà phát triển phần mềm''' là một cá nhân hay một tổ chức có liên quan đến các vấn đề trong [[công nghệ phần mềm|quá trình phát triển phần mềm]] ở mức cao hơn việc chỉ thiết kế và viết mã, là khái niệm rộng hơn phạm vi [[lập trình máy tính]] hay [[quản lý dự án]], bao gồm cả nhiều vấn đề [[quản lý sản phẩm phần mềm]]. Đối tượng này có thể tác động bao quát cả dự án ở mức ứng dụng thay vì mức thành phần hay những tác vụ lập trình riêng lẻ. Các nhà phát triển phần mềm thường được chỉ đạo bởi những [[lập trình viên lãnh đạo]] cũng như bao gồm cả những nhà phát triển [[phần mềm tự do]].
 
[[Ngôn ngữ máy tính]] thường được sử dụng nhất của một nhà phát triển phần mềm (ví dụ:[[Hợp ngữ| Assembly]], [[C (ngôn ngữ lập trình)|C]], [[C ++]], [[C Sharp (ngôn ngữ lập trình)|C #]], [[JavaScript]], [[Lisp (ngôn ngữ lập trình)|Lisp]], [[Ngôn ngữ lập trình Python|Python]], [[Java (ngôn ngữ lập trình)|Java]]) có thể được đặt trước thuật ngữ ''nhà phát triển phần mềm''. Một số người làm việc với các ngôn ngữ [[lập trình web]] cũng đặt thêm tiền tố cho tiêu đề của họ bằng ''web''.
 
== Thuật ngữ ==
Trong những phạm vi cụ thể, thuật ngữ này có thể có những tên gọi khác là [[nhà phân tích phần mềm]] và [[kỹ sư phần mềm]].
 
Trên thị trường hiện nay có thể bắt gặp sự phân biệt giữa [[lập trình viên]] và nhà phát triển, với một bên là người tác động thực sự khác với một bên là người thiết kế [[lớp (khoa học máy tính)|lớp]] cấu trúc và phân cấp. Hơn nữa, các nhà phát triển còn là những [[kiến trúc sư hệ thống]], thiết kế kiến trúc đa cấp độ hay những thành phần tương tác của một hệ thống phần mềm lớn.<ref name="Sourcegear_2005">{{chú thích web |url=http://software.ericsink.com/No_Programmers.html |title= Small ISVs: Bạn cần những nhà phát triển, chứ không phải những lập trình |author=[[Eric Sink]] |publisher=[http://www.sourcegear.com/ sourcegear] Sourcegear|url-status=live|access-date = ngày 6 tháng 6 năm 2008 |quote=Một lập trình viên là người không làm gì khác ngoài việc viết mã cho những tính năng mới và (nếu bạn may mắn) sửa lỗi. Họ không viết ra sự kinh doanh. Họ không viết ra những tính huống phân tích tự động hóa. Họ không giúp khách hàng xử lý các vấn đề. Họ không viết tài liệu hướng dẫn. Họ không kiểm lỗi. Họ thậm chí không đọc mã (code). Tất cả những gì họ làm là viết những đoạn mã mới.}}</ref>
 
== Tính chất công việc ==
Một '[[lập trình viên]]' có thể chỉ làm công việc viết mã,<ref name="Sourcegear_2005" /> nhưng một 'nhà phát triển' có thể làm những việc liên quan nhiều hơn tới quá trình phát triển phần mềm như viết, kiểm tra, [[gỡ lỗi]] và duy trì các hướng dẫn chi tiết, được gọi là [[chương trình máy tính]], mà máy tính phải tuân theo để thực hiện các chức năng của chúng. Các nhà phát triển phần mềm cũng hình thành, thiết kế và kiểm tra các cấu trúc logic để giải quyết vấn đề bằng máy tính. Nhiều cải tiến kỹ thuật trong lập trình - công nghệ tính toán tiên tiến và các ngôn ngữ và công cụ lập trình mới tinh vi, đã xác định lại vai trò của một nhà phát triển phần mềm và nâng cao phần lớn công việc lập trình được thực hiện ngày nay. Chức danh và mô tả công việc có thể khác nhau, tùy thuộc vào tổ chức.<ref name="bls-ooh">{{cite web|url=https://www.bls.gov/ooh/computer-and-information-technology/computer-programmers.htm|title=Computer Programmers : Occupational Outlook Handbook: : U.S. Bureau of Labor Statistics|website=www.bls.gov|access-date=13 March 2021}}</ref>
 
Các nhà phát triển phần mềm làm việc ở nhiều cơ sở, bao gồm các phòng ban [[công nghệ thông tin]] (CNTT) của công ty, [[công ty phần mềm]] lớn, các công ty dịch vụ nhỏ và các tổ chức chính phủ thuộc mọi quy mô. Nhiều nhà phát triển phần mềm chuyên nghiệp cũng làm việc cho các công ty tư vấn tại các trang web của khách hàng với tư cách là [[Nhà thầu độc lập|nhà thầu]]. Thường không bắt buộc [[giấy phép]] để làm việc như một nhà phát triển phần mềm, mặc dù [[chứng chỉ chuyên nghiệp]] thường được các nhà phát triển phần mềm nắm giữ. Phát triển phần mềm được nhiều người coi là một [[Nghề nghiệp|nghề]] (mặc dù một số cơ quan chức năng không đồng ý với lý do rằng chỉ những nghề có yêu cầu cấp phép hợp pháp mới được coi là một nghề).
 
Công việc của các nhà phát triển phần mềm rất khác nhau tùy thuộc vào loại hình kinh doanh mà họ đang viết chương trình. Ví dụ: các hướng dẫn liên quan đến việc cập nhật hồ sơ tài chính rất khác với các hướng dẫn bắt buộc để sao chép các điều kiện trên máy bay cho [[Máy bay huấn luyện|huấn luyện phi công]] trong [[trình mô phỏng bay]]. Các chương trình đơn giản có thể viết trong vài giờ. Những cái phức tạp hơn có thể yêu cầu hơn một năm làm việc, trong khi những cái khác không bao giờ được coi là 'hoàn thành' mà là liên tục cải tiến miễn là chúng vẫn được sử dụng. Trong hầu hết các trường hợp, một số nhà phát triển phần mềm làm việc cùng nhau như một nhóm dưới sự giám sát của nhà phát triển phần mềm cấp cao.<ref>{{Cite web|url=https://www.computerscience.org/careers/computer-programmer/|title=Computer Programmer {{!}} ComputerScience.org|date=2020-10-13|website=Get an Education the World Needs {{!}} ComputerScience.org|language=en-US|access-date=2021-09-20}}</ref>
 
== Lịch sử ==
[[Tập_tin:Ada_Lovelace_portrait.jpg|phải|nhỏ|287x287px|[[Ada Lovelace]] được nhiều người coi là nhà phát triển phần mềm máy tính đầu tiên .<ref name="Fuegi-Francis-2003" />]]
Nhà toán học và tiểu luận người Anh [[Ada Lovelace]] thường được coi là nhà phát triển phần mềm máy tính đầu tiên, vì bà là người đầu tiên xuất bản một phần của chương trình (cụ thể là [[thuật toán]]) dự định triển khai trên công cụ phân tích của [[Charles Babbage]] vào tháng 10 năm 1842. Thuật toán được sử dụng để tính toán [[số Bernoulli]].<ref name="Fuegi-Francis-20032">{{Cite journal|last1=Fuegi|first1=J.|last2=Francis|first2=J.|date=October–December 2003|title=Lovelace & Babbage and the creation of the 1843 'notes'|journal=IEEE Annals of the History of Computing|volume=25|issue=4|pages=16–26|doi=10.1109/MAHC.2003.1253887}}</ref> Vì máy của Babbage chưa bao giờ được hoàn thiện như một tiêu chuẩn hoạt động vào thời Lovelace, nên bà không bao giờ có cơ hội để xem thuật toán hoạt động.
 
Người đầu tiên thực hiện một chương trình trên một máy tính điện tử hiện đại, đang hoạt động là [[nhà khoa học máy tính]] [[Konrad Zuse]] vào năm 1941.
 
Nhóm lập trình [[ENIAC]], bao gồm [[Kathleen Antonelli|Kay McNulty]], [[Jean Bartik|Betty Jennings]], [[Betty Holberton|Betty Snyder]], [[Marlyn Meltzer|Marlyn Wescoff]] , [[Frances Spence|Fran Bilas]] và [[Ruth Teitelbaum| Ruth Lichterman]], đã được ghi nhận là những nhà phát triển phần mềm thông thường đầu tiên.<ref>{{cite web|url=http://eniacprogrammers.org/eniac-programmers-project/memorials/|title=Memorials|publisher=Eniacprogrammers.org|access-date=13 March 2021}}</ref><ref>{{cite web|url=https://abcnews.go.com/Technology/story?id=3951187&page=1|title=ABC News: First Computer Programmers Inspire Documentary|date=2007-12-04|publisher=Abcnews.go.com|access-date=13 March 2021}}</ref>
* Một '[[lập trình viên]]' có thể chỉ làm công việc viết mã,<ref name="Sourcegear_2005" /> nhưng một 'nhà phát triển' có thể làm những việc liên quan nhiều hơn tới quá trình phát triển phần mềm, như:
** Tham gia vào [[quản lý sản phẩm phần mềm|xác định sản phẩm phần mềm]], bao gồm [[business case]] hay phân tích lỗ hổng
** Chi tiết hóa
** [[Phân tích yêu cầu]]
** Phát triển và chọn lọc những nguyên mẫu và mô phỏng để tái xác định yêu cầu.
** Tinh giản hóa và phân tích lợi nhuận, bao gồm lựa chọn kiến trúc và [[framework]] cho ứng dụng, điều chỉnh kinh phí và kế hoạch cho dự án.
** Thiết kế
** Gia công (cài đặt, cấu hình, lập trình/chế tạo, hợp nhất, di trú dữ liệu)
** Viết [[tài liệu phần mềm|tài liệu]] cho người dùng và các đối tác.
** Kiểm thử, bao gồm xác định/hỗ trợ [[Testing theory: acceptant test|acceptance testing]] và tập hợp các phản hồi từ những kiểm thử viên tiền phát hành.
** Tham gia vào hoạt động phát hành và tiền phát hành sản phẩm phần mềm, bao gồm quảng bá công nghệ (thuyết minh tính năng hay các mẫu sản phẩm) và phân tích tính cạnh tranh cho phiên bản sản phẩm sau vòng tròn phát hành
** Bảo trì
* Trong một công ty lớn, có thể có nhiều nhân viên đảm nhận từng công việc ở trên. Còn trong những môi trường phát triển nhỏ hơn, sẽ chỉ có một số ít, hay thậm chí chỉ một người phải thực hiện toàn bộ cả quy trình phát triển.
 
== Xem thêm ==
* [[Công nghệ phần mềm]]
* [[Quy trình phát triển phần mềm]]
* [[Nhà lập trình trò chơi điện tử]]
* [[Phát triển game|Phát triển máy tính và video game]]
* [[Danh sách các ngôn ngữ lập trình]]
 
== Chú thích ==