Bạn có thể nghĩ rằng trong lĩnh vực phát triển phần mềm, các thuật ngữ "junior", "mid-level" và "senior" chỉ là những nhãn hiệu - và bạn đúng. Nhưng dù bạn có thích những nhãn hiệu này hay không, chúng rất hữu ích vì chúng tạo ra một tập hợp kỳ vọng cho vai trò cụ thể. Đúng là đơn giản hóa quá mức, nhưng nó thực sự hữu ích. Ví dụ, bạn không muốn thuê một nhà phát triển cấp junior để thiết kế một bản nâng cấp lớn cho hệ thống kế thừa. Tương tự, bạn cũng không muốn lãng phí thời gian (hoặc thời gian của ứng viên) bằng cách phỏng vấn những ứng viên không có tiềm năng phù hợp. Thực tế, bạn còn không muốn để những ứng viên không phù hợp nộp đơn vào đầu tiên.
Mục tiêu của bạn là tạo ra nhóm phát triển với sự cân bằng phù hợp giữa nhà phát triển cấp junior (hay còn gọi là nhà phát triển mới vào nghề), nhà phát triển cấp trung và nhà phát triển cấp cao. Bằng cách này, bạn sẽ phát triển một văn hóa có thể dẫn đến sự chia sẻ thông tin hàng đầu, từ đó hoàn thành các nhiệm vụ và tiết kiệm tiền bạc trong thời gian đồng thời.
Nhà phát triển cấp junior so với cấp trung và cấp cao
Có nhiều sự khác biệt thực sự giữa nhà phát triển cấp junior và senior. Như một quy tắc chung, việc trở thành nhà phát triển cấp junior, cấp trung hoặc cấp cao không phụ thuộc nhiều vào số năm kinh nghiệm mà ứng viên cụ thể đó có - một nhà phát triển cấp junior thậm chí có thể lớn tuổi hơn một nhà phát triển cấp cao. Điều này phần là do kiến thức và kỹ năng kỹ thuật mà ứng viên đã học được. Nhưng hơn tất cả, nó liên quan đến cách mà một nhà phát triển nhìn nhận công việc của họ, cách họ tương tác với đồng nghiệp của mình và cách họ tiếp cận vấn đề. Theo nhìn nhận này, nhãn hiệu junior, cấp trung hoặc cấp cao trên hết đề cập đến một mức độ trưởng thành nhất định.
Yêu cầu chính cho một nhà phát triển cấp junior
Khi nói đến vị trí cấp junior, yêu cầu chính là ứng viên có khả năng thực hiện các nhiệm vụ kỹ thuật độc lập. Thường xuyên, tư duy của một nhà phát triển cấp junior tập trung vào việc làm cho mã code hoạt động. Ví dụ, nếu dự án được xây dựng trên kiến trúc tương tự (và giả sử kiến trúc đó đã được biết đến hoặc được tài liệu tốt), thì nhà phát triển cấp junior nên có khả năng triển khai thành phần tiếp theo của logic ứng dụng một cách nhanh chóng. Nhà phát triển cấp junior không hoàn toàn độc lập và sẽ cần thảo luận với đồng nghiệp về cách triển khai các yếu tố cụ thể của dự án. Hãy nhớ rằng nhà phát triển cấp junior viết mã code phức tạp, bởi vì họ thấy khó khăn khi viết mã code trực tiếp. Họ cũng sẽ cần xem xét lại mã code đã hoàn thành của mình với một kỹ sư phần mềm cấp cao hơn. Điều này cũng có nghĩa là bạn có thể mong đợi những ứng viên cấp junior không hiểu tất cả các khía cạnh trong một dự án và họ sẽ mắc lỗi từ thời gian này đến thời gian khác. Vì lưu ý, nhà phát triển cấp junior không được mong đợi thiết kế bất kỳ phần nào của kiến trúc phần mềm.
Những phẩm chất của một nhà phát triển cấp junior
Khi tuyển dụng một nhà phát triển cấp junior, bạn đang tìm kiếm những ứng viên có mức độ trưởng thành nhất định. Trong trường hợp này, bạn muốn ứng viên thể hiện những phẩm chất như:
- Sự khao khát thực sự để phát triển và học hỏi
- Sẵn lòng học từ những sai lầm của chính mình
- Có khả năng chấp nhận chỉ trích một cách bình tĩnh
- Nhiệt huyết và tận tụy thực sự
Cách phỏng vấn nhà phát triển cấp junior
Ứng viên cho vị trí nhà phát triển cấp junior phải chứng minh rằng họ:
- Đã trải qua toàn bộ chu kỳ phát triển ít nhất vài lần
- Có kiến thức về ngôn ngữ lập trình và các công nghệ liên quan
- Có kiến thức về hầu hết các quy trình liên quan đến việc tạo ra phần mềm
- Rất mong muốn tìm hiểu thêm về tất cả mọi thứ liên quan đến việc tạo ra phần mềm
- Có khả năng tìm ra giải pháp cho các vấn đề nhỏ
- Có thể làm việc hiệu quả trên một tính năng cụ thể của sản phẩm
Câu hỏi về hành vi
Hãy cung cấp một ví dụ về tình huống khi bạn:
- Tự giác giải quyết một vấn đề nhỏ nhưng quan trọng
- Có thể hỗ trợ đội, ngay cả khi bạn không đồng ý với đội
- Có sự thấu cảm với một người mới vào nghề
Nhà phát triển cấp trung so với cấp junior và cấp cao
Yêu cầu chính cho một nhà phát triển cấp trung
Khi nói đến vị trí nhà phát triển cấp trung, yêu cầu chính là ứng viên có khả năng thực hiện các nhiệm vụ độc lập. Điều này không giống như yêu cầu chính cho nhà phát triển cấp junior, vì từ "kỹ thuật" đã bị xóa trong định nghĩa. Tất nhiên, miễn là nhà phát triển cấp trung không được giao các nhiệm vụ kỹ thuật phức tạp yêu cầu một mức độ kiến thức sâu rộng, họ sẽ có thể hoàn thành những nhiệm vụ đó độc lập. Tuy nhiên, ở mức này, nhà phát triển cần hiểu rõ các yêu cầu kinh doanh, sau đó có thể dịch chúng thành các giải pháp kỹ thuật.
Những phẩm chất của một nhà phát triển cấp trung
Nhà phát triển cấp trung phải có khả năng hiểu rõ hết mọi ứng dụng làm trong ngữ cảnh cụ thể. Kết quả là, họ có thể có được hiểu biết sâu hơn về bất kỳ nhiệm vụ nào. Và do đó, họ có thể đánh giá các thay đổi một cách chính xác hơn và triển khai chúng một cách hiệu quả hơn. Trong giai đoạn lập kế hoạch, một nhà phát triển cấp trung giỏi phải có khả năng đọc các yêu cầu và biết rằng có điều gì đó thiếu hoặc có thể cải thiện. Trên một phương diện khác, nhà phát triển cấp junior có thể triển khai chính xác những gì được nêu trong yêu cầu. Điều này có nghĩa là ứng dụng hoạt động đúng (theo "đường dẫn hạnh phúc"), nhưng có thể gặp sự cố sau khi người dùng thực hiện một số hành động không chuẩn.
Việc phát triển mã là một công việc nhóm, do đó việc tiêu chuẩn hóa rất quan trọng, vì nó cho phép một người mới nhanh chóng hiểu được điều gì là gì và giảm thiểu số lỗi. Hiểu cấu trúc của một ứng dụng điển hình làm cho việc xây dựng nó khá đơn giản. Điều này lại cho phép thảo luận về các nguyên tắc triển khai chính xác và phân biệt mã tốt và mã xấu. Một nhà phát triển cấp trung chắc chắn quen thuộc với các mẫu và giải pháp tiêu chuẩn khi xây dựng một ứng dụng trong lĩnh vực của họ. Họ không chỉ quen với các giải pháp cụ thể, mà còn hiểu tại sao chúng cần thiết và biết khi nào và cách áp dụng chúng để đạt hiệu quả tốt nhất.
Một nhà phát triển cấp trung biết cách tương tác với các thành viên khác trong nhóm một cách hiệu quả và hiệu quả. Và điều này đặc biệt áp dụng trong những tình huống khó đạt được thỏa thuận. Ví dụ, điều này liên quan khi thảo luận về các yếu tố mơ hồ hơn của một thiết kế, khi làm rõ các yêu cầu mà bản chất chưa hoàn chỉnh, khi có một áp lực thời gian nào đó, hoặc khi thảo luận về một thay đổi lớn trong cách làm việc.
Cách phỏng vấn nhà phát triển cấp trung
Câu hỏi về tình huống
Hãy cung cấp những ví dụ về tình huống khi bạn:
- Sẵn lòng đảm nhận những nhiệm vụ mà không ai biết (hoặc muốn biết) cách sửa
- Có thể tìm ra sự cân bằng giữa phức tạp và hiệu suất trong việc giải quyết một vấn đề kỹ thuật phức tạp
- Đóng một vai trò quan trọng trong việc phân tích yêu cầu
- Được tham gia vào việc kiểm thử phần mềm
- Đóng một vai trò quan trọng trong việc tạo tài liệu
- Tự giác giải quyết các vấn đề và sửa các lỗi quan trọng
- Phải làm việc trên nhiều dự án đồng thời
Nhà phát triển cấp cao so với cấp trung và cấp junior
Yêu cầu chính cho một nhà phát triển cấp cao
Nhà phát triển cấp cao đã thấy rất nhiều mã code, mắc rất nhiều lỗi và rút ra kết luận đúng đắn từ quá trình tổng thể. Tất cả các nhà phát triển đều đặt câu hỏi, nhưng nhà phát triển cấp cao so với các loại nhà phát triển ít kinh nghiệm khác biết cách đặt câu hỏi đúng ở mức trừu tượng phù hợp. Trách nhiệm chính của một nhà phát triển cấp cao luôn luôn đảm bảo rằng các quyết định đúng đắn được đưa ra (với thông tin có sẵn tại một thời điểm nhất định), các quyết định tạo ra lợi ích tối đa cho doanh nghiệp và giảm thiểu chi phí. Một nhà phát triển cấp cao giỏi luôn luôn tìm cách để đạt được nhiều giá trị hơn, nhưng cũng nhận thức rằng rất cần phải tận dụng tối đa các nguồn tài nguyên như thời gian và tiền bạc. Một nhà phát triển cấp cao giỏi luôn luôn nghĩ về điểm cuối cùng, vì vậy họ thường có thể giải quyết các vấn đề ngay trước khi chúng xảy ra. Ví dụ, họ suy nghĩ trước về những hạn chế của hệ thống, ghi nhớ các điểm yếu và vấn đề do việc sử dụng không đúng công cụ gây ra. Mã code được viết bởi một nhà phát triển cấp cao sẽ được tạo ra với tính bảo trì và khả năng mở rộng trong tâm trí.
Những phẩm chất của một nhà phát triển cấp cao
Một nhà phát triển cấp cao giỏi phải:
- Có khả năng giải quyết một số lượng lớn các nhiệm vụ phức tạp (và nhanh hơn) so với một nhà phát triển cấp trung
- Có khả năng phân biệt giữa một sản phẩm "đủ tốt" và một sản phẩm quá tốt hoặc không đủ tốt
- Biết rõ về khoản nợ kỹ thuật. Chi phí tái cấu trúc thực tế là bao nhiêu, những mẫu thiết kế thực sự cần thiết và khi nào cần đưa ra quyết định về mức độ trừu tượng
- Có kỹ năng giao tiếp xuất sắc, bởi vì họ không chỉ nói với người khác quyết định "đúng" là gì, mà còn thuyết phục khách hàng và nhóm đồng nghiệp đồng ý với họ. Tiếp cận độc tài ("làm theo tôi nói") thường dẫn đến nhiều xung đột hơn, đồng nghĩa với việc không có tiến triển trong việc cải thiện tình hình tổng thể.
- Có khả năng giải thích và bào chữa bất kỳ quyết định quan trọng nào một cách có thể thực sự được hiểu bởi tất cả các bên quan tâm. Điều này cho phép chính đội làm việc có cơ hội học từ kinh nghiệm của mình và phát triển nhanh hơn, trong khi tránh phần lớn các điểm đau trên đường đi.
Cách phỏng vấn nhà phát triển cấp cao
Câu hỏi về tình huống
Hãy cung cấp những ví dụ về tình huống khi bạn:
- Sẵn lòng đảm nhận nhiệm vụ phức tạp mà không ai biết giải quyết (hoặc muốn biết)
- Có khả năng phân biệt giữa một sản phẩm "đủ tốt" và một sản phẩm quá tốt hoặc không đủ tốt
- Biết cách nợ kỹ thuật thể hiện ra sao. Chi phí tái cấu trúc thực sự là bao nhiêu, những mẫu thiết kế thực sự cần thiết và khi nào cần vẽ đường giới hạn về mức độ trừu tượng
- Có kỹ năng giao tiếp tuyệt vời, vì họ không chỉ nói cho người khác nghe quyết định "đúng", mà còn thuyết phục khách hàng và nhóm đồng nghiệp đồng ý với họ. Tiếp cận độc tài ("làm theo tôi nói") thường dẫn đến nhiều xung đột hơn, đồng nghĩa với việc không có tiến triển trong việc cải thiện tình hình tổng thể.
Kết luận
Có nhiều sự khác biệt quan trọng giữa nhà phát triển cấp junior, cấp trung và cấp cao. Khi thuê bất kỳ loại nhà phát triển nào, quan trọng là bạn cân nhắc toàn bộ hệ số kỹ năng mà mỗi nhà phát triển mang đến. Rất nhiều người chú ý đến số năm kinh nghiệm, điều này quan trọng, nhưng bạn cũng cần thuê người dựa trên công việc mà họ có khả năng thực hiện, không chỉ là những gì họ đã làm trong quá khứ. Do đó, nếu bạn gặp một nhà phát triển có triển vọng lớn, có thể là một ý tưởng tốt để tuyển dụng họ và cho phép họ phát triển chuyên nghiệp.