Hiện nay, thị trường phần mềm đa phần yêu cầu ứng viên phải thành thạo ít nhất một ngôn ngữ hay framework nào đó. Tuy nhiên, ngôn ngữ lập trình liệu có còn là yếu tố tiên quyết khi ta xem hồ sơ của một lập trình viên?. Khái niệm một lập trình viên hiện đại đã đi xa hơn cả ngôn ngữ lập trình hay công cụ. Ở bài viết này, tôi sẽ phân biệt lại một số kiểu kỹ năng, giải thích yếu tố khiến ngành công nghiệp phần mềm trở nên phức tạp và những yếu tố phi kỹ thuật mà các lập trình viên cần có để có thể có một sự nghiệp thành công.
Với tính chất công việc và trách nhiệm của mình, tôi đã tham gia vào rất nhiều cuộc phỏng vấn ứng viên tại môt công ty phần mềm. HRs và cả người tuyển dụng nữa đã hỏi tôi về cái nhìn đối với một người là dân kỹ thuật từ góc nhìn của chính một dân kỹ thuật. Cụ thể những câu hỏi đó là như sau:
Bài viết dưới đây sẽ phân loại các khuông mẫu kỹ năng cơ bản cho một lập trình viên và một phép ẩn dụ con đường sự nghiệp của một kỹ sư phần mềm với một đại lộ.
Chuyên gia là người thông thạo về một lĩnh vực nào đó
Một chuyên gia sở hữu những đặc điểm sau:
Ví dụ
Nhược điểm
Đây là dạng người đối lập với những chuyên gia, họ có một vốn kiến thức rộng và bao quát ở nhiều lĩnh vực.
Họ có những đặc điểm riêng biệt sau:
Ví dụ:
T-shaped" là một cụm từ để mô tả chiều rộng và chiều sâu kỹ năng, kiến thức của một người.
Kiểu người T-shaper bao gồm những đặc tính sau:
Đây là một dạng lập trình viên rất được ưa chuộng tại những dự án áp dụng theo quy trình Agile ( tâp trung xây dựng một team gồm những thành viên có thể làm việc ở nhiều lĩnh vực khác nhau).
Một điểm mạnh nữa là sự xuất hiện của kiểu lập trình viên T-shaper sẽ giúp bù đắp được những lỗ hổng khi mà có một thành viên hay một chuyên gia về một mảng nào đó rời team.
Và cuối cùng điểm mà họ được yêu thích nhất đó chính là tính cơ động, với khả năng giao tiếp tốt, suy nghĩ tích cực và kỹ năng đưa ra nhiều giải pháp.
Đây là kiểu chuyên gia/ speacialist nhưng có thể chuyển sang vai trò khác một cách dễ dàng. Trái ngược với kiểu Biết tuốt, ở mỗi vai trò họ đều có kinh nghiệm và kiến thức sâu, có thể đưa ra giải pháp tối ưu.
Ví dụ
Biểu đồ dưới đây thể hiện sự so sánh giữa 3 kiểu lập trình viên, trục y thể hiện độ chuyên sâu về kỹ năng, kiến thức, trục x thể hiện mức độ đa năng, phạm vi vai trò mà người đó có thể đảm nhận được.
Một lập trình viên full-stack có thể đảm nhiệm công việc ở mọi mức độ kỹ thuật trong phạm vi "stack" của họ. Có rất nhiều người không biết rằng full-stack là một khái niệm đặc biệt và mỗi một lập trình viên full-stack đều phụ thuộc vào mảng stack của họ.
Ví dụ về mảng Stacks
>>> Xem tiếp Phần 2
Via Techmaster