it-swarm-vi.com

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

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

102
grokus

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ái trước là Kỹ sư phần mềm và cái sau là Lập trình viên.

79
Nicole

Thực sự 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 số một chuyên gia đượ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 theo thông số kỹ thuật . Tuy nhiên, nó thường dừng lại ở đó về mặt trách nhiệm.

  • Vị trí nhà phát triển thường được coi là một loại siêu vị trí lập trình viên . Nó bao gồm các trách nhiệm tương tự, cộng khả năng để thiết kế và kiến ​​trúc một thành phần phần mềm viết 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 vị trí kỹ sư thường ngụ ý rằng bạn là nhà phát triển có một loại bằng cấp cụ thể , một số kiến ​​thức về kỹ thuật có khả năng thiết kế một hệ thống (như trong: sự kết hợp của phần mềm các thành phần/mô đun cùng nhau tạo thành một thực thể phần mềm). 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 quốc gia Hoa Kỳ/Vương quốc 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 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ữ cho bất kỳ điều kiện nào 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 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 Những đứa trẻ lố bịch chơi với đồ chơi phần mềm hào nhoáng của chúng tôi so sánh).

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 chi phí một cách có hệ thống , chúng tôi không xác định và giảm thiểu một cách có hệ thống các 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à sản xuất đủ tốt guesstimates, 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à 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).

Đó cũng là đôi khi chỉ là một thói quen và cụ thể đối với văn hóa và biệt ngữ của một ngành. 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 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 đó các tiêu đề khác nhấn mạnh cầu nối đ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à cách "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 đó). ;)

130
haylem

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.

81
Jer

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.

15
Ken Egozi

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.

10
GrandmasterB

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

8
darreljnz

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.

3
JB King

Đ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ư có vẻ cao hơn nhà phát triển.

3
James Black

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. Công việc sẽ bảo trì và cải thiện hệ thống trong khi 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ư là 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
Khelben

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 phải 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.

2
Siamac Nikoo