Sự khác biệt chính giữa các kỹ sư phần mềm và lập trình viên là gì? [đóng cửa]


103

Sự khác biệt chính giữa các kỹ sư phần mềm và lập trình viên là gì?


1
Joel đã hỏi câu hỏi này Đây không phải là một câu hỏi dễ trả lời và tôi không chắc có câu trả lời rõ ràng không. Nhưng tôi biết rằng Joel đã đặt ra câu hỏi đó.
Denaem

Câu trả lời:


80

Khi tuyển dụng, chúng tôi tìm kiếm sự khác biệt giữa một người sẽ có thể giúp chúng tôi kiến ​​trúc hệ thống của chúng tôi, xác định quy trình, tạo thông số kỹ thuật, thực hiện tái cấu trúc nâng cao, v.v. và ai đó sẽ giúp chúng tôi hoàn thành các nhiệm vụ lập trình khỏi danh sách kiểm tra . Tôi tin rằng bạn có thể gọi cựu Kỹ sư phần mềm và sau là Lập trình viên .


10
Bạn có thể vui lòng làm rõ, bạn thuê cả hai (cho các công việc khác nhau) hoặc chỉ các kỹ sư phần mềm?
Jaap

2
Bạn có thể gọi cựu Kỹ sư phần mềm, nhưng tôi thì không. Khi Brendan trốn tránh, đó thường là công việc của kiến ​​trúc sư phần mềm.
JMᴇᴇ

131

Điều này tùy thuộc vào công ty, vì tôi không nghĩ rằng có một khung pháp lý để thực thi mệnh giá này hay mệnh giá khác, hoặc ít nhất là tôi không biết và điều này có thể khác nhau giữa các quốc gia (ví dụ: việc sử dụng thuật ngữ này "Kỹ sư" thực sự được quy định khá chặt chẽ ở Pháp, nhưng có những biến thể được phép cho các trường hợp "lạm dụng").

Điều đó được nói rằng xu hướng chung đi như thế này:

  • Một vị trí lập trình viên thường là một trong những người chuyên nghiệp được thuê để sản xuất mã của chương trình máy tính . Nó sẽ ngụ ý rằng bạn biết cách viết mã , có thể hiểu một thuật toán và làm theo thông số kỹ thuật . Tuy nhiên, nó thường dừng lại ở đó về mặt trách nhiệm.

  • Một vị trí nhà phát triển thường được coi là một siêu kiểu của vị trí lập trình viên . Nó bao gồm các nhiệm vụ tương tự, cộng với các khả năng thiết kế và kiến trúc sư một thành phần phần mềm , và để viết các tài liệu kỹ thuật cho nó (bao gồm cả thông số kỹ thuật). Bạn có thể - ít nhất là về mặt kỹ thuật - dẫn dắt người khác (vì vậy, lập trình viên), nhưng không nhất thiết phải là một nhóm (có sự xuất hiện ...)

  • Một kỹ sư vị trí thường có ngụ ý rằng bạn là một nhà phát triển người có một kiểu cụ thể về mức độ , một số kiến thức về kỹ thuật , và có khả năng thiết kế một hệ thống (như trong: một sự kết hợp của các thành phần phần mềm / modules mà cùng nhau tạo thành một thực thể phần mềm toàn bộ) . Về cơ bản, bạn nhìn thấy một bức tranh rộng hơn , và bạn có khả năng thiết kế và giải thích nó và tách nó thành các mô-đun nhỏ hơn .

Tuy nhiên, tất cả điều này là có thể tranh cãi , và như tôi đã nói, không có yêu cầu pháp lý nào mà tôi biết ở các nước Mỹ / Anh . Điều đó đang được nói, ở Pháp, bạn chỉ có thể tự gọi mình là "kỹ sư" nếu bạn đến từ một trường kỹ thuật (được công nhận bởi Ủy ban des Titres d'Ingenieurs hoặc đại loại như thế). Bạn không thể nói rằng bạn có "Bằng kỹ sư", nhưng bạn có thể nói rằng bạn có "Bằng kỹ sư" nếu bạn đã học một ngành học thuộc ngành kỹ thuật và công nghệ.

Có thể một số quốc gia có sự khác biệt tương tự, tôi thực sự không biết.

Quay lại với tiêu đề kỹ sư phần mềm ... Một lần, một trong những giáo viên của tôi đã nói với lớp chúng tôi - và đúng như vậy - rằng ngày nay không có thứ gọi là "công nghệ phần mềm" . Bởi vì thiết kế một cái gì đó (có thể là một tòa nhà, một chiếc xe, một phần cứng ...) có nghĩa là bạn có khả năng hình dung thiết kế của nó và tất cả các giai đoạn sản xuất của nó, và để dự đoán chính xác các tài nguyên bạn sẽ cần, và do đó chi phí sản xuất.

Điều này đúng với hầu hết các ngành kỹ thuật "thực sự". Tất nhiên, có những biến động (giá vật liệu sẽ thay đổi theo thời gian), nhưng có những mô hình lý thuyết rất hữu hạn (đối với thiết kế và lập kế hoạch) và mô hình thực nghiệm (để giữ bất kỳ điều gì trước đây trong những hạn chế có thể truy cập được) cho phép bạn dự đoán ngày kết thúc của dự án và việc sử dụng tài nguyên của dự án.

Vấn đề chính với phần mềm là nó chưa có. Chúng tôi muốn nhắm đến công nghệ phần mềm, nhưng chúng tôi chưa thực sự ở đó. Bởi vì chúng tôi có một môi trường rất linh hoạt và năng động, các ràng buộc rất khác nhau cho các dự án và vẫn còn thiếu sự trưởng thành khi nhìn lại các quy trình của chúng tôi. Chắc chắn chúng ta có thể nói rằng chúng ta đã làm tốt hơn về nó (mặc dù rất có thể tranh cãi với dữ liệu cứng), nhưng chúng ta chỉ ở đó từ những năm 60 (các dự án trước đó thực sự gần với máy tính chỉ phần cứng, do đó gần với kỹ thuật thực sự, trớ trêu thay ). Trong khi chúng ta đã chế tạo các phương tiện cơ giới trong hơn một thế kỷ, các phương tiện nói chung trong một vài thiên niên kỷ và xây dựng thậm chí nhiều thiên niên kỷ hơn (và thực sự khá tốt ở một số nơi trên thế giới, khiến bạn cảm thấy như chúng ta '

Chúng tôi không dự đoán chính xác thời hạn một cách có hệ thống , chúng tôi không dự đoán chính xác một cách có hệ thống chi phí , chúng tôi không xác định một cách có hệ thống và giảm thiểu rủi ro vốn có và bên ngoài một cách hiệu quả và xác định . Điều tốt nhất chúng ta có thể làm là tạo ra các phán đoán đủ tốt và phù hợp với một số bộ đệm, trong khi cố gắng hết sức để tối ưu hóa các quy trình để giảm chu kỳ và chi phí.

Nhưng hãy xem, có lẽ đó là những gì kỹ thuật. Và đó là những gì, khi ai đó nói về một "kỹ sư phần mềm", họ nên nghĩ và nhắm đến.

Vì vậy, điều đó dường như khó có thể thay thế được với hành động đơn giản của các thói quen lập trình, hoặc hành động phát triển ứng dụng tiên tiến hơn.

Tuy nhiên, tất cả mọi thứ là một vấn đề của xu hướng. Gần đây, khá phổ biến khi có một nhóm phát triển theo chiều ngang trong đó mọi người trong nhóm là Nhà phát triển phần mềm cao cấp (vâng, thủ đô, vì điều đó khiến chúng tôi cảm thấy đặc biệt, phải không?), Không có sự phân biệt tuổi tác thực sự (đủ công bằng, trong tôi ý kiến) và không có quá nhiều sự khác biệt về kỹ năng (uh-oh ...) và trách nhiệm (bây giờ điều đó không thể tốt, ngoài việc hoàn toàn dành cho PR buzz).

Đôi khi nó cũng chỉ là một thói quen và đặc thù của văn hóa và biệt ngữ của một ngành công nghiệp. Nhiều vị trí hơn cho sản xuất phần mềm nhúng sử dụng tiêu đề cho các kỹ sư phần mềm. Chủ yếu là vì điều đó có thể ngụ ý rằng bạn sẽ luôn phải đối phó ở một mức độ nhất định với phần cứng cũng như trong lĩnh vực này, vì vậy bạn rõ ràng phải đối phó với các khía cạnh khác của sản xuất và của toàn bộ "hệ thống" bạn sản xuất. Không chỉ các bit đi hạt bên trong nó. Mặt khác, bạn không thực sự thấy thuật ngữ kỹ sư đang được sử dụng trong các vị trí sản xuất phần mềm tài chính. Đó là bởi vì một sự phát triển bắt chước của ngành công nghiệp này từ một trong những người tiền nhiệm của nó (ví dụ, kỹ thuật nhúng tìm thấy nguồn gốc của nó trong kỹ thuật ô tô), hoặc vì họ chỉ muốn cung cấp tín dụng / trọng lượng ít hơn cho một vị trí.

Và để chắc chắn thả lỏng mọi người trong sương mù, sau đó bạn sẽ tìm thấy các tiêu đề khác trộn lẫn cả hai (như "Kỹ sư phát triển phần mềm" hoặc "Kỹ sư phần mềm đang thử nghiệm"!), Và sau đó những cái khác nhấn mạnh những cây cầu điên rồ hơn với các tên miền khác ( nghĩ về "Kiến trúc sư phần mềm" và làm thế nào "kiến trúc phần mềm" có thể là một hành vi trộm cắp từ vựng không biết xấu hổ). Và tiếp tục phát triển: Kỹ sư phát hành, Quản lý phát triển thay đổi, Kỹ sư xây dựng (người đó cũng sẽ ra ffaaarrrrrr ở đó). Và đôi khi chỉ đơn giản là "kỹ sư".

Hy vọng rằng đã giúp, mặc dù nó không thực sự là một câu trả lời.

Ồ, và điều đó có nghĩa là công ty mới của bạn đang cố gắng lôi kéo bạn bằng một tiêu đề mới hoặc họ không thực sự quan tâm đến các tiêu đề, hoặc bạn thực sự sẽ có một vị trí cấp cao hơn. Cách duy nhất để biết là đọc thông số công việc của bạn, nói chuyện với họ và cuối cùng đưa ra một cú đánh và phán xét cho chính bạn. Tôi hy vọng đó là lựa chọn thứ hai và bạn hài lòng với nó (và có khả năng kiếm được nhiều tiền hơn trong đó). ;)


12
Cuốn sách "Lập trình viên thực dụng" cũng cho rằng phần mềm không giống như kỹ thuật. Trong khi bạn có thể lập kế hoạch cho một ngôi nhà hoặc một tòa nhà chọc trời, chẳng hạn như một sự tương tự cho công nghệ phần mềm khó có thể được sử dụng. Họ tuyên bố: Phần mềm giống như làm vườn hơn. Lên kế hoạch làm vườn, trồng cây. Sau đó xem những gì đang phát triển, loại bỏ cỏ dại và trồng cây mới.
Falcon

6
"Một khi giáo viên của tôi nói với lớp chúng tôi rằng ngày nay không có thứ gọi là" công nghệ phần mềm ". Bởi vì kỹ thuật gì đó có nghĩa là bạn có khả năng hình dung ra thiết kế của nó và tất cả các giai đoạn sản xuất của nó, và dự đoán chính xác các tài nguyên bạn sẽ cần ". Điều đó có thể không đúng sự thật tại thời điểm nó được viết. Giống như kiến ​​trúc, chúng ta không thể dự đoán chi phí mà không biết các yêu cầu (một tòa nhà chọc trời có giá bao nhiêu? Tôi sẽ không cho bạn biết nó phải cao đến mức nào trước khi bạn bắt đầu xây dựng ...). Nhưng chúng ta có thể dự đoán chi phí sau đó, được đưa ra một nhóm phát triển phần mềm trưởng thành.
MSalters

1
@MSalters: Chắc chắn, bạn có thể xoay chuyển vấn đề này: như kiến ​​trúc, chúng tôi không thể dự đoán chi phí mà không có yêu cầu. Nhưng không giống như kiến ​​trúc , ngay cả với các yêu cầu được xác định rõ (mặc dù chúng tôi thường linh hoạt hơn vì chúng khó thấy trước hơn hoặc chúng tôi có xu hướng cho phép chúng thay đổi), chúng tôi không thể dự đoán chi phí. Bạn có thể làm điều này trong kỹ thuật bình thường đến một mức độ chính xác rất chính xác, VÀ chúng tôi hiện có thể xác định chi phí cho các trường hợp bất thường hơn là trong SE. Chúng tôi chỉ làm (khá thô) guesstimates. Chúng tôi đang trở nên tốt hơn trong việc tạo ra chúng, nhưng họ vẫn đoán được khá nhiều.
haylem

3
@haylem: Đó là tiêu chuẩn trong phát triển phần mềm. Nhưng nếu bạn đã làm việc tại một công ty 4/5 cấp CMM, bạn sẽ nhận thấy rằng họ có thể dự đoán chi phí và thường gắn mức tin cậy 95% cho họ. Họ hiểu cơ sở phần mềm của họ đủ tốt và có yêu cầu đủ tốt, rằng rào cản là rất hiếm. Và chi phí chặn đường thấp hơn khi bạn có kinh nghiệm để đối phó với chúng.
MSalters

1
@pcurry: lưu ý tôi không khẳng định đây là "phân loại của tôi". Nó chỉ khá phổ biến như thế này bởi các nhà tuyển dụng và bảng lương của công ty, và đó cũng là cách nó thường được coi trong các khóa học CNTT của CS. Họ có xu hướng chụp ảnh với nhau. Vì vậy, tôi đoán rằng tôi đã liệt kê khung nhìn được chấp nhận bởi (được gọi là) Kỹ sư phần mềm nhiều hơn là bởi các lập trình viên (tự mô tả), rõ ràng. Không thực sự quan trọng những gì bạn gọi cho mình, đó là những gì mọi người sẽ coi bạn là vấn đề. Và nó chỉ quan trọng nếu bạn quan tâm đến những thứ đó. Thành thật mà nói, cá nhân tôi không quan tâm đến cái này hay cái khác, không thay đổi tôi.
haylem

81

Kỹ sư phần mềm là những người làm việc tại các công ty gọi những người viết phần mềm cho họ là "kỹ sư phần mềm".

Lập trình viên là những người làm việc tại các công ty gọi những người viết phần mềm cho họ là "lập trình viên".

Ngoài ra còn có nhà phát triển , hoặc nhà phát triển phần mềm . Họ là những người làm việc tại các công ty gọi những người viết phần mềm cho họ là "nhà phát triển" hoặc "nhà phát triển phần mềm", tương ứng.


26
Tôi nên lưu ý rằng câu trả lời này không thực sự có nghĩa là buồn cười.
Giê

15

Vì vậy, có "Kỹ sư phần mềm", "Lập trình viên" và "Nhà phát triển", "Trình mã hóa" và bạn không bao giờ có thể quên "Chuyên gia về dịch vụ"

Đây là tất cả các thuật ngữ tiếp thị cho những người không thể nói điều gì đó có ý nghĩa trong CV của họ, chẳng hạn như vai trò thực tế của họ (không chỉ là chức danh công việc) ở các vị trí trước đó.

Trên quảng cáo việc làm, sự khác biệt là ở người nhân sự.

Điểm mấu chốt: mỗi người đều có quan điểm riêng của mình về "điều gì tạo nên một nhân viên giỏi làm việc với mã" và một số người thích liên kết những kỹ năng như vậy với những chức danh như vậy.

Bạn cần gì để làm? Quảng cáo việc làm nên được mô tả về các kỹ năng cần thiết và CV sẽ giải thích chi tiết kinh nghiệm của ứng viên.


10

Không có sự khác biệt. Họ là những điều tương tự. Các công ty, mặc dù, có thể có các mô tả công việc chính thức bằng cách sử dụng các thuật ngữ, và sau đó có thể có một số ý nghĩa cụ thể của công ty đối với thuật ngữ này.


8

Lập trình là về mã. Kỹ thuật phần mềm là về sản phẩm cuối cùng.


3

Điều đó thực sự phụ thuộc vào cách công ty xác định các vị trí. Có thể là một kỹ sư phần mềm, bạn sẽ có nhiều cơ hội quyết định thiết kế hơn, trong khi là nhà phát triển, họ sẽ cung cấp cho bạn sơ đồ UML và bạn sẽ viết chương trình.

Nhưng, không có định nghĩa thực tế nào để dựa vào tiêu đề, mọi người sẽ biết bạn làm gì hoặc bạn có kinh nghiệm như thế nào.

Khi tôi là một kiến ​​trúc sư / nhà phát triển, chức danh của tôi là nhà khoa học máy tính, nhưng tôi sẽ chỉ nói với mọi người rằng tôi là một lập trình viên, vì hai người đầu tiên không dễ định nghĩa, nhưng hầu hết mọi người đều biết lập trình viên làm gì.

Nếu một tiêu đề quan trọng đối với bạn thì hãy chấp nhận cái mới, vì kỹ sư nghe có vẻ cao hơn nhà phát triển.


3

Tôi không nghĩ có bất kỳ "sự khác biệt chính thức" nào, vì kinh nghiệm của tôi có thể có nghĩa là:

  • Một số công ty sử dụng các kỹ sư phần mềm và nhà phát triển phần mềm để đề cập đến điều tương tự. Họ chỉ sử dụng thuật ngữ yêu thích của họ.
  • Khác sử dụng cả hai thuật ngữ cho các vị trí khác nhau bên trong, nhưng vai trò khác nhau giữa các công ty! Trong một số có thể chỉ là một sự khác biệt về chức năng (một kỹ sư mềm sẽ làm việc để bảo trì và cải thiện hệ thống trong khi một nhà phát triển sẽ làm việc trên sản phẩm của công ty), hoặc có thể được phân cấp (kỹ sư ở trên nhà phát triển), hoặc thậm chí kỹ sư thực sự phụ thuộc vào hỏi đáp!

Ngoài ra, cũng là những thuật ngữ thời trang thay đổi ... Đầu tiên thuật ngữ này là "lập trình viên", sau đó là "kỹ sư phần mềm" và bây giờ dường như là "nhà phát triển" ...

Tốt hơn là đọc mô tả công việc hoặc cho ai đó trong công ty cụ thể


3

Trong một số khu vực pháp lý, "Kỹ sư" mang theo yêu cầu là một kỹ sư chuyên nghiệp, đó là phải có P. Eng. sự khinh miệt giữa các thông tin của một người. Tuy nhiên, trong các lĩnh vực khác có thể không có sự khác biệt như tôi là một "Kỹ sư thiết kế Softwere" làm việc tại tiểu bang Washington vài năm trước.


2

Kỹ sư phần mềm có xu hướng làm việc trên các hệ thống rất lớn, mất nhiều năm để phát triển, ví dụ 5 đến 16 năm chẳng hạn. Các lập trình viên có xu hướng có khuôn mẫu này chỉ là mã hóa và không có gì khác. Nhưng nó thực sự phụ thuộc vào tổ chức bạn làm việc và cách nhân sự tiếp thị vai trò như đã giải thích ở trên. Chúng cơ bản là giống nhau. Đừng quá gắn bó với một tiêu đề vì nó đồng nghĩa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.